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