func prescribeOverrides()

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
}