github.com/rakutentech/cli@v6.12.5-0.20151006231303-24468b65536e+incompatible/cf/commands/service/unbind_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/i18n" 8 "github.com/cloudfoundry/cli/cf/requirements" 9 "github.com/cloudfoundry/cli/cf/terminal" 10 "github.com/cloudfoundry/cli/flags" 11 ) 12 13 type UnbindService struct { 14 ui terminal.UI 15 config core_config.Reader 16 serviceBindingRepo api.ServiceBindingRepository 17 appReq requirements.ApplicationRequirement 18 serviceInstanceReq requirements.ServiceInstanceRequirement 19 } 20 21 func init() { 22 command_registry.Register(&UnbindService{}) 23 } 24 25 func (cmd *UnbindService) MetaData() command_registry.CommandMetadata { 26 return command_registry.CommandMetadata{ 27 Name: "unbind-service", 28 ShortName: "us", 29 Description: T("Unbind a service instance from an app"), 30 Usage: T("CF_NAME unbind-service APP_NAME SERVICE_INSTANCE"), 31 } 32 } 33 34 func (cmd *UnbindService) Requirements(requirementsFactory requirements.Factory, fc flags.FlagContext) ([]requirements.Requirement, error) { 35 if len(fc.Args()) != 2 { 36 cmd.ui.Failed(T("Incorrect Usage. Requires APP SERVICE_INSTANCE as arguments\n\n") + command_registry.Commands.CommandUsage("unbind-service")) 37 } 38 39 serviceName := fc.Args()[1] 40 41 cmd.appReq = requirementsFactory.NewApplicationRequirement(fc.Args()[0]) 42 cmd.serviceInstanceReq = requirementsFactory.NewServiceInstanceRequirement(serviceName) 43 44 reqs := []requirements.Requirement{ 45 requirementsFactory.NewLoginRequirement(), 46 cmd.appReq, 47 cmd.serviceInstanceReq, 48 } 49 return reqs, nil 50 } 51 52 func (cmd *UnbindService) SetDependency(deps command_registry.Dependency, pluginCall bool) command_registry.Command { 53 cmd.ui = deps.Ui 54 cmd.config = deps.Config 55 cmd.serviceBindingRepo = deps.RepoLocator.GetServiceBindingRepository() 56 return cmd 57 } 58 59 func (cmd *UnbindService) Execute(c flags.FlagContext) { 60 app := cmd.appReq.GetApplication() 61 instance := cmd.serviceInstanceReq.GetServiceInstance() 62 63 cmd.ui.Say(T("Unbinding app {{.AppName}} from service {{.ServiceName}} in org {{.OrgName}} / space {{.SpaceName}} as {{.CurrentUser}}...", 64 map[string]interface{}{ 65 "AppName": terminal.EntityNameColor(app.Name), 66 "ServiceName": terminal.EntityNameColor(instance.Name), 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 found, apiErr := cmd.serviceBindingRepo.Delete(instance, app.Guid) 73 if apiErr != nil { 74 cmd.ui.Failed(apiErr.Error()) 75 return 76 } 77 78 cmd.ui.Ok() 79 80 if !found { 81 cmd.ui.Warn(T("Binding between {{.InstanceName}} and {{.AppName}} did not exist", 82 map[string]interface{}{"InstanceName": instance.Name, "AppName": app.Name})) 83 } 84 85 }