github.com/ablease/cli@v6.37.1-0.20180613014814-3adbb7d7fb19+incompatible/command/v2/delete_org_command.go (about)

     1  package v2
     2  
     3  import (
     4  	"code.cloudfoundry.org/cli/actor/actionerror"
     5  	"code.cloudfoundry.org/cli/actor/sharedaction"
     6  	"code.cloudfoundry.org/cli/actor/v2action"
     7  	"code.cloudfoundry.org/cli/command"
     8  	"code.cloudfoundry.org/cli/command/flag"
     9  	"code.cloudfoundry.org/cli/command/v2/shared"
    10  )
    11  
    12  //go:generate counterfeiter . DeleteOrganizationActor
    13  
    14  type DeleteOrganizationActor interface {
    15  	DeleteOrganization(orgName string) (v2action.Warnings, error)
    16  }
    17  
    18  type DeleteOrgCommand struct {
    19  	RequiredArgs flag.Organization `positional-args:"yes"`
    20  	Force        bool              `short:"f" description:"Force deletion without confirmation"`
    21  	usage        interface{}       `usage:"CF_NAME delete-org ORG [-f]"`
    22  
    23  	Config      command.Config
    24  	UI          command.UI
    25  	SharedActor command.SharedActor
    26  	Actor       DeleteOrganizationActor
    27  }
    28  
    29  func (cmd *DeleteOrgCommand) Setup(config command.Config, ui command.UI) error {
    30  	cmd.Config = config
    31  	cmd.UI = ui
    32  	cmd.SharedActor = sharedaction.NewActor(config)
    33  
    34  	ccClient, uaaClient, err := shared.NewClients(config, ui, true)
    35  	if err != nil {
    36  		return err
    37  	}
    38  	cmd.Actor = v2action.NewActor(ccClient, uaaClient, config)
    39  
    40  	return nil
    41  }
    42  
    43  func (cmd *DeleteOrgCommand) Execute(args []string) error {
    44  	err := cmd.SharedActor.CheckTarget(false, false)
    45  	if err != nil {
    46  		return err
    47  	}
    48  
    49  	user, err := cmd.Config.CurrentUser()
    50  	if err != nil {
    51  		return err
    52  	}
    53  
    54  	if !cmd.Force {
    55  		promptMessage := "Really delete the org {{.OrgName}}, including its spaces, apps, service instances, routes, private domains and space-scoped service brokers?"
    56  		deleteOrg, promptErr := cmd.UI.DisplayBoolPrompt(false, promptMessage, map[string]interface{}{"OrgName": cmd.RequiredArgs.Organization})
    57  
    58  		if promptErr != nil {
    59  			return promptErr
    60  		}
    61  
    62  		if !deleteOrg {
    63  			cmd.UI.DisplayText("Delete cancelled")
    64  			return nil
    65  		}
    66  	}
    67  
    68  	cmd.UI.DisplayTextWithFlavor("Deleting org {{.OrgName}} as {{.Username}}...", map[string]interface{}{
    69  		"OrgName":  cmd.RequiredArgs.Organization,
    70  		"Username": user.Name,
    71  	})
    72  
    73  	warnings, err := cmd.Actor.DeleteOrganization(cmd.RequiredArgs.Organization)
    74  	cmd.UI.DisplayWarnings(warnings)
    75  	if err != nil {
    76  		switch err.(type) {
    77  		case actionerror.OrganizationNotFoundError:
    78  			cmd.UI.DisplayText("Org {{.OrgName}} does not exist.", map[string]interface{}{
    79  				"OrgName": cmd.RequiredArgs.Organization,
    80  			})
    81  		default:
    82  			return err
    83  		}
    84  	}
    85  
    86  	if cmd.Config.TargetedOrganization().Name == cmd.RequiredArgs.Organization {
    87  		cmd.Config.UnsetOrganizationAndSpaceInformation()
    88  	}
    89  
    90  	cmd.UI.DisplayOK()
    91  
    92  	return nil
    93  }