Skip to content

Commit 04dc173

Browse files
committed
✨ Added RemoveTransformer
Uses the selectors used for patches.
1 parent ce9701f commit 04dc173

File tree

5 files changed

+62
-3
lines changed

5 files changed

+62
-3
lines changed

pkg/extras/RemoveTransformer.go

+46
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,46 @@
1+
package extras
2+
3+
import (
4+
"fmt"
5+
6+
"sigs.k8s.io/kustomize/api/resmap"
7+
"sigs.k8s.io/kustomize/api/types"
8+
"sigs.k8s.io/kustomize/kyaml/errors"
9+
"sigs.k8s.io/yaml"
10+
)
11+
12+
type RemoveTransformerPlugin struct {
13+
Targets []*types.Selector `json:"targets,omitempty" yaml:"targets,omitempty"`
14+
}
15+
16+
func (p *RemoveTransformerPlugin) Config(
17+
h *resmap.PluginHelpers, c []byte) (err error) {
18+
err = yaml.Unmarshal(c, p)
19+
if err != nil {
20+
return err
21+
}
22+
return err
23+
}
24+
25+
func (p *RemoveTransformerPlugin) Transform(m resmap.ResMap) error {
26+
if p.Targets == nil {
27+
return fmt.Errorf("must specify at least one target")
28+
}
29+
for _, t := range p.Targets {
30+
resources, err := m.Select(*t)
31+
if err != nil {
32+
return errors.WrapPrefixf(err, "while selecting target %s", t.String())
33+
}
34+
for _, r := range resources {
35+
err = m.Remove(r.CurId())
36+
if err != nil {
37+
return errors.WrapPrefixf(err, "while removing resource %s", r.CurId().String())
38+
}
39+
}
40+
}
41+
return nil
42+
}
43+
44+
func NewRemoveTransformerPlugin() resmap.TransformerPlugin {
45+
return &RemoveTransformerPlugin{}
46+
}

pkg/plugins/builtinplugintype_string.go

+3-2
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

pkg/plugins/factories.go

+2
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,7 @@ const (
3838
HelmChartInflationGenerator
3939
ReplacementTransformer
4040
GitConfigMapGenerator
41+
RemoveTransformer
4142
)
4243

4344
var stringToBuiltinPluginTypeMap map[string]BuiltinPluginType
@@ -109,6 +110,7 @@ var TransformerFactories = map[BuiltinPluginType]func() resmap.TransformerPlugin
109110
ReplacementTransformer: extras.NewExtendedReplacementTransformerPlugin,
110111
ReplicaCountTransformer: builtins.NewReplicaCountTransformerPlugin,
111112
ValueAddTransformer: builtins.NewValueAddTransformerPlugin,
113+
RemoveTransformer: extras.NewRemoveTransformerPlugin,
112114
// Do not wired SortOrderTransformer as a builtin plugin.
113115
// We only want it to be available in the top-level kustomization.
114116
// See: https://github.com/kubernetes-sigs/kustomize/issues/3913

tests/multi-replacement/functions/02_multi-transformation.yaml

+1-1
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ kind: ReplacementTransformer
33
metadata:
44
name: replacement-transformer
55
annotations:
6-
config.kubernetes.io/prune-local: "true"
6+
## config.kaweezle.com/prune-local: "true"
77
config.kubernetes.io/function: |
88
exec:
99
path: ../../krmfnbuiltin
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
apiVersion: builtin
2+
kind: RemoveTransformer
3+
metadata:
4+
name: replacement-transformer
5+
annotations:
6+
config.kubernetes.io/function: |
7+
exec:
8+
path: ../../krmfnbuiltin
9+
targets:
10+
- annotationSelector: config.kaweezle.com/local-config

0 commit comments

Comments
 (0)