diff --git a/operator/src/main/java/oracle/kubernetes/operator/helpers/ConfigMapHelper.java b/operator/src/main/java/oracle/kubernetes/operator/helpers/ConfigMapHelper.java index c48199b0d68..cfd84534285 100644 --- a/operator/src/main/java/oracle/kubernetes/operator/helpers/ConfigMapHelper.java +++ b/operator/src/main/java/oracle/kubernetes/operator/helpers/ConfigMapHelper.java @@ -203,7 +203,7 @@ void recordCurrentMap(Packet packet, V1ConfigMap configMap) { static synchronized Map loadScriptsFromClasspath(String domainNamespace) { Map scripts = scriptReader.loadFilesFromClasspath(); - LOGGER.fine(MessageKeys.SCRIPT_LOADED, domainNamespace); + LOGGER.finer(MessageKeys.SCRIPT_LOADED, domainNamespace); return scripts; } diff --git a/operator/src/main/java/oracle/kubernetes/operator/helpers/PodHelper.java b/operator/src/main/java/oracle/kubernetes/operator/helpers/PodHelper.java index cef1e14a1eb..c293a130628 100644 --- a/operator/src/main/java/oracle/kubernetes/operator/helpers/PodHelper.java +++ b/operator/src/main/java/oracle/kubernetes/operator/helpers/PodHelper.java @@ -13,6 +13,7 @@ import io.kubernetes.client.openapi.models.V1DeleteOptions; import io.kubernetes.client.openapi.models.V1EnvVar; +import io.kubernetes.client.openapi.models.V1EnvVarBuilder; import io.kubernetes.client.openapi.models.V1ObjectMeta; import io.kubernetes.client.openapi.models.V1Pod; import io.kubernetes.client.openapi.models.V1PodCondition; @@ -259,17 +260,20 @@ public static Step deletePodStep(String serverName, Step next) { return new DeletePodStep(serverName, next); } - static List createCopy(List envVars) { + /** + * Create a copy of the list of V1EnvVar environment variables. + * + * @param envVars list of environment variables to copy + * @return List containing a copy of the original list. + */ + public static List createCopy(List envVars) { ArrayList copy = new ArrayList<>(); if (envVars != null) { for (V1EnvVar envVar : envVars) { // note that a deep copy of valueFrom is not needed here as, unlike with value, the // new V1EnvVarFrom objects would be created by the doDeepSubstitutions() method in // StepContextBase class. - copy.add(new V1EnvVar() - .name(envVar.getName()) - .value(envVar.getValue()) - .valueFrom(envVar.getValueFrom())); + copy.add(new V1EnvVarBuilder(envVar).build()); } } return copy; diff --git a/operator/src/main/java/oracle/kubernetes/operator/helpers/PodStepContext.java b/operator/src/main/java/oracle/kubernetes/operator/helpers/PodStepContext.java index b0b7e1a73f9..753c9257ed4 100644 --- a/operator/src/main/java/oracle/kubernetes/operator/helpers/PodStepContext.java +++ b/operator/src/main/java/oracle/kubernetes/operator/helpers/PodStepContext.java @@ -37,6 +37,7 @@ import io.kubernetes.client.openapi.models.V1SecretVolumeSource; import io.kubernetes.client.openapi.models.V1Volume; import io.kubernetes.client.openapi.models.V1VolumeMount; +import io.kubernetes.client.util.Yaml; import jakarta.json.Json; import jakarta.json.JsonPatchBuilder; import oracle.kubernetes.operator.DomainSourceType; @@ -545,11 +546,11 @@ private boolean canUseCurrentPod(V1Pod currentPod) { boolean useCurrent = hasCorrectPodHash(currentPod) && canUseNewDomainZip(currentPod); - if (!useCurrent && AnnotationHelper.getDebugString(currentPod).length() > 0) { - LOGGER.fine( + if (!useCurrent) { + LOGGER.finer( MessageKeys.POD_DUMP, - AnnotationHelper.getDebugString(currentPod), - AnnotationHelper.getDebugString(getPodModel())); + Yaml.dump(currentPod), + Yaml.dump(getPodModel())); } return useCurrent; diff --git a/operator/src/main/java/oracle/kubernetes/weblogic/domain/model/ServerPod.java b/operator/src/main/java/oracle/kubernetes/weblogic/domain/model/ServerPod.java index 0ac0e6af298..bff58b4d51c 100644 --- a/operator/src/main/java/oracle/kubernetes/weblogic/domain/model/ServerPod.java +++ b/operator/src/main/java/oracle/kubernetes/weblogic/domain/model/ServerPod.java @@ -17,6 +17,7 @@ import io.kubernetes.client.openapi.models.V1Affinity; import io.kubernetes.client.openapi.models.V1Capabilities; import io.kubernetes.client.openapi.models.V1Container; +import io.kubernetes.client.openapi.models.V1ContainerBuilder; import io.kubernetes.client.openapi.models.V1EnvVar; import io.kubernetes.client.openapi.models.V1HostPathVolumeSource; import io.kubernetes.client.openapi.models.V1NodeAffinity; @@ -43,6 +44,7 @@ import org.apache.commons.lang3.builder.ToStringBuilder; import static java.util.Collections.emptyList; +import static oracle.kubernetes.operator.helpers.PodHelper.createCopy; class ServerPod extends KubernetesResource { @@ -443,7 +445,7 @@ void fillInFrom(ServerPod serverPod1) { addIfMissing(var); } for (V1Container c : serverPod1.getInitContainers()) { - addInitContainerIfMissing(c); + addInitContainerIfMissing(createWithEnvCopy(c)); } for (V1Container c : serverPod1.getContainers()) { addContainerIfMissing(c); @@ -492,6 +494,10 @@ private void addAuxiliaryImage(ServerPod serverPod1) { } } + private V1Container createWithEnvCopy(V1Container c) { + return new V1ContainerBuilder(c).withEnv(createCopy(c.getEnv())).build(); + } + private void addIfMissing(V1Volume var) { if (!hasVolumeName(var.getName())) { addAdditionalVolume(var);