github.com/mook-as/cf-cli@v7.0.0-beta.28.0.20200120190804-b91c115fae48+incompatible/command/v7/org_command.go (about) 1 package v7 2 3 import ( 4 "fmt" 5 "sort" 6 "strings" 7 8 "code.cloudfoundry.org/cli/actor/sharedaction" 9 "code.cloudfoundry.org/cli/actor/v7action" 10 "code.cloudfoundry.org/cli/command" 11 "code.cloudfoundry.org/cli/command/flag" 12 "code.cloudfoundry.org/cli/command/v7/shared" 13 14 "code.cloudfoundry.org/clock" 15 ) 16 17 //go:generate counterfeiter . OrgActor 18 19 type OrgActor interface { 20 GetOrganizationByName(orgName string) (v7action.Organization, v7action.Warnings, error) 21 GetOrganizationSummaryByName(orgName string) (v7action.OrganizationSummary, v7action.Warnings, error) 22 GetIsolationSegmentsByOrganization(orgName string) ([]v7action.IsolationSegment, v7action.Warnings, error) 23 } 24 25 type OrgCommand struct { 26 RequiredArgs flag.Organization `positional-args:"yes"` 27 GUID bool `long:"guid" description:"Retrieve and display the given org's guid. All other output for the org is suppressed."` 28 usage interface{} `usage:"CF_NAME org ORG [--guid]"` 29 relatedCommands interface{} `related_commands:"org-users, orgs"` 30 31 UI command.UI 32 Config command.Config 33 SharedActor command.SharedActor 34 Actor OrgActor 35 } 36 37 func (cmd *OrgCommand) Setup(config command.Config, ui command.UI) error { 38 cmd.Config = config 39 cmd.UI = ui 40 sharedActor := sharedaction.NewActor(config) 41 cmd.SharedActor = sharedActor 42 43 ccClient, uaaClient, err := shared.GetNewClientsAndConnectToCF(config, ui, "") 44 if err != nil { 45 return err 46 } 47 cmd.Actor = v7action.NewActor(ccClient, config, sharedActor, uaaClient, clock.NewClock()) 48 49 return nil 50 } 51 52 func (cmd OrgCommand) Execute(args []string) error { 53 err := cmd.SharedActor.CheckTarget(false, false) 54 if err != nil { 55 return err 56 } 57 58 if cmd.GUID { 59 return cmd.displayOrgGUID() 60 } 61 62 return cmd.displayOrgSummary() 63 } 64 65 func (cmd OrgCommand) displayOrgGUID() error { 66 org, warnings, err := cmd.Actor.GetOrganizationByName(cmd.RequiredArgs.Organization) 67 cmd.UI.DisplayWarnings(warnings) 68 if err != nil { 69 return err 70 } 71 72 cmd.UI.DisplayText(org.GUID) 73 74 return nil 75 } 76 77 func (cmd OrgCommand) displayOrgSummary() error { 78 user, err := cmd.Config.CurrentUser() 79 if err != nil { 80 return err 81 } 82 83 cmd.UI.DisplayTextWithFlavor( 84 "Getting info for org {{.OrgName}} as {{.Username}}...", 85 map[string]interface{}{ 86 "OrgName": cmd.RequiredArgs.Organization, 87 "Username": user.Name, 88 }) 89 cmd.UI.DisplayNewline() 90 91 orgSummary, warnings, err := cmd.Actor.GetOrganizationSummaryByName(cmd.RequiredArgs.Organization) 92 cmd.UI.DisplayWarnings(warnings) 93 if err != nil { 94 return err 95 } 96 97 table := [][]string{ 98 {cmd.UI.TranslateText("name:"), orgSummary.Name}, 99 {cmd.UI.TranslateText("domains:"), strings.Join(orgSummary.DomainNames, ", ")}, 100 {cmd.UI.TranslateText("spaces:"), strings.Join(orgSummary.SpaceNames, ", ")}, 101 } 102 103 isolationSegments, v7Warnings, err := cmd.Actor.GetIsolationSegmentsByOrganization(orgSummary.GUID) 104 cmd.UI.DisplayWarnings(v7Warnings) 105 if err != nil { 106 return err 107 } 108 109 isolationSegmentNames := []string{} 110 for _, iso := range isolationSegments { 111 if iso.GUID == orgSummary.DefaultIsolationSegmentGUID { 112 isolationSegmentNames = append(isolationSegmentNames, fmt.Sprintf("%s (%s)", iso.Name, cmd.UI.TranslateText("default"))) 113 } else { 114 isolationSegmentNames = append(isolationSegmentNames, iso.Name) 115 } 116 } 117 118 sort.Strings(isolationSegmentNames) 119 table = append(table, []string{cmd.UI.TranslateText("isolation segments:"), strings.Join(isolationSegmentNames, ", ")}) 120 121 cmd.UI.DisplayKeyValueTable("", table, 3) 122 123 return nil 124 }