@@ -25,6 +25,7 @@ import (
25
25
"k8s.io/apimachinery/pkg/runtime/schema"
26
26
"sigs.k8s.io/structured-merge-diff/v4/fieldpath"
27
27
"sigs.k8s.io/structured-merge-diff/v4/merge"
28
+ "sigs.k8s.io/structured-merge-diff/v4/typed"
28
29
)
29
30
30
31
type structuredMergeManager struct {
@@ -95,11 +96,11 @@ func (f *structuredMergeManager) Update(liveObj, newObj runtime.Object, managed
95
96
if err != nil {
96
97
return nil , nil , fmt .Errorf ("failed to convert live object (%v) to proper version: %v" , objectGVKNN (liveObj ), err )
97
98
}
98
- newObjTyped , err := f .typeConverter .ObjectToTyped (newObjVersioned )
99
+ newObjTyped , err := f .typeConverter .ObjectToTyped (newObjVersioned , typed . AllowDuplicates )
99
100
if err != nil {
100
101
return nil , nil , fmt .Errorf ("failed to convert new object (%v) to smd typed: %v" , objectGVKNN (newObjVersioned ), err )
101
102
}
102
- liveObjTyped , err := f .typeConverter .ObjectToTyped (liveObjVersioned )
103
+ liveObjTyped , err := f .typeConverter .ObjectToTyped (liveObjVersioned , typed . AllowDuplicates )
103
104
if err != nil {
104
105
return nil , nil , fmt .Errorf ("failed to convert live object (%v) to smd typed: %v" , objectGVKNN (liveObjVersioned ), err )
105
106
}
@@ -139,11 +140,13 @@ func (f *structuredMergeManager) Apply(liveObj, patchObj runtime.Object, managed
139
140
return nil , nil , fmt .Errorf ("failed to convert live object (%v) to proper version: %v" , objectGVKNN (liveObj ), err )
140
141
}
141
142
143
+ // Don't allow duplicates in the applied object.
142
144
patchObjTyped , err := f .typeConverter .ObjectToTyped (patchObj )
143
145
if err != nil {
144
146
return nil , nil , fmt .Errorf ("failed to create typed patch object (%v): %v" , objectGVKNN (patchObj ), err )
145
147
}
146
- liveObjTyped , err := f .typeConverter .ObjectToTyped (liveObjVersioned )
148
+
149
+ liveObjTyped , err := f .typeConverter .ObjectToTyped (liveObjVersioned , typed .AllowDuplicates )
147
150
if err != nil {
148
151
return nil , nil , fmt .Errorf ("failed to create typed live object (%v): %v" , objectGVKNN (liveObjVersioned ), err )
149
152
}
0 commit comments