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  }