github.com/LukasHeimann/cloudfoundrycli/v8@v8.4.4/command/v7/unshare_service_command.go (about) 1 package v7 2 3 import ( 4 "github.com/LukasHeimann/cloudfoundrycli/v8/actor/v7action" 5 "github.com/LukasHeimann/cloudfoundrycli/v8/command/flag" 6 "github.com/LukasHeimann/cloudfoundrycli/v8/types" 7 ) 8 9 type UnshareServiceCommand struct { 10 BaseCommand 11 12 RequiredArgs flag.ShareServiceArgs `positional-args:"yes"` 13 SpaceName string `short:"s" required:"true" description:"Space to unshare the service instance from"` 14 OrgName flag.OptionalString `short:"o" required:"false" description:"Org of the other space (Default: targeted org)"` 15 Force bool `short:"f" description:"Force unshare without confirmation"` 16 relatedCommands interface{} `related_commands:"delete-service, service, services, share-service, unbind-service"` 17 } 18 19 func (cmd UnshareServiceCommand) Usage() string { 20 return "CF_NAME unshare-service SERVICE_INSTANCE -s OTHER_SPACE [-o OTHER_ORG] [-f]" 21 } 22 23 func (cmd UnshareServiceCommand) Execute(args []string) error { 24 if err := cmd.SharedActor.CheckTarget(true, true); err != nil { 25 return err 26 } 27 28 if !cmd.Force { 29 cmd.UI.DisplayWarning( 30 `WARNING: Unsharing this service instance will remove any existing bindings originating from the service instance in the space "{{.SpaceName}}". This could cause apps to stop working.`, 31 map[string]interface{}{"SpaceName": cmd.SpaceName}, 32 ) 33 34 unshare, err := cmd.displayPrompt() 35 if err != nil { 36 return err 37 } 38 39 if !unshare { 40 cmd.UI.DisplayText("Unshare cancelled") 41 return nil 42 } 43 } 44 45 if err := cmd.displayIntro(); err != nil { 46 return err 47 } 48 49 warnings, err := cmd.Actor.UnshareServiceInstanceFromSpaceAndOrg( 50 cmd.RequiredArgs.ServiceInstance, 51 cmd.Config.TargetedSpace().GUID, 52 cmd.Config.TargetedOrganization().GUID, 53 v7action.ServiceInstanceSharingParams{ 54 SpaceName: cmd.SpaceName, 55 OrgName: types.OptionalString(cmd.OrgName), 56 }) 57 58 cmd.UI.DisplayWarnings(warnings) 59 if err != nil { 60 return err 61 } 62 63 cmd.UI.DisplayOK() 64 65 return nil 66 } 67 68 func (cmd UnshareServiceCommand) displayIntro() error { 69 user, err := cmd.Actor.GetCurrentUser() 70 if err != nil { 71 return err 72 } 73 74 orgName := cmd.OrgName.Value 75 if !cmd.OrgName.IsSet { 76 orgName = cmd.Config.TargetedOrganization().Name 77 } 78 79 cmd.UI.DisplayTextWithFlavor( 80 "Unsharing service instance {{.ServiceInstanceName}} from org {{.OrgName}} / space {{.SpaceName}} as {{.Username}}...", 81 map[string]interface{}{ 82 "ServiceInstanceName": cmd.RequiredArgs.ServiceInstance, 83 "OrgName": orgName, 84 "SpaceName": cmd.SpaceName, 85 "Username": user.Name, 86 }, 87 ) 88 89 return nil 90 } 91 92 func (cmd UnshareServiceCommand) displayPrompt() (bool, error) { 93 cmd.UI.DisplayNewline() 94 unshare, err := cmd.UI.DisplayBoolPrompt( 95 false, 96 "Really unshare the service instance {{.ServiceInstanceName}} from space {{.SpaceName}}?", 97 map[string]interface{}{ 98 "ServiceInstanceName": cmd.RequiredArgs.ServiceInstance, 99 "SpaceName": cmd.SpaceName, 100 }) 101 if err != nil { 102 return false, err 103 } 104 105 return unshare, nil 106 }