mirror of
https://github.com/kubernetes-sigs/kustomize.git
synced 2026-06-12 17:34:21 +00:00
set transformer annotation when the option is specified
This commit is contained in:
@@ -83,20 +83,24 @@ func (l *Loader) LoadGenerator(
|
||||
}
|
||||
|
||||
func (l *Loader) LoadTransformers(
|
||||
ldr ifc.Loader, v ifc.Validator, rm resmap.ResMap) ([]resmap.Transformer, error) {
|
||||
var result []resmap.Transformer
|
||||
ldr ifc.Loader, v ifc.Validator, rm resmap.ResMap) ([]*resmap.TransformerWithProperties, error) {
|
||||
var result []*resmap.TransformerWithProperties
|
||||
for _, res := range rm.Resources() {
|
||||
t, err := l.LoadTransformer(ldr, v, res)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
result = append(result, t)
|
||||
transformerOrigin, err := resource.OriginFromCustomPlugin(res)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
result = append(result, &resmap.TransformerWithProperties{Transformer: t, Origin: transformerOrigin})
|
||||
}
|
||||
return result, nil
|
||||
}
|
||||
|
||||
func (l *Loader) LoadTransformer(
|
||||
ldr ifc.Loader, v ifc.Validator, res *resource.Resource) (resmap.Transformer, error) {
|
||||
ldr ifc.Loader, v ifc.Validator, res *resource.Resource) (*resmap.TransformerWithProperties, error) {
|
||||
c, err := l.loadAndConfigurePlugin(ldr, v, res)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
@@ -105,7 +109,7 @@ func (l *Loader) LoadTransformer(
|
||||
if !ok {
|
||||
return nil, fmt.Errorf("plugin %s not a transformer", res.OrgId())
|
||||
}
|
||||
return t, nil
|
||||
return &resmap.TransformerWithProperties{Transformer: t}, nil
|
||||
}
|
||||
|
||||
func relativePluginPath(id resid.ResId) string {
|
||||
|
||||
@@ -119,7 +119,7 @@ func (kt *KustTarget) MakeCustomizedResMap() (resmap.ResMap, error) {
|
||||
|
||||
func (kt *KustTarget) makeCustomizedResMap() (resmap.ResMap, error) {
|
||||
var origin *resource.Origin
|
||||
if utils.StringSliceContains(kt.kustomization.BuildMetadata, types.OriginAnnotations) {
|
||||
if len(kt.kustomization.BuildMetadata) != 0 {
|
||||
origin = &resource.Origin{}
|
||||
}
|
||||
ra, err := kt.AccumulateTarget(origin)
|
||||
@@ -215,7 +215,7 @@ func (kt *KustTarget) accumulateTarget(ra *accumulator.ResAccumulator, origin *r
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
err = kt.runTransformers(ra)
|
||||
err = kt.runTransformers(ra, origin)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
@@ -262,7 +262,6 @@ func (kt *KustTarget) runGenerators(
|
||||
return errors.Wrap(err, "loading generator plugins")
|
||||
}
|
||||
generators = append(generators, gs...)
|
||||
|
||||
for i, g := range generators {
|
||||
resMap, err := g.Generate()
|
||||
if err != nil {
|
||||
@@ -293,14 +292,13 @@ func (kt *KustTarget) configureExternalGenerators(origin *resource.Origin) (
|
||||
// not an inline config
|
||||
generatorPaths = append(generatorPaths, p)
|
||||
continue
|
||||
} else {
|
||||
// inline config, track the origin
|
||||
if origin != nil {
|
||||
resources := rm.Resources()
|
||||
for _, r := range resources {
|
||||
r.SetOrigin(origin.Append(kt.kustFileName))
|
||||
rm.Replace(r)
|
||||
}
|
||||
}
|
||||
// inline config, track the origin
|
||||
if origin != nil {
|
||||
resources := rm.Resources()
|
||||
for _, r := range resources {
|
||||
r.SetOrigin(origin.Append(kt.kustFileName))
|
||||
rm.Replace(r)
|
||||
}
|
||||
}
|
||||
ra.AppendAll(rm)
|
||||
@@ -312,23 +310,27 @@ func (kt *KustTarget) configureExternalGenerators(origin *resource.Origin) (
|
||||
return kt.pLdr.LoadGenerators(kt.ldr, kt.validator, ra.ResMap())
|
||||
}
|
||||
|
||||
func (kt *KustTarget) runTransformers(ra *accumulator.ResAccumulator) error {
|
||||
var r []resmap.Transformer
|
||||
func (kt *KustTarget) runTransformers(ra *accumulator.ResAccumulator, origin *resource.Origin) error {
|
||||
var r []*resmap.TransformerWithProperties
|
||||
tConfig := ra.GetTransformerConfig()
|
||||
lts, err := kt.configureBuiltinTransformers(tConfig)
|
||||
lts, err := kt.configureBuiltinTransformers(tConfig, origin)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
r = append(r, lts...)
|
||||
lts, err = kt.configureExternalTransformers(kt.kustomization.Transformers)
|
||||
lts, err = kt.configureExternalTransformers(kt.kustomization.Transformers, origin)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
r = append(r, lts...)
|
||||
return ra.Transform(newMultiTransformer(r))
|
||||
err = ra.Transform(newMultiTransformer(r))
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
func (kt *KustTarget) configureExternalTransformers(transformers []string) ([]resmap.Transformer, error) {
|
||||
func (kt *KustTarget) configureExternalTransformers(transformers []string, origin *resource.Origin) ([]*resmap.TransformerWithProperties, error) {
|
||||
ra := accumulator.MakeEmptyAccumulator()
|
||||
var transformerPaths []string
|
||||
for _, p := range transformers {
|
||||
@@ -339,9 +341,17 @@ func (kt *KustTarget) configureExternalTransformers(transformers []string) ([]re
|
||||
transformerPaths = append(transformerPaths, p)
|
||||
continue
|
||||
}
|
||||
// inline config, track the origin
|
||||
if origin != nil {
|
||||
resources := rm.Resources()
|
||||
for _, r := range resources {
|
||||
r.SetOrigin(origin.Append(kt.kustFileName))
|
||||
rm.Replace(r)
|
||||
}
|
||||
}
|
||||
ra.AppendAll(rm)
|
||||
}
|
||||
ra, err := kt.accumulateResources(ra, transformerPaths, &resource.Origin{})
|
||||
ra, err := kt.accumulateResources(ra, transformerPaths, origin)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
@@ -349,7 +359,7 @@ func (kt *KustTarget) configureExternalTransformers(transformers []string) ([]re
|
||||
}
|
||||
|
||||
func (kt *KustTarget) runValidators(ra *accumulator.ResAccumulator) error {
|
||||
validators, err := kt.configureExternalTransformers(kt.kustomization.Validators)
|
||||
validators, err := kt.configureExternalTransformers(kt.kustomization.Validators, nil)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
@@ -66,8 +66,8 @@ func (kt *KustTarget) configureBuiltinGenerators(origin *resource.Origin) (
|
||||
}
|
||||
|
||||
func (kt *KustTarget) configureBuiltinTransformers(
|
||||
tc *builtinconfig.TransformerConfig) (
|
||||
result []resmap.Transformer, err error) {
|
||||
tc *builtinconfig.TransformerConfig, origin *resource.Origin) (
|
||||
result []*resmap.TransformerWithProperties, err error) {
|
||||
for _, bpt := range []builtinhelpers.BuiltinPluginType{
|
||||
builtinhelpers.PatchStrategicMergeTransformer,
|
||||
builtinhelpers.PatchTransformer,
|
||||
@@ -86,7 +86,23 @@ func (kt *KustTarget) configureBuiltinTransformers(
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
result = append(result, r...)
|
||||
var transformerOrigin *resource.Origin
|
||||
if origin != nil {
|
||||
transformerOrigin = &resource.Origin{
|
||||
Repo: origin.Repo,
|
||||
Ref: origin.Ref,
|
||||
ConfiguredIn: filepath.Join(origin.Path, kt.kustFileName),
|
||||
ConfiguredBy: yaml.ResourceIdentifier{
|
||||
TypeMeta: yaml.TypeMeta{
|
||||
APIVersion: "builtin",
|
||||
Kind: bpt.String(),
|
||||
},
|
||||
},
|
||||
}
|
||||
}
|
||||
for i := range r {
|
||||
result = append(result, &resmap.TransformerWithProperties{Transformer: r[i], Origin: transformerOrigin})
|
||||
}
|
||||
}
|
||||
return result, nil
|
||||
}
|
||||
@@ -169,6 +185,9 @@ var transformerConfigurators = map[builtinhelpers.BuiltinPluginType]func(
|
||||
builtinhelpers.NamespaceTransformer: func(
|
||||
kt *KustTarget, bpt builtinhelpers.BuiltinPluginType, f tFactory, tc *builtinconfig.TransformerConfig) (
|
||||
result []resmap.Transformer, err error) {
|
||||
if kt.kustomization.Namespace == "" {
|
||||
return
|
||||
}
|
||||
var c struct {
|
||||
types.ObjectMeta `json:"metadata,omitempty" yaml:"metadata,omitempty"`
|
||||
FieldSpecs []types.FieldSpec
|
||||
@@ -252,6 +271,9 @@ var transformerConfigurators = map[builtinhelpers.BuiltinPluginType]func(
|
||||
builtinhelpers.LabelTransformer: func(
|
||||
kt *KustTarget, bpt builtinhelpers.BuiltinPluginType, f tFactory, tc *builtinconfig.TransformerConfig) (
|
||||
result []resmap.Transformer, err error) {
|
||||
if len(kt.kustomization.Labels) == 0 && len(kt.kustomization.CommonLabels) == 0 {
|
||||
return
|
||||
}
|
||||
for _, label := range kt.kustomization.Labels {
|
||||
var c struct {
|
||||
Labels map[string]string
|
||||
@@ -294,6 +316,9 @@ var transformerConfigurators = map[builtinhelpers.BuiltinPluginType]func(
|
||||
builtinhelpers.AnnotationsTransformer: func(
|
||||
kt *KustTarget, bpt builtinhelpers.BuiltinPluginType, f tFactory, tc *builtinconfig.TransformerConfig) (
|
||||
result []resmap.Transformer, err error) {
|
||||
if len(kt.kustomization.CommonAnnotations) == 0 {
|
||||
return
|
||||
}
|
||||
var c struct {
|
||||
Annotations map[string]string
|
||||
FieldSpecs []types.FieldSpec
|
||||
@@ -311,6 +336,9 @@ var transformerConfigurators = map[builtinhelpers.BuiltinPluginType]func(
|
||||
builtinhelpers.PrefixTransformer: func(
|
||||
kt *KustTarget, bpt builtinhelpers.BuiltinPluginType, f tFactory, tc *builtinconfig.TransformerConfig) (
|
||||
result []resmap.Transformer, err error) {
|
||||
if kt.kustomization.NamePrefix == "" {
|
||||
return
|
||||
}
|
||||
var c struct {
|
||||
Prefix string `json:"prefix,omitempty" yaml:"prefix,omitempty"`
|
||||
FieldSpecs []types.FieldSpec `json:"fieldSpecs,omitempty" yaml:"fieldSpecs,omitempty"`
|
||||
@@ -328,6 +356,9 @@ var transformerConfigurators = map[builtinhelpers.BuiltinPluginType]func(
|
||||
builtinhelpers.SuffixTransformer: func(
|
||||
kt *KustTarget, bpt builtinhelpers.BuiltinPluginType, f tFactory, tc *builtinconfig.TransformerConfig) (
|
||||
result []resmap.Transformer, err error) {
|
||||
if kt.kustomization.NameSuffix == "" {
|
||||
return
|
||||
}
|
||||
var c struct {
|
||||
Suffix string `json:"suffix,omitempty" yaml:"suffix,omitempty"`
|
||||
FieldSpecs []types.FieldSpec `json:"fieldSpecs,omitempty" yaml:"fieldSpecs,omitempty"`
|
||||
@@ -364,6 +395,9 @@ var transformerConfigurators = map[builtinhelpers.BuiltinPluginType]func(
|
||||
builtinhelpers.ReplacementTransformer: func(
|
||||
kt *KustTarget, bpt builtinhelpers.BuiltinPluginType, f tFactory, _ *builtinconfig.TransformerConfig) (
|
||||
result []resmap.Transformer, err error) {
|
||||
if len(kt.kustomization.Replacements) == 0 {
|
||||
return
|
||||
}
|
||||
var c struct {
|
||||
Replacements []types.ReplacementField
|
||||
}
|
||||
|
||||
@@ -9,15 +9,15 @@ import (
|
||||
|
||||
// multiTransformer contains a list of transformers.
|
||||
type multiTransformer struct {
|
||||
transformers []resmap.Transformer
|
||||
transformers []*resmap.TransformerWithProperties
|
||||
}
|
||||
|
||||
var _ resmap.Transformer = &multiTransformer{}
|
||||
|
||||
// newMultiTransformer constructs a multiTransformer.
|
||||
func newMultiTransformer(t []resmap.Transformer) resmap.Transformer {
|
||||
func newMultiTransformer(t []*resmap.TransformerWithProperties) resmap.Transformer {
|
||||
r := &multiTransformer{
|
||||
transformers: make([]resmap.Transformer, len(t)),
|
||||
transformers: make([]*resmap.TransformerWithProperties, len(t)),
|
||||
}
|
||||
copy(r.transformers, t)
|
||||
return r
|
||||
@@ -30,6 +30,11 @@ func (o *multiTransformer) Transform(m resmap.ResMap) error {
|
||||
if err := t.Transform(m); err != nil {
|
||||
return err
|
||||
}
|
||||
if t.Origin != nil {
|
||||
if err := m.AddTransformerAnnotation(t.Origin); err != nil {
|
||||
return err
|
||||
}
|
||||
}
|
||||
m.DropEmpties()
|
||||
}
|
||||
return nil
|
||||
|
||||
@@ -20,7 +20,7 @@ const (
|
||||
|
||||
// for keeping track of origin and transformer data
|
||||
OriginAnnotationKey = "config.kubernetes.io/origin"
|
||||
TransformerAnnotationKey = "config.kubernetes.io/transformations"
|
||||
TransformerAnnotationKey = "alpha.config.kubernetes.io/transformations"
|
||||
|
||||
Enabled = "enabled"
|
||||
)
|
||||
|
||||
Reference in New Issue
Block a user