github.com/arunkumar7540/cli@v6.45.0+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 if _, ok := shareCheckErr.(actionerror.DomainNotFoundError); ok { 61 cmd.UI.DisplayTextWithFlavor("Domain {{.DomainName}} does not exist", map[string]interface{}{ 62 "DomainName": cmd.RequiredArgs.Domain, 63 }) 64 cmd.UI.DisplayOK() 65 return nil 66 } 67 68 cmd.UI.DisplayWarnings(shareCheckWarnings) 69 return shareCheckErr 70 } 71 72 cmd.UI.DisplayText("Deleting the private domain will remove associated routes which will make apps with this domain unreachable.") 73 74 if !cmd.Force { 75 response, promptErr := cmd.UI.DisplayBoolPrompt(false, "Really delete the private domain {{.DomainName}}?", map[string]interface{}{ 76 "DomainName": domain, 77 }) 78 79 if promptErr != nil { 80 return promptErr 81 } 82 83 if !response { 84 cmd.UI.DisplayText("'{{.DomainName}}' has not been deleted.", map[string]interface{}{ 85 "DomainName": domain, 86 }) 87 return nil 88 } 89 } 90 cmd.UI.DisplayTextWithFlavor("Deleting private domain {{.DomainName}} as {{.Username}}...", map[string]interface{}{ 91 "DomainName": domain, 92 "Username": currentUser.Name, 93 }) 94 95 warnings, err := cmd.Actor.DeletePrivateDomain(domain) 96 cmd.UI.DisplayWarnings(warnings) 97 if err != nil { 98 switch err.(type) { 99 case actionerror.DomainNotFoundError: 100 cmd.UI.DisplayText(err.Error()) 101 default: 102 return err 103 } 104 } 105 106 cmd.UI.DisplayOK() 107 108 cmd.UI.DisplayText("TIP: Run 'cf domains' to view available domains.") 109 110 return nil 111 }