From 62b1c58f1660a125c3ee76e010dc44816da9db68 Mon Sep 17 00:00:00 2001 From: Yusmen Zabanov Date: Fri, 20 Sep 2024 12:47:41 +0000 Subject: [PATCH] WIP --- .../services/instances/managed/controller.go | 54 ++++++++++++++++--- 1 file changed, 47 insertions(+), 7 deletions(-) diff --git a/controllers/controllers/services/instances/managed/controller.go b/controllers/controllers/services/instances/managed/controller.go index 249e59a70..9a2e4afd5 100644 --- a/controllers/controllers/services/instances/managed/controller.go +++ b/controllers/controllers/services/instances/managed/controller.go @@ -93,6 +93,10 @@ func (r *Reconciler) ReconcileResource(ctx context.Context, serviceInstance *kor serviceInstance.Status.ObservedGeneration = serviceInstance.Generation log.V(1).Info("set observed generation", "generation", serviceInstance.Status.ObservedGeneration) + if !serviceInstance.GetDeletionTimestamp().IsZero() { + return r.finalizeCFServiceInstance(ctx, serviceInstance) + } + servicePlan, err := r.getServicePlan(ctx, serviceInstance.Spec.PlanGUID) if err != nil { log.Error(err, "failed to get service plan") @@ -117,10 +121,6 @@ func (r *Reconciler) ReconcileResource(ctx context.Context, serviceInstance *kor return ctrl.Result{}, fmt.Errorf("failed to create client for broker %q: %w", serviceBroker.Name, err) } - if !serviceInstance.GetDeletionTimestamp().IsZero() { - return r.finalizeCFServiceInstance(ctx, osbapiClient, serviceInstance, serviceOffering, servicePlan) - } - if isReady(serviceInstance) { return ctrl.Result{}, nil } @@ -230,10 +230,7 @@ func getServiceInstanceParameters(serviceInstance *korifiv1alpha1.CFServiceInsta func (r *Reconciler) finalizeCFServiceInstance( ctx context.Context, - osbapiClient osbapi.BrokerClient, serviceInstance *korifiv1alpha1.CFServiceInstance, - serviceOffering *korifiv1alpha1.CFServiceOffering, - servicePlan *korifiv1alpha1.CFServicePlan, ) (ctrl.Result, error) { log := logr.FromContextOrDiscard(ctx).WithName("finalizeCFServiceInstance") @@ -241,6 +238,49 @@ func (r *Reconciler) finalizeCFServiceInstance( return ctrl.Result{}, nil } + servicePlan, err := r.getServicePlan(ctx, serviceInstance.Spec.PlanGUID) + if err != nil { + log.Error(err, "failed to get service plan") + + if controllerutil.RemoveFinalizer(serviceInstance, korifiv1alpha1.CFManagedServiceInstanceFinalizerName) { + log.V(1).Info("finalizer removed") + } + + return ctrl.Result{}, err + } + + serviceBroker, err := r.getServiceBroker(ctx, servicePlan.Labels[korifiv1alpha1.RelServiceBrokerGUIDLabel]) + if err != nil { + log.Error(err, "failed to get service broker") + + if controllerutil.RemoveFinalizer(serviceInstance, korifiv1alpha1.CFManagedServiceInstanceFinalizerName) { + log.V(1).Info("finalizer removed") + } + + return ctrl.Result{}, err + } + + serviceOffering, err := r.getServiceOffering(ctx, servicePlan.Labels[korifiv1alpha1.RelServiceOfferingGUIDLabel]) + if err != nil { + log.Error(err, "failed to get service offering") + + if controllerutil.RemoveFinalizer(serviceInstance, korifiv1alpha1.CFManagedServiceInstanceFinalizerName) { + log.V(1).Info("finalizer removed") + } + return ctrl.Result{}, err + } + + osbapiClient, err := r.osbapiClientFactory.CreateClient(ctx, serviceBroker) + if err != nil { + log.Error(err, "failed to create broker client", "broker", serviceBroker.Name) + + if controllerutil.RemoveFinalizer(serviceInstance, korifiv1alpha1.CFManagedServiceInstanceFinalizerName) { + log.V(1).Info("finalizer removed") + } + + return ctrl.Result{}, fmt.Errorf("failed to create client for broker %q: %w", serviceBroker.Name, err) + } + if !isDeprovisionRequested(serviceInstance) { deprovisionResponse, err := osbapiClient.Deprovision(ctx, osbapi.InstanceDeprovisionPayload{ ID: serviceInstance.Name,