private static Map<String, Quantity> combineResources(Container parent, Container template, Function<ResourceRequirements, Map<String, Quantity>> resourceTypeMapper) { return Stream.of(template.getResources(), parent.getResources()) // .filter(Objects::nonNull) // .map(resourceTypeMapper) // .filter(Objects::nonNull) // .map(Map::entrySet) // .flatMap(Collection::stream) // .collect(Collectors.toMap(Map.Entry::getKey, Map.Entry::getValue, (v1, v2) -> v1) // v2 (parent) loses ); }
private void validateJnlpContainer(Container jnlp, KubernetesSlave slave) { assertEquals("Wrong number of volume mounts: " + jnlp.getVolumeMounts(), 1, jnlp.getVolumeMounts().size()); assertThat(jnlp.getCommand(), empty()); List<EnvVar> envVars = Lists.newArrayList( // new EnvVar("HOME", "/home/jenkins", null) // ); if (slave != null) { assertThat(jnlp.getArgs(), empty()); envVars.add(new EnvVar("JENKINS_URL", JENKINS_URL, null)); envVars.add(new EnvVar("JENKINS_SECRET", AGENT_SECRET, null)); envVars.add(new EnvVar("JENKINS_NAME", AGENT_NAME, null)); } else { assertThat(jnlp.getArgs(), empty()); } assertThat(jnlp.getEnv(), containsInAnyOrder(envVars.toArray(new EnvVar[envVars.size()]))); if (jnlp.getResources() != null) { if (jnlp.getResources().getRequests() != null) { assertFalse(jnlp.getResources().getRequests().containsValue(new Quantity(""))); } if (jnlp.getResources().getLimits() != null) { assertFalse(jnlp.getResources().getLimits().containsValue(new Quantity(""))); } } }
@Test public void testBuildFromYaml() throws Exception { PodTemplate template = new PodTemplate(); template.setYaml(new String(IOUtils.toByteArray(getClass().getResourceAsStream("pod-busybox.yaml")))); setupStubs(); Pod pod = new PodTemplateBuilder(template).withSlave(slave).build(); validatePod(pod); assertThat(pod.getMetadata().getLabels(), hasEntry("jenkins", "slave")); Map<String, Container> containers = pod.getSpec().getContainers().stream() .collect(Collectors.toMap(Container::getName, Function.identity())); assertEquals(2, containers.size()); Container container0 = containers.get("busybox"); assertNotNull(container0.getResources()); assertNotNull(container0.getResources().getRequests()); assertNotNull(container0.getResources().getLimits()); assertThat(container0.getResources().getRequests(), hasEntry("example.com/dongle", new Quantity("42"))); assertThat(container0.getResources().getLimits(), hasEntry("example.com/dongle", new Quantity("42"))); }
public ContainerBuilder( ContainerFluent<?> fluent , Container instance ){ this.fluent = fluent; fluent.withArgs(instance.getArgs()); fluent.withCommand(instance.getCommand()); fluent.withEnv(instance.getEnv()); fluent.withImage(instance.getImage()); fluent.withImagePullPolicy(instance.getImagePullPolicy()); fluent.withLifecycle(instance.getLifecycle()); fluent.withLivenessProbe(instance.getLivenessProbe()); fluent.withName(instance.getName()); fluent.withPorts(instance.getPorts()); fluent.withReadinessProbe(instance.getReadinessProbe()); fluent.withResources(instance.getResources()); fluent.withSecurityContext(instance.getSecurityContext()); fluent.withTerminationMessagePath(instance.getTerminationMessagePath()); fluent.withVolumeMounts(instance.getVolumeMounts()); fluent.withWorkingDir(instance.getWorkingDir()); } public ContainerBuilder( Container instance ){
public ContainerBuilder( Container instance ){ this.fluent = this; this.withArgs(instance.getArgs()); this.withCommand(instance.getCommand()); this.withEnv(instance.getEnv()); this.withImage(instance.getImage()); this.withImagePullPolicy(instance.getImagePullPolicy()); this.withLifecycle(instance.getLifecycle()); this.withLivenessProbe(instance.getLivenessProbe()); this.withName(instance.getName()); this.withPorts(instance.getPorts()); this.withReadinessProbe(instance.getReadinessProbe()); this.withResources(instance.getResources()); this.withSecurityContext(instance.getSecurityContext()); this.withTerminationMessagePath(instance.getTerminationMessagePath()); this.withVolumeMounts(instance.getVolumeMounts()); this.withWorkingDir(instance.getWorkingDir()); }
public ContainerBuilder( ContainerFluent<?> fluent , Container instance ){ this.fluent = fluent; fluent.withArgs(instance.getArgs()); fluent.withCapabilities(instance.getCapabilities()); fluent.withCommand(instance.getCommand()); fluent.withEnv(instance.getEnv()); fluent.withImage(instance.getImage()); fluent.withImagePullPolicy(instance.getImagePullPolicy()); fluent.withLifecycle(instance.getLifecycle()); fluent.withLivenessProbe(instance.getLivenessProbe()); fluent.withName(instance.getName()); fluent.withPorts(instance.getPorts()); fluent.withPrivileged(instance.getPrivileged()); fluent.withReadinessProbe(instance.getReadinessProbe()); fluent.withResources(instance.getResources()); fluent.withSecurityContext(instance.getSecurityContext()); fluent.withTerminationMessagePath(instance.getTerminationMessagePath()); fluent.withVolumeMounts(instance.getVolumeMounts()); fluent.withWorkingDir(instance.getWorkingDir()); } public ContainerBuilder( Container instance ){
public ContainerBuilder( Container instance ){ this.fluent = this; this.withArgs(instance.getArgs()); this.withCapabilities(instance.getCapabilities()); this.withCommand(instance.getCommand()); this.withEnv(instance.getEnv()); this.withImage(instance.getImage()); this.withImagePullPolicy(instance.getImagePullPolicy()); this.withLifecycle(instance.getLifecycle()); this.withLivenessProbe(instance.getLivenessProbe()); this.withName(instance.getName()); this.withPorts(instance.getPorts()); this.withPrivileged(instance.getPrivileged()); this.withReadinessProbe(instance.getReadinessProbe()); this.withResources(instance.getResources()); this.withSecurityContext(instance.getSecurityContext()); this.withTerminationMessagePath(instance.getTerminationMessagePath()); this.withVolumeMounts(instance.getVolumeMounts()); this.withWorkingDir(instance.getWorkingDir()); }
public ContainerFluentImpl(Container instance){ this.withArgs(instance.getArgs()); this.withCommand(instance.getCommand()); this.withEnv(instance.getEnv()); this.withImage(instance.getImage()); this.withImagePullPolicy(instance.getImagePullPolicy()); this.withLifecycle(instance.getLifecycle()); this.withLivenessProbe(instance.getLivenessProbe()); this.withName(instance.getName()); this.withPorts(instance.getPorts()); this.withReadinessProbe(instance.getReadinessProbe()); this.withResources(instance.getResources()); this.withSecurityContext(instance.getSecurityContext()); this.withStdin(instance.getStdin()); this.withStdinOnce(instance.getStdinOnce()); this.withTerminationMessagePath(instance.getTerminationMessagePath()); this.withTty(instance.getTty()); this.withVolumeMounts(instance.getVolumeMounts()); this.withWorkingDir(instance.getWorkingDir()); }
public ContainerBuilder(ContainerFluent<?> fluent,Container instance,Boolean validationEnabled){ this.fluent = fluent; fluent.withArgs(instance.getArgs()); fluent.withCommand(instance.getCommand()); fluent.withEnv(instance.getEnv()); fluent.withImage(instance.getImage()); fluent.withImagePullPolicy(instance.getImagePullPolicy()); fluent.withLifecycle(instance.getLifecycle()); fluent.withLivenessProbe(instance.getLivenessProbe()); fluent.withName(instance.getName()); fluent.withPorts(instance.getPorts()); fluent.withReadinessProbe(instance.getReadinessProbe()); fluent.withResources(instance.getResources()); fluent.withSecurityContext(instance.getSecurityContext()); fluent.withStdin(instance.getStdin()); fluent.withStdinOnce(instance.getStdinOnce()); fluent.withTerminationMessagePath(instance.getTerminationMessagePath()); fluent.withTty(instance.getTty()); fluent.withVolumeMounts(instance.getVolumeMounts()); fluent.withWorkingDir(instance.getWorkingDir()); this.validationEnabled = validationEnabled; } public ContainerBuilder(Container instance){
public ContainerBuilder(Container instance,Boolean validationEnabled){ this.fluent = this; this.withArgs(instance.getArgs()); this.withCommand(instance.getCommand()); this.withEnv(instance.getEnv()); this.withImage(instance.getImage()); this.withImagePullPolicy(instance.getImagePullPolicy()); this.withLifecycle(instance.getLifecycle()); this.withLivenessProbe(instance.getLivenessProbe()); this.withName(instance.getName()); this.withPorts(instance.getPorts()); this.withReadinessProbe(instance.getReadinessProbe()); this.withResources(instance.getResources()); this.withSecurityContext(instance.getSecurityContext()); this.withStdin(instance.getStdin()); this.withStdinOnce(instance.getStdinOnce()); this.withTerminationMessagePath(instance.getTerminationMessagePath()); this.withTty(instance.getTty()); this.withVolumeMounts(instance.getVolumeMounts()); this.withWorkingDir(instance.getWorkingDir()); this.validationEnabled = validationEnabled; }