Skip to content

Commit 536fcf0

Browse files
committed
Include env var from domain spec in introspector pod
1 parent fe8b69b commit 536fcf0

File tree

2 files changed

+93
-3
lines changed

2 files changed

+93
-3
lines changed

operator/src/main/java/oracle/kubernetes/operator/helpers/JobHelper.java

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,6 @@
1111
import io.kubernetes.client.models.V1PodList;
1212
import io.kubernetes.client.models.V1Volume;
1313
import io.kubernetes.client.models.V1VolumeMount;
14-
import java.util.ArrayList;
1514
import java.util.List;
1615
import oracle.kubernetes.operator.JobWatcher;
1716
import oracle.kubernetes.operator.LabelConstants;
@@ -93,7 +92,9 @@ protected List<V1VolumeMount> getAdditionalVolumeMounts() {
9392

9493
@Override
9594
List<V1EnvVar> getEnvironmentVariables(TuningParameters tuningParameters) {
96-
List<V1EnvVar> envVarList = new ArrayList<V1EnvVar>();
95+
// Start with environment variables specified for Admin Server
96+
List<V1EnvVar> envVarList = getDomain().getAdminServerSpec().getEnvironmentVariables();
97+
9798
addEnvVar(envVarList, "NAMESPACE", getNamespace());
9899
addEnvVar(envVarList, "DOMAIN_UID", getDomainUID());
99100
addEnvVar(envVarList, "DOMAIN_HOME", getDomainHome());

operator/src/test/java/oracle/kubernetes/operator/helpers/JobHelperTest.java

Lines changed: 90 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,20 +5,36 @@
55
package oracle.kubernetes.operator.helpers;
66

77
import static org.hamcrest.CoreMatchers.equalTo;
8+
import static org.hamcrest.Matchers.allOf;
9+
import static org.hamcrest.Matchers.hasItem;
810
import static org.junit.Assert.assertThat;
911

12+
import io.kubernetes.client.models.V1Container;
13+
import io.kubernetes.client.models.V1EnvVar;
14+
import io.kubernetes.client.models.V1JobSpec;
1015
import io.kubernetes.client.models.V1ObjectMeta;
16+
import io.kubernetes.client.models.V1SecretReference;
17+
import java.util.List;
18+
import oracle.kubernetes.operator.ProcessingConstants;
19+
import oracle.kubernetes.operator.TuningParameters;
20+
import oracle.kubernetes.operator.helpers.JobHelper.DomainIntrospectorJobStepContext;
21+
import oracle.kubernetes.operator.work.Component;
22+
import oracle.kubernetes.operator.work.Packet;
1123
import oracle.kubernetes.weblogic.domain.ClusterConfigurator;
1224
import oracle.kubernetes.weblogic.domain.DomainConfigurator;
1325
import oracle.kubernetes.weblogic.domain.DomainConfiguratorFactory;
1426
import oracle.kubernetes.weblogic.domain.ServerConfigurator;
1527
import oracle.kubernetes.weblogic.domain.v2.ConfigurationConstants;
1628
import oracle.kubernetes.weblogic.domain.v2.Domain;
29+
import oracle.kubernetes.weblogic.domain.v2.DomainSpec;
30+
import org.hamcrest.Matcher;
31+
import org.hamcrest.junit.MatcherAssert;
1732
import org.junit.Test;
1833

1934
public class JobHelperTest {
2035

2136
private static final String NS = "ns1";
37+
private static final String DOMAIN_UID = "JobHelperTestDomain";
2238

2339
@Test
2440
public void creatingServers_true_whenClusterReplicas_gt_0() {
@@ -126,9 +142,66 @@ public void creatingServers_true_when_server_with_START_AWLAYS_startPolicy() {
126142
assertThat(JobHelper.creatingServers(domainPresenceInfo), equalTo(true));
127143
}
128144

145+
@Test
146+
public void whenDomainHasEnvironmentItems_introspectorPodStartupWithThem() {
147+
DomainPresenceInfo domainPresenceInfo = createDomainPresenceInfo();
148+
149+
configureDomain(domainPresenceInfo)
150+
.withEnvironmentVariable("item1", "value1")
151+
.withEnvironmentVariable("item2", "value2");
152+
153+
Packet packet = new Packet();
154+
packet
155+
.getComponents()
156+
.put(ProcessingConstants.DOMAIN_COMPONENT_NAME, Component.createFor(domainPresenceInfo));
157+
DomainIntrospectorJobStepContext domainIntrospectorJobStepContext =
158+
new DomainIntrospectorJobStepContext(domainPresenceInfo, packet);
159+
V1JobSpec jobSpec =
160+
domainIntrospectorJobStepContext.createJobSpec(TuningParameters.getInstance());
161+
162+
MatcherAssert.assertThat(
163+
getContainerFromJobSpec(jobSpec, domainPresenceInfo.getDomainUID()).getEnv(),
164+
allOf(hasEnvVar("item1", "value1"), hasEnvVar("item2", "value2")));
165+
}
166+
167+
@Test
168+
public void whenAdminServerHasEnvironmentItems_introspectorPodStartupWithThem() {
169+
DomainPresenceInfo domainPresenceInfo = createDomainPresenceInfo();
170+
171+
configureDomain(domainPresenceInfo)
172+
.withEnvironmentVariable("item1", "domain-value1")
173+
.withEnvironmentVariable("item2", "domain-value2")
174+
.configureAdminServer()
175+
.withEnvironmentVariable("item2", "admin-value2")
176+
.withEnvironmentVariable("item3", "admin-value3");
177+
178+
Packet packet = new Packet();
179+
packet
180+
.getComponents()
181+
.put(ProcessingConstants.DOMAIN_COMPONENT_NAME, Component.createFor(domainPresenceInfo));
182+
DomainIntrospectorJobStepContext domainIntrospectorJobStepContext =
183+
new DomainIntrospectorJobStepContext(domainPresenceInfo, packet);
184+
V1JobSpec jobSpec =
185+
domainIntrospectorJobStepContext.createJobSpec(TuningParameters.getInstance());
186+
187+
MatcherAssert.assertThat(
188+
getContainerFromJobSpec(jobSpec, domainPresenceInfo.getDomainUID()).getEnv(),
189+
allOf(
190+
hasEnvVar("item1", "domain-value1"),
191+
hasEnvVar("item2", "admin-value2"),
192+
hasEnvVar("item3", "admin-value3")));
193+
}
194+
129195
private DomainPresenceInfo createDomainPresenceInfo() {
130196
DomainPresenceInfo domainPresenceInfo =
131-
new DomainPresenceInfo(new Domain().withMetadata(new V1ObjectMeta().namespace(NS)));
197+
new DomainPresenceInfo(
198+
new Domain()
199+
.withMetadata(new V1ObjectMeta().namespace(NS))
200+
.withSpec(
201+
new DomainSpec()
202+
.withDomainUID(DOMAIN_UID)
203+
.withWebLogicCredentialsSecret(
204+
new V1SecretReference().name("webLogicCredentialsSecretName"))));
132205
configureDomain(domainPresenceInfo)
133206
.withDefaultServerStartPolicy(ConfigurationConstants.START_NEVER);
134207
return domainPresenceInfo;
@@ -147,4 +220,20 @@ private ServerConfigurator configureServer(
147220
DomainPresenceInfo domainPresenceInfo, String serverName) {
148221
return configureDomain(domainPresenceInfo).configureServer(serverName);
149222
}
223+
224+
private V1Container getContainerFromJobSpec(V1JobSpec jobSpec, String domainUID) {
225+
List<V1Container> containersList = jobSpec.getTemplate().getSpec().getContainers();
226+
if (containersList != null) {
227+
for (V1Container container : containersList) {
228+
if (JobHelper.createJobName(domainUID).equals(container.getName())) {
229+
return container;
230+
}
231+
}
232+
}
233+
return null;
234+
}
235+
236+
static Matcher<Iterable<? super V1EnvVar>> hasEnvVar(String name, String value) {
237+
return hasItem(new V1EnvVar().name(name).value(value));
238+
}
150239
}

0 commit comments

Comments
 (0)