use of org.eclipse.che.workspace.infrastructure.kubernetes.environment.KubernetesEnvironment.PodData in project che-server by eclipse-che.
the class PodMergerTest method shouldFailServiceAccountDiffersInPods.
@Test(expectedExceptions = ValidationException.class)
public void shouldFailServiceAccountDiffersInPods() throws Exception {
// given
PodSpec podSpec1 = new PodSpecBuilder().withServiceAccount("sa").build();
podSpec1.setAdditionalProperty("add1", 1L);
PodData podData1 = new PodData(podSpec1, new ObjectMetaBuilder().build());
PodSpec podSpec2 = new PodSpecBuilder().withServiceAccount("sb").build();
podSpec2.setAdditionalProperty("add2", 2L);
PodData podData2 = new PodData(podSpec2, new ObjectMetaBuilder().build());
// when
Deployment merged = podMerger.merge(Arrays.asList(podData1, podData2));
// then
// exception is thrown
}
use of org.eclipse.che.workspace.infrastructure.kubernetes.environment.KubernetesEnvironment.PodData in project che-server by eclipse-che.
the class PodMergerTest method shouldMatchMergedPodTemplateLabelsWithDeploymentSelector.
@Test
public void shouldMatchMergedPodTemplateLabelsWithDeploymentSelector() throws Exception {
// given
ObjectMeta podMeta1 = new ObjectMetaBuilder().withName("ignored-1").withAnnotations(ImmutableMap.of("ann1", "v1")).withLabels(ImmutableMap.of("label1", "v1")).build();
podMeta1.setAdditionalProperty("add1", 1L);
PodData podData1 = new PodData(new PodSpecBuilder().build(), podMeta1);
// when
Deployment merged = podMerger.merge(Collections.singletonList(podData1));
// then
PodTemplateSpec podTemplate = merged.getSpec().getTemplate();
ObjectMeta podMeta = podTemplate.getMetadata();
Map<String, String> deploymentSelector = merged.getSpec().getSelector().getMatchLabels();
assertTrue(podMeta.getLabels().entrySet().containsAll(deploymentSelector.entrySet()));
}
use of org.eclipse.che.workspace.infrastructure.kubernetes.environment.KubernetesEnvironment.PodData in project che-server by eclipse-che.
the class PodMergerTest method shouldGenerateInitContainerNamesIfCollisionHappened.
@Test
public void shouldGenerateInitContainerNamesIfCollisionHappened() throws Exception {
// given
PodSpec podSpec1 = new PodSpecBuilder().withInitContainers(new ContainerBuilder().withName("initC").build()).build();
PodData podData1 = new PodData(podSpec1, new ObjectMetaBuilder().build());
PodSpec podSpec2 = new PodSpecBuilder().withInitContainers(new ContainerBuilder().withName("initC").build()).build();
PodData podData2 = new PodData(podSpec2, new ObjectMetaBuilder().build());
// when
Deployment merged = podMerger.merge(Arrays.asList(podData1, podData2));
// then
PodTemplateSpec podTemplate = merged.getSpec().getTemplate();
List<Container> initContainers = podTemplate.getSpec().getInitContainers();
assertEquals(initContainers.size(), 2);
Container container1 = initContainers.get(0);
assertEquals(container1.getName(), "initC");
Container container2 = initContainers.get(1);
assertNotEquals(container2.getName(), "initC");
assertTrue(container2.getName().startsWith("initC"));
}
use of org.eclipse.che.workspace.infrastructure.kubernetes.environment.KubernetesEnvironment.PodData in project che-server by eclipse-che.
the class PodMergerTest method shouldMergeSpecsOfPodsData.
@Test
public void shouldMergeSpecsOfPodsData() throws Exception {
// given
PodSpec podSpec1 = new PodSpecBuilder().withContainers(new ContainerBuilder().withName("c1").build()).withInitContainers(new ContainerBuilder().withName("initC1").build()).withVolumes(new VolumeBuilder().withName("v1").build()).withNodeSelector(Map.of("foo1", "bar1")).withImagePullSecrets(new LocalObjectReferenceBuilder().withName("secret1").build()).withTolerations(new Toleration("Effect", "key", "operator", 0L, "value1")).build();
podSpec1.setAdditionalProperty("add1", 1L);
PodData podData1 = new PodData(podSpec1, new ObjectMetaBuilder().build());
PodSpec podSpec2 = new PodSpecBuilder().withContainers(new ContainerBuilder().withName("c2").build()).withInitContainers(new ContainerBuilder().withName("initC2").build()).withVolumes(new VolumeBuilder().withName("v2").build()).withNodeSelector(Map.of("foo2", "bar2")).withImagePullSecrets(new LocalObjectReferenceBuilder().withName("secret2").build()).withTolerations(new Toleration("Effect", "key", "operator", 0L, "value1"), new Toleration("Effect", "key", "operator", 0L, "value2")).build();
podSpec2.setAdditionalProperty("add2", 2L);
PodData podData2 = new PodData(podSpec2, new ObjectMetaBuilder().build());
// when
Deployment merged = podMerger.merge(Arrays.asList(podData1, podData2));
// then
PodTemplateSpec podTemplate = merged.getSpec().getTemplate();
verifyContainsAllFrom(podTemplate.getSpec(), podData1.getSpec());
verifyContainsAllFrom(podTemplate.getSpec(), podData2.getSpec());
}
use of org.eclipse.che.workspace.infrastructure.kubernetes.environment.KubernetesEnvironment.PodData in project che-server by eclipse-che.
the class PodMergerTest method shouldNotAddImagePullPolicyTwice.
@Test
public void shouldNotAddImagePullPolicyTwice() throws Exception {
// given
PodSpec podSpec1 = new PodSpecBuilder().withImagePullSecrets(new LocalObjectReferenceBuilder().withName("secret").build()).build();
podSpec1.setAdditionalProperty("add1", 1L);
PodData podData1 = new PodData(podSpec1, new ObjectMetaBuilder().build());
PodSpec podSpec2 = new PodSpecBuilder().withImagePullSecrets(new LocalObjectReferenceBuilder().withName("secret").build()).build();
podSpec2.setAdditionalProperty("add2", 2L);
PodData podData2 = new PodData(podSpec2, new ObjectMetaBuilder().build());
// when
Deployment merged = podMerger.merge(Arrays.asList(podData1, podData2));
// then
PodTemplateSpec podTemplate = merged.getSpec().getTemplate();
List<LocalObjectReference> imagePullSecrets = podTemplate.getSpec().getImagePullSecrets();
assertEquals(imagePullSecrets.size(), 1);
assertEquals(imagePullSecrets.get(0).getName(), "secret");
}
Aggregations