github.com/franc20/ayesa_sap@v7.0.0-beta.28.0.20200124003224-302d4d52fa6c+incompatible/command/v6/domains_command.go (about) 1 package v6 2 3 import ( 4 "code.cloudfoundry.org/cli/actor/sharedaction" 5 "code.cloudfoundry.org/cli/actor/v2action" 6 "code.cloudfoundry.org/cli/command" 7 "code.cloudfoundry.org/cli/command/translatableerror" 8 "code.cloudfoundry.org/cli/command/v6/shared" 9 "code.cloudfoundry.org/cli/util/ui" 10 ) 11 12 //go:generate counterfeiter . DomainsActor 13 14 type DomainsActor interface { 15 GetDomains(orgGUID string) ([]v2action.Domain, v2action.Warnings, error) 16 } 17 18 type DomainsCommand struct { 19 usage interface{} `usage:"CF_NAME domains"` 20 relatedCommands interface{} `related_commands:"router-groups, create-route, routes"` 21 22 UI command.UI 23 Config command.Config 24 SharedActor command.SharedActor 25 Actor DomainsActor 26 } 27 28 func (cmd *DomainsCommand) Setup(config command.Config, ui command.UI) error { 29 cmd.Config = config 30 cmd.UI = ui 31 cmd.SharedActor = sharedaction.NewActor(config) 32 ccClient, uaaClient, err := shared.GetNewClientsAndConnectToCF(config, ui) 33 if err != nil { 34 return err 35 } 36 cmd.Actor = v2action.NewActor(ccClient, uaaClient, config) 37 38 return nil 39 } 40 41 func (cmd DomainsCommand) Execute(args []string) error { 42 if len(args) > 0 { 43 return translatableerror.TooManyArgumentsError{ 44 ExtraArgument: args[0], 45 } 46 } 47 48 err := cmd.SharedActor.CheckTarget(true, false) 49 if err != nil { 50 return err 51 } 52 53 org := cmd.Config.TargetedOrganization() 54 55 user, err := cmd.Config.CurrentUser() 56 if err != nil { 57 return err 58 } 59 60 cmd.UI.DisplayTextWithFlavor("Getting domains in org {{.CurrentOrg}} as {{.CurrentUser}}...", map[string]interface{}{ 61 "CurrentUser": user.Name, 62 "CurrentOrg": org.Name, 63 }) 64 65 domains, warnings, err := cmd.Actor.GetDomains(org.GUID) 66 cmd.UI.DisplayWarnings(warnings) 67 if err != nil { 68 return err 69 } 70 71 table := [][]string{ 72 { 73 cmd.UI.TranslateText("name"), 74 cmd.UI.TranslateText("status"), 75 cmd.UI.TranslateText("type"), 76 cmd.UI.TranslateText("details"), 77 }, 78 } 79 80 for _, domain := range domains { 81 internalMark := "" 82 if domain.Internal { 83 internalMark = "internal" 84 } 85 table = append( 86 table, 87 []string{ 88 domain.Name, 89 string(domain.Type), 90 string(domain.RouterGroupType), 91 internalMark, 92 }, 93 ) 94 } 95 96 cmd.UI.DisplayTableWithHeader("", table, ui.DefaultTableSpacePadding) 97 98 return err 99 }