github.com/LukasHeimann/cloudfoundrycli/v8@v8.4.4/command/v7/delete_security_group_command.go (about)

     1  package v7
     2  
     3  import (
     4  	"github.com/LukasHeimann/cloudfoundrycli/v8/actor/actionerror"
     5  	"github.com/LukasHeimann/cloudfoundrycli/v8/command/flag"
     6  )
     7  
     8  type DeleteSecurityGroupCommand struct {
     9  	BaseCommand
    10  
    11  	RequiredArgs    flag.SecurityGroup `positional-args:"yes"`
    12  	Force           bool               `long:"force" short:"f" description:"Force deletion without confirmation"`
    13  	usage           interface{}        `usage:"CF_NAME delete-security-group SECURITY_GROUP [-f]\n\nTIP: If Dynamic ASG's are enabled, changes will automatically apply for running and staging applications. Otherwise, changes will require an app restart (for running) or restage (for staging) to apply to existing applications."`
    14  	relatedCommands interface{}        `related_commands:"security-groups"`
    15  }
    16  
    17  func (cmd *DeleteSecurityGroupCommand) Execute(args []string) error {
    18  	var err error
    19  
    20  	err = cmd.SharedActor.CheckTarget(false, false)
    21  	if err != nil {
    22  		return err
    23  	}
    24  
    25  	user, err := cmd.Actor.GetCurrentUser()
    26  	if err != nil {
    27  		return err
    28  	}
    29  
    30  	if !cmd.Force {
    31  		promptMessage := "Really delete the security group {{.securityGroup}}?"
    32  		deleteSecurityGroup, promptErr := cmd.UI.DisplayBoolPrompt(false, promptMessage, map[string]interface{}{"securityGroup": cmd.RequiredArgs.SecurityGroup})
    33  
    34  		if promptErr != nil {
    35  			return promptErr
    36  		}
    37  
    38  		if !deleteSecurityGroup {
    39  			cmd.UI.DisplayText("Security group '{{.securityGroup}}' has not been deleted.", map[string]interface{}{
    40  				"securityGroup": cmd.RequiredArgs.SecurityGroup,
    41  			})
    42  			return nil
    43  		}
    44  	}
    45  
    46  	cmd.UI.DisplayTextWithFlavor("Deleting security group {{.securityGroup}} as {{.username}}...", map[string]interface{}{
    47  		"securityGroup": cmd.RequiredArgs.SecurityGroup,
    48  		"username":      user.Name,
    49  	})
    50  
    51  	warnings, err := cmd.Actor.DeleteSecurityGroup(cmd.RequiredArgs.SecurityGroup)
    52  	cmd.UI.DisplayWarnings(warnings)
    53  	if err != nil {
    54  		switch err.(type) {
    55  		case actionerror.SecurityGroupNotFoundError:
    56  			cmd.UI.DisplayWarning("Security group '{{.securityGroup}}' does not exist.", map[string]interface{}{
    57  				"securityGroup": cmd.RequiredArgs.SecurityGroup,
    58  			})
    59  		default:
    60  			return err
    61  		}
    62  	}
    63  
    64  	cmd.UI.DisplayOK()
    65  	cmd.UI.DisplayNewline()
    66  
    67  	cmd.UI.DisplayText("TIP: If Dynamic ASG's are enabled, changes will automatically apply for running and staging applications. Otherwise, changes will require an app restart (for running) or restage (for staging) to apply to existing applications.")
    68  
    69  	return nil
    70  }