github.com/rakutentech/cli@v6.12.5-0.20151006231303-24468b65536e+incompatible/cf/commands/servicekey/delete_service_key.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/errors" 8 "github.com/cloudfoundry/cli/cf/requirements" 9 "github.com/cloudfoundry/cli/cf/terminal" 10 "github.com/cloudfoundry/cli/flags" 11 "github.com/cloudfoundry/cli/flags/flag" 12 13 . "github.com/cloudfoundry/cli/cf/i18n" 14 ) 15 16 type DeleteServiceKey struct { 17 ui terminal.UI 18 config core_config.Reader 19 serviceRepo api.ServiceRepository 20 serviceKeyRepo api.ServiceKeyRepository 21 } 22 23 func init() { 24 command_registry.Register(&DeleteServiceKey{}) 25 } 26 27 func (cmd *DeleteServiceKey) MetaData() command_registry.CommandMetadata { 28 fs := make(map[string]flags.FlagSet) 29 fs["f"] = &cliFlags.BoolFlag{Name: "f", Usage: T("Force deletion without confirmation")} 30 31 return command_registry.CommandMetadata{ 32 Name: "delete-service-key", 33 ShortName: "dsk", 34 Description: T("Delete a service key"), 35 Usage: T(`CF_NAME delete-service-key SERVICE_INSTANCE SERVICE_KEY [-f] 36 37 EXAMPLE: 38 CF_NAME delete-service-key mydb mykey`), 39 Flags: fs, 40 } 41 } 42 43 func (cmd *DeleteServiceKey) Requirements(requirementsFactory requirements.Factory, fc flags.FlagContext) ([]requirements.Requirement, error) { 44 if len(fc.Args()) != 2 { 45 cmd.ui.Failed(T("Incorrect Usage. Requires SERVICE_INSTANCE SERVICE_KEY as arguments\n\n") + command_registry.Commands.CommandUsage("delete-service-key")) 46 } 47 48 loginRequirement := requirementsFactory.NewLoginRequirement() 49 targetSpaceRequirement := requirementsFactory.NewTargetedSpaceRequirement() 50 51 reqs := []requirements.Requirement{loginRequirement, targetSpaceRequirement} 52 return reqs, nil 53 } 54 55 func (cmd *DeleteServiceKey) SetDependency(deps command_registry.Dependency, pluginCall bool) command_registry.Command { 56 cmd.ui = deps.Ui 57 cmd.config = deps.Config 58 cmd.serviceRepo = deps.RepoLocator.GetServiceRepository() 59 cmd.serviceKeyRepo = deps.RepoLocator.GetServiceKeyRepository() 60 return cmd 61 } 62 63 func (cmd *DeleteServiceKey) Execute(c flags.FlagContext) { 64 serviceInstanceName := c.Args()[0] 65 serviceKeyName := c.Args()[1] 66 67 if !c.Bool("f") { 68 if !cmd.ui.ConfirmDelete(T("service key"), serviceKeyName) { 69 return 70 } 71 } 72 73 cmd.ui.Say(T("Deleting key {{.ServiceKeyName}} for service instance {{.ServiceInstanceName}} as {{.CurrentUser}}...", 74 map[string]interface{}{ 75 "ServiceKeyName": terminal.EntityNameColor(serviceKeyName), 76 "ServiceInstanceName": terminal.EntityNameColor(serviceInstanceName), 77 "CurrentUser": terminal.EntityNameColor(cmd.config.Username()), 78 })) 79 80 serviceInstance, err := cmd.serviceRepo.FindInstanceByName(serviceInstanceName) 81 if err != nil { 82 cmd.ui.Ok() 83 cmd.ui.Warn(T("Service instance {{.ServiceInstanceName}} does not exist.", 84 map[string]interface{}{ 85 "ServiceInstanceName": serviceInstanceName, 86 })) 87 return 88 } 89 90 serviceKey, err := cmd.serviceKeyRepo.GetServiceKey(serviceInstance.Guid, serviceKeyName) 91 if err != nil || serviceKey.Fields.Guid == "" { 92 switch err.(type) { 93 case *errors.NotAuthorizedError: 94 cmd.ui.Say(T("No service key {{.ServiceKeyName}} found for service instance {{.ServiceInstanceName}}", 95 map[string]interface{}{ 96 "ServiceKeyName": terminal.EntityNameColor(serviceKeyName), 97 "ServiceInstanceName": terminal.EntityNameColor(serviceInstanceName)})) 98 return 99 default: 100 cmd.ui.Ok() 101 cmd.ui.Warn(T("Service key {{.ServiceKeyName}} does not exist for service instance {{.ServiceInstanceName}}.", 102 map[string]interface{}{ 103 "ServiceKeyName": serviceKeyName, 104 "ServiceInstanceName": serviceInstanceName, 105 })) 106 return 107 } 108 } 109 110 err = cmd.serviceKeyRepo.DeleteServiceKey(serviceKey.Fields.Guid) 111 if err != nil { 112 cmd.ui.Failed(err.Error()) 113 return 114 } 115 116 cmd.ui.Ok() 117 }