@@ -64,7 +64,7 @@ func (r *BMCVersionReconciler) Reconcile(ctx context.Context, req ctrl.Request)
6464 if err := r .Get (ctx , req .NamespacedName , bmcVersion ); err != nil {
6565 return ctrl.Result {}, client .IgnoreNotFound (err )
6666 }
67- log .V (1 ).Info ("Reconciling BMCVersion" )
67+ log .V (1 ).Info ("Reconciling BMCVersion" , "TESTING servermaintenance refs" , bmcVersion . Spec . ServerMaintenanceRefs )
6868
6969 return r .reconcileExists (ctx , log , bmcVersion )
7070}
@@ -110,7 +110,9 @@ func (r *BMCVersionReconciler) delete(ctx context.Context, log logr.Logger, bmcV
110110}
111111
112112func (r * BMCVersionReconciler ) cleanupServerMaintenanceReferences (ctx context.Context , log logr.Logger , bmcVersion * metalv1alpha1.BMCVersion ) error {
113+ log .V (1 ).Info ("to clean up ServerMaintenance ref" )
113114 if bmcVersion .Spec .ServerMaintenanceRefs == nil {
115+ log .V (1 ).Info ("Testing: ServerMaintenance ref is nil, nothing to clean up" )
114116 return nil
115117 }
116118 // try to get the serverMaintenances created
@@ -129,6 +131,7 @@ func (r *BMCVersionReconciler) cleanupServerMaintenanceReferences(ctx context.Co
129131 }
130132 }
131133
134+ providedServerMaintenance := map [string ]* metalv1alpha1.ServerMaintenance {}
132135 if len (missingServerMaintenanceRef ) != len (bmcVersion .Spec .ServerMaintenanceRefs ) {
133136 // delete the serverMaintenance if not marked for deletion already
134137 for _ , serverMaintenance := range serverMaintenances {
@@ -139,6 +142,7 @@ func (r *BMCVersionReconciler) cleanupServerMaintenanceReferences(ctx context.Co
139142 finalErr = append (finalErr , err )
140143 }
141144 } else {
145+ providedServerMaintenance [serverMaintenance .Name ] = serverMaintenance
142146 log .V (1 ).Info (
143147 "ServerMaintenance not deleted" ,
144148 "ServerMaintenance" , serverMaintenance .Name ,
@@ -150,8 +154,19 @@ func (r *BMCVersionReconciler) cleanupServerMaintenanceReferences(ctx context.Co
150154 }
151155
152156 if len (finalErr ) == 0 {
157+ var updatedRef []metalv1alpha1.ServerMaintenanceRefItem
158+ if len (providedServerMaintenance ) == 0 {
159+ updatedRef = nil
160+ } else {
161+ updatedRef = make ([]metalv1alpha1.ServerMaintenanceRefItem , 0 , len (providedServerMaintenance ))
162+ for _ , refs := range bmcVersion .Spec .ServerMaintenanceRefs {
163+ if _ , ok := providedServerMaintenance [refs .ServerMaintenanceRef .Name ]; ok {
164+ updatedRef = append (updatedRef , refs )
165+ }
166+ }
167+ }
153168 // all serverMaintenance are deleted
154- err := r .patchMaintenanceRequestRefOnBMCVersion (ctx , log , bmcVersion , nil )
169+ err := r .patchMaintenanceRequestRefOnBMCVersion (ctx , log , bmcVersion , updatedRef )
155170 if err != nil {
156171 return fmt .Errorf ("failed to clean up serverMaintenance ref in bmcVersion status: %w" , err )
157172 }
0 commit comments