From 2554d690c8dbde1ceacad842c7945d7337cf9be0 Mon Sep 17 00:00:00 2001 From: natasha41575 Date: Mon, 10 Jan 2022 15:01:30 -0800 Subject: [PATCH] deprecate enable-managedby-label flag in favor of a field --- api/krusty/kustomizer.go | 3 +- api/krusty/managedbylabel_test.go | 51 +++++++++++++++----- api/types/kustomization.go | 4 +- kustomize/commands/build/build.go | 2 + kustomize/commands/build/flagaddmanagedby.go | 4 +- 5 files changed, 48 insertions(+), 16 deletions(-) diff --git a/api/krusty/kustomizer.go b/api/krusty/kustomizer.go index c5dda8a1b0..646a5c3f5e 100644 --- a/api/krusty/kustomizer.go +++ b/api/krusty/kustomizer.go @@ -10,6 +10,7 @@ import ( "sigs.k8s.io/kustomize/api/internal/builtins" pLdr "sigs.k8s.io/kustomize/api/internal/plugins/loader" "sigs.k8s.io/kustomize/api/internal/target" + "sigs.k8s.io/kustomize/api/internal/utils" "sigs.k8s.io/kustomize/api/konfig" fLdr "sigs.k8s.io/kustomize/api/loader" "sigs.k8s.io/kustomize/api/provenance" @@ -95,7 +96,7 @@ func (b *Kustomizer) Run( return nil, err } } - if b.options.AddManagedbyLabel { + if b.options.AddManagedbyLabel || utils.StringSliceContains(kt.Kustomization().BuildMetadata, types.ManagedByLabelOption) { t := builtins.LabelTransformerPlugin{ Labels: map[string]string{ konfig.ManagedbyLabelKey: fmt.Sprintf("kustomize-%s", provenance.GetProvenance().Semver()), diff --git a/api/krusty/managedbylabel_test.go b/api/krusty/managedbylabel_test.go index 2cabde562a..8d12a60bd2 100644 --- a/api/krusty/managedbylabel_test.go +++ b/api/krusty/managedbylabel_test.go @@ -9,35 +9,60 @@ import ( kusttest_test "sigs.k8s.io/kustomize/api/testutils/kusttest" ) -func TestAddManagedbyLabel(t *testing.T) { - th := kusttest_test.MakeHarness(t) - th.WriteF("service.yaml", ` -apiVersion: v1 +const expected = `apiVersion: v1 kind: Service metadata: + labels: + app.kubernetes.io/managed-by: kustomize-v444.333.222 name: myService spec: ports: - port: 7002 -`) - th.WriteK(".", ` +` + +func TestAddManagedbyLabel(t *testing.T) { + tests := []struct { + kustFile string + managedByFlag bool + expected string + }{ + { + kustFile: ` apiVersion: kustomize.config.k8s.io/v1beta1 kind: Kustomization resources: - service.yaml -`) - options := th.MakeDefaultOptions() - options.AddManagedbyLabel = true - m := th.Run(".", options) - th.AssertActualEqualsExpected(m, ` +`, + managedByFlag: true, + expected: expected, + }, + { + kustFile: ` +apiVersion: kustomize.config.k8s.io/v1beta1 +kind: Kustomization +resources: +- service.yaml +buildMetadata: [managedByLabel] +`, + managedByFlag: false, + expected: expected, + }, + } + for _, tc := range tests { + th := kusttest_test.MakeHarness(t) + th.WriteF("service.yaml", ` apiVersion: v1 kind: Service metadata: - labels: - app.kubernetes.io/managed-by: kustomize-v444.333.222 name: myService spec: ports: - port: 7002 `) + th.WriteK(".", tc.kustFile) + options := th.MakeDefaultOptions() + options.AddManagedbyLabel = tc.managedByFlag + m := th.Run(".", options) + th.AssertActualEqualsExpected(m, tc.expected) + } } diff --git a/api/types/kustomization.go b/api/types/kustomization.go index 196d244d82..a75a5f2ea3 100644 --- a/api/types/kustomization.go +++ b/api/types/kustomization.go @@ -17,7 +17,9 @@ const ( ComponentVersion = "kustomize.config.k8s.io/v1alpha1" ComponentKind = "Component" MetadataNamespacePath = "metadata/namespace" - OriginAnnotations = "originAnnotations" + + OriginAnnotations = "originAnnotations" + ManagedByLabelOption = "managedByLabel" ) // Kustomization holds the information needed to generate customized k8s api resources. diff --git a/kustomize/commands/build/build.go b/kustomize/commands/build/build.go index 90981d74bb..22ca0bb8d3 100644 --- a/kustomize/commands/build/build.go +++ b/kustomize/commands/build/build.go @@ -104,6 +104,8 @@ func NewCmdBuild( AddFlagEnablePlugins(cmd.Flags()) AddFlagReorderOutput(cmd.Flags()) AddFlagEnableManagedbyLabel(cmd.Flags()) + cmd.Flags().MarkDeprecated(managedByFlag, + "The flag `enable-managedby-label` has been deprecated. Use the `managedByLabel` option in the `buildMetadata` field instead.") AddFlagEnableHelm(cmd.Flags()) return cmd } diff --git a/kustomize/commands/build/flagaddmanagedby.go b/kustomize/commands/build/flagaddmanagedby.go index c65a85d106..0d3d1b54d1 100644 --- a/kustomize/commands/build/flagaddmanagedby.go +++ b/kustomize/commands/build/flagaddmanagedby.go @@ -10,10 +10,12 @@ import ( "sigs.k8s.io/kustomize/api/konfig" ) +const managedByFlag = "enable-managedby-label" + func AddFlagEnableManagedbyLabel(set *pflag.FlagSet) { set.BoolVar( &theFlags.enable.managedByLabel, - "enable-managedby-label", + managedByFlag, false, `enable adding `+konfig.ManagedbyLabelKey) }