diff --git a/controllers/servicebinding_controller.go b/controllers/servicebinding_controller.go index 6219d5e2..e875d93b 100644 --- a/controllers/servicebinding_controller.go +++ b/controllers/servicebinding_controller.go @@ -177,10 +177,13 @@ func (r *ServiceBindingReconciler) Reconcile(ctx context.Context, req ctrl.Reque // Recovery - restore binding from SM log.Info(fmt.Sprintf("found existing smBinding in SM with id %s, updating status", binding.ID)) - if !(binding.LastOperation.Type == smTypes.CREATE && binding.LastOperation.State != smTypes.SUCCEEDED) { - // store secret unless binding is still being created or failed during creation + if binding.Credentials != nil { if err := r.storeBindingSecret(ctx, serviceBinding, binding); err != nil { - return r.handleSecretError(ctx, binding.LastOperation.Type, err, serviceBinding) + operationType := smTypes.CREATE + if binding.LastOperation != nil { + operationType = binding.LastOperation.Type + } + return r.handleSecretError(ctx, operationType, err, serviceBinding) } } r.resyncBindingStatus(serviceBinding, binding, serviceInstance.Status.InstanceID) diff --git a/controllers/servicebinding_controller_test.go b/controllers/servicebinding_controller_test.go index 6131a238..d0f7b3e0 100644 --- a/controllers/servicebinding_controller_test.go +++ b/controllers/servicebinding_controller_test.go @@ -920,9 +920,6 @@ var _ = Describe("ServiceBinding controller", func() { ServiceBindings: []smclientTypes.ServiceBinding{*smBinding}, }, nil) }) - JustAfterEach(func() { - fakeClient.StatusReturns(&smclientTypes.Operation{ResourceID: fakeBindingID, State: string(smTypes.SUCCEEDED)}, nil) - }) It("should resync successfully", func() { var err error createdBinding, err = createBindingWithoutAssertionsAndWait(context.Background(), bindingName, bindingTestNamespace, instanceName, "fake-binding-external-name", false)