github.com/franc20/ayesa_sap@v7.0.0-beta.28.0.20200124003224-302d4d52fa6c+incompatible/command/v7/create_service_broker_command.go (about)

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