From 90e3a04f42ac4ec8e6e59047ba594eac04282e84 Mon Sep 17 00:00:00 2001 From: Erwin Kok Date: Thu, 29 Aug 2024 22:57:55 +0200 Subject: [PATCH 1/2] Remove OwnerReference & Check for Finalizers being empty --- controllers/vspherecluster_reconciler_test.go | 15 +++++++-------- 1 file changed, 7 insertions(+), 8 deletions(-) diff --git a/controllers/vspherecluster_reconciler_test.go b/controllers/vspherecluster_reconciler_test.go index 8b886fd93f..42aa0f8304 100644 --- a/controllers/vspherecluster_reconciler_test.go +++ b/controllers/vspherecluster_reconciler_test.go @@ -60,14 +60,6 @@ var _ = Describe("VIM based VSphere ClusterReconciler", func() { ObjectMeta: metav1.ObjectMeta{ GenerateName: "secret-", Namespace: "default", - OwnerReferences: []metav1.OwnerReference{ - { - APIVersion: "bitnami.com/v1alpha1", - Kind: "SealedSecret", - Name: "some-name", - UID: "some-uid", - }, - }, }, Data: map[string][]byte{ identity.UsernameKey: []byte(vcURL.User.Username()), @@ -277,6 +269,13 @@ var _ = Describe("VIM based VSphere ClusterReconciler", func() { Expect(testEnv.Create(ctx, instance)).To(Succeed()) key := client.ObjectKey{Namespace: instance.Namespace, Name: instance.Name} + Eventually(func() bool { + if err := testEnv.Get(ctx, key, instance); err != nil { + return false + } + return len(instance.Finalizers) == 0 + }, timeout).Should(BeTrue()) + // Make sure the VSphereCluster exists. Eventually(func() bool { err := testEnv.Get(ctx, key, instance) From 034926bcd1562421234a6159ca293c2b13053e7a Mon Sep 17 00:00:00 2001 From: Erwin Kok Date: Fri, 30 Aug 2024 16:14:32 +0200 Subject: [PATCH 2/2] Check for expected OwnerReference and Finalizer --- controllers/vspherecluster_reconciler_test.go | 20 ++++++++++++++++--- 1 file changed, 17 insertions(+), 3 deletions(-) diff --git a/controllers/vspherecluster_reconciler_test.go b/controllers/vspherecluster_reconciler_test.go index 42aa0f8304..0b230b0a05 100644 --- a/controllers/vspherecluster_reconciler_test.go +++ b/controllers/vspherecluster_reconciler_test.go @@ -33,6 +33,7 @@ import ( "sigs.k8s.io/cluster-api/util/conditions" "sigs.k8s.io/cluster-api/util/patch" "sigs.k8s.io/controller-runtime/pkg/client" + ctrlutil "sigs.k8s.io/controller-runtime/pkg/controller/controllerutil" infrav1 "sigs.k8s.io/cluster-api-provider-vsphere/apis/v1beta1" "sigs.k8s.io/cluster-api-provider-vsphere/internal/test/helpers/vcsim" @@ -60,6 +61,14 @@ var _ = Describe("VIM based VSphere ClusterReconciler", func() { ObjectMeta: metav1.ObjectMeta{ GenerateName: "secret-", Namespace: "default", + OwnerReferences: []metav1.OwnerReference{ + { + APIVersion: "bitnami.com/v1alpha1", + Kind: "SealedSecret", + Name: "some-name", + UID: "some-uid", + }, + }, }, Data: map[string][]byte{ identity.UsernameKey: []byte(vcURL.User.Username()), @@ -129,7 +138,7 @@ var _ = Describe("VIM based VSphere ClusterReconciler", func() { if err := testEnv.Get(ctx, key, instance); err != nil { return false } - return len(instance.Finalizers) > 0 + return ctrlutil.ContainsFinalizer(instance, infrav1.ClusterFinalizer) }, timeout).Should(BeTrue()) // checking cluster is setting the ownerRef on the secret @@ -138,7 +147,12 @@ var _ = Describe("VIM based VSphere ClusterReconciler", func() { if err := testEnv.Get(ctx, secretKey, secret); err != nil { return false } - return len(secret.OwnerReferences) > 0 + for _, ref := range secret.OwnerReferences { + if ref.Name == instance.Name { + return true + } + } + return false }, timeout).Should(BeTrue()) By("setting the VSphereCluster's VCenterAvailableCondition to true") @@ -273,7 +287,7 @@ var _ = Describe("VIM based VSphere ClusterReconciler", func() { if err := testEnv.Get(ctx, key, instance); err != nil { return false } - return len(instance.Finalizers) == 0 + return !ctrlutil.ContainsFinalizer(instance, infrav1.ClusterFinalizer) }, timeout).Should(BeTrue()) // Make sure the VSphereCluster exists.