code.cloudfoundry.org/cli@v7.1.0+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/command/flag"
     9  )
    10  
    11  type OrgCommand struct {
    12  	BaseCommand
    13  
    14  	RequiredArgs    flag.Organization `positional-args:"yes"`
    15  	GUID            bool              `long:"guid" description:"Retrieve and display the given org's guid.  All other output for the org is suppressed."`
    16  	usage           interface{}       `usage:"CF_NAME org ORG [--guid]"`
    17  	relatedCommands interface{}       `related_commands:"org-users, orgs"`
    18  }
    19  
    20  func (cmd OrgCommand) Execute(args []string) error {
    21  	err := cmd.SharedActor.CheckTarget(false, false)
    22  	if err != nil {
    23  		return err
    24  	}
    25  
    26  	if cmd.GUID {
    27  		return cmd.displayOrgGUID()
    28  	}
    29  
    30  	return cmd.displayOrgSummary()
    31  }
    32  
    33  func (cmd OrgCommand) displayOrgGUID() error {
    34  	org, warnings, err := cmd.Actor.GetOrganizationByName(cmd.RequiredArgs.Organization)
    35  	cmd.UI.DisplayWarnings(warnings)
    36  	if err != nil {
    37  		return err
    38  	}
    39  
    40  	cmd.UI.DisplayText(org.GUID)
    41  
    42  	return nil
    43  }
    44  
    45  func (cmd OrgCommand) displayOrgSummary() error {
    46  	user, err := cmd.Config.CurrentUser()
    47  	if err != nil {
    48  		return err
    49  	}
    50  
    51  	cmd.UI.DisplayTextWithFlavor(
    52  		"Getting info for org {{.OrgName}} as {{.Username}}...",
    53  		map[string]interface{}{
    54  			"OrgName":  cmd.RequiredArgs.Organization,
    55  			"Username": user.Name,
    56  		})
    57  	cmd.UI.DisplayNewline()
    58  
    59  	orgSummary, warnings, err := cmd.Actor.GetOrganizationSummaryByName(cmd.RequiredArgs.Organization)
    60  	cmd.UI.DisplayWarnings(warnings)
    61  	if err != nil {
    62  		return err
    63  	}
    64  
    65  	table := [][]string{
    66  		{cmd.UI.TranslateText("name:"), orgSummary.Name},
    67  		{cmd.UI.TranslateText("domains:"), strings.Join(orgSummary.DomainNames, ", ")},
    68  		{cmd.UI.TranslateText("quota:"), orgSummary.QuotaName},
    69  		{cmd.UI.TranslateText("spaces:"), strings.Join(orgSummary.SpaceNames, ", ")},
    70  	}
    71  
    72  	isolationSegments, v7Warnings, err := cmd.Actor.GetIsolationSegmentsByOrganization(orgSummary.GUID)
    73  	cmd.UI.DisplayWarnings(v7Warnings)
    74  	if err != nil {
    75  		return err
    76  	}
    77  
    78  	isolationSegmentNames := []string{}
    79  	for _, iso := range isolationSegments {
    80  		if iso.GUID == orgSummary.DefaultIsolationSegmentGUID {
    81  			isolationSegmentNames = append(isolationSegmentNames, fmt.Sprintf("%s (%s)", iso.Name, cmd.UI.TranslateText("default")))
    82  		} else {
    83  			isolationSegmentNames = append(isolationSegmentNames, iso.Name)
    84  		}
    85  	}
    86  
    87  	sort.Strings(isolationSegmentNames)
    88  	table = append(table, []string{cmd.UI.TranslateText("isolation segments:"), strings.Join(isolationSegmentNames, ", ")})
    89  
    90  	cmd.UI.DisplayKeyValueTable("", table, 3)
    91  
    92  	return nil
    93  }