github.com/rakutentech/cli@v6.12.5-0.20151006231303-24468b65536e+incompatible/cf/commands/servicekey/service_keys.go (about) 1 package servicekey 2 3 import ( 4 "github.com/cloudfoundry/cli/cf/api" 5 "github.com/cloudfoundry/cli/cf/command_registry" 6 "github.com/cloudfoundry/cli/cf/configuration/core_config" 7 "github.com/cloudfoundry/cli/cf/requirements" 8 "github.com/cloudfoundry/cli/cf/terminal" 9 "github.com/cloudfoundry/cli/flags" 10 11 . "github.com/cloudfoundry/cli/cf/i18n" 12 ) 13 14 type ServiceKeys struct { 15 ui terminal.UI 16 config core_config.Reader 17 serviceRepo api.ServiceRepository 18 serviceKeyRepo api.ServiceKeyRepository 19 serviceInstanceRequirement requirements.ServiceInstanceRequirement 20 } 21 22 func init() { 23 command_registry.Register(&ServiceKeys{}) 24 } 25 26 func (cmd *ServiceKeys) MetaData() command_registry.CommandMetadata { 27 return command_registry.CommandMetadata{ 28 Name: "service-keys", 29 ShortName: "sk", 30 Description: T("List keys for a service instance"), 31 Usage: T(`CF_NAME service-keys SERVICE_INSTANCE 32 33 EXAMPLE: 34 CF_NAME service-keys mydb`), 35 } 36 } 37 38 func (cmd *ServiceKeys) Requirements(requirementsFactory requirements.Factory, fc flags.FlagContext) ([]requirements.Requirement, error) { 39 if len(fc.Args()) != 1 { 40 cmd.ui.Failed(T("Incorrect Usage. Requires an argument\n\n") + command_registry.Commands.CommandUsage("service-keys")) 41 } 42 43 loginRequirement := requirementsFactory.NewLoginRequirement() 44 cmd.serviceInstanceRequirement = requirementsFactory.NewServiceInstanceRequirement(fc.Args()[0]) 45 targetSpaceRequirement := requirementsFactory.NewTargetedSpaceRequirement() 46 47 reqs := []requirements.Requirement{loginRequirement, cmd.serviceInstanceRequirement, targetSpaceRequirement} 48 49 return reqs, nil 50 } 51 52 func (cmd *ServiceKeys) SetDependency(deps command_registry.Dependency, pluginCall bool) command_registry.Command { 53 cmd.ui = deps.Ui 54 cmd.config = deps.Config 55 cmd.serviceRepo = deps.RepoLocator.GetServiceRepository() 56 cmd.serviceKeyRepo = deps.RepoLocator.GetServiceKeyRepository() 57 return cmd 58 } 59 60 func (cmd *ServiceKeys) Execute(c flags.FlagContext) { 61 serviceInstance := cmd.serviceInstanceRequirement.GetServiceInstance() 62 63 cmd.ui.Say(T("Getting keys for service instance {{.ServiceInstanceName}} as {{.CurrentUser}}...", 64 map[string]interface{}{ 65 "ServiceInstanceName": terminal.EntityNameColor(serviceInstance.Name), 66 "CurrentUser": terminal.EntityNameColor(cmd.config.Username()), 67 })) 68 69 serviceKeys, err := cmd.serviceKeyRepo.ListServiceKeys(serviceInstance.Guid) 70 if err != nil { 71 cmd.ui.Failed(err.Error()) 72 return 73 } 74 75 table := cmd.ui.Table([]string{T("name")}) 76 77 for _, serviceKey := range serviceKeys { 78 table.Add(serviceKey.Fields.Name) 79 } 80 81 if len(serviceKeys) == 0 { 82 cmd.ui.Say(T("No service key for service instance {{.ServiceInstanceName}}", 83 map[string]interface{}{"ServiceInstanceName": terminal.EntityNameColor(serviceInstance.Name)})) 84 return 85 } else { 86 cmd.ui.Say("") 87 table.Print() 88 } 89 }