github.com/niteshexa/cloudfoundry_cli@v7.1.0+incompatible/command/v7/delete_space_command.go (about)

     1  package v7
     2  
     3  import (
     4  	"code.cloudfoundry.org/cli/actor/actionerror"
     5  	"code.cloudfoundry.org/cli/command/flag"
     6  )
     7  
     8  type DeleteSpaceCommand struct {
     9  	BaseCommand
    10  
    11  	RequiredArgs flag.Space  `positional-args:"yes"`
    12  	Force        bool        `short:"f" description:"Force deletion without confirmation"`
    13  	Org          string      `short:"o" description:"Delete space within specified org"`
    14  	usage        interface{} `usage:"CF_NAME delete-space SPACE [-o ORG] [-f]"`
    15  }
    16  
    17  func (cmd DeleteSpaceCommand) Execute(args []string) error {
    18  	var (
    19  		err     error
    20  		orgName string
    21  	)
    22  
    23  	if cmd.Org == "" {
    24  		err = cmd.SharedActor.CheckTarget(true, false)
    25  		orgName = cmd.Config.TargetedOrganization().Name
    26  	} else {
    27  		err = cmd.SharedActor.CheckTarget(false, false)
    28  		orgName = cmd.Org
    29  	}
    30  
    31  	if err != nil {
    32  		return err
    33  	}
    34  
    35  	user, err := cmd.Config.CurrentUser()
    36  	if err != nil {
    37  		return err
    38  	}
    39  
    40  	if !cmd.Force {
    41  		cmd.UI.DisplayText("This action impacts all resources scoped to this space, including apps, service instances, and space-scoped service brokers.")
    42  		promptMessage := "Really delete the space {{.SpaceName}}?"
    43  		deleteSpace, promptErr := cmd.UI.DisplayBoolPrompt(false, promptMessage, map[string]interface{}{"SpaceName": cmd.RequiredArgs.Space})
    44  
    45  		if promptErr != nil {
    46  			return promptErr
    47  		}
    48  
    49  		if !deleteSpace {
    50  			cmd.UI.DisplayText("'{{.TargetSpace}}' has not been deleted.",
    51  				map[string]interface{}{
    52  					"TargetSpace": cmd.RequiredArgs.Space,
    53  				})
    54  			return nil
    55  		}
    56  	}
    57  
    58  	cmd.UI.DisplayTextWithFlavor("Deleting space {{.TargetSpace}} in org {{.TargetOrg}} as {{.CurrentUser}}...",
    59  		map[string]interface{}{
    60  			"TargetSpace": cmd.RequiredArgs.Space,
    61  			"TargetOrg":   orgName,
    62  			"CurrentUser": user.Name,
    63  		})
    64  
    65  	warnings, err := cmd.Actor.DeleteSpaceByNameAndOrganizationName(cmd.RequiredArgs.Space, orgName)
    66  	cmd.UI.DisplayWarnings(warnings)
    67  	if err != nil {
    68  		switch err.(type) {
    69  		case actionerror.SpaceNotFoundError:
    70  			cmd.UI.DisplayWarning("Space '{{.SpaceName}}' does not exist.", map[string]interface{}{
    71  				"SpaceName": cmd.RequiredArgs.Space,
    72  			})
    73  		default:
    74  			return err
    75  		}
    76  	}
    77  
    78  	cmd.UI.DisplayOK()
    79  
    80  	if cmd.Config.TargetedOrganization().Name == orgName &&
    81  		cmd.Config.TargetedSpace().Name == cmd.RequiredArgs.Space {
    82  		cmd.Config.UnsetSpaceInformation()
    83  		cmd.UI.DisplayText("TIP: No space targeted, use '{{.CfTargetCommand}}' to target a space.",
    84  			map[string]interface{}{"CfTargetCommand": cmd.Config.BinaryName() + " target -s"})
    85  	}
    86  
    87  	return nil
    88  }