github.com/asifdxtreme/cli@v6.1.3-0.20150123051144-9ead8700b4ae+incompatible/cf/commands/domain/delete_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/errors" 8 . "github.com/cloudfoundry/cli/cf/i18n" 9 "github.com/cloudfoundry/cli/cf/requirements" 10 "github.com/cloudfoundry/cli/cf/terminal" 11 "github.com/codegangsta/cli" 12 ) 13 14 type DeleteDomain struct { 15 ui terminal.UI 16 config core_config.Reader 17 orgReq requirements.TargetedOrgRequirement 18 domainRepo api.DomainRepository 19 } 20 21 func NewDeleteDomain(ui terminal.UI, config core_config.Reader, repo api.DomainRepository) (cmd *DeleteDomain) { 22 cmd = new(DeleteDomain) 23 cmd.ui = ui 24 cmd.config = config 25 cmd.domainRepo = repo 26 return 27 } 28 29 func (cmd *DeleteDomain) Metadata() command_metadata.CommandMetadata { 30 return command_metadata.CommandMetadata{ 31 Name: "delete-domain", 32 Description: T("Delete a domain"), 33 Usage: T("CF_NAME delete-domain DOMAIN [-f]"), 34 Flags: []cli.Flag{ 35 cli.BoolFlag{Name: "f", Usage: T("Force deletion without confirmation")}, 36 }, 37 } 38 } 39 40 func (cmd *DeleteDomain) GetRequirements(requirementsFactory requirements.Factory, c *cli.Context) (reqs []requirements.Requirement, err error) { 41 if len(c.Args()) != 1 { 42 cmd.ui.FailWithUsage(c) 43 } 44 45 loginReq := requirementsFactory.NewLoginRequirement() 46 cmd.orgReq = requirementsFactory.NewTargetedOrgRequirement() 47 48 reqs = []requirements.Requirement{ 49 loginReq, 50 cmd.orgReq, 51 } 52 53 return 54 } 55 56 func (cmd *DeleteDomain) Run(c *cli.Context) { 57 domainName := c.Args()[0] 58 domain, apiErr := cmd.domainRepo.FindByNameInOrg(domainName, cmd.orgReq.GetOrganizationFields().Guid) 59 60 switch apiErr.(type) { 61 case nil: //do nothing 62 case *errors.ModelNotFoundError: 63 cmd.ui.Ok() 64 cmd.ui.Warn(apiErr.Error()) 65 return 66 default: 67 cmd.ui.Failed(T("Error finding domain {{.DomainName}}\n{{.ApiErr}}", 68 map[string]interface{}{"DomainName": domainName, "ApiErr": apiErr.Error()})) 69 return 70 } 71 72 if !c.Bool("f") { 73 if !cmd.ui.ConfirmDelete(T("domain"), domainName) { 74 return 75 } 76 } 77 78 cmd.ui.Say(T("Deleting domain {{.DomainName}} as {{.Username}}...", 79 map[string]interface{}{ 80 "DomainName": terminal.EntityNameColor(domainName), 81 "Username": terminal.EntityNameColor(cmd.config.Username())})) 82 83 apiErr = cmd.domainRepo.Delete(domain.Guid) 84 if apiErr != nil { 85 cmd.ui.Failed(T("Error deleting domain {{.DomainName}}\n{{.ApiErr}}", 86 map[string]interface{}{"DomainName": domainName, "ApiErr": apiErr.Error()})) 87 return 88 } 89 90 cmd.ui.Ok() 91 }