use of io.fabric8.kubernetes.api.model.networking.v1 in project che-server by eclipse-che.
the class ChePluginsVolumeApplier method provisionPVCPodVolume.
private io.fabric8.kubernetes.api.model.Volume provisionPVCPodVolume(Volume volume, KubernetesEnvironment.PodData pod, KubernetesEnvironment k8sEnv) {
String pvcName = volume.getName();
if (!k8sEnv.getPersistentVolumeClaims().containsKey(pvcName)) {
final PersistentVolumeClaim pvc = newPVC(pvcName, pvcAccessMode, pvcQuantity, pvcStorageClassName);
k8sEnv.getPersistentVolumeClaims().put(pvcName, pvc);
}
PodSpec podSpec = pod.getSpec();
Optional<io.fabric8.kubernetes.api.model.Volume> volumeOpt = podSpec.getVolumes().stream().filter(vm -> vm.getPersistentVolumeClaim() != null && pvcName.equals(vm.getPersistentVolumeClaim().getClaimName())).findAny();
io.fabric8.kubernetes.api.model.Volume podVolume;
if (volumeOpt.isPresent()) {
podVolume = volumeOpt.get();
} else {
podVolume = newVolume(pvcName, pvcName);
podSpec.getVolumes().add(podVolume);
}
return podVolume;
}
use of io.fabric8.kubernetes.api.model.networking.v1 in project che-server by eclipse-che.
the class K8sContainerResolver method toK8sHandler.
private io.fabric8.kubernetes.api.model.Handler toK8sHandler(Handler handler) {
if (handler == null || handler.getExec() == null) {
return null;
}
ExecAction exec = toExecAction(handler.getExec());
if (exec == null) {
return null;
}
// TODO: add 'httpGetAction' and 'tcpSocketAction' support
io.fabric8.kubernetes.api.model.Handler k8SHandler = new io.fabric8.kubernetes.api.model.Handler(exec, null, null);
return k8SHandler;
}
use of io.fabric8.kubernetes.api.model.networking.v1 in project che-server by eclipse-che.
the class PVCProvisionerTest method testMatchingUserDefinedPVCWithCheVolume.
@Test
public void testMatchingUserDefinedPVCWithCheVolume() throws Exception {
// given
k8sEnv.getPersistentVolumeClaims().put("userDataPVC", newPVC("userDataPVC"));
pod.getSpec().getVolumes().add(new VolumeBuilder().withName("userData").withPersistentVolumeClaim(new PersistentVolumeClaimVolumeSourceBuilder().withClaimName("userDataPVC").build()).build());
pod.getSpec().getContainers().get(0).getVolumeMounts().add(new VolumeMountBuilder().withName("userData").withSubPath("/home/user/data").build());
k8sEnv.getMachines().values().forEach(m -> m.getVolumes().clear());
k8sEnv.getMachines().get(MACHINE_2_NAME).getVolumes().put("userDataPVC", new VolumeImpl().withPath("/"));
// when
provisioner.convertCheVolumes(k8sEnv, WORKSPACE_ID);
// then
assertEquals(k8sEnv.getPersistentVolumeClaims().size(), 1);
PersistentVolumeClaim pvcForUserData = findPvc("userDataPVC", k8sEnv.getPersistentVolumeClaims());
assertNotNull(pvcForUserData);
assertEquals("userDataPVC", pvcForUserData.getMetadata().getName());
PodSpec podSpec = k8sEnv.getPodsData().get(POD_1_NAME).getSpec();
io.fabric8.kubernetes.api.model.Volume userPodVolume = podSpec.getVolumes().get(0);
assertEquals(userPodVolume.getPersistentVolumeClaim().getClaimName(), pvcForUserData.getMetadata().getName());
assertEquals(podSpec.getVolumes().get(0).getPersistentVolumeClaim().getClaimName(), pvcForUserData.getMetadata().getName());
// check container bound to user-defined PVC
Container container1 = podSpec.getContainers().get(0);
assertEquals(container1.getVolumeMounts().size(), 1);
VolumeMount volumeMount = container1.getVolumeMounts().get(0);
assertEquals(volumeMount.getName(), userPodVolume.getName());
// check container that is bound to Che Volume via Machine configuration
Container container2 = podSpec.getContainers().get(1);
VolumeMount cheVolumeMount2 = container2.getVolumeMounts().get(0);
assertEquals(cheVolumeMount2.getName(), userPodVolume.getName());
}
use of io.fabric8.kubernetes.api.model.networking.v1 in project che-server by eclipse-che.
the class SubPathPrefixesTest method shouldPrefixVolumeMountsSubpathsAndUseVolumeNameStoredInLabels.
@Test
public void shouldPrefixVolumeMountsSubpathsAndUseVolumeNameStoredInLabels() {
// given
String volumeName = "userDataVolume";
pvc.getMetadata().getLabels().put(CHE_VOLUME_NAME_LABEL, volumeName);
// when
subpathPrefixes.prefixVolumeMountsSubpaths(k8sEnv, WORKSPACE_ID);
// then
PodSpec podSpec = k8sEnv.getPodsData().get(POD_1_NAME).getSpec();
io.fabric8.kubernetes.api.model.Volume userPodVolume = podSpec.getVolumes().get(0);
assertEquals(userPodVolume.getPersistentVolumeClaim().getClaimName(), USER_DATA_PVC_NAME);
assertEquals(podSpec.getVolumes().get(0).getPersistentVolumeClaim().getClaimName(), USER_DATA_PVC_NAME);
Container initContainer = podSpec.getInitContainers().get(0);
VolumeMount initVolumeMount = initContainer.getVolumeMounts().get(0);
assertEquals(initVolumeMount.getSubPath(), WORKSPACE_ID + "/" + volumeName + "/tmp/init/userData");
assertEquals(initVolumeMount.getName(), userPodVolume.getName());
Container container = podSpec.getContainers().get(0);
VolumeMount volumeMount = container.getVolumeMounts().get(0);
assertEquals(volumeMount.getSubPath(), WORKSPACE_ID + "/" + volumeName + "/home/user/data");
assertEquals(volumeMount.getName(), userPodVolume.getName());
}
use of io.fabric8.kubernetes.api.model.networking.v1 in project devspaces-images by redhat-developer.
the class PVCProvisionerTest method testMatchingUserDefinedPVCWithCheVolume.
@Test
public void testMatchingUserDefinedPVCWithCheVolume() throws Exception {
// given
k8sEnv.getPersistentVolumeClaims().put("userDataPVC", newPVC("userDataPVC"));
pod.getSpec().getVolumes().add(new VolumeBuilder().withName("userData").withPersistentVolumeClaim(new PersistentVolumeClaimVolumeSourceBuilder().withClaimName("userDataPVC").build()).build());
pod.getSpec().getContainers().get(0).getVolumeMounts().add(new VolumeMountBuilder().withName("userData").withSubPath("/home/user/data").build());
k8sEnv.getMachines().values().forEach(m -> m.getVolumes().clear());
k8sEnv.getMachines().get(MACHINE_2_NAME).getVolumes().put("userDataPVC", new VolumeImpl().withPath("/"));
// when
provisioner.convertCheVolumes(k8sEnv, WORKSPACE_ID);
// then
assertEquals(k8sEnv.getPersistentVolumeClaims().size(), 1);
PersistentVolumeClaim pvcForUserData = findPvc("userDataPVC", k8sEnv.getPersistentVolumeClaims());
assertNotNull(pvcForUserData);
assertEquals("userDataPVC", pvcForUserData.getMetadata().getName());
PodSpec podSpec = k8sEnv.getPodsData().get(POD_1_NAME).getSpec();
io.fabric8.kubernetes.api.model.Volume userPodVolume = podSpec.getVolumes().get(0);
assertEquals(userPodVolume.getPersistentVolumeClaim().getClaimName(), pvcForUserData.getMetadata().getName());
assertEquals(podSpec.getVolumes().get(0).getPersistentVolumeClaim().getClaimName(), pvcForUserData.getMetadata().getName());
// check container bound to user-defined PVC
Container container1 = podSpec.getContainers().get(0);
assertEquals(container1.getVolumeMounts().size(), 1);
VolumeMount volumeMount = container1.getVolumeMounts().get(0);
assertEquals(volumeMount.getName(), userPodVolume.getName());
// check container that is bound to Che Volume via Machine configuration
Container container2 = podSpec.getContainers().get(1);
VolumeMount cheVolumeMount2 = container2.getVolumeMounts().get(0);
assertEquals(cheVolumeMount2.getName(), userPodVolume.getName());
}
Aggregations