github.com/asifdxtreme/cli@v6.1.3-0.20150123051144-9ead8700b4ae+incompatible/cf/commands/domain/create_shared_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 CreateSharedDomain struct {
    14  	ui         terminal.UI
    15  	config     core_config.Reader
    16  	domainRepo api.DomainRepository
    17  	orgReq     requirements.OrganizationRequirement
    18  }
    19  
    20  func NewCreateSharedDomain(ui terminal.UI, config core_config.Reader, domainRepo api.DomainRepository) (cmd *CreateSharedDomain) {
    21  	cmd = new(CreateSharedDomain)
    22  	cmd.ui = ui
    23  	cmd.config = config
    24  	cmd.domainRepo = domainRepo
    25  	return
    26  }
    27  
    28  func (cmd *CreateSharedDomain) Metadata() command_metadata.CommandMetadata {
    29  	return command_metadata.CommandMetadata{
    30  		Name:        "create-shared-domain",
    31  		Description: T("Create a domain that can be used by all orgs (admin-only)"),
    32  		Usage:       T("CF_NAME create-shared-domain DOMAIN"),
    33  	}
    34  }
    35  
    36  func (cmd *CreateSharedDomain) GetRequirements(requirementsFactory requirements.Factory, c *cli.Context) (reqs []requirements.Requirement, err error) {
    37  	if len(c.Args()) != 1 {
    38  		cmd.ui.FailWithUsage(c)
    39  	}
    40  
    41  	reqs = []requirements.Requirement{
    42  		requirementsFactory.NewLoginRequirement(),
    43  	}
    44  	return
    45  }
    46  
    47  func (cmd *CreateSharedDomain) Run(c *cli.Context) {
    48  	domainName := c.Args()[0]
    49  
    50  	cmd.ui.Say(T("Creating shared domain {{.DomainName}} as {{.Username}}...",
    51  		map[string]interface{}{
    52  			"DomainName": terminal.EntityNameColor(domainName),
    53  			"Username":   terminal.EntityNameColor(cmd.config.Username())}))
    54  
    55  	apiErr := cmd.domainRepo.CreateSharedDomain(domainName)
    56  	if apiErr != nil {
    57  		cmd.ui.Failed(apiErr.Error())
    58  		return
    59  	}
    60  
    61  	cmd.ui.Ok()
    62  }