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  }