diff --git a/internal/k8sdeps/configmapandsecret/configmapfactory.go b/internal/k8sdeps/configmapandsecret/configmapfactory.go index 2db3d78ba..ff77e6fa4 100644 --- a/internal/k8sdeps/configmapandsecret/configmapfactory.go +++ b/internal/k8sdeps/configmapandsecret/configmapfactory.go @@ -55,7 +55,7 @@ func (f *ConfigMapFactory) makeFreshConfigMap( // MakeConfigMap returns a new ConfigMap, or nil and an error. func (f *ConfigMapFactory) MakeConfigMap( - args *types.ConfigMapArgs) (*corev1.ConfigMap, error) { + args *types.ConfigMapArgs, options *types.GeneratorOptions) (*corev1.ConfigMap, error) { var all []kvPair var err error cm := f.makeFreshConfigMap(args) @@ -88,6 +88,10 @@ func (f *ConfigMapFactory) MakeConfigMap( return nil, err } } + if options != nil { + cm.SetLabels(options.Labels) + cm.SetAnnotations(options.Annotations) + } return cm, nil } diff --git a/internal/k8sdeps/configmapandsecret/configmapfactory_test.go b/internal/k8sdeps/configmapandsecret/configmapfactory_test.go index 720241556..691dbe82e 100644 --- a/internal/k8sdeps/configmapandsecret/configmapfactory_test.go +++ b/internal/k8sdeps/configmapandsecret/configmapfactory_test.go @@ -61,7 +61,7 @@ BAR=baz } func makeLiteralConfigMap(name string) *corev1.ConfigMap { - return &corev1.ConfigMap{ + cm := &corev1.ConfigMap{ TypeMeta: metav1.TypeMeta{ APIVersion: "v1", Kind: "ConfigMap", @@ -76,12 +76,15 @@ func makeLiteralConfigMap(name string) *corev1.ConfigMap { "d": "true", }, } + cm.SetLabels(map[string]string{"foo": "bar"}) + return cm } func TestConstructConfigMap(t *testing.T) { type testCase struct { description string input types.ConfigMapArgs + options *types.GeneratorOptions expected *corev1.ConfigMap } @@ -94,6 +97,7 @@ func TestConstructConfigMap(t *testing.T) { EnvSource: "configmap/app.env", }, }, + options: nil, expected: makeEnvConfigMap("envConfigMap"), }, { @@ -104,6 +108,7 @@ func TestConstructConfigMap(t *testing.T) { FileSources: []string{"configmap/app-init.ini"}, }, }, + options: nil, expected: makeFileConfigMap("fileConfigMap"), }, { @@ -114,6 +119,11 @@ func TestConstructConfigMap(t *testing.T) { LiteralSources: []string{"a=x", "b=y", "c=\"Hello World\"", "d='true'"}, }, }, + options: &types.GeneratorOptions{ + Labels: map[string]string{ + "foo": "bar", + }, + }, expected: makeLiteralConfigMap("literalConfigMap"), }, } @@ -123,7 +133,7 @@ func TestConstructConfigMap(t *testing.T) { fSys.WriteFile("configmap/app-init.ini", []byte("FOO=bar\nBAR=baz\n")) f := NewConfigMapFactory(fSys, loader.NewFileLoader(fSys)) for _, tc := range testCases { - cm, err := f.MakeConfigMap(&tc.input) + cm, err := f.MakeConfigMap(&tc.input, tc.options) if err != nil { t.Fatalf("unexpected error: %v", err) } diff --git a/internal/k8sdeps/configmapandsecret/secretfactory.go b/internal/k8sdeps/configmapandsecret/secretfactory.go index 90c2a91db..a3695f850 100644 --- a/internal/k8sdeps/configmapandsecret/secretfactory.go +++ b/internal/k8sdeps/configmapandsecret/secretfactory.go @@ -60,7 +60,7 @@ func (f *SecretFactory) makeFreshSecret(args *types.SecretArgs) *corev1.Secret { } // MakeSecret returns a new secret. -func (f *SecretFactory) MakeSecret(args *types.SecretArgs) (*corev1.Secret, error) { +func (f *SecretFactory) MakeSecret(args *types.SecretArgs, options *types.GeneratorOptions) (*corev1.Secret, error) { var all []kvPair var err error s := f.makeFreshSecret(args) @@ -91,7 +91,10 @@ func (f *SecretFactory) MakeSecret(args *types.SecretArgs) (*corev1.Secret, erro return nil, err } } - + if options != nil { + s.SetLabels(options.Labels) + s.SetAnnotations(options.Annotations) + } return s, nil } diff --git a/internal/k8sdeps/kunstruct/factory.go b/internal/k8sdeps/kunstruct/factory.go index 8d0058951..b5c7103da 100644 --- a/internal/k8sdeps/kunstruct/factory.go +++ b/internal/k8sdeps/kunstruct/factory.go @@ -72,8 +72,8 @@ func (kf *KunstructurerFactoryImpl) FromMap( } // MakeConfigMap returns an instance of Kunstructured for ConfigMap -func (kf *KunstructurerFactoryImpl) MakeConfigMap(args *types.ConfigMapArgs) (ifc.Kunstructured, error) { - cm, err := kf.cmfactory.MakeConfigMap(args) +func (kf *KunstructurerFactoryImpl) MakeConfigMap(args *types.ConfigMapArgs, options *types.GeneratorOptions) (ifc.Kunstructured, error) { + cm, err := kf.cmfactory.MakeConfigMap(args, options) if err != nil { return nil, err } @@ -81,8 +81,8 @@ func (kf *KunstructurerFactoryImpl) MakeConfigMap(args *types.ConfigMapArgs) (if } // MakeSecret returns an instance of Kunstructured for Secret -func (kf *KunstructurerFactoryImpl) MakeSecret(args *types.SecretArgs) (ifc.Kunstructured, error) { - sec, err := kf.secfactory.MakeSecret(args) +func (kf *KunstructurerFactoryImpl) MakeSecret(args *types.SecretArgs, options *types.GeneratorOptions) (ifc.Kunstructured, error) { + sec, err := kf.secfactory.MakeSecret(args, options) if err != nil { return nil, err } diff --git a/pkg/commands/edit/add/configmap.go b/pkg/commands/edit/add/configmap.go index bb57c27d1..8bcec9438 100644 --- a/pkg/commands/edit/add/configmap.go +++ b/pkg/commands/edit/add/configmap.go @@ -111,7 +111,7 @@ func addConfigMap( return err } // Validate by trying to create corev1.configmap. - _, err = kf.MakeConfigMap(cmArgs) + _, err = kf.MakeConfigMap(cmArgs, k.GeneratorOptions) if err != nil { return err } diff --git a/pkg/ifc/ifc.go b/pkg/ifc/ifc.go index c76aae397..c4f3dbb26 100644 --- a/pkg/ifc/ifc.go +++ b/pkg/ifc/ifc.go @@ -65,8 +65,8 @@ type Kunstructured interface { type KunstructuredFactory interface { SliceFromBytes([]byte) ([]Kunstructured, error) FromMap(m map[string]interface{}) Kunstructured - MakeConfigMap(args *types.ConfigMapArgs) (Kunstructured, error) - MakeSecret(args *types.SecretArgs) (Kunstructured, error) + MakeConfigMap(args *types.ConfigMapArgs, options *types.GeneratorOptions) (Kunstructured, error) + MakeSecret(args *types.SecretArgs, options *types.GeneratorOptions) (Kunstructured, error) Set(fs fs.FileSystem, ldr Loader) } diff --git a/pkg/resmap/factory.go b/pkg/resmap/factory.go index 6726e4e2b..9083a37ea 100644 --- a/pkg/resmap/factory.go +++ b/pkg/resmap/factory.go @@ -80,10 +80,10 @@ func (rmF *Factory) newResMapFromBytes(b []byte) (ResMap, error) { // NewResMapFromConfigMapArgs returns a Resource slice given // a configmap metadata slice from kustomization file. -func (rmF *Factory) NewResMapFromConfigMapArgs(argList []types.ConfigMapArgs) (ResMap, error) { +func (rmF *Factory) NewResMapFromConfigMapArgs(argList []types.ConfigMapArgs, options *types.GeneratorOptions) (ResMap, error) { var resources []*resource.Resource for _, args := range argList { - res, err := rmF.resF.MakeConfigMap(&args) + res, err := rmF.resF.MakeConfigMap(&args, options) if err != nil { return nil, errors.Wrap(err, "NewResMapFromConfigMapArgs") } @@ -94,10 +94,10 @@ func (rmF *Factory) NewResMapFromConfigMapArgs(argList []types.ConfigMapArgs) (R // NewResMapFromSecretArgs takes a SecretArgs slice, generates // secrets from each entry, and accumulates them in a ResMap. -func (rmF *Factory) NewResMapFromSecretArgs(argsList []types.SecretArgs) (ResMap, error) { +func (rmF *Factory) NewResMapFromSecretArgs(argsList []types.SecretArgs, options *types.GeneratorOptions) (ResMap, error) { var resources []*resource.Resource for _, args := range argsList { - res, err := rmF.resF.MakeSecret(&args) + res, err := rmF.resF.MakeSecret(&args, options) if err != nil { return nil, errors.Wrap(err, "NewResMapFromSecretArgs") } diff --git a/pkg/resmap/factory_test.go b/pkg/resmap/factory_test.go index 586955b35..c35f046d3 100644 --- a/pkg/resmap/factory_test.go +++ b/pkg/resmap/factory_test.go @@ -236,7 +236,7 @@ BAR=baz if ferr := l.AddFile(tc.filepath, []byte(tc.content)); ferr != nil { t.Fatalf("Error adding fake file: %v\n", ferr) } - r, err := rmF.NewResMapFromConfigMapArgs(tc.input) + r, err := rmF.NewResMapFromConfigMapArgs(tc.input, nil) if err != nil { t.Fatalf("unexpected error: %v", err) } @@ -271,7 +271,7 @@ func TestNewResMapFromSecretArgs(t *testing.T) { fakeFs := fs.MakeFakeFS() fakeFs.Mkdir(".") rmF.Set(fakeFs, loader.NewFileLoader(fakeFs)) - actual, err := rmF.NewResMapFromSecretArgs(secrets) + actual, err := rmF.NewResMapFromSecretArgs(secrets, nil) if err != nil { t.Fatalf("unexpected error: %v", err) @@ -327,7 +327,7 @@ func TestSecretTimeout(t *testing.T) { fakeFs := fs.MakeFakeFS() fakeFs.Mkdir(".") rmF.Set(fakeFs, loader.NewFileLoader(fakeFs)) - _, err := rmF.NewResMapFromSecretArgs(secrets) + _, err := rmF.NewResMapFromSecretArgs(secrets, nil) if err == nil { t.Fatal("didn't get the expected timeout error", err) diff --git a/pkg/resource/factory.go b/pkg/resource/factory.go index 532c88651..2d9da9c66 100644 --- a/pkg/resource/factory.go +++ b/pkg/resource/factory.go @@ -90,8 +90,8 @@ func (rf *Factory) Set(fs fs.FileSystem, ldr ifc.Loader) { } // MakeConfigMap makes an instance of Resource for ConfigMap -func (rf *Factory) MakeConfigMap(args *types.ConfigMapArgs) (*Resource, error) { - u, err := rf.kf.MakeConfigMap(args) +func (rf *Factory) MakeConfigMap(args *types.ConfigMapArgs, options *types.GeneratorOptions) (*Resource, error) { + u, err := rf.kf.MakeConfigMap(args, options) if err != nil { return nil, err } @@ -99,8 +99,8 @@ func (rf *Factory) MakeConfigMap(args *types.ConfigMapArgs) (*Resource, error) { } // MakeSecret makes an instance of Resource for Secret -func (rf *Factory) MakeSecret(args *types.SecretArgs) (*Resource, error) { - u, err := rf.kf.MakeSecret(args) +func (rf *Factory) MakeSecret(args *types.SecretArgs, options *types.GeneratorOptions) (*Resource, error) { + u, err := rf.kf.MakeSecret(args, options) if err != nil { return nil, err } diff --git a/pkg/target/kusttarget.go b/pkg/target/kusttarget.go index 8a81b7b44..8e80de17a 100644 --- a/pkg/target/kusttarget.go +++ b/pkg/target/kusttarget.go @@ -186,11 +186,11 @@ func (kt *KustTarget) loadCustomizedResMap() (resmap.ResMap, error) { func (kt *KustTarget) generateConfigMapsAndSecrets( errs *interror.KustomizationErrors) (resmap.ResMap, error) { kt.rf.Set(kt.fSys, kt.ldr) - cms, err := kt.rf.NewResMapFromConfigMapArgs(kt.kustomization.ConfigMapGenerator) + cms, err := kt.rf.NewResMapFromConfigMapArgs(kt.kustomization.ConfigMapGenerator, kt.kustomization.GeneratorOptions) if err != nil { errs.Append(errors.Wrap(err, "NewResMapFromConfigMapArgs")) } - secrets, err := kt.rf.NewResMapFromSecretArgs(kt.kustomization.SecretGenerator) + secrets, err := kt.rf.NewResMapFromSecretArgs(kt.kustomization.SecretGenerator, kt.kustomization.GeneratorOptions) if err != nil { errs.Append(errors.Wrap(err, "NewResMapFromSecretArgs")) }