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 }