Skip to content

Commit 7086a80

Browse files
authored
Merge pull request #518 from oracle/owls69363-part2
OWLS-69363 and OWLS-70104 part2 in domain-introspector branch
2 parents f7181af + 924785b commit 7086a80

File tree

5 files changed

+155
-28
lines changed

5 files changed

+155
-28
lines changed

model/src/main/java/oracle/kubernetes/weblogic/domain/v2/Domain.java

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -387,6 +387,24 @@ public V1PersistentVolumeClaim getRequiredPersistentVolumeClaim() {
387387
: spec.getStorage().getRequiredPersistentVolumeClaim(getDomainUID(), getNamespace());
388388
}
389389

390+
/**
391+
* Returns the name of the Kubernetes configmap that contains optional configuration overrides.
392+
*
393+
* @return name of the configmap
394+
*/
395+
public String getConfigOverrides() {
396+
return spec.getConfigOverrides();
397+
}
398+
399+
/**
400+
* Returns a list of Kubernetes secret names used in optional configuration overrides.
401+
*
402+
* @return list of Kubernetes secret names
403+
*/
404+
public List<String> getConfigOverrideSecrets() {
405+
return spec.getConfigOverrideSecrets();
406+
}
407+
390408
private String getNamespace() {
391409
return getMetadata().getNamespace();
392410
}

