Open kanngiesser opened 4 months ago
We have created an issue in Pivotal Tracker to manage this:
https://www.pivotaltracker.com/story/show/187906362
The labels on this github issue will be updated when the story is started.
Thank you very much for raising the incidence, @kanngiesser. We will soon prioritise tasks and analyse the issue so we can contact you as soon as possible.
Thank you for raising the incidence. csb is a development tool that could have bugs. We are open to contributions. Unfortunately we can not allocate resources to this task right now, but we will be happy to review your pull request with some proposed solution
After digging into the source code, this is what I was able to figure out:
bind
request fails because the binding for our Brokerpak definition has dependencies on instance details. This is an excerpt from our service definition for an S3 bucket:
# (...)
bind:
computed_inputs:
- name: arn
default: ${instance.details["arn"]}
type: string
service_instance_details
column other_details
. The bind request fails in case the binding requires instance details and
service_instance_details.other_details
is NULL
service_instance_details.other_details
IS NULL
for all service instances after calling csb client provision
In fact, terraform outputs appear to be stored to service_instance_details.other_details
only when calling GET /v2/service_instances/:instance_id/last_operation
on the Service Broker (!) (see brokerapi/broker/last_instance_operation.go).
As a consequence, there is a simple fix which allows to create bindings when testing locally: call csb client last
for the service instance at least once after provisioning has succeeded
IMO this behavior appears to be somewhat unexpected and should be changed. With the current implementation, the provision request is only finalized when calling GET /v2/service_instances/:instance_id/last_operation
until provisioning has succeeded.
GET
request has side-effects and changes the state of the server. The method, thus, might not be safelast_operation
endpoint is not called
Description
The default variable
instance.details
returns an empty map when trying to bind a service instance with the local mimic commandcsb client bind
.The problem occurs for our custom brokerpaks and can be reproduced for the default brokerpak which is bootstrapped from the
csb pak init
commandExpected Behavior
The map
instance.details
is expected to return output values from theprovision
callActual Behavior
instance.details
returns an empty map. When testing with the default-brokerpak which is bootstrapped from thecsb pak init
command, callingcsb client bind
returns this error, for example:Possible Fix
--
Steps to Reproduce
pak init
command:Context
The Bug prevents us from testing service bindings locally for Brokerpaks which are under development.
Your Environment