mirror of
https://github.com/kubernetes-sigs/kustomize.git
synced 2026-06-13 18:10:59 +00:00
Consider currentId when replacing/merging resources
When merging resources such as the output of a `configMapGenerator`, we need to consider the `CurrentId`, otherwise, we cannot extend a common base definition twice by adding different prefixes, and then further kustomize them. See #1442.
This commit is contained in:
@@ -603,8 +603,10 @@ func (m *resWrangler) AbsorbAll(other ResMap) error {
|
|||||||
func (m *resWrangler) appendReplaceOrMerge(
|
func (m *resWrangler) appendReplaceOrMerge(
|
||||||
res *resource.Resource) error {
|
res *resource.Resource) error {
|
||||||
id := res.CurId()
|
id := res.CurId()
|
||||||
// Maybe also try by current id if nothing matches?
|
|
||||||
matches := m.GetMatchingResourcesByOriginalId(id.Equals)
|
matches := m.GetMatchingResourcesByOriginalId(id.Equals)
|
||||||
|
if len(matches) == 0 {
|
||||||
|
matches = m.GetMatchingResourcesByCurrentId(id.Equals)
|
||||||
|
}
|
||||||
switch len(matches) {
|
switch len(matches) {
|
||||||
case 0:
|
case 0:
|
||||||
switch res.Behavior() {
|
switch res.Behavior() {
|
||||||
|
|||||||
@@ -251,3 +251,63 @@ metadata:
|
|||||||
name: p2-com2-c4b8md75k9
|
name: p2-com2-c4b8md75k9
|
||||||
`)
|
`)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func TestConfigMapGeneratorMergeNamePrefix(t *testing.T) {
|
||||||
|
th := kusttest_test.NewKustTestHarness(t, "/app")
|
||||||
|
th.WriteK("/app/base", `
|
||||||
|
configMapGenerator:
|
||||||
|
- name: cm
|
||||||
|
behavior: create
|
||||||
|
literals:
|
||||||
|
- foo=bar
|
||||||
|
`)
|
||||||
|
th.WriteK("/app/o1", `
|
||||||
|
resources:
|
||||||
|
- ../base
|
||||||
|
namePrefix: o1-
|
||||||
|
`)
|
||||||
|
th.WriteK("/app/o2", `
|
||||||
|
resources:
|
||||||
|
- ../base
|
||||||
|
nameSuffix: -o2
|
||||||
|
`)
|
||||||
|
th.WriteK("/app", `
|
||||||
|
resources:
|
||||||
|
- o1
|
||||||
|
- o2
|
||||||
|
configMapGenerator:
|
||||||
|
- name: o1-cm
|
||||||
|
behavior: merge
|
||||||
|
literals:
|
||||||
|
- big=bang
|
||||||
|
- name: cm-o2
|
||||||
|
behavior: merge
|
||||||
|
literals:
|
||||||
|
- big=crunch
|
||||||
|
`)
|
||||||
|
m, err := th.MakeKustTarget().MakeCustomizedResMap()
|
||||||
|
if err != nil {
|
||||||
|
t.Fatalf("Err: %v", err)
|
||||||
|
}
|
||||||
|
th.AssertActualEqualsExpected(m, `
|
||||||
|
apiVersion: v1
|
||||||
|
data:
|
||||||
|
big: bang
|
||||||
|
foo: bar
|
||||||
|
kind: ConfigMap
|
||||||
|
metadata:
|
||||||
|
annotations: {}
|
||||||
|
labels: {}
|
||||||
|
name: o1-cm-28g596k77k
|
||||||
|
---
|
||||||
|
apiVersion: v1
|
||||||
|
data:
|
||||||
|
big: crunch
|
||||||
|
foo: bar
|
||||||
|
kind: ConfigMap
|
||||||
|
metadata:
|
||||||
|
annotations: {}
|
||||||
|
labels: {}
|
||||||
|
name: cm-o2-gfcc59fg5m
|
||||||
|
`)
|
||||||
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user