diff --git a/src/main/java/org/etsi/osl/cridge/WatcherService.java b/src/main/java/org/etsi/osl/cridge/WatcherService.java index 4dc6d2daf9d13bbc380d246f094aae72b5e74180..2f5e4eaae5759bbb1581351ed4ec429b8c2a7e74 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,30 @@ public class WatcherService { } protected void createCRDSharedIndexInformer(CustomResourceDefinition crd) { + Optional storageAndServed = crd.getSpec().getVersions() + .stream() + .filter(v -> Boolean.TRUE.equals(v.getStorage()) && Boolean.TRUE.equals(v.getServed())) + .findFirst(); + + 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(crd.getSpec().getVersions().get(0).getName()) + .withVersion(versionToUse.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) {