From: naman.gupta Date: Fri, 3 Nov 2023 10:26:46 +0000 (+0530) Subject: Adding the custom finalizer to the object. X-Git-Tag: 2.1.1~12 X-Git-Url: https://gerrit.o-ran-sc.org/r/gitweb?a=commitdiff_plain;h=2619142742cf87f5a066e0b75fd2f23a04d8c052;p=ric-plt%2Fricdms.git Adding the custom finalizer to the object. Adding the custom finalizer to the object to determine if the object is under deletion or deleted. Change-Id: I3360953c1893efe9dc6b8c3649567d3ee36e2b05 Signed-off-by: naman.gupta --- diff --git a/xappKubernetesOperator/internal/controller/xappdep_controller.go b/xappKubernetesOperator/internal/controller/xappdep_controller.go index ec108a3..5bff8d5 100644 --- a/xappKubernetesOperator/internal/controller/xappdep_controller.go +++ b/xappKubernetesOperator/internal/controller/xappdep_controller.go @@ -19,9 +19,12 @@ package controller import ( "context" + "k8s.io/apimachinery/pkg/api/errors" "k8s.io/apimachinery/pkg/runtime" ctrl "sigs.k8s.io/controller-runtime" "sigs.k8s.io/controller-runtime/pkg/client" + "sigs.k8s.io/controller-runtime/pkg/controller/controllerutil" + "sigs.k8s.io/controller-runtime/pkg/log" depxappv1 "depxapp/api/v1" ) @@ -46,9 +49,44 @@ type XappDepReconciler struct { // For more details, check Reconcile and its Result here: // - https://pkg.go.dev/sigs.k8s.io/controller-runtime@v0.15.0/pkg/reconcile func (r *XappDepReconciler) Reconcile(ctx context.Context, req ctrl.Request) (ctrl.Result, error) { + logger := log.FromContext(ctx) + logger.Info("Reconcilling xapp") + instance := &depxappv1.XappDep{} + err := r.Get(context.TODO(), req.NamespacedName, instance) + if err != nil { + if errors.IsNotFound(err) { + // object not found, could have been deleted after reconcile request, hence don't requeue + return ctrl.Result{}, nil + } + // error reading the object, requeue the request + return ctrl.Result{}, err + } - // TODO(user): your logic here + // name of our custom finalizer + myFinalizerName := "batch.tutorial.kubebuilder.io/finalizer" + // examine DeletionTimestamp to determine if object is under deletion + if instance.ObjectMeta.DeletionTimestamp.IsZero() { + // Adding a Finaliser also adds the DeletionTimestamp while deleting + if !controllerutil.ContainsFinalizer(instance, myFinalizerName) { + // Would Be Called only during CR-Creation + controllerutil.AddFinalizer(instance, myFinalizerName) + if err := r.Update(ctx, instance); err != nil { + return ctrl.Result{}, err + } + } + } else { + // The object is being deleted + if controllerutil.ContainsFinalizer(instance, myFinalizerName) { + // remove our finalizer from the list and update it. + controllerutil.RemoveFinalizer(instance, myFinalizerName) + if err := r.Update(ctx, instance); err != nil { + return ctrl.Result{}, err + } + } + // Stop reconciliation as the item is being deleted + return ctrl.Result{}, nil + } return ctrl.Result{}, nil }