code.cloudfoundry.org/cli@v7.1.0+incompatible/command/v7/unbind_security_group.go (about)

     1  package v7
     2  
     3  import (
     4  	"code.cloudfoundry.org/cli/actor/actionerror"
     5  	"code.cloudfoundry.org/cli/actor/v7action"
     6  	"code.cloudfoundry.org/cli/api/cloudcontroller/ccv3/constant"
     7  	"code.cloudfoundry.org/cli/command/flag"
     8  )
     9  
    10  type UnbindSecurityGroupCommand struct {
    11  	BaseCommand
    12  
    13  	RequiredArgs    flag.UnbindSecurityGroupV7Args `positional-args:"yes"`
    14  	Lifecycle       flag.SecurityGroupLifecycle    `long:"lifecycle" choice:"running" choice:"staging" default:"running" description:"Lifecycle phase the group applies to"`
    15  	usage           interface{}                    `usage:"CF_NAME unbind-security-group SECURITY_GROUP ORG SPACE [--lifecycle (running | staging)]\n\nTIP: Changes require an app restart (for running) or restage (for staging) to apply to existing applications."`
    16  	relatedCommands interface{}                    `related_commands:"apps, restart, security-groups"`
    17  }
    18  
    19  func (cmd UnbindSecurityGroupCommand) Execute(args []string) error {
    20  	var (
    21  		err       error
    22  		warnings  v7action.Warnings
    23  		orgName   string
    24  		spaceName string
    25  	)
    26  
    27  	err = cmd.SharedActor.CheckTarget(false, false)
    28  	if err != nil {
    29  		return err
    30  	}
    31  
    32  	user, err := cmd.Config.CurrentUser()
    33  	if err != nil {
    34  		return err
    35  	}
    36  
    37  	orgName = cmd.RequiredArgs.OrganizationName
    38  	spaceName = cmd.RequiredArgs.SpaceName
    39  
    40  	cmd.UI.DisplayTextWithFlavor("Unbinding {{.Lifecycle}} security group {{.SecurityGroupName}} from org {{.OrgName}} / space {{.SpaceName}} as {{.Username}}...", map[string]interface{}{
    41  		"Lifecycle":         string(cmd.Lifecycle),
    42  		"SecurityGroupName": cmd.RequiredArgs.SecurityGroupName,
    43  		"OrgName":           orgName,
    44  		"SpaceName":         spaceName,
    45  		"Username":          user.Name,
    46  	})
    47  
    48  	warnings, err = cmd.Actor.UnbindSecurityGroup(cmd.RequiredArgs.SecurityGroupName, orgName, spaceName, constant.SecurityGroupLifecycle(cmd.Lifecycle))
    49  	cmd.UI.DisplayWarnings(warnings)
    50  	if err != nil {
    51  		if _, isNotBoundError := err.(actionerror.SecurityGroupNotBoundToSpaceError); isNotBoundError {
    52  			cmd.UI.DisplayWarning(err.Error())
    53  
    54  			cmd.UI.DisplayOK()
    55  			cmd.UI.DisplayText("TIP: Changes require an app restart (for running) or restage (for staging) to apply to existing applications.")
    56  			return nil
    57  		}
    58  
    59  		return err
    60  	}
    61  
    62  	cmd.UI.DisplayOK()
    63  	cmd.UI.DisplayText("TIP: Changes require an app restart (for running) or restage (for staging) to apply to existing applications.")
    64  
    65  	return nil
    66  }