github.com/nimakaviani/cli@v6.37.1-0.20180619223813-e734901a73fa+incompatible/command/v3/remove_network_policy_command.go (about)

     1  package v3
     2  
     3  import (
     4  	"net/http"
     5  
     6  	"code.cloudfoundry.org/cli/actor/actionerror"
     7  	"code.cloudfoundry.org/cli/actor/cfnetworkingaction"
     8  	"code.cloudfoundry.org/cli/actor/sharedaction"
     9  	"code.cloudfoundry.org/cli/actor/v3action"
    10  	"code.cloudfoundry.org/cli/api/cloudcontroller/ccerror"
    11  	"code.cloudfoundry.org/cli/command"
    12  	"code.cloudfoundry.org/cli/command/flag"
    13  	"code.cloudfoundry.org/cli/command/translatableerror"
    14  	"code.cloudfoundry.org/cli/command/v3/shared"
    15  )
    16  
    17  //go:generate counterfeiter . RemoveNetworkPolicyActor
    18  
    19  type RemoveNetworkPolicyActor interface {
    20  	RemoveNetworkPolicy(spaceGUID string, srcAppName string, destAppName string, protocol string, startPort int, endPort int) (cfnetworkingaction.Warnings, error)
    21  }
    22  
    23  type RemoveNetworkPolicyCommand struct {
    24  	RequiredArgs   flag.RemoveNetworkPolicyArgs `positional-args:"yes"`
    25  	DestinationApp string                       `long:"destination-app" required:"true" description:"Name of app to connect to"`
    26  	Port           flag.NetworkPort             `long:"port" required:"true" description:"Port or range of ports that destination app is connected with"`
    27  	Protocol       flag.NetworkProtocol         `long:"protocol" required:"true" description:"Protocol that apps are connected with"`
    28  
    29  	usage           interface{} `usage:"CF_NAME remove-network-policy SOURCE_APP --destination-app DESTINATION_APP --protocol (tcp | udp) --port RANGE\n\nEXAMPLES:\n   CF_NAME remove-network-policy frontend --destination-app backend --protocol tcp --port 8081\n   CF_NAME remove-network-policy frontend --destination-app backend --protocol tcp --port 8080-8090"`
    30  	relatedCommands interface{} `related_commands:"apps, network-policies"`
    31  
    32  	UI          command.UI
    33  	Config      command.Config
    34  	SharedActor command.SharedActor
    35  	Actor       RemoveNetworkPolicyActor
    36  }
    37  
    38  func (cmd *RemoveNetworkPolicyCommand) Setup(config command.Config, ui command.UI) error {
    39  	cmd.UI = ui
    40  	cmd.Config = config
    41  	cmd.SharedActor = sharedaction.NewActor(config)
    42  
    43  	client, uaa, err := shared.NewClients(config, ui, true)
    44  	if err != nil {
    45  		if v3Err, ok := err.(ccerror.V3UnexpectedResponseError); ok && v3Err.ResponseCode == http.StatusNotFound {
    46  			return translatableerror.CFNetworkingEndpointNotFoundError{}
    47  		}
    48  
    49  		return err
    50  	}
    51  
    52  	v3Actor := v3action.NewActor(client, config, nil, nil)
    53  	networkingClient, err := shared.NewNetworkingClient(client.NetworkPolicyV1(), config, uaa, ui)
    54  	if err != nil {
    55  		return err
    56  	}
    57  	cmd.Actor = cfnetworkingaction.NewActor(networkingClient, v3Actor)
    58  
    59  	return nil
    60  }
    61  
    62  func (cmd RemoveNetworkPolicyCommand) Execute(args []string) error {
    63  	err := cmd.SharedActor.CheckTarget(true, true)
    64  	if err != nil {
    65  		return err
    66  	}
    67  
    68  	user, err := cmd.Config.CurrentUser()
    69  	if err != nil {
    70  		return err
    71  	}
    72  	cmd.UI.DisplayTextWithFlavor("Removing network policy for app {{.SrcAppName}} in org {{.Org}} / space {{.Space}} as {{.User}}...", map[string]interface{}{
    73  		"SrcAppName": cmd.RequiredArgs.SourceApp,
    74  		"Org":        cmd.Config.TargetedOrganization().Name,
    75  		"Space":      cmd.Config.TargetedSpace().Name,
    76  		"User":       user.Name,
    77  	})
    78  
    79  	warnings, err := cmd.Actor.RemoveNetworkPolicy(cmd.Config.TargetedSpace().GUID, cmd.RequiredArgs.SourceApp, cmd.DestinationApp, cmd.Protocol.Protocol, cmd.Port.StartPort, cmd.Port.EndPort)
    80  	cmd.UI.DisplayWarnings(warnings)
    81  	if err != nil {
    82  		switch err.(type) {
    83  		case actionerror.PolicyDoesNotExistError:
    84  			cmd.UI.DisplayText("Policy does not exist.")
    85  		default:
    86  			return err
    87  		}
    88  	}
    89  	cmd.UI.DisplayOK()
    90  
    91  	return nil
    92  }