mirror of
https://github.com/kubernetes-sigs/kustomize.git
synced 2026-06-13 18:10:59 +00:00
proposal v2.1
This commit is contained in:
@@ -87,8 +87,12 @@ func TestLoaderWithWorkingDir(t *testing.T) {
|
||||
c := types.EnabledPluginConfig(types.BploLoadFromFileSys)
|
||||
pLdr := NewLoader(c, rmF, fsys)
|
||||
npLdr := pLdr.LoaderWithWorkingDir("/tmp/dummy")
|
||||
require.Equal(t,
|
||||
"",
|
||||
pLdr.Config().FnpLoadingOptions.WorkingDir,
|
||||
"the plugin working dir should not change")
|
||||
require.Equal(t,
|
||||
"/tmp/dummy",
|
||||
npLdr.Config().FnpLoadingOptions.WorkingDir,
|
||||
"plugin working dir is not set correctly")
|
||||
"the plugin working dir is not updated")
|
||||
}
|
||||
|
||||
@@ -41,13 +41,19 @@ spec:
|
||||
EOF
|
||||
`
|
||||
|
||||
const krmEchoDotSh = `#!/bin/bash
|
||||
|
||||
resourceList=$(cat)
|
||||
echo "$resourceList"
|
||||
const krmTransformerDotSh = `#!/bin/bash
|
||||
cat << EOF
|
||||
apiVersion: v1
|
||||
kind: Secret
|
||||
metadata:
|
||||
name: dummyTransformed
|
||||
stringData:
|
||||
foo: bar
|
||||
type: Opaque
|
||||
EOF
|
||||
`
|
||||
|
||||
func TestFnExecGenerator(t *testing.T) {
|
||||
func TestFnExecGeneratorInBase(t *testing.T) {
|
||||
fSys := filesys.MakeFsOnDisk()
|
||||
|
||||
th := kusttest_test.MakeHarnessWithFs(t, fSys)
|
||||
@@ -93,7 +99,6 @@ spec:
|
||||
`)
|
||||
|
||||
m := th.Run(tmpDir.String(), o)
|
||||
assert.NoError(t, err)
|
||||
yml, err := m.AsYaml()
|
||||
assert.NoError(t, err)
|
||||
assert.Equal(t, `apiVersion: v1
|
||||
@@ -132,7 +137,7 @@ spec:
|
||||
assert.NoError(t, fSys.RemoveAll(tmpDir.String()))
|
||||
}
|
||||
|
||||
func TestFnExecGeneratorInOverlay(t *testing.T) {
|
||||
func TestFnExecGeneratorInBaseWithOverlay(t *testing.T) {
|
||||
fSys := filesys.MakeFsOnDisk()
|
||||
|
||||
th := kusttest_test.MakeHarnessWithFs(t, fSys)
|
||||
@@ -223,7 +228,98 @@ spec:
|
||||
assert.NoError(t, fSys.RemoveAll(tmpDir.String()))
|
||||
}
|
||||
|
||||
func TestFnExecTransformer(t *testing.T) {
|
||||
func TestFnExecGeneratorInOverlay(t *testing.T) {
|
||||
fSys := filesys.MakeFsOnDisk()
|
||||
|
||||
th := kusttest_test.MakeHarnessWithFs(t, fSys)
|
||||
o := th.MakeOptionsPluginsEnabled()
|
||||
o.PluginConfig.FnpLoadingOptions.EnableExec = true
|
||||
|
||||
tmpDir, err := filesys.NewTmpConfirmedDir()
|
||||
assert.NoError(t, err)
|
||||
base := filepath.Join(tmpDir.String(), "base")
|
||||
prod := filepath.Join(tmpDir.String(), "prod")
|
||||
assert.NoError(t, fSys.Mkdir(base))
|
||||
assert.NoError(t, fSys.Mkdir(prod))
|
||||
th.WriteK(base, `
|
||||
resources:
|
||||
- short_secret.yaml
|
||||
`)
|
||||
th.WriteK(prod, `
|
||||
resources:
|
||||
- ../base
|
||||
generators:
|
||||
- gener.yaml
|
||||
`)
|
||||
th.WriteF(filepath.Join(base, "short_secret.yaml"),
|
||||
`
|
||||
apiVersion: v1
|
||||
kind: Secret
|
||||
metadata:
|
||||
labels:
|
||||
airshipit.org/ephemeral-user-data: "true"
|
||||
name: node1-bmc-secret
|
||||
type: Opaque
|
||||
stringData:
|
||||
userData: |
|
||||
bootcmd:
|
||||
- mkdir /mnt/vda
|
||||
`)
|
||||
th.WriteF(filepath.Join(prod, "generateDeployment.sh"), generateDeploymentDotSh)
|
||||
|
||||
assert.NoError(t, os.Chmod(filepath.Join(prod, "generateDeployment.sh"), 0777))
|
||||
th.WriteF(filepath.Join(prod, "gener.yaml"), `
|
||||
kind: executable
|
||||
metadata:
|
||||
name: demo
|
||||
annotations:
|
||||
config.kubernetes.io/function: |
|
||||
exec:
|
||||
path: ./generateDeployment.sh
|
||||
spec:
|
||||
`)
|
||||
|
||||
m := th.Run(prod, o)
|
||||
assert.NoError(t, err)
|
||||
yml, err := m.AsYaml()
|
||||
assert.NoError(t, err)
|
||||
assert.Equal(t, `apiVersion: v1
|
||||
kind: Secret
|
||||
metadata:
|
||||
labels:
|
||||
airshipit.org/ephemeral-user-data: "true"
|
||||
name: node1-bmc-secret
|
||||
stringData:
|
||||
userData: |
|
||||
bootcmd:
|
||||
- mkdir /mnt/vda
|
||||
type: Opaque
|
||||
---
|
||||
apiVersion: apps/v1
|
||||
kind: Deployment
|
||||
metadata:
|
||||
annotations:
|
||||
tshirt-size: small
|
||||
labels:
|
||||
app: nginx
|
||||
name: nginx
|
||||
spec:
|
||||
selector:
|
||||
matchLabels:
|
||||
app: nginx
|
||||
template:
|
||||
metadata:
|
||||
labels:
|
||||
app: nginx
|
||||
spec:
|
||||
containers:
|
||||
- image: nginx
|
||||
name: nginx
|
||||
`, string(yml))
|
||||
assert.NoError(t, fSys.RemoveAll(tmpDir.String()))
|
||||
}
|
||||
|
||||
func TestFnExecTransformerInBase(t *testing.T) {
|
||||
fSys := filesys.MakeFsOnDisk()
|
||||
|
||||
th := kusttest_test.MakeHarnessWithFs(t, fSys)
|
||||
@@ -238,7 +334,7 @@ func TestFnExecTransformer(t *testing.T) {
|
||||
resources:
|
||||
- secret.yaml
|
||||
transformers:
|
||||
- krm-echo.yaml
|
||||
- krm-transformer.yaml
|
||||
`)
|
||||
th.WriteF(filepath.Join(base, "secret.yaml"),
|
||||
`
|
||||
@@ -250,10 +346,10 @@ type: Opaque
|
||||
stringData:
|
||||
foo: bar
|
||||
`)
|
||||
th.WriteF(filepath.Join(base, "krmEcho.sh"), krmEchoDotSh)
|
||||
th.WriteF(filepath.Join(base, "krmTransformer.sh"), krmTransformerDotSh)
|
||||
|
||||
assert.NoError(t, os.Chmod(filepath.Join(base, "krmEcho.sh"), 0777))
|
||||
th.WriteF(filepath.Join(base, "krm-echo.yaml"), `
|
||||
assert.NoError(t, os.Chmod(filepath.Join(base, "krmTransformer.sh"), 0777))
|
||||
th.WriteF(filepath.Join(base, "krm-transformer.yaml"), `
|
||||
apiVersion: examples.config.kubernetes.io/v1beta1
|
||||
kind: MyPlugin
|
||||
metadata:
|
||||
@@ -261,17 +357,77 @@ metadata:
|
||||
annotations:
|
||||
config.kubernetes.io/function: |
|
||||
exec:
|
||||
path: ./krmEcho.sh
|
||||
path: ./krmTransformer.sh
|
||||
`)
|
||||
|
||||
m := th.Run(base, o)
|
||||
assert.NoError(t, err)
|
||||
yml, err := m.AsYaml()
|
||||
assert.NoError(t, err)
|
||||
assert.Equal(t, `apiVersion: v1
|
||||
kind: Secret
|
||||
metadata:
|
||||
name: dummyTransformed
|
||||
stringData:
|
||||
foo: bar
|
||||
type: Opaque
|
||||
`, string(yml))
|
||||
assert.NoError(t, fSys.RemoveAll(tmpDir.String()))
|
||||
}
|
||||
|
||||
func TestFnExecTransformerInBaseWithOverlay(t *testing.T) {
|
||||
fSys := filesys.MakeFsOnDisk()
|
||||
|
||||
th := kusttest_test.MakeHarnessWithFs(t, fSys)
|
||||
o := th.MakeOptionsPluginsEnabled()
|
||||
o.PluginConfig.FnpLoadingOptions.EnableExec = true
|
||||
|
||||
tmpDir, err := filesys.NewTmpConfirmedDir()
|
||||
assert.NoError(t, err)
|
||||
base := filepath.Join(tmpDir.String(), "base")
|
||||
prod := filepath.Join(tmpDir.String(), "prod")
|
||||
assert.NoError(t, fSys.Mkdir(base))
|
||||
assert.NoError(t, fSys.Mkdir(prod))
|
||||
th.WriteK(base, `
|
||||
resources:
|
||||
- secret.yaml
|
||||
transformers:
|
||||
- krm-transformer.yaml
|
||||
`)
|
||||
th.WriteK(prod, `
|
||||
resources:
|
||||
- ../base
|
||||
`)
|
||||
th.WriteF(filepath.Join(base, "secret.yaml"),
|
||||
`
|
||||
apiVersion: v1
|
||||
kind: Secret
|
||||
metadata:
|
||||
name: dummy
|
||||
type: Opaque
|
||||
stringData:
|
||||
foo: bar
|
||||
`)
|
||||
th.WriteF(filepath.Join(base, "krmTransformer.sh"), krmTransformerDotSh)
|
||||
|
||||
assert.NoError(t, os.Chmod(filepath.Join(base, "krmTransformer.sh"), 0777))
|
||||
th.WriteF(filepath.Join(base, "krm-transformer.yaml"), `
|
||||
apiVersion: examples.config.kubernetes.io/v1beta1
|
||||
kind: MyPlugin
|
||||
metadata:
|
||||
name: notImportantHere
|
||||
annotations:
|
||||
config.kubernetes.io/function: |
|
||||
exec:
|
||||
path: ./krmTransformer.sh
|
||||
`)
|
||||
|
||||
m := th.Run(prod, o)
|
||||
yml, err := m.AsYaml()
|
||||
assert.NoError(t, err)
|
||||
assert.Equal(t, `apiVersion: v1
|
||||
kind: Secret
|
||||
metadata:
|
||||
name: dummyTransformed
|
||||
stringData:
|
||||
foo: bar
|
||||
type: Opaque
|
||||
@@ -300,7 +456,7 @@ resources:
|
||||
resources:
|
||||
- ../base
|
||||
transformers:
|
||||
- krm-echo.yaml
|
||||
- krm-transformer.yaml
|
||||
`)
|
||||
th.WriteF(filepath.Join(base, "secret.yaml"),
|
||||
`
|
||||
@@ -312,10 +468,10 @@ type: Opaque
|
||||
stringData:
|
||||
foo: bar
|
||||
`)
|
||||
th.WriteF(filepath.Join(prod, "krmEcho.sh"), krmEchoDotSh)
|
||||
th.WriteF(filepath.Join(prod, "krmTransformer.sh"), krmTransformerDotSh)
|
||||
|
||||
assert.NoError(t, os.Chmod(filepath.Join(prod, "krmEcho.sh"), 0777))
|
||||
th.WriteF(filepath.Join(prod, "krm-echo.yaml"), `
|
||||
assert.NoError(t, os.Chmod(filepath.Join(prod, "krmTransformer.sh"), 0777))
|
||||
th.WriteF(filepath.Join(prod, "krm-transformer.yaml"), `
|
||||
apiVersion: examples.config.kubernetes.io/v1beta1
|
||||
kind: MyPlugin
|
||||
metadata:
|
||||
@@ -323,17 +479,16 @@ metadata:
|
||||
annotations:
|
||||
config.kubernetes.io/function: |
|
||||
exec:
|
||||
path: ./krmEcho.sh
|
||||
path: ./krmTransformer.sh
|
||||
`)
|
||||
|
||||
m := th.Run(prod, o)
|
||||
assert.NoError(t, err)
|
||||
yml, err := m.AsYaml()
|
||||
assert.NoError(t, err)
|
||||
assert.Equal(t, `apiVersion: v1
|
||||
kind: Secret
|
||||
metadata:
|
||||
name: dummy
|
||||
name: dummyTransformed
|
||||
stringData:
|
||||
foo: bar
|
||||
type: Opaque
|
||||
|
||||
Reference in New Issue
Block a user