github.com/cloudfoundry-community/cloudfoundry-cli@v6.44.1-0.20240130060226-cda5ed8e89a5+incompatible/command/v7/delete_private_domain_command.go (about) 1 package v7 2 3 import ( 4 "code.cloudfoundry.org/cli/actor/actionerror" 5 "code.cloudfoundry.org/cli/actor/sharedaction" 6 "code.cloudfoundry.org/cli/actor/v7action" 7 "code.cloudfoundry.org/cli/command" 8 "code.cloudfoundry.org/cli/command/flag" 9 "code.cloudfoundry.org/cli/command/v7/shared" 10 ) 11 12 //go:generate counterfeiter . DeletePrivateDomainActor 13 14 type DeletePrivateDomainActor interface { 15 DeletePrivateDomain(domainName string) (v7action.Warnings, error) 16 CheckSharedDomain(domainName string) (v7action.Warnings, error) 17 } 18 19 type DeletePrivateDomainCommand struct { 20 RequiredArgs flag.Domain `positional-args:"yes"` 21 Force bool `short:"f" description:"Force deletion without confirmation"` 22 usage interface{} `usage:"CF_NAME delete-private-domain DOMAIN [-f]"` 23 relatedCommands interface{} `related_commands:"delete-shared-domain, domains, unshare-private-domain"` 24 25 UI command.UI 26 Config command.Config 27 SharedActor command.SharedActor 28 Actor DeletePrivateDomainActor 29 } 30 31 func (cmd *DeletePrivateDomainCommand) Setup(config command.Config, ui command.UI) error { 32 cmd.UI = ui 33 cmd.Config = config 34 cmd.SharedActor = sharedaction.NewActor(config) 35 36 ccClient, _, err := shared.NewClients(config, ui, true, "") 37 if err != nil { 38 return err 39 } 40 cmd.Actor = v7action.NewActor(ccClient, config, nil, nil) 41 42 return nil 43 } 44 45 func (cmd DeletePrivateDomainCommand) Execute(args []string) error { 46 domain := cmd.RequiredArgs.Domain 47 err := cmd.SharedActor.CheckTarget(true, false) 48 if err != nil { 49 return err 50 } 51 52 currentUser, err := cmd.Config.CurrentUser() 53 if err != nil { 54 return err 55 } 56 57 shareCheckWarnings, shareCheckErr := cmd.Actor.CheckSharedDomain(domain) 58 59 if shareCheckErr != nil { 60 cmd.UI.DisplayWarnings(shareCheckWarnings) 61 return shareCheckErr 62 } 63 64 cmd.UI.DisplayText("Deleting the private domain will remove associated routes which will make apps with this domain unreachable.") 65 66 if !cmd.Force { 67 response, promptErr := cmd.UI.DisplayBoolPrompt(false, "Really delete the private domain {{.DomainName}}?", map[string]interface{}{ 68 "DomainName": domain, 69 }) 70 71 if promptErr != nil { 72 return promptErr 73 } 74 75 if !response { 76 cmd.UI.DisplayText("'{{.DomainName}}' has not been deleted.", map[string]interface{}{ 77 "DomainName": domain, 78 }) 79 return nil 80 } 81 } 82 cmd.UI.DisplayTextWithFlavor("Deleting private domain {{.DomainName}} as {{.Username}}...", map[string]interface{}{ 83 "DomainName": domain, 84 "Username": currentUser.Name, 85 }) 86 87 warnings, err := cmd.Actor.DeletePrivateDomain(domain) 88 cmd.UI.DisplayWarnings(warnings) 89 if err != nil { 90 switch err.(type) { 91 case actionerror.DomainNotFoundError: 92 cmd.UI.DisplayTextWithFlavor("Domain {{.DomainName}} not found", map[string]interface{}{ 93 "DomainName": domain, 94 }) 95 96 default: 97 return err 98 } 99 } 100 101 cmd.UI.DisplayOK() 102 103 cmd.UI.DisplayText("TIP: Run 'cf domains' to view available domains.") 104 105 return nil 106 }