github.com/LukasHeimann/cloudfoundrycli/v8@v8.4.4/command/v7/share_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 ShareServiceCommand struct { 10 BaseCommand 11 12 RequiredArgs flag.ServiceInstance `positional-args:"yes"` 13 SpaceName string `short:"s" required:"true" description:"The space to share the service instance into"` 14 OrgName flag.OptionalString `short:"o" required:"false" description:"Org of the other space (Default: targeted org)"` 15 relatedCommands interface{} `related_commands:"bind-service, service, services, unshare-service"` 16 } 17 18 func (cmd ShareServiceCommand) Usage() string { 19 return "CF_NAME share-service SERVICE_INSTANCE -s OTHER_SPACE [-o OTHER_ORG]" 20 } 21 22 func (cmd ShareServiceCommand) Execute(args []string) error { 23 if err := cmd.SharedActor.CheckTarget(true, true); err != nil { 24 return err 25 } 26 27 if err := cmd.displayIntro(); err != nil { 28 return err 29 } 30 31 warnings, err := cmd.Actor.ShareServiceInstanceToSpaceAndOrg( 32 string(cmd.RequiredArgs.ServiceInstance), 33 cmd.Config.TargetedSpace().GUID, 34 cmd.Config.TargetedOrganization().GUID, 35 v7action.ServiceInstanceSharingParams{ 36 SpaceName: cmd.SpaceName, 37 OrgName: types.OptionalString(cmd.OrgName), 38 }) 39 40 cmd.UI.DisplayWarnings(warnings) 41 if err != nil { 42 return err 43 } 44 45 cmd.UI.DisplayOK() 46 47 return nil 48 } 49 50 func (cmd ShareServiceCommand) displayIntro() error { 51 user, err := cmd.Actor.GetCurrentUser() 52 if err != nil { 53 return err 54 } 55 56 orgName := cmd.OrgName.Value 57 if !cmd.OrgName.IsSet { 58 orgName = cmd.Config.TargetedOrganization().Name 59 } 60 61 cmd.UI.DisplayTextWithFlavor( 62 "Sharing service instance {{.ServiceInstanceName}} into org {{.OrgName}} / space {{.SpaceName}} as {{.Username}}...", 63 map[string]interface{}{ 64 "ServiceInstanceName": cmd.RequiredArgs.ServiceInstance, 65 "OrgName": orgName, 66 "SpaceName": cmd.SpaceName, 67 "Username": user.Name, 68 }, 69 ) 70 71 return nil 72 }