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 }