Merge pull request #494 from Liujingfang1/generatoroptions

allow add labels/annotations to generated resources
This commit is contained in:
Jeff Regan
2018-10-19 16:01:53 -07:00
committed by GitHub
10 changed files with 42 additions and 25 deletions

View File

@@ -55,7 +55,7 @@ func (f *ConfigMapFactory) makeFreshConfigMap(
// MakeConfigMap returns a new ConfigMap, or nil and an error. // MakeConfigMap returns a new ConfigMap, or nil and an error.
func (f *ConfigMapFactory) MakeConfigMap( func (f *ConfigMapFactory) MakeConfigMap(
args *types.ConfigMapArgs) (*corev1.ConfigMap, error) { args *types.ConfigMapArgs, options *types.GeneratorOptions) (*corev1.ConfigMap, error) {
var all []kvPair var all []kvPair
var err error var err error
cm := f.makeFreshConfigMap(args) cm := f.makeFreshConfigMap(args)
@@ -88,6 +88,10 @@ func (f *ConfigMapFactory) MakeConfigMap(
return nil, err return nil, err
} }
} }
if options != nil {
cm.SetLabels(options.Labels)
cm.SetAnnotations(options.Annotations)
}
return cm, nil return cm, nil
} }

View File

@@ -61,7 +61,7 @@ BAR=baz
} }
func makeLiteralConfigMap(name string) *corev1.ConfigMap { func makeLiteralConfigMap(name string) *corev1.ConfigMap {
return &corev1.ConfigMap{ cm := &corev1.ConfigMap{
TypeMeta: metav1.TypeMeta{ TypeMeta: metav1.TypeMeta{
APIVersion: "v1", APIVersion: "v1",
Kind: "ConfigMap", Kind: "ConfigMap",
@@ -76,12 +76,15 @@ func makeLiteralConfigMap(name string) *corev1.ConfigMap {
"d": "true", "d": "true",
}, },
} }
cm.SetLabels(map[string]string{"foo": "bar"})
return cm
} }
func TestConstructConfigMap(t *testing.T) { func TestConstructConfigMap(t *testing.T) {
type testCase struct { type testCase struct {
description string description string
input types.ConfigMapArgs input types.ConfigMapArgs
options *types.GeneratorOptions
expected *corev1.ConfigMap expected *corev1.ConfigMap
} }
@@ -94,6 +97,7 @@ func TestConstructConfigMap(t *testing.T) {
EnvSource: "configmap/app.env", EnvSource: "configmap/app.env",
}, },
}, },
options: nil,
expected: makeEnvConfigMap("envConfigMap"), expected: makeEnvConfigMap("envConfigMap"),
}, },
{ {
@@ -104,6 +108,7 @@ func TestConstructConfigMap(t *testing.T) {
FileSources: []string{"configmap/app-init.ini"}, FileSources: []string{"configmap/app-init.ini"},
}, },
}, },
options: nil,
expected: makeFileConfigMap("fileConfigMap"), expected: makeFileConfigMap("fileConfigMap"),
}, },
{ {
@@ -114,6 +119,11 @@ func TestConstructConfigMap(t *testing.T) {
LiteralSources: []string{"a=x", "b=y", "c=\"Hello World\"", "d='true'"}, LiteralSources: []string{"a=x", "b=y", "c=\"Hello World\"", "d='true'"},
}, },
}, },
options: &types.GeneratorOptions{
Labels: map[string]string{
"foo": "bar",
},
},
expected: makeLiteralConfigMap("literalConfigMap"), expected: makeLiteralConfigMap("literalConfigMap"),
}, },
} }
@@ -123,7 +133,7 @@ func TestConstructConfigMap(t *testing.T) {
fSys.WriteFile("configmap/app-init.ini", []byte("FOO=bar\nBAR=baz\n")) fSys.WriteFile("configmap/app-init.ini", []byte("FOO=bar\nBAR=baz\n"))
f := NewConfigMapFactory(fSys, loader.NewFileLoader(fSys)) f := NewConfigMapFactory(fSys, loader.NewFileLoader(fSys))
for _, tc := range testCases { for _, tc := range testCases {
cm, err := f.MakeConfigMap(&tc.input) cm, err := f.MakeConfigMap(&tc.input, tc.options)
if err != nil { if err != nil {
t.Fatalf("unexpected error: %v", err) t.Fatalf("unexpected error: %v", err)
} }

View File

@@ -60,7 +60,7 @@ func (f *SecretFactory) makeFreshSecret(args *types.SecretArgs) *corev1.Secret {
} }
// MakeSecret returns a new 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 all []kvPair
var err error var err error
s := f.makeFreshSecret(args) s := f.makeFreshSecret(args)
@@ -91,7 +91,10 @@ func (f *SecretFactory) MakeSecret(args *types.SecretArgs) (*corev1.Secret, erro
return nil, err return nil, err
} }
} }
if options != nil {
s.SetLabels(options.Labels)
s.SetAnnotations(options.Annotations)
}
return s, nil return s, nil
} }

