A Go package for building V2 Open Service Broker API compliant Service Brokers.
We appreciate and welcome open source contribution. 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
or brokerapi.NewWithOptions
,
which returns an http.Handler
that you can use to serve handle HTTP requests.
Alternatively, if you already have a *chi.Mux
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