From 2fbbac3888c7781e5b9d265f66006d7a0087dbf4 Mon Sep 17 00:00:00 2001 From: Alejandro Ruiz Date: Fri, 14 Jun 2024 14:36:39 +0200 Subject: [PATCH] Ignore status fields when comparing resources --- internal/cmd/agent/deployer/normalizers/norm.go | 2 ++ internal/cmd/agent/deployer/normalizers/status.go | 13 +++++++++++++ 2 files changed, 15 insertions(+) create mode 100644 internal/cmd/agent/deployer/normalizers/status.go diff --git a/internal/cmd/agent/deployer/normalizers/norm.go b/internal/cmd/agent/deployer/normalizers/norm.go index a47164c836..64f826ac1b 100644 --- a/internal/cmd/agent/deployer/normalizers/norm.go +++ b/internal/cmd/agent/deployer/normalizers/norm.go @@ -22,6 +22,8 @@ func (n Norm) Normalize(un *unstructured.Unstructured) error { func New(lives objectset.ObjectByGVK, additions ...diff.Normalizer) Norm { n := Norm{ normalizers: []diff.Normalizer{ + // Status fields are normally subresources which can't be influenced by resource updates + &StatusNormalizer{}, &MutatingWebhookNormalizer{ Live: lives, }, diff --git a/internal/cmd/agent/deployer/normalizers/status.go b/internal/cmd/agent/deployer/normalizers/status.go new file mode 100644 index 0000000000..d72d6130cc --- /dev/null +++ b/internal/cmd/agent/deployer/normalizers/status.go @@ -0,0 +1,13 @@ +package normalizers + +import ( + "k8s.io/apimachinery/pkg/apis/meta/v1/unstructured" +) + +// StatusNormalizer removes a top-level "status" fields from the object, if present +type StatusNormalizer struct{} + +func (j StatusNormalizer) Normalize(un *unstructured.Unstructured) error { + unstructured.RemoveNestedField(un.Object, "status") + return nil +}