mirror of https://github.com/k3s-io/k3s
Merge pull request #38342 from ymqytw/make_SPatch_delete_all_duplicates
Automatic merge from submit-queue (batch tested with PRs 34488, 39511, 39619, 38342, 39491) Make StrategicPatch delete all matching maps in a merging list fixes #38332 ```release-note NONE ``` cc: @lavalamp @pwittrockpull/6/head
commit
ebf1a533aa
|
@ -656,12 +656,16 @@ func mergeSlice(original, patch []interface{}, elemType reflect.Type, mergeKey s
|
|||
if patchType == deleteDirective {
|
||||
mergeValue, ok := typedV[mergeKey]
|
||||
if ok {
|
||||
_, originalKey, found, err := findMapInSliceBasedOnKeyValue(original, mergeKey, mergeValue)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
// delete all matching entries (based on merge key) from a merging list
|
||||
for {
|
||||
_, originalKey, found, err := findMapInSliceBasedOnKeyValue(original, mergeKey, mergeValue)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
if found {
|
||||
if !found {
|
||||
break
|
||||
}
|
||||
// Delete the element at originalKey.
|
||||
original = append(original[:originalKey], original[originalKey+1:]...)
|
||||
}
|
||||
|
|
|
@ -308,6 +308,25 @@ testCases:
|
|||
$patch: replace
|
||||
modified:
|
||||
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) {
|
||||
|
|
Loading…
Reference in New Issue