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 }