github.com/loafoe/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 }