From 3be5801f397d7c99d30018a9743516725017df9e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andr=C3=A1s=20Czig=C3=A1ny?= Date: Tue, 5 Aug 2025 11:44:58 +0200 Subject: [PATCH] pkg/internal/predicate: remove status subresource managed field --- pkg/internal/predicate/predicates.go | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/pkg/internal/predicate/predicates.go b/pkg/internal/predicate/predicates.go index 94015bae..494dcdaf 100644 --- a/pkg/internal/predicate/predicates.go +++ b/pkg/internal/predicate/predicates.go @@ -18,7 +18,9 @@ package predicate import ( "reflect" + "slices" + metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" "k8s.io/apimachinery/pkg/apis/meta/v1/unstructured" "sigs.k8s.io/controller-runtime/pkg/event" logf "sigs.k8s.io/controller-runtime/pkg/log" @@ -69,6 +71,9 @@ func DependentPredicateFuncs() crtpredicate.TypedFuncs[*unstructured.Unstructure old.SetResourceVersion("") updated.SetResourceVersion("") + removeStatusManagedField(old) + removeStatusManagedField(updated) + if reflect.DeepEqual(old.Object, updated.Object) { return false } @@ -79,3 +84,11 @@ func DependentPredicateFuncs() crtpredicate.TypedFuncs[*unstructured.Unstructure return dependentPredicate } + +func removeStatusManagedField(obj *unstructured.Unstructured) { + obj.SetManagedFields(slices.DeleteFunc(obj.GetManagedFields(), isStatusSubresource)) +} + +func isStatusSubresource(f metav1.ManagedFieldsEntry) bool { + return f.Subresource == "status" +}