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
OK


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 cf-dev@lists.cloudfoundry.org to automatically receive all group messages.