github.com/mook-as/cf-cli@v7.0.0-beta.28.0.20200120190804-b91c115fae48+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 }