in pkg/scheduler/scheduler.go [336:373]
func (s *Scheduler) admit(ctx context.Context, e *entry) error {
log := ctrl.LoggerFrom(ctx)
newWorkload := e.Obj.DeepCopy()
admission := &kueue.Admission{
ClusterQueue: kueue.ClusterQueueReference(e.ClusterQueue),
PodSetAssignments: e.assignment.ToAPI(),
}
workload.SetAdmission(newWorkload, admission)
if err := s.cache.AssumeWorkload(newWorkload); err != nil {
return err
}
e.status = assumed
log.V(2).Info("Workload assumed in the cache")
s.admissionRoutineWrapper.Run(func() {
err := s.applyAdmission(ctx, newWorkload)
if err == nil {
waitTime := time.Since(e.Obj.CreationTimestamp.Time)
s.recorder.Eventf(newWorkload, corev1.EventTypeNormal, "Admitted", "Admitted by ClusterQueue %v, wait time was %.0fs", admission.ClusterQueue, waitTime.Seconds())
metrics.AdmittedWorkload(admission.ClusterQueue, waitTime)
log.V(2).Info("Workload successfully admitted and assigned flavors")
return
}
// Ignore errors because the workload or clusterQueue could have been deleted
// by an event.
_ = s.cache.ForgetWorkload(newWorkload)
if errors.IsNotFound(err) {
log.V(2).Info("Workload not admitted because it was deleted")
return
}
log.Error(err, errCouldNotAdmitWL)
s.requeueAndUpdate(log, ctx, *e)
})
return nil
}