refactor: combine both status updates under one call

This commit is contained in:
Asaf Haim 2024-06-08 23:51:25 +03:00 committed by Asaf Haim
parent 7dda986370
commit a8b1b0e618
2 changed files with 34 additions and 35 deletions

View File

@ -294,7 +294,7 @@ type AutoscalingRunnerSetStatus struct {
// +optional // +optional
// +kubebuilder:validation:Minimum:=0 // +kubebuilder:validation:Minimum:=0
DesiredMinRunners int `json:"desiredMinRunners,omitempty"` DesiredMinRunners int `json:"desiredMinRunners"`
// +optional // +optional
ScheduledOverridesSummary *string `json:"scheduledOverridesSummary,omitempty"` ScheduledOverridesSummary *string `json:"scheduledOverridesSummary,omitempty"`
} }

View File

@ -318,52 +318,51 @@ func (r *AutoscalingRunnerSetReconciler) Reconcile(ctx context.Context, req ctrl
var overridesSummary string var overridesSummary string
// Update the status of the desired min runners and scheduled overrides summary currentReplicasOutOfDate := latestRunnerSet.Status.CurrentReplicas != autoscalingRunnerSet.Status.CurrentRunners
if autoscalingRunnerSet.Status.DesiredMinRunners != minRunners { minReplicasOutOfDate := autoscalingRunnerSet.Status.DesiredMinRunners != minRunners
// Update the status of autoscaling runner set.
if minReplicasOutOfDate || currentReplicasOutOfDate {
if err := patchSubResource(ctx, r.Status(), autoscalingRunnerSet, func(obj *v1alpha1.AutoscalingRunnerSet) { if err := patchSubResource(ctx, r.Status(), autoscalingRunnerSet, func(obj *v1alpha1.AutoscalingRunnerSet) {
obj.Status.DesiredMinRunners = minRunners if currentReplicasOutOfDate {
obj.Status.CurrentRunners = latestRunnerSet.Status.CurrentReplicas
if (active != nil && upcoming == nil) || (active != nil && upcoming != nil && active.Period.EndTime.Before(upcoming.Period.StartTime)) { obj.Status.PendingEphemeralRunners = latestRunnerSet.Status.PendingEphemeralRunners
var after int obj.Status.RunningEphemeralRunners = latestRunnerSet.Status.RunningEphemeralRunners
if obj.Status.DesiredMinRunners >= 0 { obj.Status.FailedEphemeralRunners = latestRunnerSet.Status.FailedEphemeralRunners
after = obj.Status.DesiredMinRunners
}
overridesSummary = fmt.Sprintf("min=%d status=active endTime=%s", after, active.Period.EndTime)
} }
if active == nil && upcoming != nil || (active != nil && upcoming != nil && active.Period.EndTime.After(upcoming.Period.StartTime)) { if minReplicasOutOfDate {
if upcoming.ScheduledOverride.MinRunners != nil { obj.Status.DesiredMinRunners = minRunners
overridesSummary = fmt.Sprintf("min=%d status=upcoming startTime=%s", *upcoming.ScheduledOverride.MinRunners, upcoming.Period.StartTime)
}
}
if overridesSummary != "" { if (active != nil && upcoming == nil) || (active != nil && upcoming != nil && active.Period.EndTime.Before(upcoming.Period.StartTime)) {
obj.Status.ScheduledOverridesSummary = &overridesSummary var after int
} else { if obj.Status.DesiredMinRunners >= 0 {
obj.Status.ScheduledOverridesSummary = nil after = obj.Status.DesiredMinRunners
}
overridesSummary = fmt.Sprintf("min=%d status=active endTime=%s", after, active.Period.EndTime)
}
if active == nil && upcoming != nil || (active != nil && upcoming != nil && active.Period.EndTime.After(upcoming.Period.StartTime)) {
if upcoming.ScheduledOverride.MinRunners != nil {
overridesSummary = fmt.Sprintf("min=%d status=upcoming startTime=%s", *upcoming.ScheduledOverride.MinRunners, upcoming.Period.StartTime)
}
}
if overridesSummary != "" {
obj.Status.ScheduledOverridesSummary = &overridesSummary
} else {
obj.Status.ScheduledOverridesSummary = nil
}
} }
}); err != nil { }); err != nil {
log.Error(err, "Failed to update autoscaling runner set status with desired min runners") log.Error(err, "Failed to update autoscaling runner set status")
return ctrl.Result{}, err return ctrl.Result{}, err
} }
return ctrl.Result{}, nil return ctrl.Result{}, nil
} }
// Update the status of autoscaling runner set.
if latestRunnerSet.Status.CurrentReplicas != autoscalingRunnerSet.Status.CurrentRunners {
if err := patchSubResource(ctx, r.Status(), autoscalingRunnerSet, func(obj *v1alpha1.AutoscalingRunnerSet) {
obj.Status.CurrentRunners = latestRunnerSet.Status.CurrentReplicas
obj.Status.PendingEphemeralRunners = latestRunnerSet.Status.PendingEphemeralRunners
obj.Status.RunningEphemeralRunners = latestRunnerSet.Status.RunningEphemeralRunners
obj.Status.FailedEphemeralRunners = latestRunnerSet.Status.FailedEphemeralRunners
}); err != nil {
log.Error(err, "Failed to update autoscaling runner set status with current runner count")
return ctrl.Result{}, err
}
}
return ctrl.Result{RequeueAfter: DefaultScaleSetHealthyRequeueAfter}, nil return ctrl.Result{RequeueAfter: DefaultScaleSetHealthyRequeueAfter}, nil
} }