From 47fdc57f20484718663c5b91f8317142d017f1fc Mon Sep 17 00:00:00 2001 From: Olivier Levitt Date: Mon, 8 Dec 2025 16:24:25 +0100 Subject: [PATCH] CNPG : test --- .../impl/HelmReleaseHealthResolver.java | 32 +++++++++++++++++++ 1 file changed, 32 insertions(+) diff --git a/onyxia-api/src/main/java/fr/insee/onyxia/api/services/impl/HelmReleaseHealthResolver.java b/onyxia-api/src/main/java/fr/insee/onyxia/api/services/impl/HelmReleaseHealthResolver.java index 57207281..985682f2 100644 --- a/onyxia-api/src/main/java/fr/insee/onyxia/api/services/impl/HelmReleaseHealthResolver.java +++ b/onyxia-api/src/main/java/fr/insee/onyxia/api/services/impl/HelmReleaseHealthResolver.java @@ -1,17 +1,21 @@ package fr.insee.onyxia.api.services.impl; import fr.insee.onyxia.model.service.HealthCheckResult; +import io.fabric8.kubernetes.api.model.GenericKubernetesResource; import io.fabric8.kubernetes.api.model.HasMetadata; import io.fabric8.kubernetes.api.model.apps.DaemonSet; import io.fabric8.kubernetes.api.model.apps.Deployment; import io.fabric8.kubernetes.api.model.apps.StatefulSet; import io.fabric8.kubernetes.client.KubernetesClient; +import io.fabric8.kubernetes.client.dsl.base.ResourceDefinitionContext; import java.io.ByteArrayInputStream; import java.io.IOException; import java.io.InputStream; import java.nio.charset.StandardCharsets; import java.util.ArrayList; +import java.util.Collections; import java.util.List; +import java.util.Map; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -19,6 +23,14 @@ public final class HelmReleaseHealthResolver { private static final Logger LOGGER = LoggerFactory.getLogger(HelmReleaseHealthResolver.class); + private static final ResourceDefinitionContext CNPG_CLUSTER = + new ResourceDefinitionContext.Builder() + .withGroup("postgresql.cnpg.io") + .withVersion("v1") + .withPlural("clusters") + .withNamespaced(true) + .build(); + static List checkHelmReleaseHealth( String namespace, String manifest, KubernetesClient kubernetesClient) { // Identify the Helm release secret @@ -39,6 +51,7 @@ private static List checkHealth( for (HasMetadata resource : resources) { String name = resource.getMetadata().getName(); String kind = resource.getKind(); + String apiVersion = resource.getApiVersion(); HealthCheckResult result = new HealthCheckResult(); result.setName(name); result.setKind(kind); @@ -96,6 +109,25 @@ private static List checkHealth( details.setReady(daemonSet.getStatus().getNumberReady()); } break; + case "Cluster": + if (!"postgresql.cnpg.io/v1".equals(apiVersion)) continue; + GenericKubernetesResource raw = + kubernetesClient + .genericKubernetesResources(CNPG_CLUSTER) + .inNamespace(namespace) + .withName(name) + .get(); + if (raw.getAdditionalProperties().get("status") instanceof Map) { + Map status = + Collections.unmodifiableMap( + (Map) + raw.getAdditionalProperties().get("status")); + details.setDesired( + Integer.parseInt(status.get("instances").toString())); + details.setReady( + Integer.parseInt(status.get("readyInstances").toString())); + } + break; default: continue; }