github.com/franc20/ayesa_sap@v7.0.0-beta.28.0.20200124003224-302d4d52fa6c+incompatible/command/v7/space_command.go (about) 1 package v7 2 3 import ( 4 "strings" 5 6 "code.cloudfoundry.org/cli/actor/sharedaction" 7 "code.cloudfoundry.org/cli/actor/v7action" 8 "code.cloudfoundry.org/cli/command" 9 "code.cloudfoundry.org/cli/command/flag" 10 "code.cloudfoundry.org/cli/command/v7/shared" 11 "code.cloudfoundry.org/clock" 12 ) 13 14 //go:generate counterfeiter . SpaceActor 15 16 type SpaceActor interface { 17 GetSpaceByNameAndOrganization(spaceName string, orgGUID string) (v7action.Space, v7action.Warnings, error) 18 GetSpaceSummaryByNameAndOrganization(spaceName string, orgGUID string) (v7action.SpaceSummary, v7action.Warnings, error) 19 GetEffectiveIsolationSegmentBySpace(spaceGUID string, orgDefaultIsolationSegmentGUID string) (v7action.IsolationSegment, v7action.Warnings, error) 20 } 21 22 type SpaceCommand struct { 23 RequiredArgs flag.Space `positional-args:"yes"` 24 GUID bool `long:"guid" description:"Retrieve and display the given space's guid. All other output for the space is suppressed."` 25 SecurityGroupRules bool `long:"security-group-rules" description:"Retrieve the rules for all the security groups associated with the space."` 26 usage interface{} `usage:"CF_NAME space SPACE [--guid] [--security-group-rules]"` 27 relatedCommands interface{} `related_commands:"set-space-isolation-segment, space-quota, space-users"` 28 29 UI command.UI 30 Config command.Config 31 SharedActor command.SharedActor 32 Actor SpaceActor 33 } 34 35 func (cmd *SpaceCommand) Setup(config command.Config, ui command.UI) error { 36 cmd.Config = config 37 cmd.UI = ui 38 cmd.SharedActor = sharedaction.NewActor(config) 39 40 ccClient, _, err := shared.GetNewClientsAndConnectToCF(config, ui, "") 41 if err != nil { 42 return err 43 } 44 cmd.Actor = v7action.NewActor(ccClient, config, nil, nil, clock.NewClock()) 45 46 return nil 47 } 48 49 func (cmd SpaceCommand) Execute(args []string) error { 50 err := cmd.SharedActor.CheckTarget(true, false) 51 if err != nil { 52 return err 53 } 54 55 spaceName := cmd.RequiredArgs.Space 56 targetedOrg := cmd.Config.TargetedOrganization() 57 58 if cmd.GUID { 59 return cmd.displaySpaceGUID(spaceName, targetedOrg.GUID) 60 } 61 62 user, err := cmd.Config.CurrentUser() 63 if err != nil { 64 return err 65 } 66 67 cmd.UI.DisplayTextWithFlavor("Getting info for space {{.SpaceName}} in org {{.OrgName}} as {{.Username}}...", map[string]interface{}{ 68 "SpaceName": spaceName, 69 "OrgName": targetedOrg.Name, 70 "Username": user.Name, 71 }) 72 cmd.UI.DisplayNewline() 73 74 spaceSummary, warnings, err := cmd.Actor.GetSpaceSummaryByNameAndOrganization(spaceName, targetedOrg.GUID) 75 cmd.UI.DisplayWarnings(warnings) 76 if err != nil { 77 return err 78 } 79 table := [][]string{ 80 {cmd.UI.TranslateText("name:"), spaceSummary.Name}, 81 {cmd.UI.TranslateText("org:"), spaceSummary.OrgName}, 82 {cmd.UI.TranslateText("apps:"), strings.Join(spaceSummary.AppNames, ", ")}, 83 {cmd.UI.TranslateText("services:"), strings.Join(spaceSummary.ServiceInstanceNames, ", ")}, 84 {cmd.UI.TranslateText("isolation segment:"), spaceSummary.IsolationSegmentName}, 85 } 86 87 cmd.UI.DisplayKeyValueTable("", table, 3) 88 return nil 89 } 90 91 func (cmd SpaceCommand) displaySpaceGUID(spaceName string, orgGUID string) error { 92 space, warnings, err := cmd.Actor.GetSpaceByNameAndOrganization(spaceName, orgGUID) 93 cmd.UI.DisplayWarnings(warnings) 94 if err != nil { 95 return err 96 } 97 98 cmd.UI.DisplayText(space.GUID) 99 return nil 100 }