From f7279dfff21dcae3627c15ca8168fe0b1296c5ad Mon Sep 17 00:00:00 2001 From: Wesley Hayutin Date: Thu, 31 Jul 2025 11:42:46 -0600 Subject: [PATCH 1/3] Nuke HCP, patch vs update and log * taking Tiger's suggestion to patch vs. update finalizer * log the finalizers being removed Signed-off-by: Wesley Hayutin --- tests/e2e/lib/hcp/hcp.go | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/tests/e2e/lib/hcp/hcp.go b/tests/e2e/lib/hcp/hcp.go index bf3e46c1cdd..639ef6e4783 100644 --- a/tests/e2e/lib/hcp/hcp.go +++ b/tests/e2e/lib/hcp/hcp.go @@ -308,9 +308,9 @@ func (h *HCHandler) NukeHostedCluster() error { Namespace: h.HostedCluster.Namespace, }, hc) if err == nil && len(hc.GetFinalizers()) > 0 { - log.Printf("\tNUKE: Removing finalizers from HostedCluster %s", hc.Name) - hc.SetFinalizers([]string{}) - if err := h.Client.Update(h.Ctx, hc); err != nil { + log.Printf("\tNUKE: HostedCluster %s has finalizers: %v", hc.Name, hc.GetFinalizers()) + patch := []byte(`{"metadata":{"finalizers":[]}}`) + if err := h.Client.Patch(h.Ctx, hc, client.RawPatch(types.StrategicMergePatchType, patch)); err != nil { return fmt.Errorf("\tNUKE: Error removing finalizers from HostedCluster %s: %v", hc.Name, err) } } @@ -338,9 +338,9 @@ func (h *HCHandler) NukeHostedCluster() error { for _, item := range obj.Items { if len(item.GetFinalizers()) > 0 { - log.Printf("\tNUKE: Removing finalizers from %s %s", rt.kind, item.GetName()) - item.SetFinalizers([]string{}) - if err := h.Client.Update(h.Ctx, &item); err != nil { + log.Printf("\tNUKE: %s %s has finalizers: %v", rt.kind, item.GetName(), item.GetFinalizers()) + patch := []byte(`{"metadata":{"finalizers":[]}}`) + if err := h.Client.Patch(h.Ctx, &item, client.RawPatch(types.StrategicMergePatchType, patch)); err != nil { return fmt.Errorf("\tNUKE: Error removing finalizers from %s %s: %v", rt.kind, item.GetName(), err) } } From c62cc99cb6daa7ea6812acf7a848b0a498d13278 Mon Sep 17 00:00:00 2001 From: Wesley Hayutin Date: Fri, 1 Aug 2025 10:18:43 -0600 Subject: [PATCH 2/3] remove finalizer w/ controllerutil one at a time Signed-off-by: Wesley Hayutin --- tests/e2e/lib/hcp/hcp.go | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/tests/e2e/lib/hcp/hcp.go b/tests/e2e/lib/hcp/hcp.go index 639ef6e4783..56008ed863f 100644 --- a/tests/e2e/lib/hcp/hcp.go +++ b/tests/e2e/lib/hcp/hcp.go @@ -17,6 +17,7 @@ import ( "k8s.io/apimachinery/pkg/types" "k8s.io/apimachinery/pkg/util/wait" "sigs.k8s.io/controller-runtime/pkg/client" + "sigs.k8s.io/controller-runtime/pkg/controller/controllerutil" "github.com/openshift/oadp-operator/tests/e2e/lib" ) @@ -308,9 +309,16 @@ func (h *HCHandler) NukeHostedCluster() error { Namespace: h.HostedCluster.Namespace, }, hc) if err == nil && len(hc.GetFinalizers()) > 0 { - log.Printf("\tNUKE: HostedCluster %s has finalizers: %v", hc.Name, hc.GetFinalizers()) - patch := []byte(`{"metadata":{"finalizers":[]}}`) - if err := h.Client.Patch(h.Ctx, hc, client.RawPatch(types.StrategicMergePatchType, patch)); err != nil { + finalizers := hc.GetFinalizers() + log.Printf("\tNUKE: HostedCluster %s has finalizers: %v", hc.Name, finalizers) + + // Remove each finalizer found on the HostedCluster + for _, finalizer := range finalizers { + log.Printf("\tNUKE: Removing finalizer %s from HostedCluster %s", finalizer, hc.Name) + controllerutil.RemoveFinalizer(hc, finalizer) + } + + if err := h.Client.Update(h.Ctx, hc); err != nil { return fmt.Errorf("\tNUKE: Error removing finalizers from HostedCluster %s: %v", hc.Name, err) } } From 2435ed325c9ffacb03a0c47a59cd34c228894048 Mon Sep 17 00:00:00 2001 From: Wesley Hayutin Date: Fri, 1 Aug 2025 10:22:50 -0600 Subject: [PATCH 3/3] second spot to update w/ controllerutil Signed-off-by: Wesley Hayutin --- tests/e2e/lib/hcp/hcp.go | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/tests/e2e/lib/hcp/hcp.go b/tests/e2e/lib/hcp/hcp.go index 56008ed863f..65772870441 100644 --- a/tests/e2e/lib/hcp/hcp.go +++ b/tests/e2e/lib/hcp/hcp.go @@ -346,9 +346,16 @@ func (h *HCHandler) NukeHostedCluster() error { for _, item := range obj.Items { if len(item.GetFinalizers()) > 0 { - log.Printf("\tNUKE: %s %s has finalizers: %v", rt.kind, item.GetName(), item.GetFinalizers()) - patch := []byte(`{"metadata":{"finalizers":[]}}`) - if err := h.Client.Patch(h.Ctx, &item, client.RawPatch(types.StrategicMergePatchType, patch)); err != nil { + finalizers := item.GetFinalizers() + log.Printf("\tNUKE: %s %s has finalizers: %v", rt.kind, item.GetName(), finalizers) + + // Remove each finalizer found on the resource + for _, finalizer := range finalizers { + log.Printf("\tNUKE: Removing finalizer %s from %s %s", finalizer, rt.kind, item.GetName()) + controllerutil.RemoveFinalizer(&item, finalizer) + } + + if err := h.Client.Update(h.Ctx, &item); err != nil { return fmt.Errorf("\tNUKE: Error removing finalizers from %s %s: %v", rt.kind, item.GetName(), err) } }