in pkg/controller/jobframework/reconciler.go [421:453]
func (r *JobReconciler) getNodeSelectorsFromAdmission(ctx context.Context, w *kueue.Workload) ([]PodSetNodeSelector, error) {
if len(w.Status.Admission.PodSetAssignments) == 0 {
return nil, nil
}
nodeSelectors := make([]PodSetNodeSelector, len(w.Status.Admission.PodSetAssignments))
for i, podSetFlavor := range w.Status.Admission.PodSetAssignments {
processedFlvs := sets.NewString()
nodeSelector := PodSetNodeSelector{
Name: podSetFlavor.Name,
NodeSelector: make(map[string]string),
}
for _, flvRef := range podSetFlavor.Flavors {
flvName := string(flvRef)
if processedFlvs.Has(flvName) {
continue
}
// Lookup the ResourceFlavors to fetch the node affinity labels to apply on the job.
flv := kueue.ResourceFlavor{}
if err := r.client.Get(ctx, types.NamespacedName{Name: string(flvName)}, &flv); err != nil {
return nil, err
}
for k, v := range flv.Spec.NodeLabels {
nodeSelector.NodeSelector[k] = v
}
processedFlvs.Insert(flvName)
}
nodeSelectors[i] = nodeSelector
}
return nodeSelectors, nil
}