github.com/loafoe/cli@v7.1.0+incompatible/command/v7/delete_shared_domain_command.go (about) 1 package v7 2 3 import ( 4 "code.cloudfoundry.org/cli/actor/actionerror" 5 "code.cloudfoundry.org/cli/command/flag" 6 "code.cloudfoundry.org/cli/command/translatableerror" 7 ) 8 9 type DeleteSharedDomainCommand struct { 10 BaseCommand 11 12 RequiredArgs flag.Domain `positional-args:"yes"` 13 Force bool `short:"f" description:"Force deletion without confirmation"` 14 usage interface{} `usage:"CF_NAME delete-shared-domain DOMAIN [-f]"` 15 relatedCommands interface{} `related_commands:"delete-private-domain, domains"` 16 } 17 18 func (cmd DeleteSharedDomainCommand) Execute(args []string) error { 19 err := cmd.SharedActor.CheckTarget(true, false) 20 if err != nil { 21 return err 22 } 23 domainName := cmd.RequiredArgs.Domain 24 25 currentUser, err := cmd.Config.CurrentUser() 26 if err != nil { 27 return err 28 } 29 cmd.UI.DisplayText("This action impacts all orgs using this domain.") 30 cmd.UI.DisplayText("Deleting the domain will remove associated routes which will make apps with this domain, in any org, unreachable.") 31 32 if !cmd.Force { 33 response, promptErr := cmd.UI.DisplayBoolPrompt(false, "Really delete the shared domain {{.DomainName}}?", map[string]interface{}{ 34 "DomainName": domainName, 35 }) 36 37 if promptErr != nil { 38 return promptErr 39 } 40 41 if !response { 42 cmd.UI.DisplayText("'{{.DomainName}}' has not been deleted.", map[string]interface{}{ 43 "DomainName": domainName, 44 }) 45 return nil 46 } 47 } 48 cmd.UI.DisplayTextWithFlavor("Deleting domain {{.DomainName}} as {{.Username}}...", map[string]interface{}{ 49 "DomainName": domainName, 50 "Username": currentUser.Name, 51 }) 52 53 domain, warnings, err := cmd.Actor.GetDomainByName(domainName) 54 cmd.UI.DisplayWarnings(warnings) 55 56 if err != nil { 57 if _, ok := err.(actionerror.DomainNotFoundError); ok { 58 cmd.UI.DisplayWarning("Domain '{{.DomainName}}' does not exist.", map[string]interface{}{ 59 "DomainName": cmd.RequiredArgs.Domain, 60 }) 61 cmd.UI.DisplayOK() 62 return nil 63 } 64 return err 65 } 66 67 // Private domains always have an organization guid; shared domains, never. 68 if domain.OrganizationGUID != "" { 69 return translatableerror.NotSharedDomainError{DomainName: cmd.RequiredArgs.Domain} 70 } 71 72 warnings, err = cmd.Actor.DeleteDomain(domain) 73 cmd.UI.DisplayWarnings(warnings) 74 if err != nil { 75 return err 76 } 77 78 cmd.UI.DisplayOK() 79 80 return nil 81 }