From 3893e128970473285a51df23515ead8299eb9034 Mon Sep 17 00:00:00 2001 From: Arthur Gustin Date: Tue, 14 Jan 2020 14:18:01 +0100 Subject: [PATCH] Add --namespace option to kustomize edit add secret command Fix https://github.com/kubernetes-sigs/kustomize/issues/1625 --- .../internal/commands/edit/add/flagsandargs.go | 2 ++ kustomize/internal/commands/edit/add/secret.go | 16 +++++++++++----- .../internal/commands/edit/add/secret_test.go | 11 ++++++----- 3 files changed, 19 insertions(+), 10 deletions(-) diff --git a/kustomize/internal/commands/edit/add/flagsandargs.go b/kustomize/internal/commands/edit/add/flagsandargs.go index 659dd0039..d17088ab5 100644 --- a/kustomize/internal/commands/edit/add/flagsandargs.go +++ b/kustomize/internal/commands/edit/add/flagsandargs.go @@ -24,6 +24,8 @@ type flagsAndArgs struct { EnvFileSource string // Type of secret to create Type string + // Namespace of secret + Namespace string } // Validate validates required fields are set to support structured generation. diff --git a/kustomize/internal/commands/edit/add/secret.go b/kustomize/internal/commands/edit/add/secret.go index 48566dae9..ceb9650bf 100644 --- a/kustomize/internal/commands/edit/add/secret.go +++ b/kustomize/internal/commands/edit/add/secret.go @@ -86,6 +86,11 @@ func newCmdAddSecret( "type", "Opaque", "Specify the secret type this can be 'Opaque' (default), or 'kubernetes.io/tls'") + cmd.Flags().StringVar( + &flags.Namespace, + "namespace", + "", + "Specify the namespace of the secret") return cmd } @@ -97,7 +102,7 @@ func addSecret( ldr ifc.KvLoader, k *types.Kustomization, flags flagsAndArgs, kf ifc.KunstructuredFactory) error { - args := findOrMakeSecretArgs(k, flags.Name, flags.Type) + args := findOrMakeSecretArgs(k, flags.Name, flags.Namespace, flags.Type) mergeFlagsIntoGeneratorArgs(&args.GeneratorArgs, flags) // Validate by trying to create corev1.secret. _, err := kf.MakeSecret(ldr, k.GeneratorOptions, args) @@ -107,16 +112,17 @@ func addSecret( return nil } -func findOrMakeSecretArgs(m *types.Kustomization, name, secretType string) *types.SecretArgs { +func findOrMakeSecretArgs(m *types.Kustomization, name, namespace, secretType string) *types.SecretArgs { for i, v := range m.SecretGenerator { - if name == v.Name { + if name == v.Name && namespace == v.Namespace { return &m.SecretGenerator[i] } } // secret not found, create new one and add it to the kustomization file. secret := &types.SecretArgs{ - GeneratorArgs: types.GeneratorArgs{Name: name}, - Type: secretType} + GeneratorArgs: types.GeneratorArgs{Name: name, Namespace: namespace}, + Type: secretType, + } m.SecretGenerator = append(m.SecretGenerator, *secret) return &m.SecretGenerator[len(m.SecretGenerator)-1] } diff --git a/kustomize/internal/commands/edit/add/secret_test.go b/kustomize/internal/commands/edit/add/secret_test.go index 2007bfa12..30fc1dd27 100644 --- a/kustomize/internal/commands/edit/add/secret_test.go +++ b/kustomize/internal/commands/edit/add/secret_test.go @@ -28,6 +28,7 @@ func TestNewCmdAddSecretIsNotNil(t *testing.T) { func TestMakeSecretArgs(t *testing.T) { secretName := "test-secret-name" + namespace := "test-secret-namespace" kustomization := &types.Kustomization{ NamePrefix: "test-name-prefix", @@ -38,7 +39,7 @@ func TestMakeSecretArgs(t *testing.T) { if len(kustomization.SecretGenerator) != 0 { t.Fatal("Initial kustomization should not have any secrets") } - args := findOrMakeSecretArgs(kustomization, secretName, secretType) + args := findOrMakeSecretArgs(kustomization, secretName, namespace, secretType) if args == nil { t.Fatalf("args should always be non-nil") @@ -52,7 +53,7 @@ func TestMakeSecretArgs(t *testing.T) { t.Fatalf("Pointer address for newly inserted secret generator should be same") } - args2 := findOrMakeSecretArgs(kustomization, secretName, secretType) + args2 := findOrMakeSecretArgs(kustomization, secretName, namespace, secretType) if args2 != args { t.Fatalf("should have returned an existing args with name: %v", secretName) @@ -65,7 +66,7 @@ func TestMakeSecretArgs(t *testing.T) { func TestMergeFlagsIntoSecretArgs_LiteralSources(t *testing.T) { k := &types.Kustomization{} - args := findOrMakeSecretArgs(k, "foo", "forbidden") + args := findOrMakeSecretArgs(k, "foo", "bar", "forbidden") mergeFlagsIntoGeneratorArgs( &args.GeneratorArgs, flagsAndArgs{LiteralSources: []string{"k1=v1"}}) @@ -82,7 +83,7 @@ func TestMergeFlagsIntoSecretArgs_LiteralSources(t *testing.T) { func TestMergeFlagsIntoSecretArgs_FileSources(t *testing.T) { k := &types.Kustomization{} - args := findOrMakeSecretArgs(k, "foo", "forbidden") + args := findOrMakeSecretArgs(k, "foo", "bar", "forbidden") mergeFlagsIntoGeneratorArgs( &args.GeneratorArgs, flagsAndArgs{FileSources: []string{"file1"}}) @@ -99,7 +100,7 @@ func TestMergeFlagsIntoSecretArgs_FileSources(t *testing.T) { func TestMergeFlagsIntoSecretArgs_EnvSource(t *testing.T) { k := &types.Kustomization{} - args := findOrMakeSecretArgs(k, "foo", "forbidden") + args := findOrMakeSecretArgs(k, "foo", "bar", "forbidden") mergeFlagsIntoGeneratorArgs( &args.GeneratorArgs, flagsAndArgs{EnvFileSource: "env1"})