A Go package for building V2 Open Service Broker API compliant Service Brokers.
- Go
- GNU Make 3.81
We appreciate and welcome open source contibution. We will try to review the changes as soon as we can.
brokerapi
defines a
ServiceBroker
interface. Pass an implementation of this to
brokerapi.New
, which
returns an http.Handler
that you can use to serve handle HTTP requests.
Alternatively, if you already have a *mux.Router
that you want to attach
service broker routes to, you can use
brokerapi.AttachRoutes
.
Note in this case, the Basic Authentication and Originating Identity middleware
will not be set up, so you will have to attach them manually if required.
brokerapi
defines a handful of error types in service_broker.go
for some
common error cases that your service broker may encounter. Return these from
your ServiceBroker
methods where appropriate, and brokerapi
will do the
"right thing" (™), and give Cloud Foundry an appropriate status code, as per
the Service Broker API
specification.
NewFailureResponse()
allows you to return a custom error from any of the
ServiceBroker
interface methods which return an error. Within this you must
define an error, a HTTP response status code and a logging key. You can also
use the NewFailureResponseBuilder()
to add a custom Error:
value in the
response, or indicate that the broker should return an empty response rather
than the error message.
When provisioning a service brokerapi
validates the service_id
and plan_id
in the request, attaching the found instances to the request Context. These
values can be retrieved in a brokerapi.ServiceBroker
implementation using
utility methods RetrieveServiceFromContext
and RetrieveServicePlanFromContext
as shown below.
func (sb *ServiceBrokerImplementation) Provision(ctx context.Context,
instanceID string, details brokerapi.ProvisionDetails, asyncAllowed bool) {
service := brokerapi.RetrieveServiceFromContext(ctx)
if service == nil {
// Lookup service
}
// [..]
}
The request context for every request contains the unparsed
X-Broker-API-Originating-Identity
header under the key
originatingIdentity
. More details on how the Open Service Broker API
manages request originating identity is available
here.
The request context for every request contains the unparsed
X-Broker-API-Request-Identity
header under the key
requestIdentity
. More details on how the Open Service Broker API
manages request originating identity is available
here.
You can see the cf-redis service broker uses the BrokerAPI package to create a service broker for Redis.
Releasing steps can be found here