in pkg/controller/core/clusterqueue_controller.go [359:387]
func (r *ClusterQueueReconciler) updateCqStatusIfChanged(
ctx context.Context,
cq *kueue.ClusterQueue,
conditionStatus metav1.ConditionStatus,
reason, msg string,
) error {
oldStatus := cq.Status.DeepCopy()
pendingWorkloads := r.qManager.Pending(cq)
usage, workloads, err := r.cache.Usage(cq)
if err != nil {
r.log.Error(err, "Failed getting usage from cache")
// This is likely because the cluster queue was recently removed,
// but we didn't process that event yet.
return err
}
cq.Status.FlavorsUsage = usage
cq.Status.AdmittedWorkloads = int32(workloads)
cq.Status.PendingWorkloads = int32(pendingWorkloads)
meta.SetStatusCondition(&cq.Status.Conditions, metav1.Condition{
Type: kueue.ClusterQueueActive,
Status: conditionStatus,
Reason: reason,
Message: msg,
})
if !equality.Semantic.DeepEqual(cq.Status, oldStatus) {
return r.client.Status().Update(ctx, cq)
}
return nil
}