github.com/LukasHeimann/cloudfoundrycli/v8@v8.4.4/command/v7/unbind_service_command.go (about) 1 package v7 2 3 import ( 4 "github.com/LukasHeimann/cloudfoundrycli/v8/actor/actionerror" 5 "github.com/LukasHeimann/cloudfoundrycli/v8/actor/v7action" 6 "github.com/LukasHeimann/cloudfoundrycli/v8/command/flag" 7 "github.com/LukasHeimann/cloudfoundrycli/v8/command/v7/shared" 8 ) 9 10 type UnbindServiceCommand struct { 11 BaseCommand 12 13 RequiredArgs flag.BindServiceArgs `positional-args:"yes"` 14 Wait bool `short:"w" long:"wait" description:"Wait for the operation to complete"` 15 relatedCommands interface{} `related_commands:"apps, delete-service, services"` 16 } 17 18 func (cmd UnbindServiceCommand) Execute(args []string) error { 19 if err := cmd.SharedActor.CheckTarget(true, true); err != nil { 20 return err 21 } 22 23 if err := cmd.displayIntro(); err != nil { 24 return err 25 } 26 27 stream, warnings, err := cmd.Actor.DeleteServiceAppBinding(v7action.DeleteServiceAppBindingParams{ 28 SpaceGUID: cmd.Config.TargetedSpace().GUID, 29 ServiceInstanceName: cmd.RequiredArgs.ServiceInstanceName, 30 AppName: cmd.RequiredArgs.AppName, 31 }) 32 cmd.UI.DisplayWarnings(warnings) 33 switch err.(type) { 34 case nil: 35 case actionerror.ServiceBindingNotFoundError: 36 cmd.UI.DisplayText("Binding between {{.ServiceInstanceName}} and {{.AppName}} did not exist", cmd.names()) 37 cmd.UI.DisplayOK() 38 return nil 39 default: 40 return err 41 } 42 43 completed, err := shared.WaitForResult(stream, cmd.UI, cmd.Wait) 44 switch { 45 case err != nil: 46 return err 47 case completed: 48 cmd.UI.DisplayOK() 49 return nil 50 default: 51 cmd.UI.DisplayOK() 52 cmd.UI.DisplayText("Unbinding in progress. Use 'cf service {{.ServiceInstanceName}}' to check operation status.", cmd.names()) 53 return nil 54 } 55 56 return nil 57 } 58 59 func (cmd UnbindServiceCommand) Usage() string { 60 return `CF_NAME unbind-service APP_NAME SERVICE_INSTANCE` 61 } 62 63 func (cmd UnbindServiceCommand) displayIntro() error { 64 user, err := cmd.Actor.GetCurrentUser() 65 if err != nil { 66 return err 67 } 68 69 cmd.UI.DisplayTextWithFlavor( 70 "Unbinding app {{.AppName}} from service {{.ServiceInstance}} in org {{.Org}} / space {{.Space}} as {{.User}}...", 71 map[string]interface{}{ 72 "ServiceInstance": cmd.RequiredArgs.ServiceInstanceName, 73 "AppName": cmd.RequiredArgs.AppName, 74 "User": user.Name, 75 "Space": cmd.Config.TargetedSpace().Name, 76 "Org": cmd.Config.TargetedOrganization().Name, 77 }, 78 ) 79 80 return nil 81 } 82 83 func (cmd UnbindServiceCommand) names() map[string]interface{} { 84 return map[string]interface{}{ 85 "ServiceInstanceName": cmd.RequiredArgs.ServiceInstanceName, 86 "AppName": cmd.RequiredArgs.AppName, 87 } 88 }