in pkg/broker/util.go [41:85]
func prescribeOverrides(b AwsBroker, services []osb.Service) []osb.Service {
if !b.prescribeOverrides || len(b.globalOverrides) == 0 {
return services
}
var overridenKeys []string
for k := range b.globalOverrides {
overridenKeys = append(overridenKeys, k)
}
for _, service := range services {
for _, plan := range service.Plans {
params := plan.Schemas.ServiceInstance.Create.Parameters.(map[string]interface{})
for _, k := range overridenKeys {
delete(params["properties"].(map[string]interface{}), k)
if params["required"] != nil {
params["required"] = deleteFromSlice(params["required"].([]string), k)
}
}
if params["required"] != nil && len(params["required"].([]string)) == 0 {
// Cloud Foundry does not allow "required" to be an empty slice
delete(params, "required")
}
if plan.Schemas.ServiceInstance.Update != nil {
params := plan.Schemas.ServiceInstance.Update.Parameters.(map[string]interface{})
for _, k := range overridenKeys {
delete(params["properties"].(map[string]interface{}), k)
if params["required"] != nil {
params["required"] = deleteFromSlice(params["required"].([]string), k)
}
}
if len(params["properties"].(map[string]interface{})) == 0 {
// If there are no updatable properties left, remove the update schema
plan.Schemas.ServiceInstance.Update = nil
} else if params["required"] != nil && len(params["required"].([]string)) == 0 {
// Cloud Foundry does not allow "required" to be an empty slice
delete(params, "required")
}
}
}
}
return services
}