use of io.kubernetes.client.openapi.models.V1Volume in project twister2 by DSC-SPIDAL.
the class RequestObjectBuilder method constructPodTemplate.
/**
* construct pod template
*/
public static V1PodTemplateSpec constructPodTemplate(ComputeResource computeResource) {
V1PodTemplateSpec template = new V1PodTemplateSpec();
V1ObjectMeta templateMetaData = new V1ObjectMeta();
HashMap<String, String> labels = KubernetesUtils.createJobLabels(jobID);
// worker pod
labels.put("t2-wp", jobID);
templateMetaData.setLabels(labels);
template.setMetadata(templateMetaData);
V1PodSpec podSpec = new V1PodSpec();
podSpec.setTerminationGracePeriodSeconds(0L);
ArrayList<V1Volume> volumes = new ArrayList<>();
V1Volume memoryVolume = new V1Volume();
memoryVolume.setName(KubernetesConstants.POD_MEMORY_VOLUME_NAME);
V1EmptyDirVolumeSource volumeSource1 = new V1EmptyDirVolumeSource();
volumeSource1.setMedium("Memory");
memoryVolume.setEmptyDir(volumeSource1);
volumes.add(memoryVolume);
// create it if the requested disk space is positive
if (computeResource.getDiskGigaBytes() > 0) {
double volumeSize = computeResource.getDiskGigaBytes() * computeResource.getWorkersPerPod();
V1Volume volatileVolume = createVolatileVolume(volumeSize);
volumes.add(volatileVolume);
}
if (SchedulerContext.persistentVolumeRequested(config)) {
String claimName = jobID;
V1Volume persistentVolume = createPersistentVolume(claimName);
volumes.add(persistentVolume);
}
// if openmpi is used, we initialize a Secret volume on each pod
if (SchedulerContext.usingOpenMPI(config)) {
String secretName = KubernetesContext.secretName(config);
V1Volume secretVolume = createSecretVolume(secretName);
volumes.add(secretVolume);
}
podSpec.setVolumes(volumes);
int containersPerPod = computeResource.getWorkersPerPod();
// if openmpi is used, we initialize only one container for each pod
if (SchedulerContext.usingOpenMPI(config)) {
containersPerPod = 1;
}
ArrayList<V1Container> containers = new ArrayList<V1Container>();
for (int i = 0; i < containersPerPod; i++) {
containers.add(constructContainer(computeResource, i));
}
podSpec.setContainers(containers);
if (computeResource.getIndex() == 0) {
constructAffinity(podSpec);
}
template.setSpec(podSpec);
return template;
}
Aggregations