github.com/asifdxtreme/cli@v6.1.3-0.20150123051144-9ead8700b4ae+incompatible/cf/commands/domain/create_domain.go (about)

     1  package domain
     2  
     3  import (
     4  	"github.com/cloudfoundry/cli/cf/api"
     5  	"github.com/cloudfoundry/cli/cf/command_metadata"
     6  	"github.com/cloudfoundry/cli/cf/configuration/core_config"
     7  	. "github.com/cloudfoundry/cli/cf/i18n"
     8  	"github.com/cloudfoundry/cli/cf/requirements"
     9  	"github.com/cloudfoundry/cli/cf/terminal"
    10  	"github.com/codegangsta/cli"
    11  )
    12  
    13  type CreateDomain struct {
    14  	ui         terminal.UI
    15  	config     core_config.Reader
    16  	domainRepo api.DomainRepository
    17  	orgReq     requirements.OrganizationRequirement
    18  }
    19  
    20  func NewCreateDomain(ui terminal.UI, config core_config.Reader, domainRepo api.DomainRepository) (cmd *CreateDomain) {
    21  	cmd = new(CreateDomain)
    22  	cmd.ui = ui
    23  	cmd.config = config
    24  	cmd.domainRepo = domainRepo
    25  	return
    26  }
    27  
    28  func (cmd *CreateDomain) Metadata() command_metadata.CommandMetadata {
    29  	return command_metadata.CommandMetadata{
    30  		Name:        "create-domain",
    31  		Description: T("Create a domain in an org for later use"),
    32  		Usage:       T("CF_NAME create-domain ORG DOMAIN"),
    33  	}
    34  }
    35  
    36  func (cmd *CreateDomain) GetRequirements(requirementsFactory requirements.Factory, c *cli.Context) (reqs []requirements.Requirement, err error) {
    37  	if len(c.Args()) != 2 {
    38  		cmd.ui.FailWithUsage(c)
    39  	}
    40  
    41  	cmd.orgReq = requirementsFactory.NewOrganizationRequirement(c.Args()[0])
    42  	reqs = []requirements.Requirement{
    43  		requirementsFactory.NewLoginRequirement(),
    44  		cmd.orgReq,
    45  	}
    46  	return
    47  }
    48  
    49  func (cmd *CreateDomain) Run(c *cli.Context) {
    50  	domainName := c.Args()[1]
    51  	owningOrg := cmd.orgReq.GetOrganization()
    52  
    53  	cmd.ui.Say(T("Creating domain {{.DomainName}} for org {{.OrgName}} as {{.Username}}...",
    54  		map[string]interface{}{
    55  			"DomainName": terminal.EntityNameColor(domainName),
    56  			"OrgName":    terminal.EntityNameColor(owningOrg.Name),
    57  			"Username":   terminal.EntityNameColor(cmd.config.Username())}))
    58  
    59  	_, apiErr := cmd.domainRepo.Create(domainName, owningOrg.Guid)
    60  	if apiErr != nil {
    61  		cmd.ui.Failed(apiErr.Error())
    62  		return
    63  	}
    64  
    65  	cmd.ui.Ok()
    66  }