From 7dafeacb9eddbe66bd1a03900ca0751b38269d9c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jo=C3=A3o=20Capucho?= Date: Tue, 10 Feb 2026 18:57:04 +0000 Subject: [PATCH 1/2] Utilize the storage version when creating the CRD informer --- .../java/org/etsi/osl/cridge/WatcherService.java | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/src/main/java/org/etsi/osl/cridge/WatcherService.java b/src/main/java/org/etsi/osl/cridge/WatcherService.java index 4dc6d2d..beab831 100644 --- a/src/main/java/org/etsi/osl/cridge/WatcherService.java +++ b/src/main/java/org/etsi/osl/cridge/WatcherService.java @@ -3,6 +3,7 @@ package org.etsi.osl.cridge; import java.util.ArrayList; import java.util.List; import java.util.Map; +import java.util.Optional; import org.etsi.osl.domain.model.kubernetes.KubernetesCRDV1; import org.etsi.osl.tmf.ri639.model.Resource; import org.etsi.osl.tmf.ri639.model.ResourceCreate; @@ -18,6 +19,7 @@ import org.springframework.context.event.EventListener; import org.springframework.stereotype.Service; import io.fabric8.kubernetes.api.model.GenericKubernetesResource; import io.fabric8.kubernetes.api.model.apiextensions.v1.CustomResourceDefinition; +import io.fabric8.kubernetes.api.model.apiextensions.v1.CustomResourceDefinitionVersion; import io.fabric8.kubernetes.client.Watch; import io.fabric8.kubernetes.client.Watcher; import io.fabric8.kubernetes.client.WatcherException; @@ -197,12 +199,23 @@ public class WatcherService { } protected void createCRDSharedIndexInformer(CustomResourceDefinition crd) { + final Optional maybeStorageVersion = crd.getSpec().getVersions() + .stream() + .filter(CustomResourceDefinitionVersion::getStorage) + .findFirst(); + + if (maybeStorageVersion.isEmpty()) { + logger.error("Cannot create createCRDSharedIndexInformer. No storage version found in kind: {}", + crd.getSpec().getNames().getKind()); + return; + } ResourceDefinitionContext context = new ResourceDefinitionContext.Builder() .withGroup(crd.getSpec().getGroup()) - .withVersion(crd.getSpec().getVersions().get(0).getName()) + .withVersion(maybeStorageVersion.get().getName()) .withKind(crd.getSpec().getNames().getKind()) .withPlural(crd.getSpec().getNames().getPlural()).build(); + try { int a = kubernetesClientResource.getKubernetesClient().genericKubernetesResources(context).list().getItems().size(); } catch (Exception e) { -- GitLab From 99a2ad47f4ad8e8dfdeb8e3fbd38b407e78e83dd Mon Sep 17 00:00:00 2001 From: Kostis Trantzas Date: Thu, 9 Apr 2026 13:37:26 +0300 Subject: [PATCH 2/2] Account for served field, on top of storage for the creation of CRD informer. --- .../org/etsi/osl/cridge/WatcherService.java | 17 ++++++++++++----- 1 file changed, 12 insertions(+), 5 deletions(-) diff --git a/src/main/java/org/etsi/osl/cridge/WatcherService.java b/src/main/java/org/etsi/osl/cridge/WatcherService.java index beab831..2f5e4ea 100644 --- a/src/main/java/org/etsi/osl/cridge/WatcherService.java +++ b/src/main/java/org/etsi/osl/cridge/WatcherService.java @@ -199,20 +199,27 @@ public class WatcherService { } protected void createCRDSharedIndexInformer(CustomResourceDefinition crd) { - final Optional maybeStorageVersion = crd.getSpec().getVersions() + Optional storageAndServed = crd.getSpec().getVersions() .stream() - .filter(CustomResourceDefinitionVersion::getStorage) + .filter(v -> Boolean.TRUE.equals(v.getStorage()) && Boolean.TRUE.equals(v.getServed())) .findFirst(); - if (maybeStorageVersion.isEmpty()) { - logger.error("Cannot create createCRDSharedIndexInformer. No storage version found in kind: {}", + Optional anyServed = crd.getSpec().getVersions() + .stream() + .filter(v -> Boolean.TRUE.equals(v.getServed())) + .findFirst(); + + CustomResourceDefinitionVersion versionToUse = storageAndServed.orElseGet(() -> anyServed.orElse(null)); + + if (versionToUse == null) { + logger.error("Cannot create createCRDSharedIndexInformer. No served version found in kind: {}", crd.getSpec().getNames().getKind()); return; } ResourceDefinitionContext context = new ResourceDefinitionContext.Builder() .withGroup(crd.getSpec().getGroup()) - .withVersion(maybeStorageVersion.get().getName()) + .withVersion(versionToUse.getName()) .withKind(crd.getSpec().getNames().getKind()) .withPlural(crd.getSpec().getNames().getPlural()).build(); -- GitLab