Skip to content

Commit a178049

Browse files
committed
work in progress
1 parent 7ec5d1a commit a178049

File tree

3 files changed

+70
-23
lines changed

3 files changed

+70
-23
lines changed
Lines changed: 49 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,49 @@
1+
// Copyright 2019, Oracle Corporation and/or its affiliates. All rights reserved.
2+
// Licensed under the Universal Permissive License v 1.0 as shown at
3+
// http://oss.oracle.com/licenses/upl.
4+
5+
package oracle.kubernetes.operator.helpers;
6+
7+
import java.util.List;
8+
import java.util.Map;
9+
import java.util.Optional;
10+
11+
import io.kubernetes.client.models.V1Container;
12+
import io.kubernetes.client.models.V1EnvVar;
13+
import io.kubernetes.client.models.V1Pod;
14+
import io.kubernetes.client.models.V1PodSpec;
15+
import oracle.kubernetes.operator.KubernetesConstants;
16+
17+
public abstract class BasePodStepContext extends StepContextBase {
18+
final void updateForDeepSubstitution(V1PodSpec podSpec) {
19+
getContainer(podSpec)
20+
.ifPresent(
21+
c -> {
22+
doDeepSubstitution(deepSubVars(c.getEnv()), podSpec);
23+
});
24+
}
25+
26+
final Map<String, String> deepSubVars(List<V1EnvVar> envVars) {
27+
return varsToSubVariables(envVars);
28+
}
29+
30+
protected void augmentSubVars(Map<String, String> vars) {
31+
// no-op
32+
}
33+
34+
protected Optional<V1Container> getContainer(V1Pod v1Pod) {
35+
return getContainer(v1Pod.getSpec());
36+
}
37+
38+
protected Optional<V1Container> getContainer(V1PodSpec v1PodSpec) {
39+
return v1PodSpec.getContainers().stream().filter(this::isK8sContainer).findFirst();
40+
}
41+
42+
protected boolean isK8sContainer(V1Container c) {
43+
return getMainContainerName().equals(c.getName());
44+
}
45+
46+
protected String getMainContainerName() {
47+
return KubernetesConstants.CONTAINER_NAME;
48+
}
49+
}

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

Lines changed: 17 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
import java.io.File;
88
import java.util.Collections;
99
import java.util.List;
10+
import java.util.Map;
1011

1112
import io.kubernetes.client.models.V1ConfigMapVolumeSource;
1213
import io.kubernetes.client.models.V1Container;
@@ -31,7 +32,7 @@
3132
import oracle.kubernetes.operator.work.Step;
3233
import oracle.kubernetes.weblogic.domain.model.Domain;
3334

34-
public abstract class JobStepContext extends StepContextBase {
35+
public abstract class JobStepContext extends BasePodStepContext {
3536
static final long DEFAULT_ACTIVE_DEADLINE_SECONDS = 120L;
3637
static final long DEFAULT_ACTIVE_DEADLINE_INCREMENT_SECONDS = 60L;
3738
private static final LoggingFacade LOGGER = LoggingFactory.getLogger("Operator", "Operator");
@@ -76,6 +77,17 @@ Domain getDomain() {
7677

7778
abstract String getJobName();
7879

80+
@Override
81+
protected String getMainContainerName() {
82+
return getJobName();
83+
}
84+
85+
@Override
86+
protected void augmentSubVars(Map<String, String> vars) {
87+
// HERE: placeholder that needs to be documented
88+
vars.put("SERVER_NAME", "introspector");
89+
}
90+
7991
String getWebLogicCredentialsSecretName() {
8092
return getDomain().getWebLogicCredentialsSecret().getName();
8193
}
@@ -186,9 +198,12 @@ V1JobSpec createJobSpec(TuningParameters tuningParameters) {
186198
}
187199

188200
private V1PodTemplateSpec createPodTemplateSpec(TuningParameters tuningParameters) {
189-
return new V1PodTemplateSpec()
201+
V1PodTemplateSpec podTemplateSpec = new V1PodTemplateSpec()
190202
.metadata(createPodTemplateMetadata())
191203
.spec(createPodSpec(tuningParameters));
204+
205+
updateForDeepSubstitution(podTemplateSpec.getSpec());
206+
return podTemplateSpec;
192207
}
193208

194209
private V1ObjectMeta createPodTemplateMetadata() {

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

Lines changed: 4 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -62,7 +62,7 @@
6262
import static oracle.kubernetes.operator.VersionConstants.DEFAULT_DOMAIN_VERSION;
6363

6464
@SuppressWarnings("deprecation")
65-
public abstract class PodStepContext extends StepContextBase {
65+
public abstract class PodStepContext extends BasePodStepContext {
6666

6767
private static final LoggingFacade LOGGER = LoggingFactory.getLogger("Operator", "Operator");
6868

@@ -386,14 +386,6 @@ V1Pod createPodModel() {
386386
return withNonHashedElements(AnnotationHelper.withSha256Hash(createPodRecipe()));
387387
}
388388

389-
protected Optional<V1Container> getContainer(V1Pod v1Pod) {
390-
return v1Pod.getSpec().getContainers().stream().filter(this::isK8sContainer).findFirst();
391-
}
392-
393-
protected boolean isK8sContainer(V1Container c) {
394-
return KubernetesConstants.CONTAINER_NAME.equals(c.getName());
395-
}
396-
397389
V1Pod withNonHashedElements(V1Pod pod) {
398390
V1ObjectMeta metadata = pod.getMetadata();
399391
// Adds labels and annotations to a pod, skipping any whose names begin with "weblogic."
@@ -406,26 +398,17 @@ V1Pod withNonHashedElements(V1Pod pod) {
406398

407399
updateForStartupMode(pod);
408400
updateForShutdown(pod);
409-
updateForDeepSubstitution(pod);
401+
updateForDeepSubstitution(pod.getSpec());
410402

411403
return pod;
412404
}
413405

414-
final void updateForDeepSubstitution(V1Pod pod) {
415-
getContainer(pod)
416-
.ifPresent(
417-
c -> {
418-
doDeepSubstitution(deepSubVars(c.getEnv()), pod);
419-
});
420-
}
421-
422-
final Map<String, String> deepSubVars(List<V1EnvVar> envVars) {
423-
Map<String, String> vars = varsToSubVariables(envVars);
406+
@Override
407+
protected void augmentSubVars(Map<String, String> vars) {
424408
String clusterName = getClusterName();
425409
if (clusterName != null) {
426410
vars.put("CLUSTER_NAME", clusterName);
427411
}
428-
return vars;
429412
}
430413

431414
final void updateForStartupMode(V1Pod pod) {

0 commit comments

Comments
 (0)