github.com/rakutentech/cli@v6.12.5-0.20151006231303-24468b65536e+incompatible/cf/commands/service/delete_service.go (about) 1 package service 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/i18n" 9 "github.com/cloudfoundry/cli/cf/requirements" 10 "github.com/cloudfoundry/cli/cf/terminal" 11 "github.com/cloudfoundry/cli/flags" 12 "github.com/cloudfoundry/cli/flags/flag" 13 ) 14 15 type DeleteService struct { 16 ui terminal.UI 17 config core_config.Reader 18 serviceRepo api.ServiceRepository 19 serviceInstanceReq requirements.ServiceInstanceRequirement 20 } 21 22 func init() { 23 command_registry.Register(&DeleteService{}) 24 } 25 26 func (cmd *DeleteService) MetaData() command_registry.CommandMetadata { 27 fs := make(map[string]flags.FlagSet) 28 fs["f"] = &cliFlags.BoolFlag{Name: "f", Usage: T("Force deletion without confirmation")} 29 30 return command_registry.CommandMetadata{ 31 Name: "delete-service", 32 ShortName: "ds", 33 Description: T("Delete a service instance"), 34 Usage: T("CF_NAME delete-service SERVICE_INSTANCE [-f]"), 35 Flags: fs, 36 } 37 } 38 39 func (cmd *DeleteService) Requirements(requirementsFactory requirements.Factory, fc flags.FlagContext) (reqs []requirements.Requirement, err error) { 40 if len(fc.Args()) != 1 { 41 cmd.ui.Failed(T("Incorrect Usage. Requires an argument\n\n") + command_registry.Commands.CommandUsage("delete-service")) 42 } 43 44 reqs = []requirements.Requirement{requirementsFactory.NewLoginRequirement()} 45 return 46 } 47 48 func (cmd *DeleteService) SetDependency(deps command_registry.Dependency, pluginCall bool) command_registry.Command { 49 cmd.ui = deps.Ui 50 cmd.config = deps.Config 51 cmd.serviceRepo = deps.RepoLocator.GetServiceRepository() 52 return cmd 53 } 54 55 func (cmd *DeleteService) Execute(c flags.FlagContext) { 56 serviceName := c.Args()[0] 57 58 if !c.Bool("f") { 59 if !cmd.ui.ConfirmDelete(T("service"), serviceName) { 60 return 61 } 62 } 63 64 cmd.ui.Say(T("Deleting service {{.ServiceName}} in org {{.OrgName}} / space {{.SpaceName}} as {{.CurrentUser}}...", 65 map[string]interface{}{ 66 "ServiceName": terminal.EntityNameColor(serviceName), 67 "OrgName": terminal.EntityNameColor(cmd.config.OrganizationFields().Name), 68 "SpaceName": terminal.EntityNameColor(cmd.config.SpaceFields().Name), 69 "CurrentUser": terminal.EntityNameColor(cmd.config.Username()), 70 })) 71 72 instance, apiErr := cmd.serviceRepo.FindInstanceByName(serviceName) 73 74 switch apiErr.(type) { 75 case nil: 76 case *errors.ModelNotFoundError: 77 cmd.ui.Ok() 78 cmd.ui.Warn(T("Service {{.ServiceName}} does not exist.", map[string]interface{}{"ServiceName": serviceName})) 79 return 80 default: 81 cmd.ui.Failed(apiErr.Error()) 82 return 83 } 84 85 apiErr = cmd.serviceRepo.DeleteService(instance) 86 if apiErr != nil { 87 cmd.ui.Failed(apiErr.Error()) 88 return 89 } 90 91 apiErr = printSuccessMessageForServiceInstance(serviceName, cmd.serviceRepo, cmd.ui) 92 if apiErr != nil { 93 cmd.ui.Ok() 94 } 95 }