@@ -312,7 +312,7 @@ func (r *ROSAMachinePoolReconciler) reconcileDelete(
312
312
if err := ocmClient .DeleteNodePool (machinePoolScope .ControlPlane .Status .ID , nodePool .ID ()); err != nil {
313
313
return err
314
314
}
315
- machinePoolScope .Info ("Successfully deleted NodePool %s" , nodePool . ID () )
315
+ machinePoolScope .Info ("Successfully deleted NodePool" )
316
316
}
317
317
318
318
controllerutil .RemoveFinalizer (machinePoolScope .RosaMachinePool , expinfrav1 .RosaMachinePoolFinalizer )
@@ -360,21 +360,14 @@ func (r *ROSAMachinePoolReconciler) updateNodePool(machinePoolScope *scope.RosaM
360
360
machinePool := machinePoolScope .RosaMachinePool .DeepCopy ()
361
361
// default all fields before comparing, so that nil/unset fields don't cause an unnecessary update call.
362
362
machinePool .Default ()
363
-
364
363
desiredSpec := machinePool .Spec
365
- currentSpec := nodePoolToRosaMachinePoolSpec (nodePool )
366
364
367
- ignoredFields := []string {
368
- "ProviderIDList" , // providerIDList is set by the controller.
369
- "Version" , // Version changes are reconciled separately.
370
- "AdditionalTags" , // AdditionalTags day2 changes not supported.
371
- }
372
- if cmp .Equal (desiredSpec , currentSpec ,
373
- cmpopts .EquateEmpty (), // ensures empty non-nil slices and nil slices are considered equal.
374
- cmpopts .IgnoreFields (currentSpec , ignoredFields ... )) {
365
+ specDiff := computeSpecDiff (desiredSpec , nodePool )
366
+ if specDiff == "" {
375
367
// no changes detected.
376
368
return nodePool , nil
377
369
}
370
+ machinePoolScope .Info ("MachinePool spec diff detected" , "diff" , specDiff )
378
371
379
372
// zero-out fields that shouldn't be part of the update call.
380
373
desiredSpec .Version = ""
@@ -400,6 +393,21 @@ func (r *ROSAMachinePoolReconciler) updateNodePool(machinePoolScope *scope.RosaM
400
393
return updatedNodePool , nil
401
394
}
402
395
396
+ func computeSpecDiff (desiredSpec expinfrav1.RosaMachinePoolSpec , nodePool * cmv1.NodePool ) string {
397
+ currentSpec := nodePoolToRosaMachinePoolSpec (nodePool )
398
+
399
+ ignoredFields := []string {
400
+ "ProviderIDList" , // providerIDList is set by the controller.
401
+ "Version" , // Version changes are reconciled separately.
402
+ "AdditionalTags" , // AdditionalTags day2 changes not supported.
403
+ "AdditionalSecurityGroups" , // AdditionalSecurityGroups day2 changes not supported.
404
+ }
405
+
406
+ return cmp .Diff (desiredSpec , currentSpec ,
407
+ cmpopts .EquateEmpty (), // ensures empty non-nil slices and nil slices are considered equal.
408
+ cmpopts .IgnoreFields (currentSpec , ignoredFields ... ))
409
+ }
410
+
403
411
func validateMachinePoolSpec (machinePoolScope * scope.RosaMachinePoolScope ) (* string , error ) {
404
412
if machinePoolScope .RosaMachinePool .Spec .Version == "" {
405
413
return nil , nil
@@ -517,7 +525,7 @@ func nodePoolToRosaMachinePoolSpec(nodePool *cmv1.NodePool) expinfrav1.RosaMachi
517
525
}
518
526
}
519
527
if nodePool .Taints () != nil {
520
- rosaTaints := make ([]expinfrav1.RosaTaint , len (nodePool .Taints ()))
528
+ rosaTaints := make ([]expinfrav1.RosaTaint , 0 , len (nodePool .Taints ()))
521
529
for _ , taint := range nodePool .Taints () {
522
530
rosaTaints = append (rosaTaints , expinfrav1.RosaTaint {
523
531
Key : taint .Key (),
0 commit comments