github.com/dcarley/cf-cli@v6.24.1-0.20170220111324-4225ff346898+incompatible/command/v2/unbind_service_command.go (about) 1 package v2 2 3 import ( 4 "code.cloudfoundry.org/cli/actor/sharedaction" 5 "code.cloudfoundry.org/cli/actor/v2action" 6 "code.cloudfoundry.org/cli/command" 7 "code.cloudfoundry.org/cli/command/flag" 8 "code.cloudfoundry.org/cli/command/v2/shared" 9 ) 10 11 //go:generate counterfeiter . UnbindServiceActor 12 13 type UnbindServiceActor interface { 14 UnbindServiceBySpace(appName string, serviceInstanceName string, spaceGUID string) (v2action.Warnings, error) 15 } 16 17 type UnbindServiceCommand struct { 18 RequiredArgs flag.BindServiceArgs `positional-args:"yes"` 19 usage interface{} `usage:"CF_NAME unbind-service APP_NAME SERVICE_INSTANCE"` 20 relatedCommands interface{} `related_commands:"apps, delete-service, services"` 21 22 UI command.UI 23 Config command.Config 24 SharedActor command.SharedActor 25 Actor UnbindServiceActor 26 } 27 28 func (cmd *UnbindServiceCommand) Setup(config command.Config, ui command.UI) error { 29 cmd.UI = ui 30 cmd.Config = config 31 cmd.SharedActor = sharedaction.NewActor() 32 33 ccClient, uaaClient, err := shared.NewClients(config, ui) 34 if err != nil { 35 return err 36 } 37 cmd.Actor = v2action.NewActor(ccClient, uaaClient) 38 39 return nil 40 } 41 42 func (cmd UnbindServiceCommand) Execute(args []string) error { 43 err := cmd.SharedActor.CheckTarget(cmd.Config, true, true) 44 if err != nil { 45 return shared.HandleError(err) 46 } 47 48 space := cmd.Config.TargetedSpace() 49 user, err := cmd.Config.CurrentUser() 50 if err != nil { 51 return err 52 } 53 54 cmd.UI.DisplayTextWithFlavor("Unbinding app {{.AppName}} from service {{.ServiceName}} in org {{.OrgName}} / space {{.SpaceName}} as {{.CurrentUser}}...", map[string]interface{}{ 55 "AppName": cmd.RequiredArgs.AppName, 56 "ServiceName": cmd.RequiredArgs.ServiceInstanceName, 57 "OrgName": cmd.Config.TargetedOrganization().Name, 58 "SpaceName": space.Name, 59 "CurrentUser": user.Name, 60 }) 61 62 warnings, err := cmd.Actor.UnbindServiceBySpace(cmd.RequiredArgs.AppName, cmd.RequiredArgs.ServiceInstanceName, space.GUID) 63 cmd.UI.DisplayWarnings(warnings) 64 if err != nil { 65 if _, ok := err.(v2action.ServiceBindingNotFoundError); ok { 66 cmd.UI.DisplayWarning("Binding between {{.InstanceName}} and {{.AppName}} did not exist", map[string]interface{}{ 67 "AppName": cmd.RequiredArgs.AppName, 68 "InstanceName": cmd.RequiredArgs.ServiceInstanceName, 69 }) 70 } else { 71 return shared.HandleError(err) 72 } 73 } 74 75 cmd.UI.DisplayOK() 76 77 return nil 78 }