github.com/franc20/ayesa_sap@v7.0.0-beta.28.0.20200124003224-302d4d52fa6c+incompatible/command/v6/network_policies_command.go (about) 1 package v6 2 3 import ( 4 "fmt" 5 "strconv" 6 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/command" 11 "code.cloudfoundry.org/cli/command/v6/shared" 12 "code.cloudfoundry.org/cli/util/ui" 13 ) 14 15 //go:generate counterfeiter . NetworkPoliciesActor 16 17 type NetworkPoliciesActor interface { 18 NetworkPoliciesBySpaceAndAppName(spaceGUID string, srcAppName string) ([]cfnetworkingaction.Policy, cfnetworkingaction.Warnings, error) 19 NetworkPoliciesBySpace(spaceGUID string) ([]cfnetworkingaction.Policy, cfnetworkingaction.Warnings, error) 20 } 21 22 type NetworkPoliciesCommand struct { 23 SourceApp string `long:"source" required:"false" description:"Source app to filter results by"` 24 25 usage interface{} `usage:"CF_NAME network-policies [--source SOURCE_APP]"` 26 relatedCommands interface{} `related_commands:"add-network-policy, apps, remove-network-policy"` 27 28 UI command.UI 29 Config command.Config 30 SharedActor command.SharedActor 31 Actor NetworkPoliciesActor 32 } 33 34 func (cmd *NetworkPoliciesCommand) Setup(config command.Config, ui command.UI) error { 35 cmd.UI = ui 36 cmd.Config = config 37 cmd.SharedActor = sharedaction.NewActor(config) 38 39 client, uaa, err := shared.NewV3BasedClients(config, ui, true) 40 if err != nil { 41 return err 42 } 43 44 v3Actor := v3action.NewActor(client, config, nil, nil) 45 networkingClient, err := shared.NewNetworkingClient(client.NetworkPolicyV1(), config, uaa, ui) 46 if err != nil { 47 return err 48 } 49 cmd.Actor = cfnetworkingaction.NewActor(networkingClient, v3Actor) 50 51 return nil 52 } 53 54 func (cmd NetworkPoliciesCommand) Execute(args []string) error { 55 err := cmd.SharedActor.CheckTarget(true, true) 56 if err != nil { 57 return err 58 } 59 60 user, err := cmd.Config.CurrentUser() 61 if err != nil { 62 return err 63 } 64 65 var policies []cfnetworkingaction.Policy 66 var warnings cfnetworkingaction.Warnings 67 68 if cmd.SourceApp != "" { 69 cmd.UI.DisplayTextWithFlavor("Listing network policies of app {{.SrcAppName}} in org {{.Org}} / space {{.Space}} as {{.User}}...", map[string]interface{}{ 70 "SrcAppName": cmd.SourceApp, 71 "Org": cmd.Config.TargetedOrganization().Name, 72 "Space": cmd.Config.TargetedSpace().Name, 73 "User": user.Name, 74 }) 75 policies, warnings, err = cmd.Actor.NetworkPoliciesBySpaceAndAppName(cmd.Config.TargetedSpace().GUID, cmd.SourceApp) 76 } else { 77 cmd.UI.DisplayTextWithFlavor("Listing network policies in org {{.Org}} / space {{.Space}} as {{.User}}...", map[string]interface{}{ 78 "Org": cmd.Config.TargetedOrganization().Name, 79 "Space": cmd.Config.TargetedSpace().Name, 80 "User": user.Name, 81 }) 82 policies, warnings, err = cmd.Actor.NetworkPoliciesBySpace(cmd.Config.TargetedSpace().GUID) 83 } 84 85 cmd.UI.DisplayWarnings(warnings) 86 if err != nil { 87 return err 88 } 89 90 cmd.UI.DisplayNewline() 91 92 table := [][]string{ 93 { 94 cmd.UI.TranslateText("source"), 95 cmd.UI.TranslateText("destination"), 96 cmd.UI.TranslateText("protocol"), 97 cmd.UI.TranslateText("ports"), 98 cmd.UI.TranslateText("destination space"), 99 cmd.UI.TranslateText("destination org"), 100 }, 101 } 102 103 for _, policy := range policies { 104 var portEntry string 105 if policy.StartPort == policy.EndPort { 106 portEntry = strconv.Itoa(policy.StartPort) 107 } else { 108 portEntry = fmt.Sprintf("%d-%d", policy.StartPort, policy.EndPort) 109 } 110 table = append(table, []string{ 111 policy.SourceName, 112 policy.DestinationName, 113 policy.Protocol, 114 portEntry, 115 policy.DestinationSpaceName, 116 policy.DestinationOrgName, 117 }) 118 } 119 120 cmd.UI.DisplayTableWithHeader("", table, ui.DefaultTableSpacePadding) 121 122 return nil 123 }