(c flags.FlagContext)
| 104 | } |
| 105 | |
| 106 | func (cmd *CreateService) Execute(c flags.FlagContext) error { |
| 107 | serviceName := c.Args()[0] |
| 108 | planName := c.Args()[1] |
| 109 | serviceInstanceName := c.Args()[2] |
| 110 | params := c.String("c") |
| 111 | tags := c.String("t") |
| 112 | |
| 113 | tagsList := uihelpers.ParseTags(tags) |
| 114 | |
| 115 | paramsMap, err := json.ParseJSONFromFileOrString(params) |
| 116 | if err != nil { |
| 117 | return errors.New(T("Invalid configuration provided for -c flag. Please provide a valid JSON object or path to a file containing a valid JSON object.")) |
| 118 | } |
| 119 | |
| 120 | cmd.ui.Say(T("Creating service instance {{.ServiceName}} in org {{.OrgName}} / space {{.SpaceName}} as {{.CurrentUser}}...", |
| 121 | map[string]interface{}{ |
| 122 | "ServiceName": terminal.EntityNameColor(serviceInstanceName), |
| 123 | "OrgName": terminal.EntityNameColor(cmd.config.OrganizationFields().Name), |
| 124 | "SpaceName": terminal.EntityNameColor(cmd.config.SpaceFields().Name), |
| 125 | "CurrentUser": terminal.EntityNameColor(cmd.config.Username()), |
| 126 | })) |
| 127 | |
| 128 | plan, err := cmd.CreateService(serviceName, planName, serviceInstanceName, paramsMap, tagsList) |
| 129 | |
| 130 | switch err.(type) { |
| 131 | case nil: |
| 132 | err := printSuccessMessageForServiceInstance(serviceInstanceName, cmd.serviceRepo, cmd.ui) |
| 133 | if err != nil { |
| 134 | return err |
| 135 | } |
| 136 | |
| 137 | if !plan.Free { |
| 138 | cmd.ui.Say("") |
| 139 | cmd.ui.Say(T("Attention: The plan `{{.PlanName}}` of service `{{.OfferingName}}` is not free. The instance `{{.ServiceInstanceName}}` will incur a cost. Contact your administrator if you think this is in error.", |
| 140 | map[string]interface{}{ |
| 141 | "PlanName": terminal.EntityNameColor(plan.Name), |
| 142 | "OfferingName": terminal.EntityNameColor(serviceName), |
| 143 | "ServiceInstanceName": terminal.EntityNameColor(serviceInstanceName), |
| 144 | })) |
| 145 | cmd.ui.Say("") |
| 146 | } |
| 147 | case *errors.ModelAlreadyExistsError: |
| 148 | cmd.ui.Ok() |
| 149 | cmd.ui.Warn(err.Error()) |
| 150 | default: |
| 151 | return err |
| 152 | } |
| 153 | return nil |
| 154 | } |
| 155 | |
| 156 | func (cmd CreateService) CreateService(serviceName, planName, serviceInstanceName string, params map[string]interface{}, tags []string) (models.ServicePlanFields, error) { |
| 157 | offerings, apiErr := cmd.serviceBuilder.GetServicesByNameForSpaceWithPlans(cmd.config.SpaceFields().GUID, serviceName) |
nothing calls this directly
no test coverage detected