Search in sources :

Example 1 with Merge

use of org.csanchez.jenkins.plugins.kubernetes.pod.yaml.Merge in project kubernetes-plugin by jenkinsci.

the class PodTemplateBuilderTest method yamlOverrideSecurityContext.

@Test
public void yamlOverrideSecurityContext() {
    PodTemplate parent = new PodTemplate();
    parent.setYaml("apiVersion: v1\n" + "kind: Pod\n" + "metadata:\n" + "  labels:\n" + "    some-label: some-label-value\n" + "spec:\n" + "  securityContext:\n" + "    runAsUser: 2000\n" + "    runAsGroup: 2000\n" + "  containers:\n" + "  - name: container\n" + "    securityContext:\n" + "      runAsUser: 1000\n" + "      runAsGroup: 1000\n" + "    image: busybox\n" + "    command:\n" + "    - cat\n" + "    tty: true\n");
    PodTemplate child = new PodTemplate();
    child.setYaml("spec:\n" + "  securityContext:\n" + "    runAsUser: 3000\n" + "    runAsGroup: 3000\n" + "  containers:\n" + "  - name: container\n" + "    image: busybox2\n" + "    securityContext:\n" + "      runAsUser: 2000\n" + "      runAsGroup: 2000\n" + "    command:\n" + "    - cat\n" + "    tty: true\n");
    child.setInheritFrom("parent");
    child.setYamlMergeStrategy(merge());
    setupStubs();
    PodTemplate result = combine(parent, child);
    Pod pod = new PodTemplateBuilder(result, slave).build();
    assertThat(pod.getSpec().getContainers(), hasSize(2));
    Optional<Container> container = pod.getSpec().getContainers().stream().filter(c -> "container".equals(c.getName())).findFirst();
    assertTrue(container.isPresent());
    assertEquals(Long.valueOf(3000L), pod.getSpec().getSecurityContext().getRunAsUser());
    assertEquals(Long.valueOf(3000L), pod.getSpec().getSecurityContext().getRunAsGroup());
    assertEquals(Long.valueOf(2000L), container.get().getSecurityContext().getRunAsUser());
    assertEquals(Long.valueOf(2000L), container.get().getSecurityContext().getRunAsGroup());
}
Also used : Quantity(io.fabric8.kubernetes.api.model.Quantity) VolumeMount(io.fabric8.kubernetes.api.model.VolumeMount) PodSecurityContext(io.fabric8.kubernetes.api.model.PodSecurityContext) Arrays(java.util.Arrays) Issue(org.jvnet.hudson.test.Issue) ConfigMapVolume(org.csanchez.jenkins.plugins.kubernetes.volumes.ConfigMapVolume) YamlMergeStrategy(org.csanchez.jenkins.plugins.kubernetes.pod.yaml.YamlMergeStrategy) KeyValueEnvVar(org.csanchez.jenkins.plugins.kubernetes.model.KeyValueEnvVar) FlagRule(org.jvnet.hudson.test.FlagRule) DynamicPVCWorkspaceVolume(org.csanchez.jenkins.plugins.kubernetes.volumes.workspace.DynamicPVCWorkspaceVolume) ResourceRequirements(io.fabric8.kubernetes.api.model.ResourceRequirements) VolumeMountBuilder(io.fabric8.kubernetes.api.model.VolumeMountBuilder) Map(java.util.Map) Spy(org.mockito.Spy) JUnitParamsRunner(junitparams.JUnitParamsRunner) PodTemplateUtils(org.csanchez.jenkins.plugins.kubernetes.PodTemplateUtils) Jenkins(jenkins.model.Jenkins) WithoutJenkins(org.jvnet.hudson.test.WithoutJenkins) HostPathVolume(org.csanchez.jenkins.plugins.kubernetes.volumes.HostPathVolume) Logger(java.util.logging.Logger) Collectors(java.util.stream.Collectors) List(java.util.List) PodTemplateBuilder(org.csanchez.jenkins.plugins.kubernetes.PodTemplateBuilder) Optional(java.util.Optional) EmptyDirVolume(org.csanchez.jenkins.plugins.kubernetes.volumes.EmptyDirVolume) Parameters(junitparams.Parameters) EnvVar(io.fabric8.kubernetes.api.model.EnvVar) Container(io.fabric8.kubernetes.api.model.Container) Mock(org.mockito.Mock) RunWith(org.junit.runner.RunWith) Function(java.util.function.Function) ArrayList(java.util.ArrayList) Level(java.util.logging.Level) Merge(org.csanchez.jenkins.plugins.kubernetes.pod.yaml.Merge) LoggerRule(org.jvnet.hudson.test.LoggerRule) EmptyDirWorkspaceVolume(org.csanchez.jenkins.plugins.kubernetes.volumes.workspace.EmptyDirWorkspaceVolume) MockitoJUnit(org.mockito.junit.MockitoJUnit) MatcherAssert.assertThat(org.hamcrest.MatcherAssert.assertThat) TestCaseName(junitparams.naming.TestCaseName) Before(org.junit.Before) Volume(io.fabric8.kubernetes.api.model.Volume) PodVolume(org.csanchez.jenkins.plugins.kubernetes.volumes.PodVolume) Assert.assertNotNull(org.junit.Assert.assertNotNull) Matchers(org.hamcrest.Matchers) Assert.assertTrue(org.junit.Assert.assertTrue) IOUtils(org.apache.commons.compress.utils.IOUtils) Pod(io.fabric8.kubernetes.api.model.Pod) IOException(java.io.IOException) Test(org.junit.Test) Mockito(org.mockito.Mockito) TemplateEnvVar(org.csanchez.jenkins.plugins.kubernetes.model.TemplateEnvVar) Collectors.toList(java.util.stream.Collectors.toList) Assert.assertNull(org.junit.Assert.assertNull) Rule(org.junit.Rule) Matcher(org.hamcrest.Matcher) MockitoRule(org.mockito.junit.MockitoRule) JenkinsRule(org.jvnet.hudson.test.JenkinsRule) Collections(java.util.Collections) Assert.assertEquals(org.junit.Assert.assertEquals) PodTemplateBuilder(org.csanchez.jenkins.plugins.kubernetes.PodTemplateBuilder) Container(io.fabric8.kubernetes.api.model.Container) Pod(io.fabric8.kubernetes.api.model.Pod) Test(org.junit.Test)

