Skip to content

Commit 6c7be65

Browse files
authored
fix: refine test for rolling (#41254)
closes: #41204 Signed-off-by: Steve Hawkins <[email protected]>
1 parent 744e031 commit 6c7be65

File tree

2 files changed

+12
-12
lines changed

2 files changed

+12
-12
lines changed

operator/src/main/java/org/keycloak/operator/controllers/KeycloakController.java

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -218,16 +218,20 @@ public void updateStatus(Keycloak keycloakCR, StatefulSet existingDeployment, Ke
218218
.ofNullable(existingDeployment.getMetadata().getAnnotations().get(Constants.KEYCLOAK_MIGRATING_ANNOTATION))
219219
.map(Boolean::valueOf).orElse(false)) {
220220
status.addNotReadyMessage("Performing Keycloak update, scaling down the deployment");
221-
} else if (existingDeployment.getStatus() != null
222-
&& existingDeployment.getStatus().getCurrentRevision() != null
223-
&& existingDeployment.getStatus().getUpdateRevision() != null
224-
&& !existingDeployment.getStatus().getCurrentRevision().equals(existingDeployment.getStatus().getUpdateRevision())) {
221+
} else if (isRolling(existingDeployment)) {
225222
status.addRollingUpdateMessage("Rolling out deployment update");
226223
}
227224

228225
distConfigurator.validateOptions(keycloakCR, status);
229226
}
230227

228+
public static boolean isRolling(StatefulSet existingDeployment) {
229+
return existingDeployment.getStatus() != null
230+
&& existingDeployment.getStatus().getCurrentRevision() != null
231+
&& existingDeployment.getStatus().getUpdateRevision() != null
232+
&& !existingDeployment.getStatus().getCurrentRevision().equals(existingDeployment.getStatus().getUpdateRevision());
233+
}
234+
231235
public void validatePodTemplate(Keycloak keycloakCR, KeycloakStatusAggregator status) {
232236
var spec = KeycloakDeploymentDependentResource.getPodTemplateSpec(keycloakCR);
233237
if (spec.isEmpty()) {

operator/src/test/java/org/keycloak/operator/testsuite/utils/CRAssert.java

Lines changed: 4 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,7 @@
4040
import org.junit.jupiter.api.Assertions;
4141
import org.keycloak.operator.Constants;
4242
import org.keycloak.operator.Utils;
43+
import org.keycloak.operator.controllers.KeycloakController;
4344
import org.keycloak.operator.controllers.KeycloakDeploymentDependentResource;
4445
import org.keycloak.operator.controllers.KeycloakServiceDependentResource;
4546
import org.keycloak.operator.crds.v2alpha1.deployment.Keycloak;
@@ -57,7 +58,6 @@
5758
import io.fabric8.kubernetes.api.model.networking.v1.NetworkPolicyPeer;
5859
import io.fabric8.kubernetes.api.model.networking.v1.NetworkPolicyPort;
5960
import io.fabric8.kubernetes.client.KubernetesClient;
60-
import io.fabric8.kubernetes.client.dsl.RollableScalableResource;
6161
import io.fabric8.kubernetes.client.informers.ResourceEventHandler;
6262
import io.fabric8.kubernetes.client.utils.Serialization;
6363
import io.netty.util.NetUtil;
@@ -297,13 +297,9 @@ private static Optional<NetworkPolicyIngressRule> findIngressRuleWithPort(Networ
297297
}
298298

299299
public static CompletableFuture<Void> eventuallyRollingUpdateStatus(KubernetesClient client, Keycloak keycloak, String reason) {
300-
var cf1 = client.resource(keycloak).informOnCondition(kcs -> {
301-
try {
302-
assertKeycloakStatusCondition(kcs.get(0), KeycloakStatusCondition.ROLLING_UPDATE, true, "Rolling out deployment update");
303-
return true;
304-
} catch (AssertionError e) {
305-
return false;
306-
}
300+
// test the statefulset, rather that the keycloak status as the events with the local api server may happen too quickly and the keycloak status may not get upddated
301+
var cf1 = client.apps().statefulSets().withName(keycloak.getMetadata().getName()).informOnCondition(ss -> {
302+
return !ss.isEmpty() && KeycloakController.isRolling(ss.get(0));
307303
});
308304
var cf2 = client.resource(keycloak).informOnCondition(kcs -> {
309305
try {

0 commit comments

Comments
 (0)