cloudfoundry / cloud_controller_ng

Cloud Foundry Cloud Controller
Apache License 2.0
194 stars 360 forks source link

Service Instance delete call to broker is possible during an instance creation #1807

Closed subhankarc closed 4 years ago

subhankarc commented 4 years ago

Issue

Recently, we noticed a behaviour change during service provisioning. We saw that cloud controller allows de-provisioning calls to go through to the broker even though provision is not yet finished.

Earlier, CC used to reply with a 409 when delete call was made during an ongoing create operation and the delete call would not go through the broker. Now we tested this with capi release 1.96.0 and noticed that delete is being allowed even though a create call is in progress. We are not sure when/if behaviour has changed and hence opening this issue.

Context

If the brokers need to handle de-provisioning call during an ongoing create operation, there might be some inconsistencies at the service end, hence it would be better to understand if this is a bug or an expected behaviour.

Steps to Reproduce

For any asynchronous service creation, trigger cf create-service and while creation is onging, trigger cf delete-service immediately.

cf-gitbot commented 4 years ago

We have created an issue in Pivotal Tracker to manage this:

https://www.pivotaltracker.com/story/show/174507201

The labels on this github issue will be updated when the story is started.

FelisiaM commented 4 years ago

Hi @subhankarc

Thanks for raising the question.

This behaviour is expected and respects the OSBAPI specification around deprovisioning a service instance that is in the process of being created.

If a Service Broker accepts the request to delete a Service Instance during the process of it being provisioned, then it MUST have the net effect of halting the current creation process and beginning the deletion of any resources associated with the Service Instance.

CF will attempt to deprovision in this case and it is up to the broker to decide how to handle the request. If the broker does not accept the request the delete will be ignored and the original create operation will continue.

I will close this issue for the moment but feel free to reopen if you have more questions.

Thanks Felisia

subhankarc commented 4 years ago

Hi @FelisiaM,

Thanks for the confirmation. While I agree with the current behaviour, I remember this was not the behaviour earlier and I was looking for the release notes to see when was this changed. Could you possibly point me to any release notes regarding this ?

FelisiaM commented 4 years ago

Sure!

In v3 API this behaviour was completed as part of CAPI release 1.97.0

v3: Delete SI that is being provisioned

In v2 API it was released as part of CAPI release 1.80

As a developer, I can cancel the creation of an asynchronous service instance, so that I don't have to wait for creation to finish

Thanks, Felisia