Example 2 with Merge

use of org.csanchez.jenkins.plugins.kubernetes.pod.yaml.Merge in project kubernetes-plugin by jenkinsci.

the class PodTemplateBuilderTest method yamlOverrideContainer.

@Test
public void yamlOverrideContainer() 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: container\n" + "    image: busybox\n" + "    command:\n" + "    - cat\n" + "    tty: true\n");
    PodTemplate child = new PodTemplate();
    child.setYaml("spec:\n" + "  containers:\n" + "  - name: container\n" + "    image: busybox2\n" + "    command:\n" + "    - cat\n" + "    tty: true\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().getContainers(), hasSize(2));
    Optional<Container> container = pod.getSpec().getContainers().stream().filter(c -> "container".equals(c.getName())).findFirst();
    assertTrue(container.isPresent());
    assertEquals("busybox2", container.get().getImage());
}
Also used : Quantity(io.fabric8.kubernetes.api.model.Quantity) VolumeMount(io.fabric8.kubernetes.api.model.VolumeMount) PodSecurityContext(io.fabric8.kubernetes.api.model.PodSecurityContext) Arrays(java.util.Arrays) Issue(org.jvnet.hudson.test.Issue) ConfigMapVolume(org.csanchez.jenkins.plugins.kubernetes.volumes.ConfigMapVolume) YamlMergeStrategy(org.csanchez.jenkins.plugins.kubernetes.pod.yaml.YamlMergeStrategy) KeyValueEnvVar(org.csanchez.jenkins.plugins.kubernetes.model.KeyValueEnvVar) FlagRule(org.jvnet.hudson.test.FlagRule) DynamicPVCWorkspaceVolume(org.csanchez.jenkins.plugins.kubernetes.volumes.workspace.DynamicPVCWorkspaceVolume) ResourceRequirements(io.fabric8.kubernetes.api.model.ResourceRequirements) VolumeMountBuilder(io.fabric8.kubernetes.api.model.VolumeMountBuilder) Map(java.util.Map) Spy(org.mockito.Spy) JUnitParamsRunner(junitparams.JUnitParamsRunner) PodTemplateUtils(org.csanchez.jenkins.plugins.kubernetes.PodTemplateUtils) Jenkins(jenkins.model.Jenkins) WithoutJenkins(org.jvnet.hudson.test.WithoutJenkins) HostPathVolume(org.csanchez.jenkins.plugins.kubernetes.volumes.HostPathVolume) Logger(java.util.logging.Logger) Collectors(java.util.stream.Collectors) List(java.util.List) PodTemplateBuilder(org.csanchez.jenkins.plugins.kubernetes.PodTemplateBuilder) Optional(java.util.Optional) EmptyDirVolume(org.csanchez.jenkins.plugins.kubernetes.volumes.EmptyDirVolume) Parameters(junitparams.Parameters) EnvVar(io.fabric8.kubernetes.api.model.EnvVar) Container(io.fabric8.kubernetes.api.model.Container) Mock(org.mockito.Mock) RunWith(org.junit.runner.RunWith) Function(java.util.function.Function) ArrayList(java.util.ArrayList) Level(java.util.logging.Level) Merge(org.csanchez.jenkins.plugins.kubernetes.pod.yaml.Merge) LoggerRule(org.jvnet.hudson.test.LoggerRule) EmptyDirWorkspaceVolume(org.csanchez.jenkins.plugins.kubernetes.volumes.workspace.EmptyDirWorkspaceVolume) MockitoJUnit(org.mockito.junit.MockitoJUnit) MatcherAssert.assertThat(org.hamcrest.MatcherAssert.assertThat) TestCaseName(junitparams.naming.TestCaseName) Before(org.junit.Before) Volume(io.fabric8.kubernetes.api.model.Volume) PodVolume(org.csanchez.jenkins.plugins.kubernetes.volumes.PodVolume) Assert.assertNotNull(org.junit.Assert.assertNotNull) Matchers(org.hamcrest.Matchers) Assert.assertTrue(org.junit.Assert.assertTrue) IOUtils(org.apache.commons.compress.utils.IOUtils) Pod(io.fabric8.kubernetes.api.model.Pod) IOException(java.io.IOException) Test(org.junit.Test) Mockito(org.mockito.Mockito) TemplateEnvVar(org.csanchez.jenkins.plugins.kubernetes.model.TemplateEnvVar) Collectors.toList(java.util.stream.Collectors.toList) Assert.assertNull(org.junit.Assert.assertNull) Rule(org.junit.Rule) Matcher(org.hamcrest.Matcher) MockitoRule(org.mockito.junit.MockitoRule) JenkinsRule(org.jvnet.hudson.test.JenkinsRule) Collections(java.util.Collections) Assert.assertEquals(org.junit.Assert.assertEquals) PodTemplateBuilder(org.csanchez.jenkins.plugins.kubernetes.PodTemplateBuilder) Container(io.fabric8.kubernetes.api.model.Container) Pod(io.fabric8.kubernetes.api.model.Pod) Test(org.junit.Test)

