Skip to content

Commit bf7a0f9

Browse files
authored
Merge pull request #4805 from aibarbetta/fix-4717
[address #4717] Re-do create template/metadata when using includeTemplates if not present
2 parents 3b1a711 + 7b84613 commit bf7a0f9

File tree

7 files changed

+446
-59
lines changed

7 files changed

+446
-59
lines changed

api/internal/plugins/builtinconfig/transformerconfig.go

Lines changed: 16 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ import (
1010
"sigs.k8s.io/kustomize/api/ifc"
1111
"sigs.k8s.io/kustomize/api/konfig/builtinpluginconsts"
1212
"sigs.k8s.io/kustomize/api/types"
13+
"sigs.k8s.io/kustomize/kyaml/errors"
1314
)
1415

1516
// TransformerConfig holds the data needed to perform transformations.
@@ -18,6 +19,7 @@ type TransformerConfig struct {
1819
NameSuffix types.FsSlice `json:"nameSuffix,omitempty" yaml:"nameSuffix,omitempty"`
1920
NameSpace types.FsSlice `json:"namespace,omitempty" yaml:"namespace,omitempty"`
2021
CommonLabels types.FsSlice `json:"commonLabels,omitempty" yaml:"commonLabels,omitempty"`
22+
TemplateLabels types.FsSlice `json:"templateLabels,omitempty" yaml:"templateLabels,omitempty"`
2123
CommonAnnotations types.FsSlice `json:"commonAnnotations,omitempty" yaml:"commonAnnotations,omitempty"`
2224
NameReference nbrSlice `json:"nameReference,omitempty" yaml:"nameReference,omitempty"`
2325
VarReference types.FsSlice `json:"varReference,omitempty" yaml:"varReference,omitempty"`
@@ -60,6 +62,7 @@ func (t *TransformerConfig) sortFields() {
6062
sort.Sort(t.NamePrefix)
6163
sort.Sort(t.NameSpace)
6264
sort.Sort(t.CommonLabels)
65+
sort.Sort(t.TemplateLabels)
6366
sort.Sort(t.CommonAnnotations)
6467
sort.Sort(t.NameReference)
6568
sort.Sort(t.VarReference)
@@ -108,40 +111,44 @@ func (t *TransformerConfig) Merge(input *TransformerConfig) (
108111
merged = &TransformerConfig{}
109112
merged.NamePrefix, err = t.NamePrefix.MergeAll(input.NamePrefix)
110113
if err != nil {
111-
return nil, err
114+
return nil, errors.WrapPrefixf(err, "failed to merge NamePrefix fieldSpec")
112115
}
113116
merged.NameSuffix, err = t.NameSuffix.MergeAll(input.NameSuffix)
114117
if err != nil {
115-
return nil, err
118+
return nil, errors.WrapPrefixf(err, "failed to merge NameSuffix fieldSpec")
116119
}
117120
merged.NameSpace, err = t.NameSpace.MergeAll(input.NameSpace)
118121
if err != nil {
119-
return nil, err
122+
return nil, errors.WrapPrefixf(err, "failed to merge NameSpace fieldSpec")
120123
}
121124
merged.CommonAnnotations, err = t.CommonAnnotations.MergeAll(
122125
input.CommonAnnotations)
123126
if err != nil {
124-
return nil, err
127+
return nil, errors.WrapPrefixf(err, "failed to merge CommonAnnotations fieldSpec")
125128
}
126129
merged.CommonLabels, err = t.CommonLabels.MergeAll(input.CommonLabels)
127130
if err != nil {
128-
return nil, err
131+
return nil, errors.WrapPrefixf(err, "failed to merge CommonLabels fieldSpec")
132+
}
133+
merged.TemplateLabels, err = t.TemplateLabels.MergeAll(input.TemplateLabels)
134+
if err != nil {
135+
return nil, errors.WrapPrefixf(err, "failed to merge TemplateLabels fieldSpec")
129136
}
130137
merged.VarReference, err = t.VarReference.MergeAll(input.VarReference)
131138
if err != nil {
132-
return nil, err
139+
return nil, errors.WrapPrefixf(err, "failed to merge VarReference fieldSpec")
133140
}
134141
merged.NameReference, err = t.NameReference.mergeAll(input.NameReference)
135142
if err != nil {
136-
return nil, err
143+
return nil, errors.WrapPrefixf(err, "failed to merge NameReference fieldSpec")
137144
}
138145
merged.Images, err = t.Images.MergeAll(input.Images)
139146
if err != nil {
140-
return nil, err
147+
return nil, errors.WrapPrefixf(err, "failed to merge Images fieldSpec")
141148
}
142149
merged.Replicas, err = t.Replicas.MergeAll(input.Replicas)
143150
if err != nil {
144-
return nil, err
151+
return nil, errors.WrapPrefixf(err, "failed to merge Replicas fieldSpec")
145152
}
146153
merged.sortFields()
147154
return merged, nil

api/internal/target/kusttarget_configplugin.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -286,9 +286,9 @@ var transformerConfigurators = map[builtinhelpers.BuiltinPluginType]func(
286286
if label.IncludeSelectors {
287287
fss, err = fss.MergeAll(tc.CommonLabels)
288288
} else {
289-
// merge spec/template/metadata fieldSpec if includeTemplate flag is true
289+
// merge spec/template/metadata fieldSpecs if includeTemplate flag is true
290290
if label.IncludeTemplates {
291-
fss, err = fss.MergeOne(types.FieldSpec{Path: "spec/template/metadata/labels", CreateIfNotPresent: false})
291+
fss, err = fss.MergeAll(tc.TemplateLabels)
292292
if err != nil {
293293
return nil, errors.Wrap(err, "failed to merge template fieldSpec")
294294
}

api/konfig/builtinpluginconsts/commonlabels.go

Lines changed: 1 addition & 47 deletions
Original file line numberDiff line numberDiff line change
@@ -5,9 +5,6 @@ package builtinpluginconsts
55

66
const commonLabelFieldSpecs = `
77
commonLabels:
8-
- path: metadata/labels
9-
create: true
10-
118
- path: spec/selector
129
create: true
1310
version: v1
@@ -17,20 +14,10 @@ commonLabels:
1714
create: true
1815
version: v1
1916
kind: ReplicationController
20-
21-
- path: spec/template/metadata/labels
22-
create: true
23-
version: v1
24-
kind: ReplicationController
25-
2617
- path: spec/selector/matchLabels
2718
create: true
2819
kind: Deployment
2920
30-
- path: spec/template/metadata/labels
31-
create: true
32-
kind: Deployment
33-
3421
- path: spec/template/spec/affinity/podAffinity/preferredDuringSchedulingIgnoredDuringExecution/podAffinityTerm/labelSelector/matchLabels
3522
create: false
3623
group: apps
@@ -60,28 +47,15 @@ commonLabels:
6047
create: true
6148
kind: ReplicaSet
6249
63-
- path: spec/template/metadata/labels
64-
create: true
65-
kind: ReplicaSet
66-
6750
- path: spec/selector/matchLabels
6851
create: true
6952
kind: DaemonSet
7053
71-
- path: spec/template/metadata/labels
72-
create: true
73-
kind: DaemonSet
74-
7554
- path: spec/selector/matchLabels
7655
create: true
7756
group: apps
7857
kind: StatefulSet
7958
80-
- path: spec/template/metadata/labels
81-
create: true
82-
group: apps
83-
kind: StatefulSet
84-
8559
- path: spec/template/spec/affinity/podAffinity/preferredDuringSchedulingIgnoredDuringExecution/podAffinityTerm/labelSelector/matchLabels
8660
create: false
8761
group: apps
@@ -107,36 +81,16 @@ commonLabels:
10781
group: apps
10882
kind: StatefulSet
10983
110-
- path: spec/volumeClaimTemplates[]/metadata/labels
111-
create: true
112-
group: apps
113-
kind: StatefulSet
114-
11584
- path: spec/selector/matchLabels
11685
create: false
11786
group: batch
11887
kind: Job
11988
120-
- path: spec/template/metadata/labels
121-
create: true
122-
group: batch
123-
kind: Job
124-
12589
- path: spec/jobTemplate/spec/selector/matchLabels
12690
create: false
12791
group: batch
12892
kind: CronJob
12993
130-
- path: spec/jobTemplate/metadata/labels
131-
create: true
132-
group: batch
133-
kind: CronJob
134-
135-
- path: spec/jobTemplate/spec/template/metadata/labels
136-
create: true
137-
group: batch
138-
kind: CronJob
139-
14094
- path: spec/selector/matchLabels
14195
create: false
14296
group: policy
@@ -156,4 +110,4 @@ commonLabels:
156110
create: false
157111
group: networking.k8s.io
158112
kind: NetworkPolicy
159-
`
113+
` + metadataLabelsFieldSpecs

api/konfig/builtinpluginconsts/defaultconfig.go

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@ func GetDefaultFieldSpecs() []byte {
1313
[]byte(namePrefixFieldSpecs),
1414
[]byte(nameSuffixFieldSpecs),
1515
[]byte(commonLabelFieldSpecs),
16+
[]byte(templateLabelFieldSpecs),
1617
[]byte(commonAnnotationFieldSpecs),
1718
[]byte(namespaceFieldSpecs),
1819
[]byte(varReferenceFieldSpecs),
@@ -30,6 +31,7 @@ func GetDefaultFieldSpecsAsMap() map[string]string {
3031
result["nameprefix"] = namePrefixFieldSpecs
3132
result["namesuffix"] = nameSuffixFieldSpecs
3233
result["commonlabels"] = commonLabelFieldSpecs
34+
result["templatelabels"] = templateLabelFieldSpecs
3335
result["commonannotations"] = commonAnnotationFieldSpecs
3436
result["namespace"] = namespaceFieldSpecs
3537
result["varreference"] = varReferenceFieldSpecs
Lines changed: 51 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,51 @@
1+
// Copyright 2019 The Kubernetes Authors.
2+
// SPDX-License-Identifier: Apache-2.0
3+
4+
package builtinpluginconsts
5+
6+
const metadataLabelsFieldSpecs = `
7+
- path: metadata/labels
8+
create: true
9+
10+
- path: spec/template/metadata/labels
11+
create: true
12+
version: v1
13+
kind: ReplicationController
14+
15+
- path: spec/template/metadata/labels
16+
create: true
17+
kind: Deployment
18+
19+
- path: spec/template/metadata/labels
20+
create: true
21+
kind: ReplicaSet
22+
23+
- path: spec/template/metadata/labels
24+
create: true
25+
kind: DaemonSet
26+
27+
- path: spec/template/metadata/labels
28+
create: true
29+
group: apps
30+
kind: StatefulSet
31+
32+
- path: spec/volumeClaimTemplates[]/metadata/labels
33+
create: true
34+
group: apps
35+
kind: StatefulSet
36+
37+
- path: spec/template/metadata/labels
38+
create: true
39+
group: batch
40+
kind: Job
41+
42+
- path: spec/jobTemplate/metadata/labels
43+
create: true
44+
group: batch
45+
kind: CronJob
46+
47+
- path: spec/jobTemplate/spec/template/metadata/labels
48+
create: true
49+
group: batch
50+
kind: CronJob
51+
`
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
// Copyright 2019 The Kubernetes Authors.
2+
// SPDX-License-Identifier: Apache-2.0
3+
4+
package builtinpluginconsts
5+
6+
const templateLabelFieldSpecs = `
7+
templateLabels:
8+
` + metadataLabelsFieldSpecs

0 commit comments

Comments
 (0)