List<EnvVar> podEnvironmentVariables = currentPod.getSpec().getContainers().get(0).getEnv(); Optional<EnvVar> noVncPort = podEnvironmentVariables.stream().filter(env -> "NOVNC_PORT".equals(env.getName())).findFirst();
/** * Gets the given container's environment. */ public static Map<String, String> containerEnvVars(Container container) { return container.getEnv().stream().collect( Collectors.toMap(EnvVar::getName, EnvVar::getValue, // On duplicates, last in wins (u, v) -> v)); }
private static List<EnvVar> combineEnvVars(Container parent, Container template) { List<EnvVar> combinedEnvVars = new ArrayList<>(); combinedEnvVars.addAll(parent.getEnv()); combinedEnvVars.addAll(template.getEnv()); return combinedEnvVars.stream().filter(envVar -> !Strings.isNullOrEmpty(envVar.getName())).collect(toList()); }
private static void ensureHasEnv(Container container, EnvVar envVar) { List<EnvVar> envVars = container.getEnv(); if (envVars == null) { envVars = new ArrayList<>(); container.setEnv(envVars); } for (EnvVar var : envVars) { if (Objects.equals(var.getName(), envVar.getName())) { // lets replace the object so that we can update the value or valueFrom envVars.remove(var); envVars.add(envVar); return; } } envVars.add(envVar); }
public static Map<String, String> getKafkaContainerEnv(StatefulSet ss) { for (Container container : ss.getSpec().getTemplate().getSpec().getContainers()) { if ("kafka".equals(container.getName())) { LinkedHashMap<String, String> map = new LinkedHashMap<>(container.getEnv() == null ? 2 : container.getEnv().size()); if (container.getEnv() != null) { for (EnvVar envVar : container.getEnv()) { map.put(envVar.getName(), envVar.getValue()); } } return map; } } throw new KafkaUpgradeException("Could not find 'kafka' container in StatefulSet " + ss.getMetadata().getName()); }
private boolean podHasEnvVarValue(Pod pod, String envVarName, String envVarValue) { PodSpec spec = pod.getSpec(); if (spec != null) { List<Container> containers = spec.getContainers(); if (containers != null && !containers.isEmpty()) { Container container = containers.get(0); List<EnvVar> env = container.getEnv(); if (env != null) { for (EnvVar envVar : env) { if (Objects.equal(envVar.getName(), envVarName) && Objects.equal(envVar.getValue(), envVarValue)) { return true; } } } } } return false; }
private void mergeEnvVariables(Container container) { List<EnvVar> env = container.getEnv(); if (env == null) { env = new LinkedList<>(); container.setEnv(env); } ResourceConfig resource = getContext().getResources(); Map<String, String> userEnv = resource != null ? resource.getEnv() : null; if (userEnv != null) { for(Map.Entry<String, String> entry : userEnv.entrySet()) { EnvVar existingVariable = KubernetesResourceUtil.setEnvVarNoOverride(env, entry.getKey(), entry.getValue()); if (existingVariable != null) { String actualValue = existingVariable.getValue(); if (actualValue == null) { actualValue = "retrieved using the downward API"; } log.warn("Environment variable %s will not be overridden: trying to set the value %s, but its actual value will be %s", entry.getKey(), entry.getValue(), actualValue); } } } } }
@Override public Deployment transform(Deployment deployment, io.logz.apollo.models.Deployment apolloDeployment, Service apolloService, Environment apolloEnvironment, DeployableVersion apolloDeployableVersion, Group group) { // TODO: This should probably be an externally configured map of key names and desired dynamic values // TODO: Keeping this logz.io specific at the moment Map<String, String> desiredEnvironmentVariables = ImmutableMap.<String, String> builder() .put("ENV", apolloEnvironment.getAvailability()) .put("REGION", apolloEnvironment.getGeoRegion()) .build(); deployment.getSpec().getTemplate().getSpec().getContainers().forEach(container -> { List<EnvVar> envVarList = container.getEnv(); desiredEnvironmentVariables.forEach((key, value) -> { // Do not override values supplied externally if (envVarList.stream().noneMatch(envVar -> envVar.getName().equals(key))) { envVarList.add(new EnvVar(key, value, null)); } }); container.setEnv(envVarList); }); return deployment; } }
private void mergeEnvVariables(Container container) { getConfiguration().getResource().flatMap(ResourceConfig::getEnv).ifPresent(resourceEnv -> { List<EnvVar> containerEnvVars = container.getEnv(); if (containerEnvVars == null) { containerEnvVars = new LinkedList<>(); container.setEnv(containerEnvVars); } for (Map.Entry<String, String> resourceEnvEntry : resourceEnv.entrySet()) { EnvVar newEnvVar = new EnvVarBuilder() .withName(resourceEnvEntry.getKey()) .withValue(resourceEnvEntry.getValue()) .build(); if (!hasEnvWithName(containerEnvVars, newEnvVar.getName())) { containerEnvVars.add(newEnvVar); } else { log.warn( "Environment variable %s will not be overridden: trying to set the value %s, but its actual value is %s", newEnvVar.getName(), newEnvVar.getValue(), getEnvValue(containerEnvVars, newEnvVar.getName())); } } }); }
public void addEnvironmentVariables(Pod podToDeploy, PodDeploymentContext deploymentContext) { final KubernetesSlave kubernetesSlave = deploymentContext.getKubernetesSlave(); for (Container container: podToDeploy.getSpec().getContainers()) { List<EnvVar> currentEnv = container.getEnv(); boolean found = false; for (EnvVar var: currentEnv) { if (var.getName().equals(JENKINS_URL) ) { found = true; break; } } if ( !found) { String url = JenkinsLocationConfiguration.get().getUrl(); currentEnv.add(new EnvVar(JENKINS_URL, url, null)); } container.setWorkingDir(KubernetesSlave.DEFAULT_REMOTE_FS); container.getArgs().add(kubernetesSlave.getComputer().getJnlpMac()); container.getArgs().add(kubernetesSlave.getComputer().getName()); LOGGER.log(Level.INFO, "Added environment variables to container: " + container.getName() ); } }
if (containers.size() > 0) { Container container = containers.get(0); List<EnvVar> env = container.getEnv(); if (env == null) { env = new ArrayList<>();
public static Container addOrUpdateDesiredContainer(Pod pod, String containerName, Container container) { List<Container> containers = getOrCreatePodDesiredContainers(pod); Container oldContainer = findContainer(containers, containerName); if (oldContainer != null) { // lets update it just in case something changed... containers.remove(oldContainer); } Container newContainer = new Container(); // TODO we should use bean utils or something to copy properties in case we miss one! newContainer.setCommand(container.getCommand()); newContainer.setEnv(container.getEnv()); newContainer.setImage(container.getImage()); newContainer.setPorts(container.getPorts()); newContainer.setVolumeMounts(container.getVolumeMounts()); newContainer.setWorkingDir(container.getWorkingDir()); newContainer.getAdditionalProperties().putAll(container.getAdditionalProperties()); newContainer.setName(containerName); LOG.info("Added new container: {}", containerName); containers.add(newContainer); return newContainer; }
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(""))); } } }
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(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; }
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){