Skip to content

Commit 9a08695

Browse files
authored
Owls102321 - provide more details in POD_CYCLE_STARTING event message (#3440)
* Add cycle pod reason when it is due to dynamic update
1 parent c82631b commit 9a08695

File tree

2 files changed

+40
-1
lines changed

2 files changed

+40
-1
lines changed

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

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -91,6 +91,7 @@
9191
import static oracle.kubernetes.operator.ProcessingConstants.MII_DYNAMIC_UPDATE_SUCCESS;
9292
import static oracle.kubernetes.operator.helpers.AnnotationHelper.SHA256_ANNOTATION;
9393
import static oracle.kubernetes.operator.helpers.CompatibilityCheck.CompatibilityScope.DOMAIN;
94+
import static oracle.kubernetes.operator.helpers.CompatibilityCheck.CompatibilityScope.POD;
9495
import static oracle.kubernetes.operator.helpers.CompatibilityCheck.CompatibilityScope.UNKNOWN;
9596
import static oracle.kubernetes.operator.helpers.EventHelper.EventItem.DOMAIN_ROLL_STARTING;
9697
import static oracle.kubernetes.operator.helpers.EventHelper.EventItem.POD_CYCLE_STARTING;
@@ -689,6 +690,14 @@ protected String getReasonToRecycle(V1Pod currentPod, CompatibilityScope scope)
689690
return compatibility.getScopedIncompatibility(scope);
690691
}
691692

693+
protected String getReasonToRecycle(V1Pod pod) {
694+
String message = getReasonToRecycle(pod, POD);
695+
if (message == null || message.length() == 0) {
696+
message = getDomainIncompatibility(pod);
697+
}
698+
return message;
699+
}
700+
692701
private ResponseStep<V1Pod> createResponse(Step next) {
693702
return new CreateResponseStep(next);
694703
}
@@ -1199,7 +1208,7 @@ public NextAction apply(Packet packet) {
11991208
}
12001209

12011210
private Step createCyclePodEventStep(Step next) {
1202-
String reason = Optional.ofNullable(message).orElse(getReasonToRecycle(pod, CompatibilityScope.POD));
1211+
String reason = Optional.ofNullable(message).orElse(getReasonToRecycle(pod));
12031212
LOGGER.info(
12041213
MessageKeys.CYCLING_POD,
12051214
Objects.requireNonNull(pod.getMetadata()).getName(),

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

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88
import java.util.List;
99
import java.util.Map;
1010
import java.util.Objects;
11+
import java.util.Optional;
1112

1213
import io.kubernetes.client.openapi.models.V1Container;
1314
import io.kubernetes.client.openapi.models.V1EmptyDirVolumeSource;
@@ -18,6 +19,7 @@
1819
import io.kubernetes.client.openapi.models.V1Volume;
1920
import io.kubernetes.client.openapi.models.V1VolumeMount;
2021
import oracle.kubernetes.operator.DomainStatusUpdater;
22+
import oracle.kubernetes.operator.IntrospectorConfigMapConstants;
2123
import oracle.kubernetes.operator.KubernetesConstants;
2224
import oracle.kubernetes.operator.LabelConstants;
2325
import oracle.kubernetes.operator.calls.FailureStatusSourceException;
@@ -26,8 +28,13 @@
2628
import oracle.kubernetes.operator.work.Packet;
2729
import oracle.kubernetes.operator.work.Step;
2830
import oracle.kubernetes.weblogic.domain.ServerConfigurator;
31+
import oracle.kubernetes.weblogic.domain.model.Configuration;
32+
import oracle.kubernetes.weblogic.domain.model.Model;
33+
import oracle.kubernetes.weblogic.domain.model.OnlineUpdate;
2934
import org.junit.jupiter.api.Test;
3035

36+
import static oracle.kubernetes.operator.EventConstants.ROLL_REASON_WEBLOGIC_CONFIGURATION_CHANGED;
37+
import static oracle.kubernetes.operator.ProcessingConstants.MII_DYNAMIC_UPDATE;
3138
import static oracle.kubernetes.operator.WebLogicConstants.ADMIN_STATE;
3239
import static oracle.kubernetes.operator.WebLogicConstants.RUNNING_STATE;
3340
import static oracle.kubernetes.operator.helpers.DomainIntrospectorJobTest.TEST_VOLUME_NAME;
@@ -858,6 +865,29 @@ void whenDomainHomeChanged_generateExpectedLogMessage()
858865
assertThat(logRecords, containsInfo(getCyclePodKey()));
859866
}
860867

868+
@Test
869+
void whenDMIIDynamicUpdateNull_podCycleEventCreatedWithCorrectMessage() {
870+
initializeExistingPod();
871+
testSupport.getPacket().put(MII_DYNAMIC_UPDATE, "abcd");
872+
testSupport.getPacket().put(IntrospectorConfigMapConstants.DOMAINZIP_HASH, "1234");
873+
setOnlineUpdate(true);
874+
testSupport.runSteps(getStepFactory(), terminalStep);
875+
logRecords.clear();
876+
877+
assertThat(
878+
"Expected Event " + POD_CYCLE_STARTING + " expected with expected message not found",
879+
getExpectedEventMessage(POD_CYCLE_STARTING), stringContainsInOrder(ROLL_REASON_WEBLOGIC_CONFIGURATION_CHANGED));
880+
}
881+
882+
private void setOnlineUpdate(boolean enabled) {
883+
Configuration config = Optional.ofNullable(getDomain().getSpec().getConfiguration()).orElse(new Configuration());
884+
885+
Model model = Optional.ofNullable(config.getModel()).orElse(new Model());
886+
887+
OnlineUpdate update = Optional.ofNullable(model.getOnlineUpdate()).orElse(new OnlineUpdate());
888+
update.setEnabled(enabled);
889+
}
890+
861891
private V1Pod createTestPodModel() {
862892
return new V1Pod().metadata(createPodMetadata()).spec(createPodSpec());
863893
}

0 commit comments

Comments
 (0)