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