in pkg/controller/jobs/mpijob/mpijob_controller.go [126:147]
func (j *MPIJob) RunWithNodeAffinity(nodeSelectors []jobframework.PodSetNodeSelector) {
j.Spec.RunPolicy.Suspend = pointer.Bool(false)
if len(nodeSelectors) == 0 {
return
}
// The node selectors are provided in the same order as the generated list of
// podSets, use the same ordering logic to restore them.
orderedReplicaTypes := orderedReplicaTypes(&j.Spec)
for index := range nodeSelectors {
replicaType := orderedReplicaTypes[index]
nodeSelector := nodeSelectors[index]
if len(nodeSelector.NodeSelector) != 0 {
if j.Spec.MPIReplicaSpecs[replicaType].Template.Spec.NodeSelector == nil {
j.Spec.MPIReplicaSpecs[replicaType].Template.Spec.NodeSelector = nodeSelector.NodeSelector
} else {
for k, v := range nodeSelector.NodeSelector {
j.Spec.MPIReplicaSpecs[replicaType].Template.Spec.NodeSelector[k] = v
}
}
}
}
}