Example 3 with Merge

use of org.csanchez.jenkins.plugins.kubernetes.pod.yaml.Merge in project kubernetes-plugin by jenkinsci.

the class KubernetesDeclarativeAgentUnitTest method serialization.

@Test
public void serialization() throws Exception {
    instance.setCloud("cloud");
    instance.setLabel("label");
    instance.setYaml("yaml");
    instance.setYamlMergeStrategy(new Merge());
    DynamicPVCWorkspaceVolume workspaceVolume = new DynamicPVCWorkspaceVolume();
    workspaceVolume.setStorageClassName("sc");
    workspaceVolume.setRequestsSize("1G");
    workspaceVolume.setAccessModes("ReadWrite");
    instance.setWorkspaceVolume(workspaceVolume);
    instance.setIdleMinutes(1);
    instance.setInheritFrom("inheritFrom");
    Map<String, Object> args = instance.getAsArgs();
    assertThat(args.get("cloud"), equalTo("cloud"));
    assertThat(args.get("label"), equalTo("label"));
    assertThat(args.get("yaml"), equalTo("yaml"));
    assertThat(args.get("yamlMergeStrategy"), isA(Merge.class));
    assertThat(args.get("workspaceVolume"), equalTo(workspaceVolume));
    assertThat(args.get("idleMinutes"), equalTo(1));
    assertThat(args.get("inheritFrom"), equalTo("inheritFrom"));
}
Also used : DynamicPVCWorkspaceVolume(org.csanchez.jenkins.plugins.kubernetes.volumes.workspace.DynamicPVCWorkspaceVolume) Merge(org.csanchez.jenkins.plugins.kubernetes.pod.yaml.Merge) Test(org.junit.Test)

