Improving Service Access in Cloud Foundry Application Runtime

Matt McNeeney

Hi all,

In Cloud Foundry Application Runtime, a Service Broker can only be registered once (either globally or space-scoped). This is because the Cloud Controller detects conflicts in the information exposed in a Service Broker's Catalog. However, we are aware of a number of use cases in which the same Service Broker should be registered multiple times in the platform, for example:
  • Development teams want to try out different Service Brokers for development (databases are commonly used) and register these as space-scoped. In multi-tenant environments, only the 'first' development team who tries to register a given Service Broker would succeed.
  • Different lines of business in a company want to register the same service broker (but using different credentials for billing purposes) into their Cloud Foundry orgs or spaces. These credentials are provided to the platform when a Service Broker is being created (or updated).

The CF Services API team would like to tackle this problem and have outlined a number of possible solutions in this proposal [0]. The solution we believe best solves this problem is allowing the name of a Service Broker to be used as an optional argument when multiple services with the same name are available in the marketplace. This would mean exposing the user-defined name of Service Brokers to all developers for the first time (we don't believe these to be confidential), and updating a number of CLI commands to display/consume this additional field.

For example, the marketplace would now should the name of a broker:

$ cf marketplace
service           plans         broker          description
service1          small         broker1         An example service
service1          small         broker2         An example service

And to create a new service instance using service1, the broker name would have to be provided:

$ cf create-service service1 small my-service
More than one service called ‘mysql’ is available. Please specify the name of the broker from which to provision this service with the ‘-b’ flag.

$ cf create-service service1 small my-service -b broker1

We are looking for feedback on this proposal before we start this work, so please provide any feedback you have over the next week!

Join to automatically receive all group messages.