From 3dfa5b54bd8d7b9090f1b21ee828811364865908 Mon Sep 17 00:00:00 2001 From: Amir Alavi Date: Wed, 15 May 2024 20:38:47 -0400 Subject: [PATCH] fix: remove deployment revision annotation Signed-off-by: Amir Alavi --- .../default/native/prune/prune.go | 10 ++++++ .../default/native/prune/prune_test.go | 33 +++++++++++++++++++ 2 files changed, 43 insertions(+) diff --git a/pkg/resourceinterpreter/default/native/prune/prune.go b/pkg/resourceinterpreter/default/native/prune/prune.go index 5f66d5df8..5c94d16c0 100644 --- a/pkg/resourceinterpreter/default/native/prune/prune.go +++ b/pkg/resourceinterpreter/default/native/prune/prune.go @@ -24,6 +24,7 @@ import ( corev1 "k8s.io/api/core/v1" "k8s.io/apimachinery/pkg/apis/meta/v1/unstructured" storagevolume "k8s.io/component-helpers/storage/volume" + utildeployment "k8s.io/kubectl/pkg/util/deployment" "github.com/karmada-io/karmada/pkg/util" "github.com/karmada-io/karmada/pkg/util/helper" @@ -33,6 +34,7 @@ import ( type irrelevantFieldPruneFunc func(*unstructured.Unstructured) error var kindIrrelevantFieldPruners = map[string]irrelevantFieldPruneFunc{ + util.DeploymentKind: removeDeploymentIrrelevantField, util.JobKind: removeJobIrrelevantField, util.SecretKind: removeSecretIrrelevantField, util.ServiceAccountKind: removeServiceAccountIrrelevantField, @@ -129,6 +131,14 @@ func removeGenerateSelectorOfJob(workload *unstructured.Unstructured) error { return nil } +func removeDeploymentIrrelevantField(workload *unstructured.Unstructured) error { + for _, annotation := range []string{utildeployment.RevisionAnnotation, utildeployment.RevisionHistoryAnnotation} { + unstructured.RemoveNestedField(workload.Object, "metadata", "annotations", annotation) + } + + return nil +} + // RemoveJobTTLSeconds removes the '.spec.ttlSecondsAfterFinished' from a Job. // The reason for removing it is that the Job propagated by Karmada probably be automatically deleted // from member clusters(by 'ttl-after-finished' controller in member clusters). That will cause a conflict if diff --git a/pkg/resourceinterpreter/default/native/prune/prune_test.go b/pkg/resourceinterpreter/default/native/prune/prune_test.go index f1c9c36af..8a82288e4 100755 --- a/pkg/resourceinterpreter/default/native/prune/prune_test.go +++ b/pkg/resourceinterpreter/default/native/prune/prune_test.go @@ -24,6 +24,7 @@ import ( corev1 "k8s.io/api/core/v1" "k8s.io/apimachinery/pkg/apis/meta/v1/unstructured" storagevolume "k8s.io/component-helpers/storage/volume" + utildeployment "k8s.io/kubectl/pkg/util/deployment" "github.com/karmada-io/karmada/pkg/util" ) @@ -239,6 +240,38 @@ func TestRemoveIrrelevantField(t *testing.T) { {"metadata", "annotations", storagevolume.AnnSelectedNode}, }, }, + { + name: "removes deployment revision annotation", + workload: &unstructured.Unstructured{ + Object: map[string]interface{}{ + "kind": util.DeploymentKind, + "metadata": map[string]interface{}{ + "annotations": map[string]interface{}{ + utildeployment.RevisionAnnotation: 1, + }, + }, + }, + }, + unexpectedFields: []field{ + {"metadata", "annotations", utildeployment.RevisionAnnotation}, + }, + }, + { + name: "removes deployment revision history annotation", + workload: &unstructured.Unstructured{ + Object: map[string]interface{}{ + "kind": util.DeploymentKind, + "metadata": map[string]interface{}{ + "annotations": map[string]interface{}{ + utildeployment.RevisionHistoryAnnotation: "1,2", + }, + }, + }, + }, + unexpectedFields: []field{ + {"metadata", "annotations", utildeployment.RevisionHistoryAnnotation}, + }, + }, } for _, tt := range tests {