@@ -78,7 +78,7 @@ func MutateFuncFor(existing, desired client.Object) controllerutil.MutateFn {
78
78
// Get the existing labels and override any conflicts with the desired labels
79
79
// This will preserve any labels on the existing set.
80
80
existingLabels := existing .GetLabels ()
81
- if err := mergeWithOverwriteWithEmptyValue (& existingLabels , desired .GetLabels ()); err != nil {
81
+ if err := mergeWithOverride (& existingLabels , desired .GetLabels ()); err != nil {
82
82
return err
83
83
}
84
84
existing .SetLabels (existingLabels )
@@ -281,7 +281,18 @@ func mutateDaemonset(existing, desired *appsv1.DaemonSet) error {
281
281
}
282
282
}
283
283
284
- return mergeWithOverwriteWithEmptyValue (& existing .Spec , desired .Spec )
284
+ existing .Spec .MinReadySeconds = desired .Spec .MinReadySeconds
285
+ existing .Spec .RevisionHistoryLimit = desired .Spec .RevisionHistoryLimit
286
+
287
+ if err := mergeWithOverwriteWithEmptyValue (& existing .Spec .UpdateStrategy , desired .Spec .UpdateStrategy ); err != nil {
288
+ return err
289
+ }
290
+
291
+ if err := mutatePodTemplate (& existing .Spec .Template , & desired .Spec .Template ); err != nil {
292
+ return err
293
+ }
294
+
295
+ return nil
285
296
}
286
297
287
298
func mutateDeployment (existing , desired * appsv1.Deployment ) error {
@@ -293,7 +304,22 @@ func mutateDeployment(existing, desired *appsv1.Deployment) error {
293
304
return err
294
305
}
295
306
}
296
- return mergeWithOverwriteWithEmptyValue (& existing .Spec , desired .Spec )
307
+
308
+ existing .Spec .MinReadySeconds = desired .Spec .MinReadySeconds
309
+ existing .Spec .Paused = desired .Spec .Paused
310
+ existing .Spec .ProgressDeadlineSeconds = desired .Spec .ProgressDeadlineSeconds
311
+ existing .Spec .Replicas = desired .Spec .Replicas
312
+ existing .Spec .RevisionHistoryLimit = desired .Spec .RevisionHistoryLimit
313
+
314
+ if err := mergeWithOverwriteWithEmptyValue (& existing .Spec .Strategy , desired .Spec .Strategy ); err != nil {
315
+ return err
316
+ }
317
+
318
+ if err := mutatePodTemplate (& existing .Spec .Template , & desired .Spec .Template ); err != nil {
319
+ return err
320
+ }
321
+
322
+ return nil
297
323
}
298
324
299
325
func mutateStatefulSet (existing , desired * appsv1.StatefulSet ) error {
@@ -309,7 +335,44 @@ func mutateStatefulSet(existing, desired *appsv1.StatefulSet) error {
309
335
}
310
336
}
311
337
312
- return mergeWithOverwriteWithEmptyValue (& existing .Spec , desired .Spec )
338
+ existing .Spec .MinReadySeconds = desired .Spec .MinReadySeconds
339
+ existing .Spec .Ordinals = desired .Spec .Ordinals
340
+ existing .Spec .PersistentVolumeClaimRetentionPolicy = desired .Spec .PersistentVolumeClaimRetentionPolicy
341
+ existing .Spec .PodManagementPolicy = desired .Spec .PodManagementPolicy
342
+ existing .Spec .Replicas = desired .Spec .Replicas
343
+ existing .Spec .RevisionHistoryLimit = desired .Spec .RevisionHistoryLimit
344
+ existing .Spec .ServiceName = desired .Spec .ServiceName
345
+
346
+ if err := mergeWithOverwriteWithEmptyValue (& existing .Spec .UpdateStrategy , desired .Spec .UpdateStrategy ); err != nil {
347
+ return err
348
+ }
349
+
350
+ if err := mergeWithOverwriteWithEmptyValue (& existing .Spec .VolumeClaimTemplates , desired .Spec .VolumeClaimTemplates ); err != nil {
351
+ return err
352
+ }
353
+
354
+ if err := mutatePodTemplate (& existing .Spec .Template , & desired .Spec .Template ); err != nil {
355
+ return err
356
+ }
357
+
358
+ return nil
359
+ }
360
+
361
+ func mutatePodTemplate (existing , desired * corev1.PodTemplateSpec ) error {
362
+ if err := mergeWithOverride (& existing .Labels , desired .Labels ); err != nil {
363
+ return err
364
+ }
365
+
366
+ if err := mergeWithOverride (& existing .Annotations , desired .Annotations ); err != nil {
367
+ return err
368
+ }
369
+
370
+ if err := mergeWithOverwriteWithEmptyValue (& existing .Spec , desired .Spec ); err != nil {
371
+ return err
372
+ }
373
+
374
+ return nil
375
+
313
376
}
314
377
315
378
func hasImmutableLabelChange (existingSelectorLabels , desiredLabels map [string ]string ) error {
0 commit comments