Example 4 with Merge

use of org.csanchez.jenkins.plugins.kubernetes.pod.yaml.Merge in project kubernetes-plugin by jenkinsci.

the class KubernetesDeclarativeAgentUnitTest method complexGenerator.

@Test
public void complexGenerator() throws Exception {
    instance.setCloud("cloud");
    instance.setYaml("yaml");
    instance.setYamlMergeStrategy(new Merge());
    DynamicPVCWorkspaceVolume workspaceVolume = new DynamicPVCWorkspaceVolume();
    workspaceVolume.setStorageClassName("sc");
    workspaceVolume.setRequestsSize("1G");
    workspaceVolume.setAccessModes("ReadWrite");
    instance.setWorkspaceVolume(workspaceVolume);
    instance.setPodRetention(new Never());
    instance.setInheritFrom("inheritFrom");
    dg.assertGenerateDirective(directive, "agent {\n" + "  kubernetes {\n" + "    cloud 'cloud'\n" + "    inheritFrom 'inheritFrom'\n" + "    podRetention never()\n" + "    workspaceVolume dynamicPVC(accessModes: 'ReadWrite', requestsSize: '1G', storageClassName: 'sc')\n" + "    yaml 'yaml'\n" + "    yamlMergeStrategy merge()\n" + "  }\n" + "}");
}
Also used : DynamicPVCWorkspaceVolume(org.csanchez.jenkins.plugins.kubernetes.volumes.workspace.DynamicPVCWorkspaceVolume) Merge(org.csanchez.jenkins.plugins.kubernetes.pod.yaml.Merge) Never(org.csanchez.jenkins.plugins.kubernetes.pod.retention.Never) Test(org.junit.Test)

Example 5 with Merge

use of org.csanchez.jenkins.plugins.kubernetes.pod.yaml.Merge in project kubernetes-plugin by jenkinsci.

the class PodTemplateBuilderTest method yamlMergeContainers.

