From 5f0a3f46a6febb33b5877de192ccf74c5a772bf2 Mon Sep 17 00:00:00 2001 From: Troy Connor Date: Fri, 24 Nov 2023 10:09:24 -0500 Subject: [PATCH] remove owner passed in to RemoveControlleReference only when that owner controller equals true Signed-off-by: Troy Connor --- pkg/controller/controllerutil/controllerutil.go | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/pkg/controller/controllerutil/controllerutil.go b/pkg/controller/controllerutil/controllerutil.go index 7b10d78582..fd5daa198c 100644 --- a/pkg/controller/controllerutil/controllerutil.go +++ b/pkg/controller/controllerutil/controllerutil.go @@ -171,7 +171,14 @@ func RemoveControllerReference(owner, object metav1.Object, scheme *runtime.Sche if ok := HasControllerReference(object); !ok { return fmt.Errorf("%T does not have a owner reference with controller equals true", object) } - return RemoveOwnerReference(owner, object, scheme) + ownerRefs := object.GetOwnerReferences() + for _, ownerRef := range ownerRefs { + t := ptr.To(true) + if ownerRef.Controller == t && ownerRef.Name == owner.GetName() { + return RemoveOwnerReference(owner, object, scheme) + } + } + return fmt.Errorf("%T is not owned reference by %T where controller equals true", object, owner) } func upsertOwnerRef(ref metav1.OwnerReference, object metav1.Object) {