github.com/mook-as/cf-cli@v7.0.0-beta.28.0.20200120190804-b91c115fae48+incompatible/command/v6/create_service_broker_command.go (about)

     1  package v6
     2  
     3  import (
     4  	"code.cloudfoundry.org/cli/actor/sharedaction"
     5  	"code.cloudfoundry.org/cli/actor/v2action"
     6  	"code.cloudfoundry.org/cli/command"
     7  	"code.cloudfoundry.org/cli/command/flag"
     8  	"code.cloudfoundry.org/cli/command/translatableerror"
     9  	"code.cloudfoundry.org/cli/command/v6/shared"
    10  )
    11  
    12  //go:generate counterfeiter . CreateServiceBrokerActor
    13  
    14  type CreateServiceBrokerActor interface {
    15  	CreateServiceBroker(serviceBrokerName, username, password, brokerURI, spaceGUID string) (v2action.ServiceBroker, v2action.Warnings, error)
    16  }
    17  
    18  type CreateServiceBrokerCommand struct {
    19  	RequiredArgs    flag.ServiceBrokerArgs `positional-args:"yes"`
    20  	SpaceScoped     bool                   `long:"space-scoped" description:"Make the broker's service plans only visible within the targeted space"`
    21  	usage           interface{}            `usage:"CF_NAME create-service-broker SERVICE_BROKER USERNAME PASSWORD URL [--space-scoped]"`
    22  	relatedCommands interface{}            `related_commands:"enable-service-access, service-brokers, target"`
    23  
    24  	UI          command.UI
    25  	Config      command.Config
    26  	SharedActor command.SharedActor
    27  	Actor       CreateServiceBrokerActor
    28  }
    29  
    30  func (cmd *CreateServiceBrokerCommand) Setup(config command.Config, ui command.UI) error {
    31  	cmd.UI = ui
    32  	cmd.Config = config
    33  
    34  	cmd.SharedActor = sharedaction.NewActor(config)
    35  
    36  	ccClient, uaaClient, err := shared.GetNewClientsAndConnectToCF(config, ui)
    37  	if err != nil {
    38  		return err
    39  	}
    40  
    41  	cmd.Actor = v2action.NewActor(ccClient, uaaClient, config)
    42  
    43  	return nil
    44  }
    45  
    46  func (cmd CreateServiceBrokerCommand) Execute(args []string) error {
    47  	if len(args) > 0 {
    48  		return translatableerror.TooManyArgumentsError{
    49  			ExtraArgument: args[0],
    50  		}
    51  	}
    52  
    53  	if cmd.SpaceScoped {
    54  		if err := cmd.SharedActor.CheckTarget(true, true); err != nil {
    55  			return err
    56  		}
    57  	} else {
    58  		if err := cmd.SharedActor.CheckTarget(false, false); err != nil {
    59  			return err
    60  		}
    61  	}
    62  
    63  	user, err := cmd.Config.CurrentUser()
    64  	if err != nil {
    65  		return err
    66  	}
    67  
    68  	var spaceGUID string
    69  	if cmd.SpaceScoped {
    70  		cmd.UI.DisplayTextWithFlavor("Creating service broker {{.ServiceBrokerName}} in org {{.ServiceBrokerOrg}} / space {{.ServiceBrokerSpace}} as {{.User}}...",
    71  			map[string]interface{}{
    72  				"ServiceBrokerName":  cmd.RequiredArgs.ServiceBroker,
    73  				"ServiceBrokerOrg":   cmd.Config.TargetedOrganization().Name,
    74  				"ServiceBrokerSpace": cmd.Config.TargetedSpace().Name,
    75  				"User":               user.Name,
    76  			})
    77  		spaceGUID = cmd.Config.TargetedSpace().GUID
    78  	} else {
    79  		cmd.UI.DisplayTextWithFlavor("Creating service broker {{.ServiceBrokerName}} as {{.User}}...",
    80  			map[string]interface{}{
    81  				"ServiceBrokerName": cmd.RequiredArgs.ServiceBroker,
    82  				"User":              user.Name,
    83  			})
    84  	}
    85  
    86  	_, warnings, err := cmd.Actor.CreateServiceBroker(
    87  		cmd.RequiredArgs.ServiceBroker,
    88  		cmd.RequiredArgs.Username,
    89  		cmd.RequiredArgs.Password,
    90  		cmd.RequiredArgs.URL,
    91  		spaceGUID)
    92  
    93  	cmd.UI.DisplayWarnings(warnings)
    94  	if err != nil {
    95  		return err
    96  	}
    97  
    98  	cmd.UI.DisplayOK()
    99  	return nil
   100  }