DataSources is now common to Secrets and ConfigMaps.

This commit is contained in:
jregan
2019-01-22 18:57:11 -08:00
parent 244b3a2c59
commit d141b2421c
4 changed files with 55 additions and 38 deletions

View File

@@ -95,33 +95,39 @@ func TestConstructConfigMap(t *testing.T) {
{ {
description: "construct config map from env", description: "construct config map from env",
input: types.ConfigMapArgs{ input: types.ConfigMapArgs{
GeneratorArgs: types.GeneratorArgs{Name: "envConfigMap"}, GeneratorArgs: types.GeneratorArgs{
Name: "envConfigMap",
DataSources: types.DataSources{ DataSources: types.DataSources{
EnvSource: "configmap/app.env", EnvSource: "configmap/app.env",
}, },
}, },
},
options: nil, options: nil,
expected: makeEnvConfigMap("envConfigMap"), expected: makeEnvConfigMap("envConfigMap"),
}, },
{ {
description: "construct config map from file", description: "construct config map from file",
input: types.ConfigMapArgs{ input: types.ConfigMapArgs{
GeneratorArgs: types.GeneratorArgs{Name: "fileConfigMap"}, GeneratorArgs: types.GeneratorArgs{
Name: "fileConfigMap",
DataSources: types.DataSources{ DataSources: types.DataSources{
FileSources: []string{"configmap/app-init.ini", "configmap/app.bin"}, FileSources: []string{"configmap/app-init.ini", "configmap/app.bin"},
}, },
}, },
},
options: nil, options: nil,
expected: makeFileConfigMap("fileConfigMap"), expected: makeFileConfigMap("fileConfigMap"),
}, },
{ {
description: "construct config map from literal", description: "construct config map from literal",
input: types.ConfigMapArgs{ input: types.ConfigMapArgs{
GeneratorArgs: types.GeneratorArgs{Name: "literalConfigMap"}, GeneratorArgs: types.GeneratorArgs{
Name: "literalConfigMap",
DataSources: types.DataSources{ DataSources: types.DataSources{
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{ options: &types.GeneratorOptions{
Labels: map[string]string{ Labels: map[string]string{
"foo": "bar", "foo": "bar",

View File

@@ -93,33 +93,39 @@ func TestConstructSecret(t *testing.T) {
{ {
description: "construct secret from env", description: "construct secret from env",
input: types.SecretArgs{ input: types.SecretArgs{
GeneratorArgs: types.GeneratorArgs{Name: "envSecret"}, GeneratorArgs: types.GeneratorArgs{
Name: "envSecret",
DataSources: types.DataSources{ DataSources: types.DataSources{
EnvSource: "secret/app.env", EnvSource: "secret/app.env",
}, },
}, },
},
options: nil, options: nil,
expected: makeEnvSecret("envSecret"), expected: makeEnvSecret("envSecret"),
}, },
{ {
description: "construct secret from file", description: "construct secret from file",
input: types.SecretArgs{ input: types.SecretArgs{
GeneratorArgs: types.GeneratorArgs{Name: "fileSecret"}, GeneratorArgs: types.GeneratorArgs{
Name: "fileSecret",
DataSources: types.DataSources{ DataSources: types.DataSources{
FileSources: []string{"secret/app-init.ini"}, FileSources: []string{"secret/app-init.ini"},
}, },
}, },
},
options: nil, options: nil,
expected: makeFileSecret("fileSecret"), expected: makeFileSecret("fileSecret"),
}, },
{ {
description: "construct secret from literal", description: "construct secret from literal",
input: types.SecretArgs{ input: types.SecretArgs{
GeneratorArgs: types.GeneratorArgs{Name: "literalSecret"}, GeneratorArgs: types.GeneratorArgs{
Name: "literalSecret",
DataSources: types.DataSources{ DataSources: types.DataSources{
LiteralSources: []string{"a=x", "b=y"}, LiteralSources: []string{"a=x", "b=y"},
}, },
}, },
},
options: &types.GeneratorOptions{ options: &types.GeneratorOptions{
Labels: map[string]string{ Labels: map[string]string{
"foo": "bar", "foo": "bar",

View File

@@ -151,12 +151,14 @@ func TestNewFromConfigMaps(t *testing.T) {
description: "construct config map from env", description: "construct config map from env",
input: []types.ConfigMapArgs{ input: []types.ConfigMapArgs{
{ {
GeneratorArgs: types.GeneratorArgs{Name: "envConfigMap"}, GeneratorArgs: types.GeneratorArgs{
Name: "envConfigMap",
DataSources: types.DataSources{ DataSources: types.DataSources{
EnvSource: "app.env", EnvSource: "app.env",
}, },
}, },
}, },
},
filepath: "/whatever/project/app.env", filepath: "/whatever/project/app.env",
content: "DB_USERNAME=admin\nDB_PASSWORD=somepw", content: "DB_USERNAME=admin\nDB_PASSWORD=somepw",
expected: ResMap{ expected: ResMap{
@@ -177,12 +179,14 @@ func TestNewFromConfigMaps(t *testing.T) {
{ {
description: "construct config map from file", description: "construct config map from file",
input: []types.ConfigMapArgs{{ input: []types.ConfigMapArgs{{
GeneratorArgs: types.GeneratorArgs{Name: "fileConfigMap"}, GeneratorArgs: types.GeneratorArgs{
Name: "fileConfigMap",
DataSources: types.DataSources{ DataSources: types.DataSources{
FileSources: []string{"app-init.ini"}, FileSources: []string{"app-init.ini"},
}, },
}, },
}, },
},
filepath: "/whatever/project/app-init.ini", filepath: "/whatever/project/app-init.ini",
content: "FOO=bar\nBAR=baz\n", content: "FOO=bar\nBAR=baz\n",
expected: ResMap{ expected: ResMap{
@@ -205,12 +209,14 @@ BAR=baz
description: "construct config map from literal", description: "construct config map from literal",
input: []types.ConfigMapArgs{ input: []types.ConfigMapArgs{
{ {
GeneratorArgs: types.GeneratorArgs{Name: "literalConfigMap"}, GeneratorArgs: types.GeneratorArgs{
Name: "literalConfigMap",
DataSources: types.DataSources{ DataSources: types.DataSources{
LiteralSources: []string{"a=x", "b=y", "c=\"Good Morning\"", "d=\"false\""}, LiteralSources: []string{"a=x", "b=y", "c=\"Good Morning\"", "d=\"false\""},
}, },
}, },
}, },
},
expected: ResMap{ expected: ResMap{
resid.NewResId(cmap, "literalConfigMap"): rf.FromMap( resid.NewResId(cmap, "literalConfigMap"): rf.FromMap(
map[string]interface{}{ map[string]interface{}{
@@ -251,13 +257,15 @@ var secret = gvk.Gvk{Version: "v1", Kind: "Secret"}
func TestNewResMapFromSecretArgs(t *testing.T) { func TestNewResMapFromSecretArgs(t *testing.T) {
secrets := []types.SecretArgs{ secrets := []types.SecretArgs{
{ {
GeneratorArgs: types.GeneratorArgs{Name: "apple"}, GeneratorArgs: types.GeneratorArgs{
Name: "apple",
DataSources: types.DataSources{ DataSources: types.DataSources{
LiteralSources: []string{ LiteralSources: []string{
"DB_USERNAME=admin", "DB_USERNAME=admin",
"DB_PASSWORD=somepw", "DB_PASSWORD=somepw",
}, },
}, },
},
Type: ifc.SecretTypeOpaque, Type: ifc.SecretTypeOpaque,
}, },
} }

View File

@@ -206,15 +206,15 @@ type GeneratorArgs struct {
// 'replace': replace the existing one // 'replace': replace the existing one
// 'merge': merge with the existing one // 'merge': merge with the existing one
Behavior string `json:"behavior,omitempty" yaml:"behavior,omitempty"` Behavior string `json:"behavior,omitempty" yaml:"behavior,omitempty"`
// DataSources for the generator.
DataSources `json:",inline,omitempty" yaml:",inline,omitempty"`
} }
// ConfigMapArgs contains the metadata of how to generate a configmap. // ConfigMapArgs contains the metadata of how to generate a configmap.
type ConfigMapArgs struct { type ConfigMapArgs struct {
// GeneratorArgs for the configmap. // GeneratorArgs for the configmap.
GeneratorArgs `json:",inline,omitempty" yaml:",inline,omitempty"` GeneratorArgs `json:",inline,omitempty" yaml:",inline,omitempty"`
// DataSources for configmap.
DataSources `json:",inline,omitempty" yaml:",inline,omitempty"`
} }
// SecretArgs contains the metadata of how to generate a secret. // SecretArgs contains the metadata of how to generate a secret.
@@ -230,9 +230,6 @@ type SecretArgs struct {
// If type is "kubernetes.io/tls", then "literals" or "files" must have exactly two // If type is "kubernetes.io/tls", then "literals" or "files" must have exactly two
// keys: "tls.key" and "tls.crt" // keys: "tls.key" and "tls.crt"
Type string `json:"type,omitempty" yaml:"type,omitempty"` Type string `json:"type,omitempty" yaml:"type,omitempty"`
// DataSources for secret.
DataSources `json:",inline,omitempty" yaml:",inline,omitempty"`
} }
// DataSources contains some generic sources for configmaps. // DataSources contains some generic sources for configmaps.