Commit e5f5bba8 authored by Kostis Trantzas's avatar Kostis Trantzas
Browse files

Merge branch...

Merge branch '25-cridge-fails-to-created-crd-informer-if-first-version-is-not-served' into 'develop'

Utilize the storage version when creating the CRD informer

See merge request !28
parents bbba7bf7 99a2ad47
Loading
Loading
Loading
Loading
Loading
+21 −1
Original line number Diff line number Diff line
@@ -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<CustomResourceDefinitionVersion> storageAndServed = crd.getSpec().getVersions()
				.stream()
				.filter(v -> Boolean.TRUE.equals(v.getStorage()) && Boolean.TRUE.equals(v.getServed()))
				.findFirst();

		Optional<CustomResourceDefinitionVersion> 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) {