mirror of
https://github.com/kubernetes-sigs/kustomize.git
synced 2026-06-13 10:00:56 +00:00
Localize PatchTransformer, PatchJson6902Transformer (#4920)
* Localize patches, patchesJson6902 custom transformers * Improve readability
This commit is contained in:
@@ -4,35 +4,51 @@
|
||||
package localizer
|
||||
|
||||
import (
|
||||
"sigs.k8s.io/kustomize/api/filters/filtersutil"
|
||||
"sigs.k8s.io/kustomize/api/filters/fsslice"
|
||||
"sigs.k8s.io/kustomize/api/internal/plugins/builtinhelpers"
|
||||
"sigs.k8s.io/kustomize/api/konfig"
|
||||
"sigs.k8s.io/kustomize/api/types"
|
||||
"sigs.k8s.io/kustomize/kyaml/errors"
|
||||
"sigs.k8s.io/kustomize/kyaml/kio"
|
||||
"sigs.k8s.io/kustomize/kyaml/resid"
|
||||
"sigs.k8s.io/kustomize/kyaml/yaml"
|
||||
)
|
||||
|
||||
// localizeBuiltinGenerators localizes built-in generators with file paths.
|
||||
// localizeBuiltinPlugins localizes built-in plugins with file paths.
|
||||
// Note that this excludes helm, which needs a repo.
|
||||
type localizeBuiltinGenerators struct {
|
||||
type localizeBuiltinPlugins struct {
|
||||
lc *localizer
|
||||
}
|
||||
|
||||
var _ kio.Filter = &localizeBuiltinGenerators{}
|
||||
var _ kio.Filter = &localizeBuiltinPlugins{}
|
||||
|
||||
// Filter localizes the built-in generators with file paths. Filter returns an error if
|
||||
// generators contains a resource that is not a built-in generator, cannot contain a file path,
|
||||
// needs more than a file path like helm, or is not localizable.
|
||||
// TODO(annasong): implement
|
||||
func (lbg *localizeBuiltinGenerators) Filter(generators []*yaml.RNode) ([]*yaml.RNode, error) {
|
||||
return generators, nil
|
||||
// Filter localizes the built-in plugins with file paths.
|
||||
func (lbp *localizeBuiltinPlugins) Filter(plugins []*yaml.RNode) ([]*yaml.RNode, error) {
|
||||
localizedPlugins, err := kio.FilterAll(fsslice.Filter{
|
||||
FsSlice: types.FsSlice{
|
||||
types.FieldSpec{
|
||||
Gvk: resid.Gvk{Version: konfig.BuiltinPluginApiVersion, Kind: builtinhelpers.PatchTransformer.String()},
|
||||
Path: "path",
|
||||
},
|
||||
types.FieldSpec{
|
||||
Gvk: resid.Gvk{Version: konfig.BuiltinPluginApiVersion, Kind: builtinhelpers.PatchJson6902Transformer.String()},
|
||||
Path: "path",
|
||||
},
|
||||
},
|
||||
SetValue: lbp.localizeNode,
|
||||
}).Filter(plugins)
|
||||
|
||||
// TODO(annasong): localize ReplacementTransformer, PatchStrategicMergeTransformer, ConfigMapGenerator, SecretGenerator
|
||||
|
||||
return localizedPlugins, errors.Wrap(err)
|
||||
}
|
||||
|
||||
// localizeBuiltinTransformers localizes built-in transformers with file paths.
|
||||
type localizeBuiltinTransformers struct {
|
||||
}
|
||||
|
||||
var _ kio.Filter = &localizeBuiltinTransformers{}
|
||||
|
||||
// Filter localizes the built-in transformers with file paths. Filter returns an error if
|
||||
// transformers contains a resource that is not a built-in transformer, cannot contain a file path,
|
||||
// or is not localizable.
|
||||
// TODO(annasong): implement
|
||||
func (lbt *localizeBuiltinTransformers) Filter(transformers []*yaml.RNode) ([]*yaml.RNode, error) {
|
||||
return transformers, nil
|
||||
// localizeNode sets the scalar node to its value localized as a file path.
|
||||
func (lbp *localizeBuiltinPlugins) localizeNode(node *yaml.RNode) error {
|
||||
localizedPath, err := lbp.lc.localizeFile(node.YNode().Value)
|
||||
if err != nil {
|
||||
return errors.WrapPrefixf(err, "unable to localize built-in plugin path")
|
||||
}
|
||||
return filtersutil.SetScalar(localizedPath)(node)
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user