mirror of
https://github.com/kubernetes-sigs/kustomize.git
synced 2026-06-10 08:20:59 +00:00
@@ -57,7 +57,7 @@ func (rmF *Factory) FromFiles(
|
||||
}
|
||||
result = append(result, res)
|
||||
}
|
||||
return MergeWithoutOverride(result...)
|
||||
return MergeWithErrorOnIdCollision(result...)
|
||||
}
|
||||
|
||||
// newResMapFromBytes decodes a list of objects in byte array format.
|
||||
|
||||
@@ -20,7 +20,6 @@ package resmap
|
||||
import (
|
||||
"bytes"
|
||||
"fmt"
|
||||
"log"
|
||||
"reflect"
|
||||
"sort"
|
||||
|
||||
@@ -140,9 +139,10 @@ func (m ResMap) FilterBy(inputId resid.ResId) ResMap {
|
||||
return result
|
||||
}
|
||||
|
||||
// MergeWithoutOverride combines multiple ResMap instances, failing on key collision
|
||||
// and skipping nil maps. In case if all of the maps are nil, an empty ResMap is returned.
|
||||
func MergeWithoutOverride(maps ...ResMap) (ResMap, error) {
|
||||
// MergeWithErrorOnIdCollision combines multiple ResMap instances, failing on
|
||||
// key collision and skipping nil maps.
|
||||
// If all of the maps are nil, an empty ResMap is returned.
|
||||
func MergeWithErrorOnIdCollision(maps ...ResMap) (ResMap, error) {
|
||||
result := ResMap{}
|
||||
for _, m := range maps {
|
||||
if m == nil {
|
||||
@@ -164,10 +164,10 @@ func MergeWithoutOverride(maps ...ResMap) (ResMap, error) {
|
||||
// "replace" option in its generation instructions, meaning it is supposed
|
||||
// to replace something from the raw resources list.
|
||||
// If all of the maps are nil, an empty ResMap is returned.
|
||||
// When looping over the instances to combine them, if a resource id for resource X
|
||||
// is found to be already in the combined map, then the behavior field for X
|
||||
// must be BehaviorMerge or BehaviorReplace. If X is not in the map, then it's
|
||||
// behavior cannot be merge or replace.
|
||||
// When looping over the instances to combine them, if a resource id for
|
||||
// resource X is found to be already in the combined map, then the behavior
|
||||
// field for X must be BehaviorMerge or BehaviorReplace. If X is not in the
|
||||
// map, then it's behavior cannot be merge or replace.
|
||||
func MergeWithOverride(maps ...ResMap) (ResMap, error) {
|
||||
result := maps[0]
|
||||
if result == nil {
|
||||
@@ -183,18 +183,12 @@ func MergeWithOverride(maps ...ResMap) (ResMap, error) {
|
||||
id = matchedId[0]
|
||||
switch r.Behavior() {
|
||||
case ifc.BehaviorReplace:
|
||||
log.Printf(
|
||||
"Replace %v with %v", result[id].Map(), r.Map())
|
||||
r.Replace(result[id])
|
||||
result[id] = r
|
||||
result[id].SetBehavior(ifc.BehaviorCreate)
|
||||
case ifc.BehaviorMerge:
|
||||
log.Printf(
|
||||
"Merging %v with %v", result[id].Map(), r.Map())
|
||||
r.Merge(result[id])
|
||||
result[id] = r
|
||||
log.Printf(
|
||||
"Merged object is %v", result[id].Map())
|
||||
result[id].SetBehavior(ifc.BehaviorCreate)
|
||||
default:
|
||||
return nil, fmt.Errorf("id %#v exists; must merge or replace", id)
|
||||
|
||||
@@ -410,7 +410,7 @@ func TestMergeWithoutOverride(t *testing.T) {
|
||||
},
|
||||
}),
|
||||
}
|
||||
merged, err := MergeWithoutOverride(input...)
|
||||
merged, err := MergeWithErrorOnIdCollision(input...)
|
||||
if err != nil {
|
||||
t.Fatalf("unexpected error: %v", err)
|
||||
}
|
||||
@@ -418,7 +418,7 @@ func TestMergeWithoutOverride(t *testing.T) {
|
||||
t.Fatalf("%#v doesn't equal expected %#v", merged, expected)
|
||||
}
|
||||
input3 := []ResMap{merged, nil}
|
||||
merged1, err := MergeWithoutOverride(input3...)
|
||||
merged1, err := MergeWithErrorOnIdCollision(input3...)
|
||||
if err != nil {
|
||||
t.Fatalf("unexpected error: %v", err)
|
||||
}
|
||||
@@ -426,7 +426,7 @@ func TestMergeWithoutOverride(t *testing.T) {
|
||||
t.Fatalf("%#v doesn't equal expected %#v", merged1, expected)
|
||||
}
|
||||
input4 := []ResMap{nil, merged}
|
||||
merged2, err := MergeWithoutOverride(input4...)
|
||||
merged2, err := MergeWithErrorOnIdCollision(input4...)
|
||||
if err != nil {
|
||||
t.Fatalf("unexpected error: %v", err)
|
||||
}
|
||||
|
||||
@@ -218,7 +218,7 @@ func (kt *KustTarget) generateConfigMapsAndSecrets(
|
||||
if err != nil {
|
||||
errs.Append(errors.Wrap(err, "NewResMapFromSecretArgs"))
|
||||
}
|
||||
return resmap.MergeWithoutOverride(cms, secrets)
|
||||
return resmap.MergeWithErrorOnIdCollision(cms, secrets)
|
||||
}
|
||||
|
||||
// Gets Bases and Resources as advertised.
|
||||
@@ -232,7 +232,7 @@ func (kt *KustTarget) loadResMapFromBasesAndResources() (resmap.ResMap, error) {
|
||||
if len(errs.Get()) > 0 {
|
||||
return nil, errs
|
||||
}
|
||||
return resmap.MergeWithoutOverride(resources, bases)
|
||||
return resmap.MergeWithErrorOnIdCollision(resources, bases)
|
||||
}
|
||||
|
||||
// Loop through the Bases of this kustomization recursively loading resources.
|
||||
@@ -261,7 +261,7 @@ func (kt *KustTarget) loadCustomizedBases() (resmap.ResMap, *interror.Kustomizat
|
||||
ldr.Cleanup()
|
||||
list = append(list, resMap)
|
||||
}
|
||||
result, err := resmap.MergeWithoutOverride(list...)
|
||||
result, err := resmap.MergeWithErrorOnIdCollision(list...)
|
||||
if err != nil {
|
||||
errs.Append(errors.Wrap(err, "Merge failed"))
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user