+ // 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
+ logger.Info("--- Job is in Creation state")
+ r.handle_deploy_using_generated_go_code("create")
+ logger.Info("--- Job has been Created")
+ 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.
+ logger.Info("--- Job is in Deletion state")
+ r.handle_deploy_using_generated_go_code("delete")
+ logger.Info("--- Job has been Delete")
+ controllerutil.RemoveFinalizer(instance, myFinalizerName)
+ if err := r.Update(ctx, instance); err != nil {
+ return ctrl.Result{}, err
+ }
+ }