mirror of
https://github.com/kubernetes-sigs/kustomize.git
synced 2026-05-17 18:25:26 +00:00
Merge pull request #1165 from monopole/hoser
Add test for ordered transformers.
This commit is contained in:
@@ -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 {
|
||||
|
||||
@@ -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:
|
||||
|
||||
@@ -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()
|
||||
|
||||
@@ -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
|
||||
|
||||
|
||||
Reference in New Issue
Block a user