github.com/LukasHeimann/cloudfoundrycli/v8@v8.4.4/command/v7/delete_service_command.go (about) 1 package v7 2 3 import ( 4 "github.com/LukasHeimann/cloudfoundrycli/v8/actor/actionerror" 5 "github.com/LukasHeimann/cloudfoundrycli/v8/command/flag" 6 "github.com/LukasHeimann/cloudfoundrycli/v8/command/v7/shared" 7 ) 8 9 type DeleteServiceCommand struct { 10 BaseCommand 11 12 RequiredArgs flag.ServiceInstance `positional-args:"yes"` 13 Force bool `short:"f" long:"force" description:"Force deletion without confirmation"` 14 Wait bool `short:"w" long:"wait" description:"Wait for the operation to complete"` 15 relatedCommands interface{} `related_commands:"unbind-service, services"` 16 } 17 18 func (cmd DeleteServiceCommand) Execute(args []string) error { 19 if err := cmd.SharedActor.CheckTarget(true, true); err != nil { 20 return err 21 } 22 23 if !cmd.Force { 24 delete, err := cmd.displayPrompt() 25 if err != nil { 26 return err 27 } 28 29 if !delete { 30 cmd.UI.DisplayText("Delete cancelled") 31 return nil 32 } 33 } 34 35 if err := cmd.displayEvent(); err != nil { 36 return err 37 } 38 39 stream, warnings, err := cmd.Actor.DeleteServiceInstance( 40 string(cmd.RequiredArgs.ServiceInstance), 41 cmd.Config.TargetedSpace().GUID, 42 ) 43 cmd.UI.DisplayWarnings(warnings) 44 45 switch err.(type) { 46 case nil: 47 case actionerror.ServiceInstanceNotFoundError: 48 cmd.UI.DisplayText("Service instance {{.ServiceInstanceName}} did not exist.", cmd.serviceInstanceName()) 49 cmd.UI.DisplayOK() 50 return nil 51 default: 52 return err 53 } 54 55 deleted, err := shared.WaitForResult(stream, cmd.UI, cmd.Wait) 56 if err != nil { 57 return err 58 } 59 60 switch deleted { 61 case true: 62 cmd.UI.DisplayTextWithFlavor("Service instance {{.ServiceInstanceName}} deleted.", cmd.serviceInstanceName()) 63 default: 64 cmd.UI.DisplayText("Delete in progress. Use 'cf services' or 'cf service {{.ServiceInstanceName}}' to check operation status.", cmd.serviceInstanceName()) 65 } 66 67 cmd.UI.DisplayOK() 68 return nil 69 } 70 71 func (cmd DeleteServiceCommand) Usage() string { 72 return "CF_NAME delete-service SERVICE_INSTANCE [-f] [-w]" 73 } 74 75 func (cmd DeleteServiceCommand) displayEvent() error { 76 user, err := cmd.Actor.GetCurrentUser() 77 if err != nil { 78 return err 79 } 80 81 cmd.UI.DisplayTextWithFlavor( 82 "Deleting service instance {{.ServiceInstanceName}} in org {{.OrgName}} / space {{.SpaceName}} as {{.Username}}...", 83 map[string]interface{}{ 84 "ServiceInstanceName": cmd.RequiredArgs.ServiceInstance, 85 "OrgName": cmd.Config.TargetedOrganization().Name, 86 "SpaceName": cmd.Config.TargetedSpace().Name, 87 "Username": user.Name, 88 }, 89 ) 90 cmd.UI.DisplayNewline() 91 92 return nil 93 } 94 95 func (cmd DeleteServiceCommand) displayPrompt() (bool, error) { 96 cmd.UI.DisplayText("This action impacts all resources scoped to this service instance, including service bindings, service keys and route bindings.") 97 cmd.UI.DisplayText("This will remove the service instance from any spaces where it has been shared.") 98 99 delete, err := cmd.UI.DisplayBoolPrompt( 100 false, 101 "Really delete the service instance {{.ServiceInstanceName}}?", 102 cmd.serviceInstanceName(), 103 ) 104 if err != nil { 105 return false, err 106 } 107 108 return delete, nil 109 } 110 111 func (cmd DeleteServiceCommand) serviceInstanceName() map[string]interface{} { 112 return map[string]interface{}{ 113 "ServiceInstanceName": cmd.RequiredArgs.ServiceInstance, 114 } 115 }