@Test
public void yamlMergeContainers() 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: container1\n" + "    image: busybox\n" + "    command:\n" + "    - cat\n" + "    tty: true\n");
    PodTemplate child = new PodTemplate();
    child.setYaml("spec:\n" + "  containers:\n" + "  - name: container2\n" + "    image: busybox\n" + "    command:\n" + "    - cat\n" + "    tty: true\n");
    child.setYamlMergeStrategy(merge());
    child.setInheritFrom("parent");
    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().getContainers(), hasSize(3));
    Optional<Container> container1 = pod.getSpec().getContainers().stream().filter(c -> "container1".equals(c.getName())).findFirst();
    assertTrue(container1.isPresent());
    Optional<Container> container2 = pod.getSpec().getContainers().stream().filter(c -> "container2".equals(c.getName())).findFirst();
    assertTrue(container2.isPresent());
}
Also used : Quantity(io.fabric8.kubernetes.api.model.Quantity) VolumeMount(io.fabric8.kubernetes.api.model.VolumeMount) PodSecurityContext(io.fabric8.kubernetes.api.model.PodSecurityContext) Arrays(java.util.Arrays) Issue(org.jvnet.hudson.test.Issue) ConfigMapVolume(org.csanchez.jenkins.plugins.kubernetes.volumes.ConfigMapVolume) YamlMergeStrategy(org.csanchez.jenkins.plugins.kubernetes.pod.yaml.YamlMergeStrategy) KeyValueEnvVar(org.csanchez.jenkins.plugins.kubernetes.model.KeyValueEnvVar) FlagRule(org.jvnet.hudson.test.FlagRule) DynamicPVCWorkspaceVolume(org.csanchez.jenkins.plugins.kubernetes.volumes.workspace.DynamicPVCWorkspaceVolume) ResourceRequirements(io.fabric8.kubernetes.api.model.ResourceRequirements) VolumeMountBuilder(io.fabric8.kubernetes.api.model.VolumeMountBuilder) Map(java.util.Map) Spy(org.mockito.Spy) JUnitParamsRunner(junitparams.JUnitParamsRunner) PodTemplateUtils(org.csanchez.jenkins.plugins.kubernetes.PodTemplateUtils) Jenkins(jenkins.model.Jenkins) WithoutJenkins(org.jvnet.hudson.test.WithoutJenkins) HostPathVolume(org.csanchez.jenkins.plugins.kubernetes.volumes.HostPathVolume) Logger(java.util.logging.Logger) Collectors(java.util.stream.Collectors) List(java.util.List) PodTemplateBuilder(org.csanchez.jenkins.plugins.kubernetes.PodTemplateBuilder) Optional(java.util.Optional) EmptyDirVolume(org.csanchez.jenkins.plugins.kubernetes.volumes.EmptyDirVolume) Parameters(junitparams.Parameters) EnvVar(io.fabric8.kubernetes.api.model.EnvVar) Container(io.fabric8.kubernetes.api.model.Container) Mock(org.mockito.Mock) RunWith(org.junit.runner.RunWith) Function(java.util.function.Function) ArrayList(java.util.ArrayList) Level(java.util.logging.Level) Merge(org.csanchez.jenkins.plugins.kubernetes.pod.yaml.Merge) LoggerRule(org.jvnet.hudson.test.LoggerRule) EmptyDirWorkspaceVolume(org.csanchez.jenkins.plugins.kubernetes.volumes.workspace.EmptyDirWorkspaceVolume) MockitoJUnit(org.mockito.junit.MockitoJUnit) MatcherAssert.assertThat(org.hamcrest.MatcherAssert.assertThat) TestCaseName(junitparams.naming.TestCaseName) Before(org.junit.Before) Volume(io.fabric8.kubernetes.api.model.Volume) PodVolume(org.csanchez.jenkins.plugins.kubernetes.volumes.PodVolume) Assert.assertNotNull(org.junit.Assert.assertNotNull) Matchers(org.hamcrest.Matchers) Assert.assertTrue(org.junit.Assert.assertTrue) IOUtils(org.apache.commons.compress.utils.IOUtils) Pod(io.fabric8.kubernetes.api.model.Pod) IOException(java.io.IOException) Test(org.junit.Test) Mockito(org.mockito.Mockito) TemplateEnvVar(org.csanchez.jenkins.plugins.kubernetes.model.TemplateEnvVar) Collectors.toList(java.util.stream.Collectors.toList) Assert.assertNull(org.junit.Assert.assertNull) Rule(org.junit.Rule) Matcher(org.hamcrest.Matcher) MockitoRule(org.mockito.junit.MockitoRule) JenkinsRule(org.jvnet.hudson.test.JenkinsRule) Collections(java.util.Collections) Assert.assertEquals(org.junit.Assert.assertEquals) PodTemplateBuilder(org.csanchez.jenkins.plugins.kubernetes.PodTemplateBuilder) Container(io.fabric8.kubernetes.api.model.Container) Pod(io.fabric8.kubernetes.api.model.Pod) Test(org.junit.Test)

Aggregations

Merge (org.csanchez.jenkins.plugins.kubernetes.pod.yaml.Merge)7 DynamicPVCWorkspaceVolume (org.csanchez.jenkins.plugins.kubernetes.volumes.workspace.DynamicPVCWorkspaceVolume)7 Test (org.junit.Test)7 Container (io.fabric8.kubernetes.api.model.Container)5 EnvVar (io.fabric8.kubernetes.api.model.EnvVar)5 Pod (io.fabric8.kubernetes.api.model.Pod)5 PodSecurityContext (io.fabric8.kubernetes.api.model.PodSecurityContext)5 Quantity (io.fabric8.kubernetes.api.model.Quantity)5 ResourceRequirements (io.fabric8.kubernetes.api.model.ResourceRequirements)5 Volume (io.fabric8.kubernetes.api.model.Volume)5 VolumeMount (io.fabric8.kubernetes.api.model.VolumeMount)5 VolumeMountBuilder (io.fabric8.kubernetes.api.model.VolumeMountBuilder)5 IOException (java.io.IOException)5 ArrayList (java.util.ArrayList)5 Arrays (java.util.Arrays)5 Collections (java.util.Collections)5 List (java.util.List)5 Map (java.util.Map)5 Optional (java.util.Optional)5 Function (java.util.function.Function)5