diff --git a/enricher/api/src/main/java/io/fabric8/maven/enricher/api/BaseEnricher.java b/enricher/api/src/main/java/io/fabric8/maven/enricher/api/BaseEnricher.java index 5f33a8f736..6623762609 100644 --- a/enricher/api/src/main/java/io/fabric8/maven/enricher/api/BaseEnricher.java +++ b/enricher/api/src/main/java/io/fabric8/maven/enricher/api/BaseEnricher.java @@ -15,6 +15,11 @@ */ package io.fabric8.maven.enricher.api; +import io.fabric8.kubernetes.api.builder.TypedVisitor; +import io.fabric8.kubernetes.api.model.ConfigMapBuilder; +import io.fabric8.kubernetes.api.model.ContainerBuilder; +import io.fabric8.kubernetes.api.model.EnvVar; +import io.fabric8.kubernetes.api.model.EnvVarBuilder; import io.fabric8.kubernetes.api.model.KubernetesListBuilder; import io.fabric8.maven.core.config.PlatformMode; import io.fabric8.maven.core.model.Configuration; @@ -24,6 +29,8 @@ import io.fabric8.maven.docker.util.Logger; import java.util.Collections; +import java.util.Iterator; +import java.util.LinkedList; import java.util.List; import java.util.Map; import java.util.Optional; @@ -105,6 +112,56 @@ protected EnricherContext getContext() { return enricherContext; } + protected void overrideEnvironmentVariables(KubernetesListBuilder builder, final Map resourceEnv) { + builder.accept(new TypedVisitor() { + @Override + public void visit(ContainerBuilder containerBuilder) { + List envVars = containerBuilder.buildEnv(); + + if (envVars == null) { + envVars = new LinkedList<>(); + containerBuilder.withEnv(envVars); + } + + if (resourceEnv != null) { + for (Map.Entry resourceEnvEntry : resourceEnv.entrySet()) { + EnvVar newEnvVar = + new EnvVarBuilder() + .withName(resourceEnvEntry.getKey()) + .withValue(resourceEnvEntry.getValue()) + .build(); + if (hasEnvWithName(envVars, resourceEnvEntry.getKey())) { + final String oldValue = removeEnvWithName(envVars, resourceEnvEntry.getKey()); + log.warn( + "Environment variable %s is overridden: Setting the value %s, which replaces %s", + newEnvVar.getName(), newEnvVar.getValue(), oldValue); + } + envVars.add(newEnvVar); + } + containerBuilder.withEnv(envVars); + } + } + }); + + } + + private String removeEnvWithName(List envVars, String name) { + final Iterator iterator = envVars.iterator(); + while(iterator.hasNext()) { + final EnvVar envVar = iterator.next(); + if (envVar.getName().equals(name)) { + iterator.remove(); + return envVar.getValue(); + } + } + + return ""; + } + + private boolean hasEnvWithName(List envVars, String name) { + return envVars.stream().anyMatch(e -> e.getName().equals(name)); + } + /** * Returns true if we are in OpenShift S2I binary building mode */ diff --git a/enricher/api/src/test/java/io/fabric8/maven/enricher/api/BaseEnricherTest.java b/enricher/api/src/test/java/io/fabric8/maven/enricher/api/BaseEnricherTest.java new file mode 100644 index 0000000000..f24b448ca6 --- /dev/null +++ b/enricher/api/src/test/java/io/fabric8/maven/enricher/api/BaseEnricherTest.java @@ -0,0 +1,151 @@ +/** + * Copyright 2018 Red Hat, Inc. + * + * Red Hat licenses this file to you under the Apache License, version + * 2.0 (the "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + * implied. See the License for the specific language governing + * permissions and limitations under the License. + */ +package io.fabric8.maven.enricher.api; + +import io.fabric8.kubernetes.api.builder.TypedVisitor; +import io.fabric8.kubernetes.api.model.Container; +import io.fabric8.kubernetes.api.model.ContainerBuilder; +import io.fabric8.kubernetes.api.model.ContainerPortBuilder; +import io.fabric8.kubernetes.api.model.EnvVar; +import io.fabric8.kubernetes.api.model.EnvVarBuilder; +import io.fabric8.kubernetes.api.model.KubernetesListBuilder; +import java.util.HashMap; +import java.util.List; +import mockit.Mocked; +import mockit.integration.junit4.JMockit; +import org.junit.Test; +import org.junit.runner.RunWith; + +import static org.assertj.core.api.Assertions.assertThat; + +@RunWith(JMockit.class) +public class BaseEnricherTest { + + @Mocked + private EnricherContext enricherContext; + + @Test + public void setEnvironmentVariablesFromResources() { + + // Given + final DummyBaseEnricher dummyBaseEnricher = new DummyBaseEnricher(enricherContext, "dummy"); + + // When + final KubernetesListBuilder kubernetesListBuilder = createKubernetesList(); + final HashMap resourceEnv = new HashMap<>(); + resourceEnv.put("A", "B"); + + dummyBaseEnricher.overrideEnvironmentVariables(kubernetesListBuilder, resourceEnv); + + // Then + kubernetesListBuilder.accept(new TypedVisitor() { + @Override + public void visit(ContainerBuilder element) { + final List envVars = element.buildEnv(); + + assertThat(envVars) + .containsExactly(createEnvVar("A", "B")); + } + }); + } + + @Test + public void addResourceEnvironmentVariablesToContainerEnvironmentVariables() { + + // Given + final DummyBaseEnricher dummyBaseEnricher = new DummyBaseEnricher(enricherContext, "dummy"); + + // When + final KubernetesListBuilder kubernetesListBuilder = createKubernetesList(createEnvVar("C", "D")); + final HashMap resourceEnv = new HashMap<>(); + resourceEnv.put("A", "B"); + + + dummyBaseEnricher.overrideEnvironmentVariables(kubernetesListBuilder, resourceEnv); + + // Then + kubernetesListBuilder.accept(new TypedVisitor() { + @Override + public void visit(ContainerBuilder element) { + final List envVars = element.buildEnv(); + + assertThat(envVars) + .containsExactlyInAnyOrder(createEnvVar("A", "B"), createEnvVar("C", "D")); + } + }); + + } + + @Test + public void overrideResourceEnvironmentVariablesToContainerEnvironmentVariables() { + + // Given + final DummyBaseEnricher dummyBaseEnricher = new DummyBaseEnricher(enricherContext, "dummy"); + + // When + final KubernetesListBuilder kubernetesListBuilder = createKubernetesList(createEnvVar("A", "B")); + final HashMap resourceEnv = new HashMap<>(); + resourceEnv.put("A", "C"); + + dummyBaseEnricher.overrideEnvironmentVariables(kubernetesListBuilder, resourceEnv); + + // Then + kubernetesListBuilder.accept(new TypedVisitor() { + @Override + public void visit(ContainerBuilder element) { + final List envVars = element.buildEnv(); + + assertThat(envVars) + .containsExactlyInAnyOrder(createEnvVar("A", "C")); + } + }); + + } + + + private KubernetesListBuilder createKubernetesList(EnvVar... envVars) { + final Container container = new ContainerBuilder() + .withName("test-port-enricher") + .withImage("test-image") + .withEnv(envVars) + .withPorts(new ContainerPortBuilder().withContainerPort(80).withProtocol("TCP").build()) + .build(); + return new KubernetesListBuilder() + .addNewReplicaSetItem() + .withNewSpec() + .withNewTemplate() + .withNewSpec() + .withContainers(container) + .endSpec() + .endTemplate() + .endSpec() + .endReplicaSetItem(); + } + + private EnvVar createEnvVar(String key, String value) { + return + new EnvVarBuilder() + .withName(key) + .withValue(value) + .build(); + } + + class DummyBaseEnricher extends BaseEnricher { + public DummyBaseEnricher(EnricherContext enricherContext, String name) { + super(enricherContext, name); + } + } +} diff --git a/enricher/fabric8/src/main/java/io/fabric8/maven/enricher/fabric8/AbstractHealthCheckEnricher.java b/enricher/fabric8/src/main/java/io/fabric8/maven/enricher/fabric8/AbstractHealthCheckEnricher.java index 291f6aab37..410f87c182 100644 --- a/enricher/fabric8/src/main/java/io/fabric8/maven/enricher/fabric8/AbstractHealthCheckEnricher.java +++ b/enricher/fabric8/src/main/java/io/fabric8/maven/enricher/fabric8/AbstractHealthCheckEnricher.java @@ -20,8 +20,10 @@ import io.fabric8.kubernetes.api.model.ContainerBuilder; import io.fabric8.kubernetes.api.model.KubernetesListBuilder; import io.fabric8.kubernetes.api.model.Probe; +import io.fabric8.maven.core.config.ResourceConfig; import io.fabric8.maven.enricher.api.BaseEnricher; import io.fabric8.maven.enricher.api.MavenEnricherContext; +import java.util.HashMap; /** * Enriches containers with health check probes. @@ -35,6 +37,11 @@ public AbstractHealthCheckEnricher(MavenEnricherContext buildContext, String nam @Override public void addMissingResources(KubernetesListBuilder builder) { + getConfiguration().getResource().ifPresent(resourceConfig -> { + overrideEnvironmentVariables(builder, resourceConfig.getEnv() + .orElse(new HashMap<>())); + }); + builder.accept(new TypedVisitor() { @Override public void visit(ContainerBuilder container) { diff --git a/enricher/standard/src/main/java/io/fabric8/maven/enricher/standard/ConfigMapEnricher.java b/enricher/standard/src/main/java/io/fabric8/maven/enricher/standard/ConfigMapEnricher.java index 31bf6a8523..eb3ab303dc 100644 --- a/enricher/standard/src/main/java/io/fabric8/maven/enricher/standard/ConfigMapEnricher.java +++ b/enricher/standard/src/main/java/io/fabric8/maven/enricher/standard/ConfigMapEnricher.java @@ -18,6 +18,7 @@ import io.fabric8.kubernetes.api.builder.TypedVisitor; import io.fabric8.kubernetes.api.model.ConfigMapBuilder; import io.fabric8.kubernetes.api.model.KubernetesListBuilder; +import io.fabric8.maven.core.config.ResourceConfig; import io.fabric8.maven.enricher.api.BaseEnricher; import io.fabric8.maven.enricher.api.MavenEnricherContext; import java.io.IOException; @@ -38,6 +39,12 @@ public ConfigMapEnricher(MavenEnricherContext enricherContext) { @Override public void addMissingResources(KubernetesListBuilder builder) { + + getConfiguration().getResource().ifPresent(resourceConfig -> { + overrideEnvironmentVariables(builder, resourceConfig.getEnv() + .orElse(new HashMap<>())); + }); + addAnnotations(builder); } diff --git a/enricher/standard/src/main/java/io/fabric8/maven/enricher/standard/DebugEnricher.java b/enricher/standard/src/main/java/io/fabric8/maven/enricher/standard/DebugEnricher.java index 70d77a528d..da1cf5eae4 100644 --- a/enricher/standard/src/main/java/io/fabric8/maven/enricher/standard/DebugEnricher.java +++ b/enricher/standard/src/main/java/io/fabric8/maven/enricher/standard/DebugEnricher.java @@ -28,6 +28,7 @@ import io.fabric8.kubernetes.api.model.apps.DeploymentSpec; import io.fabric8.kubernetes.api.model.apps.ReplicaSet; import io.fabric8.kubernetes.api.model.apps.ReplicaSetSpec; +import io.fabric8.maven.core.config.ResourceConfig; import io.fabric8.maven.core.util.kubernetes.KubernetesHelper; import io.fabric8.maven.core.util.kubernetes.KubernetesResourceUtil; import io.fabric8.maven.enricher.api.BaseEnricher; @@ -35,6 +36,7 @@ import io.fabric8.openshift.api.model.DeploymentConfig; import io.fabric8.openshift.api.model.DeploymentConfigSpec; import java.util.ArrayList; +import java.util.HashMap; import java.util.List; import org.apache.commons.lang3.StringUtils; @@ -55,6 +57,12 @@ public DebugEnricher(MavenEnricherContext buildContext) { @Override public void addMissingResources(KubernetesListBuilder builder) { + + getConfiguration().getResource().ifPresent(resourceConfig -> { + overrideEnvironmentVariables(builder, resourceConfig.getEnv() + .orElse(new HashMap<>())); + }); + if (debugEnabled()) { int count = 0; List items = builder.getItems(); diff --git a/enricher/standard/src/main/java/io/fabric8/maven/enricher/standard/DefaultControllerEnricher.java b/enricher/standard/src/main/java/io/fabric8/maven/enricher/standard/DefaultControllerEnricher.java index c627ae3762..6b4d80158e 100644 --- a/enricher/standard/src/main/java/io/fabric8/maven/enricher/standard/DefaultControllerEnricher.java +++ b/enricher/standard/src/main/java/io/fabric8/maven/enricher/standard/DefaultControllerEnricher.java @@ -41,6 +41,7 @@ import io.fabric8.maven.enricher.api.MavenEnricherContext; import java.util.Collections; +import java.util.HashMap; import java.util.List; /** @@ -96,6 +97,12 @@ public DefaultControllerEnricher(MavenEnricherContext buildContext) { @Override public void addMissingResources(KubernetesListBuilder builder) { + + getConfiguration().getResource().ifPresent(resourceConfig -> { + overrideEnvironmentVariables(builder, resourceConfig.getEnv() + .orElse(new HashMap<>())); + }); + final String name = getConfig(Config.name, MavenUtil.createDefaultResourceName(getContext().getGav().getSanitizedArtifactId())); final ResourceConfig config = new ResourceConfig.Builder() .controllerName(name) diff --git a/enricher/standard/src/main/java/io/fabric8/maven/enricher/standard/DefaultServiceEnricher.java b/enricher/standard/src/main/java/io/fabric8/maven/enricher/standard/DefaultServiceEnricher.java index ffb354c576..75ca6c0b30 100644 --- a/enricher/standard/src/main/java/io/fabric8/maven/enricher/standard/DefaultServiceEnricher.java +++ b/enricher/standard/src/main/java/io/fabric8/maven/enricher/standard/DefaultServiceEnricher.java @@ -26,6 +26,7 @@ import io.fabric8.kubernetes.api.model.ServicePort; import io.fabric8.kubernetes.api.model.ServicePortBuilder; import io.fabric8.kubernetes.api.model.ServiceSpec; +import io.fabric8.maven.core.config.ResourceConfig; import io.fabric8.maven.core.util.Configs; import io.fabric8.maven.core.util.MavenUtil; import io.fabric8.maven.core.util.kubernetes.KubernetesHelper; @@ -97,6 +98,12 @@ public DefaultServiceEnricher(MavenEnricherContext buildContext) { @Override public void addMissingResources(KubernetesListBuilder builder) { + + getConfiguration().getResource().ifPresent(resourceConfig -> { + overrideEnvironmentVariables(builder, resourceConfig.getEnv() + .orElse(new HashMap<>())); + }); + final Service defaultService = getDefaultService(); if (hasServices(builder)) { diff --git a/enricher/standard/src/main/java/io/fabric8/maven/enricher/standard/DependencyEnricher.java b/enricher/standard/src/main/java/io/fabric8/maven/enricher/standard/DependencyEnricher.java index ca1a6eedf9..252da7d3a6 100644 --- a/enricher/standard/src/main/java/io/fabric8/maven/enricher/standard/DependencyEnricher.java +++ b/enricher/standard/src/main/java/io/fabric8/maven/enricher/standard/DependencyEnricher.java @@ -15,6 +15,7 @@ */ package io.fabric8.maven.enricher.standard; +import io.fabric8.maven.core.config.ResourceConfig; import java.io.File; import java.io.IOException; import java.io.InputStream; @@ -119,6 +120,12 @@ private void addArtifactsWithYaml(Set artifactSet, String dependencyYaml) { @Override public void adapt(final KubernetesListBuilder builder) { + + getConfiguration().getResource().ifPresent(resourceConfig -> { + overrideEnvironmentVariables(builder, resourceConfig.getEnv() + .orElse(new HashMap<>())); + }); + final List kubernetesItems = new ArrayList<>(); processArtifactSetResources(this.kubernetesDependencyArtifacts, items -> { kubernetesItems.addAll(Arrays.asList(items.toArray(new HasMetadata[items.size()]))); diff --git a/enricher/standard/src/main/java/io/fabric8/maven/enricher/standard/ImageEnricher.java b/enricher/standard/src/main/java/io/fabric8/maven/enricher/standard/ImageEnricher.java index fbf45c4092..ff932ece64 100644 --- a/enricher/standard/src/main/java/io/fabric8/maven/enricher/standard/ImageEnricher.java +++ b/enricher/standard/src/main/java/io/fabric8/maven/enricher/standard/ImageEnricher.java @@ -16,6 +16,7 @@ package io.fabric8.maven.enricher.standard; import java.util.ArrayList; +import java.util.HashMap; import java.util.LinkedList; import java.util.List; import java.util.Map; @@ -86,6 +87,12 @@ private enum Config implements Configs.Key { @Override public void addMissingResources(KubernetesListBuilder builder) { + + getConfiguration().getResource().ifPresent(resourceConfig -> { + overrideEnvironmentVariables(builder, resourceConfig.getEnv() + .orElse(new HashMap<>())); + }); + if (!hasImageConfiguration()) { log.verbose("No images resolved. Skipping ..."); return; diff --git a/enricher/standard/src/main/java/io/fabric8/maven/enricher/standard/NameEnricher.java b/enricher/standard/src/main/java/io/fabric8/maven/enricher/standard/NameEnricher.java index 68f39dfdbe..6999acd77c 100644 --- a/enricher/standard/src/main/java/io/fabric8/maven/enricher/standard/NameEnricher.java +++ b/enricher/standard/src/main/java/io/fabric8/maven/enricher/standard/NameEnricher.java @@ -25,10 +25,12 @@ import io.fabric8.kubernetes.api.model.apps.DeploymentFluent; import io.fabric8.kubernetes.api.model.apps.ReplicaSetBuilder; import io.fabric8.kubernetes.api.model.apps.ReplicaSetFluent; +import io.fabric8.maven.core.config.ResourceConfig; import io.fabric8.maven.core.util.Configs; import io.fabric8.maven.core.util.MavenUtil; import io.fabric8.maven.enricher.api.BaseEnricher; import io.fabric8.maven.enricher.api.MavenEnricherContext; +import java.util.HashMap; import org.apache.commons.lang3.StringUtils; /** @@ -53,6 +55,11 @@ private enum Config implements Configs.Key { @Override public void addMissingResources(KubernetesListBuilder builder) { + getConfiguration().getResource().ifPresent(resourceConfig -> { + overrideEnvironmentVariables(builder, resourceConfig.getEnv() + .orElse(new HashMap<>())); + }); + final String defaultName = getConfig(Config.name, MavenUtil.createDefaultResourceName(getContext().getGav().getSanitizedArtifactId())); builder.accept(new TypedVisitor() { diff --git a/enricher/standard/src/main/java/io/fabric8/maven/enricher/standard/PodAnnotationEnricher.java b/enricher/standard/src/main/java/io/fabric8/maven/enricher/standard/PodAnnotationEnricher.java index 76f35e9f63..74ed115dc4 100644 --- a/enricher/standard/src/main/java/io/fabric8/maven/enricher/standard/PodAnnotationEnricher.java +++ b/enricher/standard/src/main/java/io/fabric8/maven/enricher/standard/PodAnnotationEnricher.java @@ -15,6 +15,8 @@ */ package io.fabric8.maven.enricher.standard; +import io.fabric8.maven.core.config.ResourceConfig; +import java.util.HashMap; import java.util.List; import io.fabric8.kubernetes.api.model.HasMetadata; @@ -38,6 +40,11 @@ public PodAnnotationEnricher(MavenEnricherContext buildContext) { @Override public void adapt(KubernetesListBuilder builder) { + getConfiguration().getResource().ifPresent(resourceConfig -> { + overrideEnvironmentVariables(builder, resourceConfig.getEnv() + .orElse(new HashMap<>())); + }); + super.adapt(builder); List items = builder.getItems(); diff --git a/enricher/standard/src/main/java/io/fabric8/maven/enricher/standard/PortNameEnricher.java b/enricher/standard/src/main/java/io/fabric8/maven/enricher/standard/PortNameEnricher.java index 11f4ebf48e..e30e28dcda 100644 --- a/enricher/standard/src/main/java/io/fabric8/maven/enricher/standard/PortNameEnricher.java +++ b/enricher/standard/src/main/java/io/fabric8/maven/enricher/standard/PortNameEnricher.java @@ -15,6 +15,7 @@ */ package io.fabric8.maven.enricher.standard; +import io.fabric8.maven.core.config.ResourceConfig; import java.io.IOException; import java.util.Collections; import java.util.HashMap; @@ -52,6 +53,12 @@ public PortNameEnricher(MavenEnricherContext buildContext) { @Override public void addMissingResources(KubernetesListBuilder builder) { + + getConfiguration().getResource().ifPresent(resourceConfig -> { + overrideEnvironmentVariables(builder, resourceConfig.getEnv() + .orElse(new HashMap<>())); + }); + builder.accept(new TypedVisitor() { @Override public void visit(ContainerPortBuilder portBuilder) { diff --git a/enricher/standard/src/main/java/io/fabric8/maven/enricher/standard/ProjectEnricher.java b/enricher/standard/src/main/java/io/fabric8/maven/enricher/standard/ProjectEnricher.java index 3fde628959..7b17b47836 100644 --- a/enricher/standard/src/main/java/io/fabric8/maven/enricher/standard/ProjectEnricher.java +++ b/enricher/standard/src/main/java/io/fabric8/maven/enricher/standard/ProjectEnricher.java @@ -18,6 +18,7 @@ import io.fabric8.kubernetes.api.builder.TypedVisitor; import io.fabric8.kubernetes.api.model.KubernetesListBuilder; import io.fabric8.kubernetes.api.model.ObjectMetaBuilder; +import io.fabric8.maven.core.config.ResourceConfig; import io.fabric8.maven.core.util.Configs; import io.fabric8.maven.core.util.MapUtil; import io.fabric8.maven.core.model.GroupArtifactVersion; @@ -69,6 +70,12 @@ public Map getSelector(Kind kind) { @Override public void adapt(KubernetesListBuilder builder) { + + getConfiguration().getResource().ifPresent(resourceConfig -> { + overrideEnvironmentVariables(builder, resourceConfig.getEnv() + .orElse(new HashMap<>())); + }); + // Add to all objects in the builder builder.accept(new TypedVisitor() { @Override diff --git a/enricher/standard/src/main/java/io/fabric8/maven/enricher/standard/RemoveBuildAnnotationsEnricher.java b/enricher/standard/src/main/java/io/fabric8/maven/enricher/standard/RemoveBuildAnnotationsEnricher.java index 612be3cb29..32bd4a7d26 100644 --- a/enricher/standard/src/main/java/io/fabric8/maven/enricher/standard/RemoveBuildAnnotationsEnricher.java +++ b/enricher/standard/src/main/java/io/fabric8/maven/enricher/standard/RemoveBuildAnnotationsEnricher.java @@ -15,6 +15,8 @@ */ package io.fabric8.maven.enricher.standard; +import io.fabric8.maven.core.config.ResourceConfig; +import java.util.HashMap; import java.util.List; import java.util.Map; @@ -37,6 +39,12 @@ public RemoveBuildAnnotationsEnricher(MavenEnricherContext buildContext) { @Override public void adapt(KubernetesListBuilder builder) { + + getConfiguration().getResource().ifPresent(resourceConfig -> { + overrideEnvironmentVariables(builder, resourceConfig.getEnv() + .orElse(new HashMap<>())); + }); + List items = builder.buildItems(); for (HasMetadata item : items) { diff --git a/enricher/standard/src/main/java/io/fabric8/maven/enricher/standard/RevisionHistoryEnricher.java b/enricher/standard/src/main/java/io/fabric8/maven/enricher/standard/RevisionHistoryEnricher.java index 17e92460d2..4e3d3f8d0e 100644 --- a/enricher/standard/src/main/java/io/fabric8/maven/enricher/standard/RevisionHistoryEnricher.java +++ b/enricher/standard/src/main/java/io/fabric8/maven/enricher/standard/RevisionHistoryEnricher.java @@ -18,9 +18,11 @@ import io.fabric8.kubernetes.api.builder.TypedVisitor; import io.fabric8.kubernetes.api.model.KubernetesListBuilder; import io.fabric8.kubernetes.api.model.apps.DeploymentBuilder; +import io.fabric8.maven.core.config.ResourceConfig; import io.fabric8.maven.core.util.Configs; import io.fabric8.maven.enricher.api.BaseEnricher; import io.fabric8.maven.enricher.api.MavenEnricherContext; +import java.util.HashMap; /** * This enricher adds the 'revisionHistoryLimit' property to deployment spec of RCs / RSs for KuberNetes/OpenShift resource descriptors. @@ -46,6 +48,12 @@ public RevisionHistoryEnricher(MavenEnricherContext buildContext) { @Override public void addMissingResources(KubernetesListBuilder builder) { + + getConfiguration().getResource().ifPresent(resourceConfig -> { + overrideEnvironmentVariables(builder, resourceConfig.getEnv() + .orElse(new HashMap<>())); + }); + final Integer maxRevisionHistories = Configs.asInt(getConfig(Config.limit)); log.info("Adding revision history limit to %s", maxRevisionHistories); diff --git a/enricher/standard/src/main/java/io/fabric8/maven/enricher/standard/SecretEnricher.java b/enricher/standard/src/main/java/io/fabric8/maven/enricher/standard/SecretEnricher.java index 4137061691..041b332cf6 100644 --- a/enricher/standard/src/main/java/io/fabric8/maven/enricher/standard/SecretEnricher.java +++ b/enricher/standard/src/main/java/io/fabric8/maven/enricher/standard/SecretEnricher.java @@ -15,6 +15,8 @@ */ package io.fabric8.maven.enricher.standard; +import io.fabric8.maven.core.config.ResourceConfig; +import java.util.HashMap; import java.util.Map; import io.fabric8.kubernetes.api.builder.TypedVisitor; @@ -36,6 +38,12 @@ protected String encode(String raw) { @Override public void addMissingResources(KubernetesListBuilder builder) { + + getConfiguration().getResource().ifPresent(resourceConfig -> { + overrideEnvironmentVariables(builder, resourceConfig.getEnv() + .orElse(new HashMap<>())); + }); + // update builder // use a selector to choose all secret builder in kubernetes list builders. // try to find the target annotations diff --git a/enricher/standard/src/main/java/io/fabric8/maven/enricher/standard/TriggersAnnotationEnricher.java b/enricher/standard/src/main/java/io/fabric8/maven/enricher/standard/TriggersAnnotationEnricher.java index b176bbd80c..bb7e4ce84c 100644 --- a/enricher/standard/src/main/java/io/fabric8/maven/enricher/standard/TriggersAnnotationEnricher.java +++ b/enricher/standard/src/main/java/io/fabric8/maven/enricher/standard/TriggersAnnotationEnricher.java @@ -15,7 +15,9 @@ */ package io.fabric8.maven.enricher.standard; +import io.fabric8.maven.core.config.ResourceConfig; import java.util.ArrayList; +import java.util.HashMap; import java.util.HashSet; import java.util.List; import java.util.Set; @@ -70,6 +72,11 @@ public TriggersAnnotationEnricher(MavenEnricherContext buildContext) { @Override public void adapt(KubernetesListBuilder builder) { + getConfiguration().getResource().ifPresent(resourceConfig -> { + overrideEnvironmentVariables(builder, resourceConfig.getEnv() + .orElse(new HashMap<>())); + }); + builder.accept(new TypedVisitor() { @Override public void visit(StatefulSetBuilder o) { diff --git a/enricher/standard/src/main/java/io/fabric8/maven/enricher/standard/VolumePermissionEnricher.java b/enricher/standard/src/main/java/io/fabric8/maven/enricher/standard/VolumePermissionEnricher.java index 2000189ea3..486c3f4735 100644 --- a/enricher/standard/src/main/java/io/fabric8/maven/enricher/standard/VolumePermissionEnricher.java +++ b/enricher/standard/src/main/java/io/fabric8/maven/enricher/standard/VolumePermissionEnricher.java @@ -15,6 +15,7 @@ */ package io.fabric8.maven.enricher.standard; +import io.fabric8.maven.core.config.ResourceConfig; import java.util.LinkedHashMap; import java.util.LinkedHashSet; import java.util.List; @@ -59,6 +60,11 @@ public VolumePermissionEnricher(MavenEnricherContext buildContext) { @Override public void adapt(KubernetesListBuilder builder) { + getConfiguration().getResource().ifPresent(resourceConfig -> { + overrideEnvironmentVariables(builder, resourceConfig.getEnv() + .orElse(new HashMap<>())); + }); + builder.accept(new TypedVisitor() { @Override public void visit(PodTemplateSpecBuilder builder) { diff --git a/enricher/standard/src/main/java/io/fabric8/maven/enricher/standard/openshift/AutoTLSEnricher.java b/enricher/standard/src/main/java/io/fabric8/maven/enricher/standard/openshift/AutoTLSEnricher.java index 77a1d833c9..df9fe614d0 100644 --- a/enricher/standard/src/main/java/io/fabric8/maven/enricher/standard/openshift/AutoTLSEnricher.java +++ b/enricher/standard/src/main/java/io/fabric8/maven/enricher/standard/openshift/AutoTLSEnricher.java @@ -15,6 +15,7 @@ */ package io.fabric8.maven.enricher.standard.openshift; +import io.fabric8.maven.core.config.ResourceConfig; import java.util.Collections; import java.util.List; import java.util.Map; @@ -85,6 +86,12 @@ public Map getAnnotations(Kind kind) { @Override public void addMissingResources(KubernetesListBuilder builder) { + + getConfiguration().getResource().ifPresent(resourceConfig -> { + overrideEnvironmentVariables(builder, resourceConfig.getEnv() + .orElse(new HashMap<>())); + }); + if (!isOpenShiftMode()) { return; } diff --git a/enricher/standard/src/main/java/io/fabric8/maven/enricher/standard/openshift/ExposeEnricher.java b/enricher/standard/src/main/java/io/fabric8/maven/enricher/standard/openshift/ExposeEnricher.java index bd25c95702..a22f064458 100644 --- a/enricher/standard/src/main/java/io/fabric8/maven/enricher/standard/openshift/ExposeEnricher.java +++ b/enricher/standard/src/main/java/io/fabric8/maven/enricher/standard/openshift/ExposeEnricher.java @@ -16,7 +16,9 @@ package io.fabric8.maven.enricher.standard.openshift; +import io.fabric8.maven.core.config.ResourceConfig; import java.util.Arrays; +import java.util.HashMap; import java.util.HashSet; import java.util.List; import java.util.Map; @@ -47,6 +49,12 @@ public ExposeEnricher(MavenEnricherContext buildContext) { @Override public void addMissingResources(KubernetesListBuilder builder) { + + getConfiguration().getResource().ifPresent(resourceConfig -> { + overrideEnvironmentVariables(builder, resourceConfig.getEnv() + .orElse(new HashMap<>())); + }); + List items = builder.getItems(); if (items != null) { for (HasMetadata item : items) { diff --git a/enricher/standard/src/main/java/io/fabric8/maven/enricher/standard/openshift/RouteEnricher.java b/enricher/standard/src/main/java/io/fabric8/maven/enricher/standard/openshift/RouteEnricher.java index 6f3aa14918..004798577c 100644 --- a/enricher/standard/src/main/java/io/fabric8/maven/enricher/standard/openshift/RouteEnricher.java +++ b/enricher/standard/src/main/java/io/fabric8/maven/enricher/standard/openshift/RouteEnricher.java @@ -16,7 +16,9 @@ package io.fabric8.maven.enricher.standard.openshift; +import io.fabric8.maven.core.config.ResourceConfig; import java.util.ArrayList; +import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.concurrent.atomic.AtomicBoolean; @@ -47,6 +49,12 @@ public RouteEnricher(MavenEnricherContext buildContext) { @Override public void addMissingResources(final KubernetesListBuilder listBuilder) { + + getConfiguration().getResource().ifPresent(resourceConfig -> { + overrideEnvironmentVariables(listBuilder, resourceConfig.getEnv() + .orElse(new HashMap<>())); + }); + final List routes = new ArrayList<>(); listBuilder.accept(new TypedVisitor() { diff --git a/enricher/standard/src/test/java/io/fabric8/maven/enricher/standard/DefaultControllerEnricherTest.java b/enricher/standard/src/test/java/io/fabric8/maven/enricher/standard/DefaultControllerEnricherTest.java index 973764d556..0ad4ebdcf1 100644 --- a/enricher/standard/src/test/java/io/fabric8/maven/enricher/standard/DefaultControllerEnricherTest.java +++ b/enricher/standard/src/test/java/io/fabric8/maven/enricher/standard/DefaultControllerEnricherTest.java @@ -15,7 +15,6 @@ */ package io.fabric8.maven.enricher.standard; -import com.google.common.io.Files; import com.jayway.jsonpath.matchers.JsonPathMatchers; import io.fabric8.kubernetes.api.model.KubernetesList; import io.fabric8.kubernetes.api.model.KubernetesListBuilder; @@ -26,8 +25,6 @@ import io.fabric8.maven.docker.config.BuildImageConfiguration; import io.fabric8.maven.docker.config.ImageConfiguration; import io.fabric8.maven.enricher.api.MavenEnricherContext; -import io.fabric8.maven.enricher.api.util.ProjectClassLoaders; -import java.net.URLClassLoader; import java.util.Arrays; import java.util.Collections; import java.util.TreeMap;