Merge pull request #1165 from monopole/hoser

Add test for ordered transformers.
This commit is contained in:
Kubernetes Prow Robot
2019-06-07 18:09:06 -07:00
committed by GitHub
4 changed files with 26 additions and 24 deletions

View File

@@ -100,6 +100,7 @@ func (l *Loader) absolutePluginPath(id resid.ResId) string {
return AbsolutePluginPath(l.pc, id)
}
// TODO: https://github.com/kubernetes-sigs/kustomize/issues/1164
func (l *Loader) loadAndConfigurePlugin(
ldr ifc.Loader, res *resource.Resource) (c Configurable, err error) {
if !l.pc.Enabled {

View File

@@ -29,21 +29,23 @@ spec:
`)
}
func writeStringPrefixer(th *kusttest_test.KustTestHarness, path string) {
func writeStringPrefixer(
th *kusttest_test.KustTestHarness, path, name string) {
th.WriteF(path, `
apiVersion: someteam.example.com/v1
kind: StringPrefixer
metadata:
name: apple
name: `+name+`
`)
}
func writeDatePrefixer(th *kusttest_test.KustTestHarness, path string) {
func writeDatePrefixer(
th *kusttest_test.KustTestHarness, path, name string) {
th.WriteF(path, `
apiVersion: someteam.example.com/v1
kind: DatePrefixer
metadata:
name: irrelevant
name: `+name+`
`)
}
@@ -62,24 +64,27 @@ func TestOrderedTransformers(t *testing.T) {
resources:
- deployment.yaml
transformers:
- stringPrefixer.yaml
# - datePrefixer.yaml
- peachPrefixer.yaml
- date1Prefixer.yaml
- applePrefixer.yaml
- date2Prefixer.yaml
`)
// TODO(monopole): assure ordering of loaded
// transformers and this will work - the trouble
// is we load into a map (ResMap), not a list.
writeDeployment(th, "/app/deployment.yaml")
writeStringPrefixer(th, "/app/stringPrefixer.yaml")
writeDatePrefixer(th, "/app/datePrefixer.yaml")
writeStringPrefixer(th, "/app/applePrefixer.yaml", "apple")
writeStringPrefixer(th, "/app/peachPrefixer.yaml", "peach")
writeDatePrefixer(th, "/app/date1Prefixer.yaml", "date1")
writeDatePrefixer(th, "/app/date2Prefixer.yaml", "date2")
m, err := th.MakeKustTarget().MakeCustomizedResMap()
if err != nil {
t.Fatalf("Err: %v", err)
}
// TODO: Fix #1164; the value of the name: field below
// should be: 2018-05-11-peach-2018-05-11-apple-myDeployment
th.AssertActualEqualsExpected(m, `
apiVersion: apps/v1
kind: Deployment
metadata:
name: apple-myDeployment
name: 2018-05-11-apple-2018-05-11-apple-myDeployment
spec:
template:
metadata:
@@ -104,7 +109,7 @@ func TestPluginsNotEnabled(t *testing.T) {
transformers:
- stringPrefixer.yaml
`)
writeStringPrefixer(th, "/app/stringPrefixer.yaml")
writeStringPrefixer(th, "/app/stringPrefixer.yaml", "apple")
_, err := th.MakeKustTarget().MakeCustomizedResMap()
if err == nil {
@@ -202,8 +207,8 @@ resources:
transformers:
- datePrefixer.yaml
`)
writeStringPrefixer(th, "/app/base/stringPrefixer.yaml")
writeDatePrefixer(th, "/app/base/datePrefixer.yaml")
writeStringPrefixer(th, "/app/base/stringPrefixer.yaml", "apple")
writeDatePrefixer(th, "/app/base/datePrefixer.yaml", "date")
th.WriteK("/app/overlay", `
resources:

View File

@@ -2,9 +2,9 @@
package builtin
import (
"sigs.k8s.io/kustomize/pkg/ifc"
"sigs.k8s.io/kustomize/pkg/resmap"
"sigs.k8s.io/kustomize/pkg/resource"
"sigs.k8s.io/kustomize/pkg/transformers/config"
"sort"
)
@@ -13,22 +13,18 @@ import (
// dependencies (like Namespace, StorageClass, etc.)
// first, and resources with a high number of dependencies
// (like ValidatingWebhookConfiguration) last.
type PreferredOrderTransformerPlugin struct {
Prefix string `json:"prefix,omitempty" yaml:"prefix,omitempty"`
Suffix string `json:"suffix,omitempty" yaml:"suffix,omitempty"`
FieldSpecs []config.FieldSpec `json:"fieldSpecs,omitempty" yaml:"fieldSpecs,omitempty"`
}
type PreferredOrderTransformerPlugin struct{}
func NewPreferredOrderTransformerPlugin() *PreferredOrderTransformerPlugin {
return &PreferredOrderTransformerPlugin{}
}
/*
// Nothing needed for configuration.
func (p *PreferredOrderTransformerPlugin) Config(
ldr ifc.Loader, rf *resmap.Factory, c []byte) (err error) {
return nil
}
*/
func (p *PreferredOrderTransformerPlugin) Transform(m resmap.ResMap) error {
resources := make([]*resource.Resource, m.Size())
ids := m.AllIds()

View File

@@ -16,7 +16,7 @@ import (
// dependencies (like Namespace, StorageClass, etc.)
// first, and resources with a high number of dependencies
// (like ValidatingWebhookConfiguration) last.
type plugin struct {}
type plugin struct{}
var KustomizePlugin plugin