in kubernetes/controllers/pod.go [91:127]
func SetClusterSpecForPod(job interface{}, podTemplate *corev1.PodTemplateSpec) error {
elasticJob, ok := job.(*v1alpha1.ElasticJob)
if !ok {
return fmt.Errorf("%+v is not a type of ElasticJob", elasticJob)
}
desiredReplicas, err := computeDesiredReplicas(elasticJob)
if err != nil {
return err
}
// Set default value if minReplicas and maxReplicas are not set
var minReplicas, maxReplicas int32
if elasticJob.Spec.MinReplicas != nil {
minReplicas = *elasticJob.Spec.MinReplicas
} else {
minReplicas = desiredReplicas
}
if elasticJob.Spec.MaxReplicas != nil {
maxReplicas = *elasticJob.Spec.MaxReplicas
} else {
maxReplicas = desiredReplicas
}
launchDefaultArgs := []string{
"--rdzv_backend=etcd",
"--rdzv_endpoint=" + elasticJob.Spec.RdzvEndpoint,
"--rdzv_id=" + elasticJob.Name,
"--nnodes=" + strconv.Itoa(int(minReplicas)) + ":" + strconv.Itoa(int(maxReplicas))}
for i := range podTemplate.Spec.Containers {
podTemplate.Spec.Containers[i].Args = append(launchDefaultArgs, podTemplate.Spec.Containers[i].Args...)
}
return nil
}