func SetClusterSpecForPod()

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
}