use of org.csanchez.jenkins.plugins.kubernetes.pod.yaml.Merge in project kubernetes-plugin by jenkinsci.
the class PodTemplateBuilderTest method yamlMergeVolumes.
@Test
public void yamlMergeVolumes() throws Exception {
PodTemplate parent = new PodTemplate();
parent.setYaml("apiVersion: v1\n" + "kind: Pod\n" + "metadata:\n" + " labels:\n" + " some-label: some-label-value\n" + "spec:\n" + " volumes:\n" + " - name: host-volume\n" + " hostPath:\n" + " path: /host/data\n");
PodTemplate child = new PodTemplate();
child.setYaml("spec:\n" + " volumes:\n" + " - name: host-volume2\n" + " hostPath:\n" + " path: /host/data2\n");
child.setInheritFrom("parent");
child.setYamlMergeStrategy(merge());
setupStubs();
PodTemplate result = combine(parent, child);
Pod pod = new PodTemplateBuilder(result, slave).build();
// inherit from parent
assertEquals("some-label-value", pod.getMetadata().getLabels().get("some-label"));
assertThat(pod.getSpec().getVolumes(), hasSize(3));
Optional<Volume> hostVolume = pod.getSpec().getVolumes().stream().filter(v -> "host-volume".equals(v.getName())).findFirst();
assertTrue(hostVolume.isPresent());
// parent value
assertThat(hostVolume.get().getHostPath().getPath(), equalTo("/host/data"));
Optional<Volume> hostVolume2 = pod.getSpec().getVolumes().stream().filter(v -> "host-volume2".equals(v.getName())).findFirst();
assertTrue(hostVolume2.isPresent());
// child value
assertThat(hostVolume2.get().getHostPath().getPath(), equalTo("/host/data2"));
}
use of org.csanchez.jenkins.plugins.kubernetes.pod.yaml.Merge in project kubernetes-plugin by jenkinsci.
the class PodTemplateBuilderTest method yamlOverrideVolume.
@Test
public void yamlOverrideVolume() throws Exception {
PodTemplate parent = new PodTemplate();
parent.setYaml("apiVersion: v1\n" + "kind: Pod\n" + "metadata:\n" + " labels:\n" + " some-label: some-label-value\n" + "spec:\n" + " containers:\n" + " - name: jnlp\n" + " volumeMounts:\n" + " - name: host-volume\n" + " mountPath: /etc/config\n" + " subPath: mypath\n" + " volumes:\n" + " - name: host-volume\n" + " hostPath:\n" + " path: /host/data\n");
PodTemplate child = new PodTemplate();
child.setYaml("spec:\n" + " volumes:\n" + " - name: host-volume\n" + " hostPath:\n" + " path: /host/data2\n");
child.setContainers(Collections.singletonList(new ContainerTemplate("jnlp", "image")));
ConfigMapVolume cmVolume = new ConfigMapVolume("/etc/configmap", "my-configmap", false);
cmVolume.setSubPath("subpath");
child.setVolumes(Collections.singletonList(cmVolume));
child.setInheritFrom("parent");
child.setYamlMergeStrategy(merge());
setupStubs();
PodTemplate result = combine(parent, child);
Pod pod = new PodTemplateBuilder(result, slave).build();
// inherit from parent
assertEquals("some-label-value", pod.getMetadata().getLabels().get("some-label"));
Optional<Volume> maybeVolume = pod.getSpec().getVolumes().stream().filter(v -> "host-volume".equals(v.getName())).findFirst();
assertTrue(maybeVolume.isPresent());
// child value overrides parent value
assertThat(maybeVolume.get().getHostPath().getPath(), equalTo("/host/data2"));
assertThat(pod.getSpec().getContainers(), hasSize(1));
Container container = pod.getSpec().getContainers().get(0);
Optional<VolumeMount> maybeVolumeMount = container.getVolumeMounts().stream().filter(vm -> "host-volume".equals(vm.getName())).findFirst();
assertTrue(maybeVolumeMount.isPresent());
VolumeMount volumeMount = maybeVolumeMount.get();
assertEquals("/etc/config", volumeMount.getMountPath());
assertEquals("mypath", volumeMount.getSubPath());
Optional<VolumeMount> maybeVolumeMountCm = container.getVolumeMounts().stream().filter(vm -> "/etc/configmap".equals(vm.getMountPath())).findFirst();
assertTrue(maybeVolumeMountCm.isPresent());
VolumeMount cmVolumeMount = maybeVolumeMountCm.get();
assertEquals("subpath", cmVolumeMount.getSubPath());
}
Aggregations