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

     1  package v7
     2  
     3  import (
     4  	"code.cloudfoundry.org/cli/actor/actionerror"
     5  	"code.cloudfoundry.org/cli/actor/cfnetworkingaction"
     6  	"code.cloudfoundry.org/cli/command"
     7  	"code.cloudfoundry.org/cli/command/flag"
     8  	"code.cloudfoundry.org/cli/command/translatableerror"
     9  	"code.cloudfoundry.org/cli/command/v7/shared"
    10  )
    11  
    12  //go:generate counterfeiter . RemoveNetworkPolicyActor
    13  
    14  type RemoveNetworkPolicyActor interface {
    15  	RemoveNetworkPolicy(srcSpaceGUID string, srcAppName string, destSpaceGUID string, destAppName string, protocol string, startPort int, endPort int) (cfnetworkingaction.Warnings, error)
    16  }
    17  
    18  type RemoveNetworkPolicyCommand struct {
    19  	BaseCommand
    20  
    21  	RequiredArgs     flag.RemoveNetworkPolicyArgsV7 `positional-args:"yes"`
    22  	Port             flag.NetworkPort               `long:"port" required:"true" description:"Port or range of ports that destination app is connected with"`
    23  	Protocol         flag.NetworkProtocol           `long:"protocol" required:"true" description:"Protocol that apps are connected with"`
    24  	DestinationOrg   string                         `short:"o" description:"The org of the destination app (Default: targeted org)"`
    25  	DestinationSpace string                         `short:"s" description:"The space of the destination app (Default: targeted space)"`
    26  
    27  	usage           interface{} `usage:"CF_NAME remove-network-policy SOURCE_APP DESTINATION_APP [-s DESTINATION_SPACE_NAME [-o DESTINATION_ORG_NAME]] --protocol (tcp | udp) --port RANGE\n\nEXAMPLES:\n   CF_NAME remove-network-policy frontend backend --protocol tcp --port 8081\n   CF_NAME remove-network-policy frontend backend -s backend-space -o backend-org --protocol tcp --port 8080-8090"`
    28  	relatedCommands interface{} `related_commands:"apps, network-policies, add-network-policy"`
    29  
    30  	NetworkingActor RemoveNetworkPolicyActor
    31  }
    32  
    33  func (cmd *RemoveNetworkPolicyCommand) Setup(config command.Config, ui command.UI) error {
    34  	err := cmd.BaseCommand.Setup(config, ui)
    35  	if err != nil {
    36  		return err
    37  	}
    38  
    39  	ccClient, uaaClient := cmd.BaseCommand.GetClients()
    40  
    41  	networkingClient, err := shared.NewNetworkingClient(ccClient.NetworkPolicyV1(), config, uaaClient, ui)
    42  	if err != nil {
    43  		return err
    44  	}
    45  	cmd.NetworkingActor = cfnetworkingaction.NewActor(networkingClient, ccClient)
    46  
    47  	return nil
    48  }
    49  
    50  func (cmd RemoveNetworkPolicyCommand) Execute(args []string) error {
    51  	if cmd.DestinationOrg != "" && cmd.DestinationSpace == "" {
    52  		return translatableerror.NetworkPolicyDestinationOrgWithoutSpaceError{}
    53  	}
    54  
    55  	err := cmd.SharedActor.CheckTarget(true, true)
    56  	if err != nil {
    57  		return err
    58  	}
    59  
    60  	destOrgGUID := cmd.Config.TargetedOrganization().GUID
    61  	displayDestinationOrg := cmd.Config.TargetedOrganization().Name
    62  	if cmd.DestinationOrg != "" {
    63  		destOrg, warnings, err := cmd.Actor.GetOrganizationByName(cmd.DestinationOrg)
    64  		cmd.UI.DisplayWarnings(warnings)
    65  		if err != nil {
    66  			return err
    67  		}
    68  
    69  		destOrgGUID = destOrg.GUID
    70  		displayDestinationOrg = cmd.DestinationOrg
    71  	}
    72  
    73  	destSpaceGUID := cmd.Config.TargetedSpace().GUID
    74  	if cmd.DestinationSpace != "" {
    75  		destSpace, warnings, err := cmd.Actor.GetSpaceByNameAndOrganization(cmd.DestinationSpace, destOrgGUID)
    76  		cmd.UI.DisplayWarnings(warnings)
    77  		if err != nil {
    78  			return err
    79  		}
    80  
    81  		destSpaceGUID = destSpace.GUID
    82  	}
    83  
    84  	user, err := cmd.Config.CurrentUser()
    85  	if err != nil {
    86  		return err
    87  	}
    88  
    89  	if cmd.DestinationSpace != "" {
    90  		cmd.UI.DisplayTextWithFlavor("Removing network policy from app {{.SrcAppName}} in org {{.Org}} / space {{.Space}} to app {{.DstAppName}} in org {{.DstOrg}} / space {{.DstSpace}} as {{.User}}...", map[string]interface{}{
    91  			"SrcAppName": cmd.RequiredArgs.SourceApp,
    92  			"Org":        cmd.Config.TargetedOrganization().Name,
    93  			"Space":      cmd.Config.TargetedSpace().Name,
    94  			"DstAppName": cmd.RequiredArgs.DestApp,
    95  			"DstOrg":     displayDestinationOrg,
    96  			"DstSpace":   cmd.DestinationSpace,
    97  			"User":       user.Name,
    98  		})
    99  	} else {
   100  		cmd.UI.DisplayTextWithFlavor("Removing network policy from app {{.SrcAppName}} to app {{.DstAppName}} in org {{.Org}} / space {{.Space}} as {{.User}}...", map[string]interface{}{
   101  			"SrcAppName": cmd.RequiredArgs.SourceApp,
   102  			"Org":        cmd.Config.TargetedOrganization().Name,
   103  			"Space":      cmd.Config.TargetedSpace().Name,
   104  			"DstAppName": cmd.RequiredArgs.DestApp,
   105  			"User":       user.Name,
   106  		})
   107  	}
   108  
   109  	removeWarnings, err := cmd.NetworkingActor.RemoveNetworkPolicy(cmd.Config.TargetedSpace().GUID, cmd.RequiredArgs.SourceApp, destSpaceGUID, cmd.RequiredArgs.DestApp, cmd.Protocol.Protocol, cmd.Port.StartPort, cmd.Port.EndPort)
   110  	cmd.UI.DisplayWarnings(removeWarnings)
   111  	if err != nil {
   112  		switch err.(type) {
   113  		case actionerror.PolicyDoesNotExistError:
   114  			cmd.UI.DisplayText("Policy does not exist.")
   115  		default:
   116  			return err
   117  		}
   118  	}
   119  	cmd.UI.DisplayOK()
   120  
   121  	return nil
   122  }