From 81bbd2f2e30f7289b5900ac4dc623d99c601693f Mon Sep 17 00:00:00 2001 From: Phillip Wittrock Date: Mon, 23 Mar 2020 11:15:22 -0700 Subject: [PATCH] Enable using kyaml namespace transformer in builtin plugin --- api/builtins/NamespaceTransformer.go | 29 +++++++++++++++---- .../NamespaceTransformer.go | 29 +++++++++++++++---- 2 files changed, 48 insertions(+), 10 deletions(-) diff --git a/api/builtins/NamespaceTransformer.go b/api/builtins/NamespaceTransformer.go index 1e8804e66..f4c4dbc17 100644 --- a/api/builtins/NamespaceTransformer.go +++ b/api/builtins/NamespaceTransformer.go @@ -6,6 +6,8 @@ package builtins import ( "fmt" + "sigs.k8s.io/kustomize/api/filters/filtersutil" + "sigs.k8s.io/kustomize/api/filters/namespace" "sigs.k8s.io/kustomize/api/transform" "sigs.k8s.io/kustomize/api/resid" @@ -19,6 +21,10 @@ import ( type NamespaceTransformerPlugin struct { types.ObjectMeta `json:"metadata,omitempty" yaml:"metadata,omitempty" protobuf:"bytes,1,opt,name=metadata"` FieldSpecs []types.FieldSpec `json:"fieldSpecs,omitempty" yaml:"fieldSpecs,omitempty"` + + // YAMLSupport can be set to true to use the kyaml filter instead of the + // kunstruct transformer + YAMLSupport bool } func (p *NamespaceTransformerPlugin) Config( @@ -39,12 +45,25 @@ func (p *NamespaceTransformerPlugin) Transform(m resmap.ResMap) error { } id := r.OrgId() - applicableFs := p.applicableFieldSpecs(id) - for _, fs := range applicableFs { - err := transform.MutateField( - r.Map(), fs.PathSlice(), fs.CreateIfNotPresent, - p.changeNamespace(r)) + if !p.YAMLSupport { + // use the old style transform + applicableFs := p.applicableFieldSpecs(id) + + for _, fs := range applicableFs { + err := transform.MutateField( + r.Map(), fs.PathSlice(), fs.CreateIfNotPresent, + p.changeNamespace(r)) + if err != nil { + return err + } + } + } else { + // use the new style transform + err := filtersutil.ApplyToJSON(namespace.Filter{ + Namespace: p.Namespace, + FsSlice: p.FieldSpecs, + }, r.Kunstructured) if err != nil { return err } diff --git a/plugin/builtin/namespacetransformer/NamespaceTransformer.go b/plugin/builtin/namespacetransformer/NamespaceTransformer.go index 3c5720cb3..53e2d7ef5 100644 --- a/plugin/builtin/namespacetransformer/NamespaceTransformer.go +++ b/plugin/builtin/namespacetransformer/NamespaceTransformer.go @@ -7,6 +7,8 @@ package main import ( "fmt" + "sigs.k8s.io/kustomize/api/filters/filtersutil" + "sigs.k8s.io/kustomize/api/filters/namespace" "sigs.k8s.io/kustomize/api/transform" "sigs.k8s.io/kustomize/api/resid" @@ -20,6 +22,10 @@ import ( type plugin struct { types.ObjectMeta `json:"metadata,omitempty" yaml:"metadata,omitempty" protobuf:"bytes,1,opt,name=metadata"` FieldSpecs []types.FieldSpec `json:"fieldSpecs,omitempty" yaml:"fieldSpecs,omitempty"` + + // YAMLSupport can be set to true to use the kyaml filter instead of the + // kunstruct transformer + YAMLSupport bool } //noinspection GoUnusedGlobalVariable @@ -43,12 +49,25 @@ func (p *plugin) Transform(m resmap.ResMap) error { } id := r.OrgId() - applicableFs := p.applicableFieldSpecs(id) - for _, fs := range applicableFs { - err := transform.MutateField( - r.Map(), fs.PathSlice(), fs.CreateIfNotPresent, - p.changeNamespace(r)) + if !p.YAMLSupport { + // use the old style transform + applicableFs := p.applicableFieldSpecs(id) + + for _, fs := range applicableFs { + err := transform.MutateField( + r.Map(), fs.PathSlice(), fs.CreateIfNotPresent, + p.changeNamespace(r)) + if err != nil { + return err + } + } + } else { + // use the new style transform + err := filtersutil.ApplyToJSON(namespace.Filter{ + Namespace: p.Namespace, + FsSlice: p.FieldSpecs, + }, r.Kunstructured) if err != nil { return err }