model/src/main/java/oracle/kubernetes/weblogic/domain/v2/DomainSpec.java

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -169,7 +169,7 @@ public class DomainSpec extends BaseConfiguration {
169169
private DomainStorage storage;
170170

171171
/**
172-
* The name of the Kubernetes configmap used in the WebLogic Configuration overrides.
172+
* The name of the Kubernetes configmap used for optional WebLogic configuration overrides.
173173
*
174174
* @since 2.0
175175
*/
@@ -179,7 +179,7 @@ public class DomainSpec extends BaseConfiguration {
179179
private String configOverrides;
180180

181181
/**
182-
* The list of names of the Kubernetes secrets used in the WebLogic Configuration overrides.
182+
* A list of names of the Kubernetes secrets used in the WebLogic Configuration overrides.
183183
*
184184
* @since 2.0
185185
*/
@@ -576,6 +576,11 @@ public void setConfigOverrides(@Nullable String overridess) {
576576
this.configOverrides = overridess;
577577
}
578578

579+
public DomainSpec withConfigOverrides(@Nullable String overridess) {
580+
this.configOverrides = overridess;
581+
return this;
582+
}
583+
579584
private boolean hasConfigOverrideSecrets() {
580585
return configOverrideSecrets != null && configOverrideSecrets.size() != 0;
581586
}
@@ -590,6 +595,11 @@ public void setConfigOverrideSecrets(@Nullable List<String> overridesSecretNames
590595
this.configOverrideSecrets = overridesSecretNames;
591596
}
592597

598+
public DomainSpec withConfigOverrideSecrets(@Nullable List<String> overridesSecretNames) {
599+
this.configOverrideSecrets = overridesSecretNames;
600+
return this;
601+
}
602+
593603
/**
594604
* Returns the name of the persistent volume claim for the logs and PV-based domain.
595605
*

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

Lines changed: 48 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -129,6 +129,14 @@ protected String getIntrospectHome() {
129129
return getDomainHome();
130130
}
131131

132+
List<String> getConfigOverrideSecrets() {
133+
return getDomain().getConfigOverrideSecrets();
134+
}
135+
136+
String getConfigOverrides() {
137+
return getDomain().getConfigOverrides();
138+
}
139+
132140
private ResponseStep<V1Job> createResponse(Step next) {
133141
return new CreateResponseStep(next);
134142
}
@@ -206,19 +214,42 @@ private V1PodSpec createPodSpec(TuningParameters tuningParameters) {
206214
.name(STORAGE_VOLUME)
207215
.persistentVolumeClaim(getPersistenVolumeClaimVolumeSource(getClaimName())));
208216
}
217+
218+
List<String> configOverrideSecrets = getConfigOverrideSecrets();
219+
for (String secretName : configOverrideSecrets) {
220+
podSpec.addVolumesItem(
221+
new V1Volume()
222+
.name(secretName + "-volume")
223+
.secret(getOverrideSecretVolumeSource(secretName)));
224+
}
225+
podSpec.addVolumesItem(
226+
new V1Volume()
227+
.name(getConfigOverrides() + "-volume")
228+
.configMap(getOverridesVolumeSource(getConfigOverrides())));
229+
209230
return podSpec;
210231
}
211232

212233
private V1Container createContainer(TuningParameters tuningParameters) {
213-
return new V1Container()
214-
.name(getJobName())
215-
.image(getImageName())
216-
.imagePullPolicy(getImagePullPolicy())
217-
.command(getContainerCommand())
218-
.env(getEnvironmentVariables(tuningParameters))
219-
.addVolumeMountsItem(volumeMount(STORAGE_VOLUME, STORAGE_MOUNT_PATH))
220-
.addVolumeMountsItem(readOnlyVolumeMount(SECRETS_VOLUME, SECRETS_MOUNT_PATH))
221-
.addVolumeMountsItem(readOnlyVolumeMount(SCRIPTS_VOLUME, SCRIPTS_MOUNTS_PATH));
234+
V1Container container =
235+
new V1Container()
236+
.name(getJobName())
237+
.image(getImageName())
238+
.imagePullPolicy(getImagePullPolicy())
239+
.command(getContainerCommand())
240+
.env(getEnvironmentVariables(tuningParameters))
241+
.addVolumeMountsItem(volumeMount(STORAGE_VOLUME, STORAGE_MOUNT_PATH))
242+
.addVolumeMountsItem(
243+
readOnlyVolumeMount(getConfigOverrides() + "-volume", OVERRIDES_CM_MOUNT_PATH))
244+
.addVolumeMountsItem(readOnlyVolumeMount(SECRETS_VOLUME, SECRETS_MOUNT_PATH))
245+
.addVolumeMountsItem(readOnlyVolumeMount(SCRIPTS_VOLUME, SCRIPTS_MOUNTS_PATH));
246+
247+
List<String> configOverrideSecrets = getConfigOverrideSecrets();
248+
for (String secretName : configOverrideSecrets) {
249+
container.addVolumeMountsItem(
250+
readOnlyVolumeMount(secretName + "-volume", OVERRIDE_SECRETS_MOUNT_PATH));
251+
}
252+
return container;
222253
}
223254

224255
String getImageName() {
@@ -273,4 +304,12 @@ protected V1PersistentVolumeClaimVolumeSource getPersistenVolumeClaimVolumeSourc
273304
String claimName) {
274305
return new V1PersistentVolumeClaimVolumeSource().claimName(claimName);
275306
}
307+
308+
protected V1SecretVolumeSource getOverrideSecretVolumeSource(String name) {
309+
return new V1SecretVolumeSource().secretName(name).defaultMode(420);
310+
}
311+
312+
protected V1ConfigMapVolumeSource getOverridesVolumeSource(String name) {
313+
return new V1ConfigMapVolumeSource().name(name).defaultMode(ALL_READ_AND_EXECUTE);
314+
}
276315
}

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

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,8 @@ public interface StepContextConstants {
99
static final String STORAGE_VOLUME = "weblogic-domain-storage-volume";
1010
static final String SECRETS_MOUNT_PATH = "/weblogic-operator/secrets";
1111
static final String SCRIPTS_MOUNTS_PATH = "/weblogic-operator/scripts";
12+
static final String OVERRIDE_SECRETS_MOUNT_PATH = "/weblogic-operator/config-overrides-secrets";
13+
static final String OVERRIDES_CM_MOUNT_PATH = "/weblogic-operator/config-overrides";
1214
static final String DEBUG_CM_MOUNTS_PATH = "/weblogic-operator/debug";
1315
static final String STORAGE_MOUNT_PATH = "/shared";
1416
static final String NODEMGR_HOME = "/u01/nodemanager";

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

Lines changed: 75 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -60,6 +60,12 @@ public class DomainIntrospectorJobTest {
6060
static final String LOG_HOME = "/shared/logs/" + UID;
6161
static final int FAILURE_THRESHOLD = 1;
6262

63+
static final String OVERRIDES_CM = "overrides-config-map";
64+
static final String OVERRIDE_SECRET_1 = "override-secret-1";
65+
static final String OVERRIDE_SECRET_2 = "override-secret-2";
66+
static final String OVERRIDE_SECRETS_MOUNT_PATH = "/weblogic-operator/config-overrides-secrets";
67+
static final String OVERRIDES_CM_MOUNT_PATH = "/weblogic-operator/config-overrides";
68+
6369
static final String READ_WRITE_MANY_ACCESS = "ReadWriteMany";
6470

6571
@SuppressWarnings("OctalInteger")
@@ -150,13 +156,22 @@ private DomainPresenceInfo createDomainPresenceInfo(Domain domain) {
150156

151157
@SuppressWarnings("deprecation")
152158
private DomainSpec createDomainSpec() {
153-
return new DomainSpec()
154-
.withDomainName(DOMAIN_NAME)
155-
.withDomainUID(UID)
156-
.withAsName(ADMIN_SERVER)
157-
.withAsPort(ADMIN_PORT)
158-
.withAdminSecret(new V1SecretReference().name(ADMIN_SECRET_NAME))
159-
.withImage(LATEST_IMAGE);
159+
DomainSpec spec =
160+
new DomainSpec()
161+
.withDomainName(DOMAIN_NAME)
162+
.withDomainUID(UID)
163+
.withAsName(ADMIN_SERVER)
164+
.withAsPort(ADMIN_PORT)
165+
.withAdminSecret(new V1SecretReference().name(ADMIN_SECRET_NAME))
166+
.withConfigOverrides(OVERRIDES_CM)
167+
.withImage(LATEST_IMAGE);
168+
169+
List<String> overrideSecrets = new ArrayList();
170+
overrideSecrets.add(OVERRIDE_SECRET_1);
171+
overrideSecrets.add(OVERRIDE_SECRET_2);
172+
spec.setConfigOverrideSecrets(overrideSecrets);
173+
174+
return spec;
160175
}
161176

162177
String getJobCreatedMessageKey() {
@@ -211,7 +226,10 @@ public void whenJobCreated_containerHasExpectedVolumeMounts() {
211226
containsInAnyOrder(
212227
volumeMount(STORAGE_VOLUME, STORAGE_MOUNT_PATH),
213228
readOnlyVolumeMount(SECRETS_VOLUME, SECRETS_MOUNT_PATH),
214-
readOnlyVolumeMount(SCRIPTS_VOLUME, SCRIPTS_MOUNTS_PATH)));
229+
readOnlyVolumeMount(SCRIPTS_VOLUME, SCRIPTS_MOUNTS_PATH),
230+
readOnlyVolumeMount(OVERRIDES_CM + "-volume", OVERRIDES_CM_MOUNT_PATH),
231+
readOnlyVolumeMount(OVERRIDE_SECRET_1 + "-volume", OVERRIDE_SECRETS_MOUNT_PATH),
232+
readOnlyVolumeMount(OVERRIDE_SECRET_2 + "-volume", OVERRIDE_SECRETS_MOUNT_PATH)));
215233
}
216234

217235
@SuppressWarnings("unchecked")
@@ -353,19 +371,43 @@ private V1PodSpec createPodSpec(TuningParameters tuningParameters) {
353371
.name(STORAGE_VOLUME)
354372
.persistentVolumeClaim(getPersistenVolumeClaimVolumeSource(getClaimName())));
355373
}
374+
375+
List<String> configOverrideSecrets = getConfigOverrideSecrets();
376+
for (String secretName : configOverrideSecrets) {
377+
podSpec.addVolumesItem(
378+
new V1Volume()
379+
.name(secretName + "-volume")
380+
.secret(getOverrideSecretVolumeSource(secretName)));
381+
}
382+
podSpec.addVolumesItem(
383+
new V1Volume()
384+
.name(getConfigOverrides())
385+
.configMap(getOverridesVolumeSource(getConfigOverrides())));
386+
356387
return podSpec;
357388
}
358389

359390
private V1Container createContainer(TuningParameters tuningParameters) {
360-
return new V1Container()
361-
.name(getJobName())
362-
.image(getImageName())
363-
.imagePullPolicy(getImagePullPolicy())
364-
.command(getContainerCommand())
365-
.env(getEnvironmentVariables(tuningParameters))
366-
.addVolumeMountsItem(volumeMount(STORAGE_VOLUME, STORAGE_MOUNT_PATH))
367-
.addVolumeMountsItem(readOnlyVolumeMount(SECRETS_VOLUME, SECRETS_MOUNT_PATH))
368-
.addVolumeMountsItem(readOnlyVolumeMount(SCRIPTS_VOLUME, SCRIPTS_MOUNTS_PATH));
391+
V1Container container =
392+
new V1Container()
393+
.name(getJobName())
394+
.image(getImageName())
395+
.imagePullPolicy(getImagePullPolicy())
396+
.command(getContainerCommand())
397+
.env(getEnvironmentVariables(tuningParameters))
398+
.addVolumeMountsItem(volumeMount(STORAGE_VOLUME, STORAGE_MOUNT_PATH))
399+
.addVolumeMountsItem(readOnlyVolumeMount(SECRETS_VOLUME, SECRETS_MOUNT_PATH))
400+
.addVolumeMountsItem(readOnlyVolumeMount(SCRIPTS_VOLUME, SCRIPTS_MOUNTS_PATH));
401+
402+
List<String> configOverrideSecrets = getConfigOverrideSecrets();
403+
for (String secretName : configOverrideSecrets) {
404+
container.addVolumeMountsItem(
405+
readOnlyVolumeMount(secretName + "-volume", OVERRIDE_SECRETS_MOUNT_PATH));
406+
}
407+
container.addVolumeMountsItem(
408+
readOnlyVolumeMount(OVERRIDES_CM + "-volume", OVERRIDES_CM_MOUNT_PATH));
409+
410+
return container;
369411
}
370412

371413
String getImageName() {
@@ -419,6 +461,14 @@ private String getClaimName() {
419461
return getClaims().iterator().next().getMetadata().getName();
420462
}
421463

464+
private List<String> getConfigOverrideSecrets() {
465+
return domainPresenceInfo.getDomain().getConfigOverrideSecrets();
466+
}
467+
468+
private String getConfigOverrides() {
469+
return domainPresenceInfo.getDomain().getConfigOverrides();
470+
}
471+
422472
private static V1VolumeMount readOnlyVolumeMount(String volumeName, String mountPath) {
423473
return volumeMount(volumeName, mountPath).readOnly(true);
424474
}
@@ -432,6 +482,14 @@ protected V1PersistentVolumeClaimVolumeSource getPersistenVolumeClaimVolumeSourc
432482
return new V1PersistentVolumeClaimVolumeSource().claimName(claimName);
433483
}
434484

485+
protected V1SecretVolumeSource getOverrideSecretVolumeSource(String name) {
486+
return new V1SecretVolumeSource().secretName(name).defaultMode(420);
487+
}
488+
489+
protected V1ConfigMapVolumeSource getOverridesVolumeSource(String name) {
490+
return new V1ConfigMapVolumeSource().name(name).defaultMode(ALL_READ_AND_EXECUTE);
491+
}
492+
435493
V1Job getCreatedJob() {
436494
JobFetcher jobFetcher = new JobFetcher(getJobName());
437495
expectCreateJob(jobFetcher).returning(createJobModel());

0 commit comments

Comments
 (0)