fix: refine test for rolling

closes: #41204


(cherry picked from commit 6c7be65456153bc912edff7a3673eee355b7e14c)

Signed-off-by: Steve Hawkins <shawkins@redhat.com>
This commit is contained in:
Steven Hawkins 2025-07-21 08:00:18 -04:00 committed by GitHub
parent df1329f70a
commit 00640d629b
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
2 changed files with 12 additions and 12 deletions

View File

@ -218,16 +218,20 @@ public class KeycloakController implements Reconciler<Keycloak> {
.ofNullable(existingDeployment.getMetadata().getAnnotations().get(Constants.KEYCLOAK_MIGRATING_ANNOTATION))
.map(Boolean::valueOf).orElse(false)) {
status.addNotReadyMessage("Performing Keycloak update, scaling down the deployment");
} else if (existingDeployment.getStatus() != null
&& existingDeployment.getStatus().getCurrentRevision() != null
&& existingDeployment.getStatus().getUpdateRevision() != null
&& !existingDeployment.getStatus().getCurrentRevision().equals(existingDeployment.getStatus().getUpdateRevision())) {
} else if (isRolling(existingDeployment)) {
status.addRollingUpdateMessage("Rolling out deployment update");
}
distConfigurator.validateOptions(keycloakCR, status);
}
public static boolean isRolling(StatefulSet existingDeployment) {
return existingDeployment.getStatus() != null
&& existingDeployment.getStatus().getCurrentRevision() != null
&& existingDeployment.getStatus().getUpdateRevision() != null
&& !existingDeployment.getStatus().getCurrentRevision().equals(existingDeployment.getStatus().getUpdateRevision());
}
public void validatePodTemplate(Keycloak keycloakCR, KeycloakStatusAggregator status) {
var spec = KeycloakDeploymentDependentResource.getPodTemplateSpec(keycloakCR);
if (spec.isEmpty()) {

View File

@ -40,6 +40,7 @@ import org.awaitility.Awaitility;
import org.junit.jupiter.api.Assertions;
import org.keycloak.operator.Constants;
import org.keycloak.operator.Utils;
import org.keycloak.operator.controllers.KeycloakController;
import org.keycloak.operator.controllers.KeycloakDeploymentDependentResource;
import org.keycloak.operator.controllers.KeycloakServiceDependentResource;
import org.keycloak.operator.crds.v2alpha1.deployment.Keycloak;
@ -57,7 +58,6 @@ import io.fabric8.kubernetes.api.model.networking.v1.NetworkPolicyIngressRule;
import io.fabric8.kubernetes.api.model.networking.v1.NetworkPolicyPeer;
import io.fabric8.kubernetes.api.model.networking.v1.NetworkPolicyPort;
import io.fabric8.kubernetes.client.KubernetesClient;
import io.fabric8.kubernetes.client.dsl.RollableScalableResource;
import io.fabric8.kubernetes.client.informers.ResourceEventHandler;
import io.fabric8.kubernetes.client.utils.Serialization;
import io.netty.util.NetUtil;
@ -297,13 +297,9 @@ public final class CRAssert {
}
public static CompletableFuture<Void> eventuallyRollingUpdateStatus(KubernetesClient client, Keycloak keycloak, String reason) {
var cf1 = client.resource(keycloak).informOnCondition(kcs -> {
try {
assertKeycloakStatusCondition(kcs.get(0), KeycloakStatusCondition.ROLLING_UPDATE, true, "Rolling out deployment update");
return true;
} catch (AssertionError e) {
return false;
}
// 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
var cf1 = client.apps().statefulSets().withName(keycloak.getMetadata().getName()).informOnCondition(ss -> {
return !ss.isEmpty() && KeycloakController.isRolling(ss.get(0));
});
var cf2 = client.resource(keycloak).informOnCondition(kcs -> {
try {