Commit 99a2ad47 authored by Kostis Trantzas's avatar Kostis Trantzas
Browse files

Account for served field, on top of storage for the creation of CRD informer.

parent 7dafeacb
Loading
Loading
Loading
Loading
Loading
+12 −5
Original line number Diff line number Diff line
@@ -199,20 +199,27 @@ public class WatcherService {
	}

	protected void createCRDSharedIndexInformer(CustomResourceDefinition crd) {
		final Optional<CustomResourceDefinitionVersion> maybeStorageVersion = crd.getSpec().getVersions()
		Optional<CustomResourceDefinitionVersion> 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<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(maybeStorageVersion.get().getName())
				.withVersion(versionToUse.getName())
				.withKind(crd.getSpec().getNames().getKind())
				.withPlural(crd.getSpec().getNames().getPlural()).build();