github.com/arunkumar7540/cli@v6.45.0+incompatible/command/v7/domains_command.go (about) 1 package v7 2 3 import ( 4 "code.cloudfoundry.org/cli/actor/sharedaction" 5 "code.cloudfoundry.org/cli/actor/v7action" 6 "code.cloudfoundry.org/cli/command" 7 "code.cloudfoundry.org/cli/command/v7/shared" 8 "code.cloudfoundry.org/cli/util/sorting" 9 "code.cloudfoundry.org/cli/util/ui" 10 "sort" 11 ) 12 13 //go:generate counterfeiter . DomainsActor 14 15 type DomainsActor interface { 16 GetOrganizationDomains(string) ([]v7action.Domain, v7action.Warnings, error) 17 } 18 19 type DomainsCommand struct { 20 usage interface{} `usage:"CF_NAME domains"` 21 relatedCommands interface{} `related_commands:"create-route, routes, create-shared-domain, create-private-domain"` 22 23 UI command.UI 24 Config command.Config 25 SharedActor command.SharedActor 26 Actor DomainsActor 27 } 28 29 func (cmd *DomainsCommand) Setup(config command.Config, ui command.UI) error { 30 cmd.UI = ui 31 cmd.Config = config 32 cmd.SharedActor = sharedaction.NewActor(config) 33 34 ccClient, _, err := shared.NewClients(config, ui, true, "") 35 if err != nil { 36 return err 37 } 38 cmd.Actor = v7action.NewActor(ccClient, config, nil, nil) 39 40 return nil 41 } 42 43 func (cmd DomainsCommand) Execute(args []string) error { 44 err := cmd.SharedActor.CheckTarget(true, false) 45 if err != nil { 46 return err 47 } 48 49 currentUser, err := cmd.Config.CurrentUser() 50 if err != nil { 51 return err 52 } 53 54 targetedOrg := cmd.Config.TargetedOrganization() 55 cmd.UI.DisplayTextWithFlavor("Getting domains in org {{.CurrentOrg}} as {{.CurrentUser}}...\n", map[string]interface{}{ 56 "CurrentOrg": targetedOrg.Name, 57 "CurrentUser": currentUser.Name, 58 }) 59 60 domains, warnings, err := cmd.Actor.GetOrganizationDomains(targetedOrg.GUID) 61 cmd.UI.DisplayWarnings(warnings) 62 if err != nil { 63 return err 64 } 65 66 sort.Slice(domains, func(i, j int) bool { return sorting.LessIgnoreCase(domains[i].Name, domains[j].Name) }) 67 68 if len(domains) > 0 { 69 cmd.displayDomainsTable(domains) 70 } else { 71 cmd.UI.DisplayText("No domains found.") 72 } 73 return nil 74 } 75 76 func (cmd DomainsCommand) displayDomainsTable(domains []v7action.Domain) { 77 var domainsTable = [][]string{ 78 { 79 cmd.UI.TranslateText("name"), 80 cmd.UI.TranslateText("availability"), 81 cmd.UI.TranslateText("internal"), 82 }, 83 } 84 85 for _, domain := range domains { 86 var availability string 87 var internal string 88 89 if domain.Shared() { 90 availability = cmd.UI.TranslateText("shared") 91 } else { 92 availability = cmd.UI.TranslateText("private") 93 } 94 95 if domain.Internal.IsSet && domain.Internal.Value { 96 internal = cmd.UI.TranslateText("true") 97 } 98 99 domainsTable = append(domainsTable, []string{ 100 domain.Name, 101 availability, 102 internal, 103 }) 104 } 105 106 cmd.UI.DisplayTableWithHeader("", domainsTable, ui.DefaultTableSpacePadding) 107 108 }