github.com/LukasHeimann/cloudfoundrycli/v8@v8.4.4/command/v7/service_keys_command.go (about)

     1  package v7
     2  
     3  import (
     4  	"fmt"
     5  
     6  	"github.com/LukasHeimann/cloudfoundrycli/v8/command/flag"
     7  	"github.com/LukasHeimann/cloudfoundrycli/v8/resources"
     8  	"github.com/LukasHeimann/cloudfoundrycli/v8/util/ui"
     9  )
    10  
    11  type ServiceKeysCommand struct {
    12  	BaseCommand
    13  
    14  	RequiredArgs    flag.ServiceInstance `positional-args:"yes"`
    15  	relatedCommands interface{}          `related_commands:"delete-service-key"`
    16  }
    17  
    18  func (cmd ServiceKeysCommand) Execute(args []string) error {
    19  	if err := cmd.SharedActor.CheckTarget(true, true); err != nil {
    20  		return err
    21  	}
    22  
    23  	if err := cmd.displayIntro(); err != nil {
    24  		return err
    25  	}
    26  
    27  	keys, warnings, err := cmd.Actor.GetServiceKeysByServiceInstance(
    28  		string(cmd.RequiredArgs.ServiceInstance),
    29  		cmd.Config.TargetedSpace().GUID,
    30  	)
    31  	cmd.UI.DisplayWarnings(warnings)
    32  	if err != nil {
    33  		return err
    34  	}
    35  
    36  	switch len(keys) {
    37  	case 0:
    38  		cmd.displayEmptyResult()
    39  	default:
    40  		cmd.displayKeysTable(keys)
    41  	}
    42  	return nil
    43  }
    44  
    45  func (cmd ServiceKeysCommand) Usage() string {
    46  	return `CF_NAME service-keys SERVICE_INSTANCE`
    47  }
    48  
    49  func (cmd ServiceKeysCommand) Examples() string {
    50  	return `CF_NAME service-keys mydb`
    51  }
    52  
    53  func (cmd ServiceKeysCommand) displayIntro() error {
    54  	user, err := cmd.Actor.GetCurrentUser()
    55  	if err != nil {
    56  		return err
    57  	}
    58  
    59  	cmd.UI.DisplayTextWithFlavor("Getting keys for service instance {{.ServiceInstanceName}} as {{.UserName}}...", map[string]interface{}{
    60  		"ServiceInstanceName": string(cmd.RequiredArgs.ServiceInstance),
    61  		"UserName":            user.Name,
    62  	})
    63  	cmd.UI.DisplayNewline()
    64  
    65  	return nil
    66  }
    67  
    68  func (cmd ServiceKeysCommand) displayEmptyResult() {
    69  	cmd.UI.DisplayText("No service keys for service instance {{.ServiceInstanceName}}", map[string]interface{}{
    70  		"ServiceInstanceName": string(cmd.RequiredArgs.ServiceInstance),
    71  	})
    72  }
    73  
    74  func (cmd ServiceKeysCommand) displayKeysTable(keys []resources.ServiceCredentialBinding) {
    75  	table := [][]string{{"name", "last operation", "message"}}
    76  	for _, k := range keys {
    77  		table = append(table, []string{k.Name, lastOperation(k.LastOperation), k.LastOperation.Description})
    78  	}
    79  
    80  	cmd.UI.DisplayTableWithHeader("", table, ui.DefaultTableSpacePadding)
    81  }
    82  
    83  func lastOperation(lo resources.LastOperation) string {
    84  	if lo.Type != "" && lo.State != "" {
    85  		return fmt.Sprintf("%s %s", lo.Type, lo.State)
    86  	}
    87  	return ""
    88  }