Add builtin JSON patch transformer

This commit is contained in:
Jeffrey Regan
2019-05-20 15:34:38 -07:00
parent 84c5e44345
commit 0df5883853
5 changed files with 144 additions and 7 deletions

View File

@@ -15,7 +15,6 @@ import (
"sigs.k8s.io/kustomize/pkg/accumulator"
"sigs.k8s.io/kustomize/pkg/ifc"
"sigs.k8s.io/kustomize/pkg/ifc/transformer"
patchtransformer "sigs.k8s.io/kustomize/pkg/patch/transformer"
"sigs.k8s.io/kustomize/pkg/pgmconfig"
"sigs.k8s.io/kustomize/pkg/plugins"
"sigs.k8s.io/kustomize/pkg/resmap"
@@ -348,12 +347,6 @@ func (kt *KustTarget) newTransformer(
return nil, err
}
r = append(r, lts...)
t, err = patchtransformer.NewPatchJson6902Factory(kt.ldr).
MakePatchJson6902Transformer(kt.kustomization.PatchesJson6902)
if err != nil {
return nil, err
}
r = append(r, t)
tp, err := kt.loadTransformerPlugins()
if err != nil {
return nil, err

View File

@@ -6,6 +6,7 @@ package target
import (
"github.com/pkg/errors"
"sigs.k8s.io/kustomize/pkg/image"
"sigs.k8s.io/kustomize/pkg/patch"
"sigs.k8s.io/kustomize/pkg/plugins"
"sigs.k8s.io/kustomize/pkg/transformers"
"sigs.k8s.io/kustomize/pkg/transformers/config"
@@ -68,6 +69,7 @@ func (kt *KustTarget) configureBuiltinTransformers(
kt.configureBuiltinImageTagTransformer,
kt.configureBuiltinLabelTransformer,
kt.configureBuiltinAnnotationsTransformer,
kt.configureBuiltinPatchJson6902Transformer,
}
var result []transformers.Transformer
for _, f := range configurators {
@@ -122,6 +124,22 @@ func (kt *KustTarget) configureBuiltinConfigMapGenerator() (
return
}
func (kt *KustTarget) configureBuiltinPatchJson6902Transformer(
tConfig *config.TransformerConfig) (
result []transformers.Transformer, err error) {
var c struct {
Patches []patch.Json6902
}
c.Patches = kt.kustomization.PatchesJson6902
p := builtin.NewPatchJson6902TransformerPlugin()
err = kt.configureBuiltinPlugin(p, c, "patchJson6902")
if err != nil {
return nil, err
}
result = append(result, p)
return
}
func (kt *KustTarget) configureBuiltinLabelTransformer(
tConfig *config.TransformerConfig) (
result []transformers.Transformer, err error) {

View File

@@ -0,0 +1,35 @@
// Code generated by pluginator on PatchJson6902Transformer; DO NOT EDIT.
package builtin
import (
"sigs.k8s.io/kustomize/pkg/ifc"
"sigs.k8s.io/kustomize/pkg/patch"
"sigs.k8s.io/kustomize/pkg/patch/transformer"
"sigs.k8s.io/kustomize/pkg/resmap"
"sigs.k8s.io/yaml"
)
type PatchJson6902TransformerPlugin struct {
ldr ifc.Loader
Patches []patch.Json6902 `json:"patches,omitempty" yaml:"patches,omitempty"`
}
func NewPatchJson6902TransformerPlugin() *PatchJson6902TransformerPlugin {
return &PatchJson6902TransformerPlugin{}
}
func (p *PatchJson6902TransformerPlugin) Config(
ldr ifc.Loader, rf *resmap.Factory, c []byte) (err error) {
p.ldr = ldr
p.Patches = nil
return yaml.Unmarshal(c, p)
}
func (p *PatchJson6902TransformerPlugin) Transform(m resmap.ResMap) error {
t, err := transformer.NewPatchJson6902Factory(p.ldr).
MakePatchJson6902Transformer(p.Patches)
if err != nil {
return err
}
return t.Transform(m)
}

View File

@@ -0,0 +1,36 @@
// Copyright 2019 The Kubernetes Authors.
// SPDX-License-Identifier: Apache-2.0
//go:generate go run sigs.k8s.io/kustomize/plugin/pluginator
package main
import (
"sigs.k8s.io/kustomize/pkg/ifc"
"sigs.k8s.io/kustomize/pkg/patch"
"sigs.k8s.io/kustomize/pkg/patch/transformer"
"sigs.k8s.io/kustomize/pkg/resmap"
"sigs.k8s.io/yaml"
)
type plugin struct {
ldr ifc.Loader
Patches []patch.Json6902 `json:"patches,omitempty" yaml:"patches,omitempty"`
}
var KustomizePlugin plugin
func (p *plugin) Config(
ldr ifc.Loader, rf *resmap.Factory, c []byte) (err error) {
p.ldr = ldr
p.Patches = nil
return yaml.Unmarshal(c, p)
}
func (p *plugin) Transform(m resmap.ResMap) error {
t, err := transformer.NewPatchJson6902Factory(p.ldr).
MakePatchJson6902Transformer(p.Patches)
if err != nil {
return err
}
return t.Transform(m)
}

View File

@@ -0,0 +1,55 @@
// Copyright 2019 The Kubernetes Authors.
// SPDX-License-Identifier: Apache-2.0
package main_test
import (
"testing"
"sigs.k8s.io/kustomize/pkg/kusttest"
"sigs.k8s.io/kustomize/plugin"
)
func TestPatchJson6902Transformer(t *testing.T) {
tc := plugin.NewEnvForTest(t).Set()
defer tc.Reset()
tc.BuildGoPlugin(
"builtin", "", "PatchJson6902Transformer")
th := kusttest_test.NewKustTestPluginHarness(t, "/app")
th.WriteF("/app/jsonpatch.json", `[
{"op": "add", "path": "/spec/replica", "value": "3"}
]`)
rm := th.LoadAndRunTransformer(`
apiVersion: builtin
kind: PatchJson6902Transformer
metadata:
name: notImportantHere
patches:
- target:
group: apps
version: v1
kind: Deployment
name: myDeploy
path: jsonpatch.json
`, `
apiVersion: apps/v1
metadata:
name: myDeploy
kind: Deployment
spec:
replica: 1
`)
th.AssertActualEqualsExpected(rm, `
apiVersion: apps/v1
kind: Deployment
metadata:
name: myDeploy
spec:
replica: "3"
`)
}