github.com/franc20/ayesa_sap@v7.0.0-beta.28.0.20200124003224-302d4d52fa6c+incompatible/command/v7/delete_org_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 "code.cloudfoundry.org/clock" 11 ) 12 13 //go:generate counterfeiter . DeleteOrganizationActor 14 15 type DeleteOrganizationActor interface { 16 DeleteOrganization(orgName string) (v7action.Warnings, error) 17 } 18 19 type DeleteOrgCommand struct { 20 RequiredArgs flag.Organization `positional-args:"yes"` 21 Force bool `short:"f" description:"Force deletion without confirmation"` 22 usage interface{} `usage:"CF_NAME delete-org ORG [-f]"` 23 relatedCommands interface{} `related_commands:"create-org, orgs, quotas, set-org-role"` 24 25 Config command.Config 26 UI command.UI 27 SharedActor command.SharedActor 28 Actor DeleteOrganizationActor 29 } 30 31 func (cmd *DeleteOrgCommand) Setup(config command.Config, ui command.UI) error { 32 cmd.Config = config 33 cmd.UI = ui 34 sharedActor := sharedaction.NewActor(config) 35 cmd.SharedActor = sharedActor 36 37 ccClient, uaaClient, err := shared.GetNewClientsAndConnectToCF(config, ui, "") 38 if err != nil { 39 return err 40 } 41 cmd.Actor = v7action.NewActor(ccClient, config, sharedActor, uaaClient, clock.NewClock()) 42 43 return nil 44 } 45 46 func (cmd *DeleteOrgCommand) Execute(args []string) error { 47 err := cmd.SharedActor.CheckTarget(false, false) 48 if err != nil { 49 return err 50 } 51 52 user, err := cmd.Config.CurrentUser() 53 if err != nil { 54 return err 55 } 56 57 if !cmd.Force { 58 promptMessage := "Really delete the org {{.OrgName}}, including its spaces, apps, service instances, routes, private domains and space-scoped service brokers?" 59 deleteOrg, promptErr := cmd.UI.DisplayBoolPrompt(false, promptMessage, map[string]interface{}{"OrgName": cmd.RequiredArgs.Organization}) 60 61 if promptErr != nil { 62 return promptErr 63 } 64 65 if !deleteOrg { 66 cmd.UI.DisplayText("Organization '{{.OrgName}}' has not been deleted.", map[string]interface{}{ 67 "OrgName": cmd.RequiredArgs.Organization, 68 }) 69 return nil 70 } 71 } 72 73 cmd.UI.DisplayTextWithFlavor("Deleting org {{.OrgName}} as {{.Username}}...", map[string]interface{}{ 74 "OrgName": cmd.RequiredArgs.Organization, 75 "Username": user.Name, 76 }) 77 78 warnings, err := cmd.Actor.DeleteOrganization(cmd.RequiredArgs.Organization) 79 cmd.UI.DisplayWarnings(warnings) 80 if err != nil { 81 switch err.(type) { 82 case actionerror.OrganizationNotFoundError: 83 cmd.UI.DisplayWarning("Org '{{.OrgName}}' does not exist.", map[string]interface{}{ 84 "OrgName": cmd.RequiredArgs.Organization, 85 }) 86 default: 87 return err 88 } 89 } 90 91 cmd.UI.DisplayOK() 92 93 if cmd.Config.TargetedOrganization().Name == cmd.RequiredArgs.Organization { 94 cmd.UI.DisplayText("TIP: No org or space targeted, use '{{.CfTargetCommand}}' to target an org and space.", 95 map[string]interface{}{"CfTargetCommand": cmd.Config.BinaryName() + " target -o ORG -s SPACE"}) 96 cmd.Config.UnsetOrganizationAndSpaceInformation() 97 } 98 99 return nil 100 }