View File

@@ -72,8 +72,8 @@ func (kf *KunstructurerFactoryImpl) FromMap(
} }
// MakeConfigMap returns an instance of Kunstructured for ConfigMap // MakeConfigMap returns an instance of Kunstructured for ConfigMap
func (kf *KunstructurerFactoryImpl) MakeConfigMap(args *types.ConfigMapArgs) (ifc.Kunstructured, error) { func (kf *KunstructurerFactoryImpl) MakeConfigMap(args *types.ConfigMapArgs, options *types.GeneratorOptions) (ifc.Kunstructured, error) {
cm, err := kf.cmfactory.MakeConfigMap(args) cm, err := kf.cmfactory.MakeConfigMap(args, options)
if err != nil { if err != nil {
return nil, err return nil, err
} }
@@ -81,8 +81,8 @@ func (kf *KunstructurerFactoryImpl) MakeConfigMap(args *types.ConfigMapArgs) (if
} }
// MakeSecret returns an instance of Kunstructured for Secret // MakeSecret returns an instance of Kunstructured for Secret
func (kf *KunstructurerFactoryImpl) MakeSecret(args *types.SecretArgs) (ifc.Kunstructured, error) { func (kf *KunstructurerFactoryImpl) MakeSecret(args *types.SecretArgs, options *types.GeneratorOptions) (ifc.Kunstructured, error) {
sec, err := kf.secfactory.MakeSecret(args) sec, err := kf.secfactory.MakeSecret(args, options)
if err != nil { if err != nil {
return nil, err return nil, err
} }

View File

@@ -111,7 +111,7 @@ func addConfigMap(
return err return err
} }
// Validate by trying to create corev1.configmap. // Validate by trying to create corev1.configmap.
_, err = kf.MakeConfigMap(cmArgs) _, err = kf.MakeConfigMap(cmArgs, k.GeneratorOptions)
if err != nil { if err != nil {
return err return err
} }

View File

@@ -65,8 +65,8 @@ type Kunstructured interface {
type KunstructuredFactory interface { type KunstructuredFactory interface {
SliceFromBytes([]byte) ([]Kunstructured, error) SliceFromBytes([]byte) ([]Kunstructured, error)
FromMap(m map[string]interface{}) Kunstructured FromMap(m map[string]interface{}) Kunstructured
MakeConfigMap(args *types.ConfigMapArgs) (Kunstructured, error) MakeConfigMap(args *types.ConfigMapArgs, options *types.GeneratorOptions) (Kunstructured, error)
MakeSecret(args *types.SecretArgs) (Kunstructured, error) MakeSecret(args *types.SecretArgs, options *types.GeneratorOptions) (Kunstructured, error)
Set(fs fs.FileSystem, ldr Loader) Set(fs fs.FileSystem, ldr Loader)
} }

View File

@@ -80,10 +80,10 @@ func (rmF *Factory) newResMapFromBytes(b []byte) (ResMap, error) {
// NewResMapFromConfigMapArgs returns a Resource slice given // NewResMapFromConfigMapArgs returns a Resource slice given
// a configmap metadata slice from kustomization file. // 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 var resources []*resource.Resource
for _, args := range argList { for _, args := range argList {
res, err := rmF.resF.MakeConfigMap(&args) res, err := rmF.resF.MakeConfigMap(&args, options)
if err != nil { if err != nil {
return nil, errors.Wrap(err, "NewResMapFromConfigMapArgs") return nil, errors.Wrap(err, "NewResMapFromConfigMapArgs")
} }
@@ -94,10 +94,10 @@ func (rmF *Factory) NewResMapFromConfigMapArgs(argList []types.ConfigMapArgs) (R
// NewResMapFromSecretArgs takes a SecretArgs slice, generates // NewResMapFromSecretArgs takes a SecretArgs slice, generates
// secrets from each entry, and accumulates them in a ResMap. // 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 var resources []*resource.Resource
for _, args := range argsList { for _, args := range argsList {
res, err := rmF.resF.MakeSecret(&args) res, err := rmF.resF.MakeSecret(&args, options)
if err != nil { if err != nil {
return nil, errors.Wrap(err, "NewResMapFromSecretArgs") return nil, errors.Wrap(err, "NewResMapFromSecretArgs")
} }

View File

@@ -236,7 +236,7 @@ BAR=baz
if ferr := l.AddFile(tc.filepath, []byte(tc.content)); ferr != nil { if ferr := l.AddFile(tc.filepath, []byte(tc.content)); ferr != nil {
t.Fatalf("Error adding fake file: %v\n", ferr) 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 { if err != nil {
t.Fatalf("unexpected error: %v", err) t.Fatalf("unexpected error: %v", err)
} }
@@ -271,7 +271,7 @@ func TestNewResMapFromSecretArgs(t *testing.T) {
fakeFs := fs.MakeFakeFS() fakeFs := fs.MakeFakeFS()
fakeFs.Mkdir(".") fakeFs.Mkdir(".")
rmF.Set(fakeFs, loader.NewFileLoader(fakeFs)) rmF.Set(fakeFs, loader.NewFileLoader(fakeFs))
actual, err := rmF.NewResMapFromSecretArgs(secrets) actual, err := rmF.NewResMapFromSecretArgs(secrets, nil)
if err != nil { if err != nil {
t.Fatalf("unexpected error: %v", err) t.Fatalf("unexpected error: %v", err)
@@ -327,7 +327,7 @@ func TestSecretTimeout(t *testing.T) {
fakeFs := fs.MakeFakeFS() fakeFs := fs.MakeFakeFS()
fakeFs.Mkdir(".") fakeFs.Mkdir(".")
rmF.Set(fakeFs, loader.NewFileLoader(fakeFs)) rmF.Set(fakeFs, loader.NewFileLoader(fakeFs))
_, err := rmF.NewResMapFromSecretArgs(secrets) _, err := rmF.NewResMapFromSecretArgs(secrets, nil)
if err == nil { if err == nil {
t.Fatal("didn't get the expected timeout error", err) t.Fatal("didn't get the expected timeout error", err)

View File

@@ -90,8 +90,8 @@ func (rf *Factory) Set(fs fs.FileSystem, ldr ifc.Loader) {
} }
// MakeConfigMap makes an instance of Resource for ConfigMap // MakeConfigMap makes an instance of Resource for ConfigMap
func (rf *Factory) MakeConfigMap(args *types.ConfigMapArgs) (*Resource, error) { func (rf *Factory) MakeConfigMap(args *types.ConfigMapArgs, options *types.GeneratorOptions) (*Resource, error) {
u, err := rf.kf.MakeConfigMap(args) u, err := rf.kf.MakeConfigMap(args, options)
if err != nil { if err != nil {
return nil, err return nil, err
} }
@@ -99,8 +99,8 @@ func (rf *Factory) MakeConfigMap(args *types.ConfigMapArgs) (*Resource, error) {
} }
// MakeSecret makes an instance of Resource for Secret // MakeSecret makes an instance of Resource for Secret
func (rf *Factory) MakeSecret(args *types.SecretArgs) (*Resource, error) { func (rf *Factory) MakeSecret(args *types.SecretArgs, options *types.GeneratorOptions) (*Resource, error) {
u, err := rf.kf.MakeSecret(args) u, err := rf.kf.MakeSecret(args, options)
if err != nil { if err != nil {
return nil, err return nil, err
} }

View File

@@ -186,11 +186,11 @@ func (kt *KustTarget) loadCustomizedResMap() (resmap.ResMap, error) {
func (kt *KustTarget) generateConfigMapsAndSecrets( func (kt *KustTarget) generateConfigMapsAndSecrets(
errs *interror.KustomizationErrors) (resmap.ResMap, error) { errs *interror.KustomizationErrors) (resmap.ResMap, error) {
kt.rf.Set(kt.fSys, kt.ldr) 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 { if err != nil {
errs.Append(errors.Wrap(err, "NewResMapFromConfigMapArgs")) 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 { if err != nil {
errs.Append(errors.Wrap(err, "NewResMapFromSecretArgs")) errs.Append(errors.Wrap(err, "NewResMapFromSecretArgs"))
} }