@@ -288,7 +288,7 @@ func (r *BpfmanConfigReconciler) setStatusConditions(ctx context.Context, config
288288 }
289289
290290 // If none of the components changed, do not update anything for the status.
291- if config .Status .Components != nil && statuses . Equals ( * config .Status .Components ) {
291+ if config .Status .Components != nil && ccsEquals ( statuses , * config .Status .Components ) {
292292 return nil
293293 }
294294
@@ -297,7 +297,7 @@ func (r *BpfmanConfigReconciler) setStatusConditions(ctx context.Context, config
297297
298298 // Set conditions, next.
299299 switch {
300- case statuses . AnyComponentProgressing ( r .IsOpenshift ):
300+ case ccsAnyComponentProgressing ( statuses , r .IsOpenshift ):
301301 meta .SetStatusCondition (& config .Status .Conditions , metav1.Condition {
302302 Type : internal .ConfigConditionProgressing ,
303303 Status : metav1 .ConditionTrue ,
@@ -311,7 +311,7 @@ func (r *BpfmanConfigReconciler) setStatusConditions(ctx context.Context, config
311311 Message : internal .ConfigMessageProgressing ,
312312 })
313313 r .Recorder .Event (config , "Normal" , internal .ConfigReasonProgressing , internal .ConfigMessageProgressing )
314- case statuses . AllComponentsReady ( r .IsOpenshift ):
314+ case ccsAllComponentsReady ( statuses , r .IsOpenshift ):
315315 meta .SetStatusCondition (& config .Status .Conditions , metav1.Condition {
316316 Type : internal .ConfigConditionProgressing ,
317317 Status : metav1 .ConditionFalse ,
@@ -604,3 +604,30 @@ func healthProbeAddress(healthProbePort int) string {
604604 }
605605 return fmt .Sprintf (":%d" , healthProbePort )
606606}
607+
608+ // ccsEquals compares two ConfigComponentStatuses instances for equality.
609+ func ccsEquals (ccs , c v1alpha1.ConfigComponentStatuses ) bool {
610+ return ptr .Equal (ccs .ConfigMap , c .ConfigMap ) &&
611+ ptr .Equal (ccs .DaemonSet , c .DaemonSet ) &&
612+ ptr .Equal (ccs .MetricsProxyDaemonSet , c .MetricsProxyDaemonSet ) &&
613+ ptr .Equal (ccs .CsiDriver , c .CsiDriver ) &&
614+ ptr .Equal (ccs .Scc , c .Scc )
615+ }
616+
617+ // ccsAnyComponentProgressing returns true if any component is in the Progressing state.
618+ func ccsAnyComponentProgressing (ccs v1alpha1.ConfigComponentStatuses , isOpenShift bool ) bool {
619+ return ccs .ConfigMap != nil && * ccs .ConfigMap == v1alpha1 .ConfigStatusProgressing ||
620+ ccs .DaemonSet != nil && * ccs .DaemonSet == v1alpha1 .ConfigStatusProgressing ||
621+ ccs .MetricsProxyDaemonSet != nil && * ccs .MetricsProxyDaemonSet == v1alpha1 .ConfigStatusProgressing ||
622+ ccs .CsiDriver != nil && * ccs .CsiDriver == v1alpha1 .ConfigStatusProgressing ||
623+ (isOpenShift && ccs .Scc != nil && * ccs .Scc == v1alpha1 .ConfigStatusProgressing )
624+ }
625+
626+ // ccsAllComponentsReady returns true if all components are in the Ready state.
627+ func ccsAllComponentsReady (ccs v1alpha1.ConfigComponentStatuses , isOpenShift bool ) bool {
628+ return ccs .ConfigMap != nil && * ccs .ConfigMap == v1alpha1 .ConfigStatusReady &&
629+ ccs .DaemonSet != nil && * ccs .DaemonSet == v1alpha1 .ConfigStatusReady &&
630+ ccs .MetricsProxyDaemonSet != nil && * ccs .MetricsProxyDaemonSet == v1alpha1 .ConfigStatusReady &&
631+ ccs .CsiDriver != nil && * ccs .CsiDriver == v1alpha1 .ConfigStatusReady &&
632+ (! isOpenShift || ccs .Scc != nil && * ccs .Scc == v1alpha1 .ConfigStatusReady )
633+ }
0 commit comments