github.com/franc20/ayesa_sap@v7.0.0-beta.28.0.20200124003224-302d4d52fa6c+incompatible/command/v6/remove_network_policy_command.go (about) 1 package v6 2 3 import ( 4 "code.cloudfoundry.org/cli/actor/actionerror" 5 "code.cloudfoundry.org/cli/actor/cfnetworkingaction" 6 "code.cloudfoundry.org/cli/actor/sharedaction" 7 "code.cloudfoundry.org/cli/actor/v3action" 8 "code.cloudfoundry.org/cli/command" 9 "code.cloudfoundry.org/cli/command/flag" 10 "code.cloudfoundry.org/cli/command/translatableerror" 11 "code.cloudfoundry.org/cli/command/v6/shared" 12 ) 13 14 //go:generate counterfeiter . RemoveNetworkPolicyActor 15 16 type RemoveNetworkPolicyActor interface { 17 RemoveNetworkPolicy(srcSpaceGUID string, srcAppName string, destSpaceGUID string, destAppName string, protocol string, startPort int, endPort int) (cfnetworkingaction.Warnings, error) 18 } 19 20 type RemoveNetworkPolicyCommand struct { 21 RequiredArgs flag.RemoveNetworkPolicyArgs `positional-args:"yes"` 22 DestinationApp string `long:"destination-app" required:"true" description:"Name of app to connect to"` 23 Port flag.NetworkPort `long:"port" required:"true" description:"Port or range of ports that destination app is connected with"` 24 Protocol flag.NetworkProtocol `long:"protocol" required:"true" description:"Protocol that apps are connected with"` 25 DestinationOrg string `short:"o" description:"The org of the destination app (Default: targeted org)"` 26 DestinationSpace string `short:"s" description:"The space of the destination app (Default: targeted space)"` 27 28 usage interface{} `usage:"CF_NAME remove-network-policy SOURCE_APP --destination-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 --destination-app backend --protocol tcp --port 8081\n CF_NAME remove-network-policy frontend --destination-app backend -s backend-space -o backend-org --protocol tcp --port 8080-8090"` 29 relatedCommands interface{} `related_commands:"apps, network-policies, add-network-policy"` 30 31 UI command.UI 32 Config command.Config 33 SharedActor command.SharedActor 34 NetworkPolicyActor RemoveNetworkPolicyActor 35 MembershipActor MembershipActor 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.NewV3BasedClients(config, ui, true) 44 if err != nil { 45 return err 46 } 47 48 v3Actor := v3action.NewActor(client, config, nil, nil) 49 50 networkingClient, err := shared.NewNetworkingClient(client.NetworkPolicyV1(), config, uaa, ui) 51 if err != nil { 52 return err 53 } 54 cmd.NetworkPolicyActor = cfnetworkingaction.NewActor(networkingClient, v3Actor) 55 cmd.MembershipActor = v3Actor 56 57 return nil 58 } 59 60 func (cmd RemoveNetworkPolicyCommand) Execute(args []string) error { 61 if cmd.DestinationOrg != "" && cmd.DestinationSpace == "" { 62 return translatableerror.NetworkPolicyDestinationOrgWithoutSpaceError{} 63 } 64 65 err := cmd.SharedActor.CheckTarget(true, true) 66 if err != nil { 67 return err 68 } 69 70 destOrgGUID := cmd.Config.TargetedOrganization().GUID 71 displayDestinationOrg := cmd.Config.TargetedOrganization().Name 72 if cmd.DestinationOrg != "" { 73 var destOrg v3action.Organization 74 var warnings v3action.Warnings 75 destOrg, warnings, err = cmd.MembershipActor.GetOrganizationByName(cmd.DestinationOrg) 76 cmd.UI.DisplayWarnings(warnings) 77 if err != nil { 78 return err 79 } 80 81 destOrgGUID = destOrg.GUID 82 displayDestinationOrg = cmd.DestinationOrg 83 } 84 85 destSpaceGUID := cmd.Config.TargetedSpace().GUID 86 if cmd.DestinationSpace != "" { 87 var destSpace v3action.Space 88 var warnings v3action.Warnings 89 destSpace, warnings, err = cmd.MembershipActor.GetSpaceByNameAndOrganization(cmd.DestinationSpace, destOrgGUID) 90 cmd.UI.DisplayWarnings(warnings) 91 if err != nil { 92 return err 93 } 94 95 destSpaceGUID = destSpace.GUID 96 } 97 98 user, err := cmd.Config.CurrentUser() 99 if err != nil { 100 return err 101 } 102 if cmd.DestinationSpace != "" { 103 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{}{ 104 "SrcAppName": cmd.RequiredArgs.SourceApp, 105 "Org": cmd.Config.TargetedOrganization().Name, 106 "Space": cmd.Config.TargetedSpace().Name, 107 "DstAppName": cmd.DestinationApp, 108 "DstOrg": displayDestinationOrg, 109 "DstSpace": cmd.DestinationSpace, 110 "User": user.Name, 111 }) 112 } else { 113 cmd.UI.DisplayTextWithFlavor("Removing network policy from app {{.SrcAppName}} to app {{.DstAppName}} in org {{.Org}} / space {{.Space}} as {{.User}}...", map[string]interface{}{ 114 "SrcAppName": cmd.RequiredArgs.SourceApp, 115 "Org": cmd.Config.TargetedOrganization().Name, 116 "Space": cmd.Config.TargetedSpace().Name, 117 "DstAppName": cmd.DestinationApp, 118 "User": user.Name, 119 }) 120 } 121 122 removeWarnings, err := cmd.NetworkPolicyActor.RemoveNetworkPolicy(cmd.Config.TargetedSpace().GUID, cmd.RequiredArgs.SourceApp, destSpaceGUID, cmd.DestinationApp, cmd.Protocol.Protocol, cmd.Port.StartPort, cmd.Port.EndPort) 123 cmd.UI.DisplayWarnings(removeWarnings) 124 if err != nil { 125 switch err.(type) { 126 case actionerror.PolicyDoesNotExistError: 127 cmd.UI.DisplayText("Policy does not exist.") 128 default: 129 return err 130 } 131 } 132 cmd.UI.DisplayOK() 133 134 return nil 135 }