Add ConfigMapGenerator and test.

This commit is contained in:
Jeffrey Regan
2019-05-07 17:22:53 -07:00
parent c6764ab31f
commit 2d70526eab
3 changed files with 99 additions and 3 deletions

View File

@@ -1,6 +1,8 @@
package resmap
import (
"strings"
"sigs.k8s.io/kustomize/pkg/ifc"
"sigs.k8s.io/kustomize/pkg/types"
)
@@ -10,17 +12,26 @@ func GeneratorArgsFromKunstruct(k ifc.Kunstructured) (
result.Name = k.GetName()
// TODO: validate behavior values.
result.Behavior, err = k.GetFieldValue("behavior")
if err != nil {
if !isAcceptableError(err) {
return
}
result.EnvSources, err = k.GetStringSlice("envFiles")
if err != nil {
if !isAcceptableError(err) {
return
}
result.FileSources, err = k.GetStringSlice("valueFiles")
if err != nil {
if !isAcceptableError(err) {
return
}
result.LiteralSources, err = k.GetStringSlice("literals")
if !isAcceptableError(err) {
return
}
err = nil
return
}
func isAcceptableError(err error) bool {
return err == nil ||
strings.HasPrefix(err.Error(), "no field named")
}

View File

@@ -0,0 +1,32 @@
// +build plugin
package main
import (
"sigs.k8s.io/kustomize/pkg/ifc"
"sigs.k8s.io/kustomize/pkg/resmap"
"sigs.k8s.io/kustomize/pkg/types"
)
type plugin struct {
ldr ifc.Loader
rf *resmap.Factory
options types.GeneratorOptions
args types.ConfigMapArgs
}
var KustomizePlugin plugin
func (p *plugin) Config(
ldr ifc.Loader, rf *resmap.Factory, k ifc.Kunstructured) (err error) {
p.ldr = ldr
p.rf = rf
p.args.GeneratorArgs, err = resmap.GeneratorArgsFromKunstruct(k)
return
}
func (p *plugin) Generate() (resmap.ResMap, error) {
argsList := make([]types.ConfigMapArgs, 1)
argsList[0] = p.args
return p.rf.NewResMapFromConfigMapArgs(p.ldr, &p.options, argsList)
}

View File

@@ -0,0 +1,53 @@
package builtin
import (
"testing"
"sigs.k8s.io/kustomize/internal/plugintest"
"sigs.k8s.io/kustomize/k8sdeps/kv/plugin"
"sigs.k8s.io/kustomize/pkg/kusttest"
"sigs.k8s.io/kustomize/pkg/loader"
)
func TestConfigMapGenerator(t *testing.T) {
tc := plugintest_test.NewPluginTestEnv(t).Set()
defer tc.Reset()
tc.BuildGoPlugin(
"builtin", "", "ConfigMapGenerator")
th := kusttest_test.NewKustTestHarnessFull(
t, "/app", loader.RestrictionRootOnly, plugin.ActivePluginConfig())
th.WriteF("/app/devops.env", `
SERVICE_PORT=32
`)
th.WriteF("/app/uxteam.env", `
COLOR=red
`)
rm := th.LoadAndRunGenerator(`
apiVersion: builtin
kind: ConfigMapGenerator
metadata:
name: myMap
envFiles:
- devops.env
- uxteam.env
literals:
- FRUIT=apple
- VEGETABLE=carrot
`)
th.AssertActualEqualsExpected(rm, `
apiVersion: v1
data:
COLOR: red
FRUIT: apple
SERVICE_PORT: "32"
VEGETABLE: carrot
kind: ConfigMap
metadata:
name: myMap
`)
}