mirror of
https://github.com/k3s-io/kubernetes.git
synced 2025-07-31 15:25:57 +00:00
make StrategicPatch delete all matching maps in a merging list
This commit is contained in:
parent
8ef6902516
commit
03081a0003
@ -656,12 +656,16 @@ func mergeSlice(original, patch []interface{}, elemType reflect.Type, mergeKey s
|
|||||||
if patchType == deleteDirective {
|
if patchType == deleteDirective {
|
||||||
mergeValue, ok := typedV[mergeKey]
|
mergeValue, ok := typedV[mergeKey]
|
||||||
if ok {
|
if ok {
|
||||||
_, originalKey, found, err := findMapInSliceBasedOnKeyValue(original, mergeKey, mergeValue)
|
// delete all matching entries (based on merge key) from a merging list
|
||||||
if err != nil {
|
for {
|
||||||
return nil, err
|
_, originalKey, found, err := findMapInSliceBasedOnKeyValue(original, mergeKey, mergeValue)
|
||||||
}
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
if found {
|
if !found {
|
||||||
|
break
|
||||||
|
}
|
||||||
// Delete the element at originalKey.
|
// Delete the element at originalKey.
|
||||||
original = append(original[:originalKey], original[originalKey+1:]...)
|
original = append(original[:originalKey], original[originalKey+1:]...)
|
||||||
}
|
}
|
||||||
|
@ -308,6 +308,25 @@ testCases:
|
|||||||
$patch: replace
|
$patch: replace
|
||||||
modified:
|
modified:
|
||||||
other: a
|
other: a
|
||||||
|
- description: delete all duplicate entries in a merging list
|
||||||
|
original:
|
||||||
|
mergingList:
|
||||||
|
- name: 1
|
||||||
|
- name: 1
|
||||||
|
- name: 2
|
||||||
|
value: a
|
||||||
|
- name: 3
|
||||||
|
- name: 3
|
||||||
|
twoWay:
|
||||||
|
mergingList:
|
||||||
|
- name: 1
|
||||||
|
$patch: delete
|
||||||
|
- name: 3
|
||||||
|
$patch: delete
|
||||||
|
modified:
|
||||||
|
mergingList:
|
||||||
|
- name: 2
|
||||||
|
value: a
|
||||||
`)
|
`)
|
||||||
|
|
||||||
func TestCustomStrategicMergePatch(t *testing.T) {
|
func TestCustomStrategicMergePatch(t *testing.T) {
|
||||||
|
Loading…
Reference in New Issue
Block a user