diff --git a/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/api/config/informer/InformerConfiguration.java b/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/api/config/informer/InformerConfiguration.java index 55c8216e96..c5e28b6804 100644 --- a/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/api/config/informer/InformerConfiguration.java +++ b/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/api/config/informer/InformerConfiguration.java @@ -20,36 +20,36 @@ public interface InformerConfiguration extends DefaultResourceConfiguration implements InformerConfiguration { - private final SecondaryToPrimaryMapper secondaryToPrimaryResourcesIdSet; - private final PrimaryToSecondaryMapper

associatedWith; + private final SecondaryToPrimaryMapper secondaryToPrimaryMapper; + private final PrimaryToSecondaryMapper

primaryToSecondaryMapper; protected DefaultInformerConfiguration(String labelSelector, Class resourceClass, - SecondaryToPrimaryMapper secondaryToPrimaryResourcesIdSet, - PrimaryToSecondaryMapper

associatedWith, + SecondaryToPrimaryMapper secondaryToPrimaryMapper, + PrimaryToSecondaryMapper

primaryToSecondaryMapper, Set namespaces) { super(labelSelector, resourceClass, namespaces); - this.secondaryToPrimaryResourcesIdSet = - Objects.requireNonNullElse(secondaryToPrimaryResourcesIdSet, + this.secondaryToPrimaryMapper = + Objects.requireNonNullElse(secondaryToPrimaryMapper, Mappers.fromOwnerReference()); - this.associatedWith = - Objects.requireNonNullElseGet(associatedWith, () -> ResourceID::fromResource); + this.primaryToSecondaryMapper = + Objects.requireNonNullElseGet(primaryToSecondaryMapper, () -> ResourceID::fromResource); } - public SecondaryToPrimaryMapper getPrimaryResourcesRetriever() { - return secondaryToPrimaryResourcesIdSet; + public SecondaryToPrimaryMapper getSecondaryToPrimaryMapper() { + return secondaryToPrimaryMapper; } - public PrimaryToSecondaryMapper

getAssociatedResourceIdentifier() { - return associatedWith; + public PrimaryToSecondaryMapper

getPrimaryToSecondaryMapper() { + return primaryToSecondaryMapper; } } - SecondaryToPrimaryMapper getPrimaryResourcesRetriever(); + SecondaryToPrimaryMapper getSecondaryToPrimaryMapper(); - PrimaryToSecondaryMapper

getAssociatedResourceIdentifier(); + PrimaryToSecondaryMapper

getPrimaryToSecondaryMapper(); @SuppressWarnings("unused") class InformerConfigurationBuilder { @@ -116,7 +116,7 @@ static InformerConfigurationBuild .withNamespaces(configuration.getNamespaces()) .withLabelSelector(configuration.getLabelSelector()) .withAssociatedSecondaryResourceIdentifier( - configuration.getAssociatedResourceIdentifier()) - .withPrimaryResourcesRetriever(configuration.getPrimaryResourcesRetriever()); + configuration.getPrimaryToSecondaryMapper()) + .withPrimaryResourcesRetriever(configuration.getSecondaryToPrimaryMapper()); } } diff --git a/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/processing/event/source/CachingEventSource.java b/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/processing/event/source/CachingEventSource.java index cd60cf5939..2ddbf0d54c 100644 --- a/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/processing/event/source/CachingEventSource.java +++ b/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/processing/event/source/CachingEventSource.java @@ -43,8 +43,6 @@ public Stream list(Predicate predicate) { return cache.list(predicate); } - - protected UpdatableCache initCache() { return new ConcurrentHashMapCache<>(); } diff --git a/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/processing/event/source/PrimaryToSecondaryMapper.java b/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/processing/event/source/PrimaryToSecondaryMapper.java index 5e88c39727..f0ea122bda 100644 --- a/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/processing/event/source/PrimaryToSecondaryMapper.java +++ b/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/processing/event/source/PrimaryToSecondaryMapper.java @@ -5,5 +5,5 @@ @FunctionalInterface public interface PrimaryToSecondaryMapper

{ - ResourceID associatedSecondaryID(P primary); + ResourceID toSecondaryResourceID(P primary); } diff --git a/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/processing/event/source/SecondaryToPrimaryMapper.java b/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/processing/event/source/SecondaryToPrimaryMapper.java index 7804ac0f82..9f4db0c098 100644 --- a/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/processing/event/source/SecondaryToPrimaryMapper.java +++ b/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/processing/event/source/SecondaryToPrimaryMapper.java @@ -6,5 +6,5 @@ @FunctionalInterface public interface SecondaryToPrimaryMapper { - Set associatedPrimaryResources(T dependentResource); + Set toPrimaryResourceIDs(T dependentResource); } diff --git a/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/processing/event/source/controller/ControllerResourceEventSource.java b/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/processing/event/source/controller/ControllerResourceEventSource.java index e069fcc3d4..25c3b17b08 100644 --- a/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/processing/event/source/controller/ControllerResourceEventSource.java +++ b/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/processing/event/source/controller/ControllerResourceEventSource.java @@ -103,6 +103,6 @@ private void handleKubernetesClientException(Exception e) { @Override public Optional getSecondaryResource(T primary) { - return get(ResourceID.fromResource(primary)); + throw new IllegalStateException("This method should not be called here. Primary: " + primary); } } diff --git a/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/processing/event/source/informer/InformerEventSource.java b/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/processing/event/source/informer/InformerEventSource.java index 1e786efab2..3c1d56a49f 100644 --- a/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/processing/event/source/informer/InformerEventSource.java +++ b/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/processing/event/source/informer/InformerEventSource.java @@ -85,11 +85,17 @@ public InformerEventSource(InformerConfiguration configuration, Kubernetes @Override public void onAdd(R resource) { + if (log.isDebugEnabled()) { + log.debug("On add event received for resource id: {}", ResourceID.fromResource(resource)); + } onAddOrUpdate("add", resource, () -> InformerEventSource.super.onAdd(resource)); } @Override public void onUpdate(R oldObject, R newObject) { + if (log.isDebugEnabled()) { + log.debug("On update event received for resource id: {}", ResourceID.fromResource(newObject)); + } onAddOrUpdate("update", newObject, () -> InformerEventSource.super.onUpdate(oldObject, newObject)); } @@ -118,14 +124,17 @@ private synchronized void onAddOrUpdate(String operation, R newObject, Runnable } @Override - public void onDelete(R r, boolean b) { - super.onDelete(r, b); - propagateEvent(r); + public void onDelete(R resource, boolean b) { + if (log.isDebugEnabled()) { + log.debug("On delete event received for resource id: {}", ResourceID.fromResource(resource)); + } + super.onDelete(resource, b); + propagateEvent(resource); } private void propagateEvent(R object) { var primaryResourceIdSet = - configuration.getPrimaryResourcesRetriever().associatedPrimaryResources(object); + configuration.getSecondaryToPrimaryMapper().toPrimaryResourceIDs(object); if (primaryResourceIdSet.isEmpty()) { return; } @@ -153,7 +162,7 @@ private void propagateEvent(R object) { */ @Override public Optional getSecondaryResource(P resource) { - final var id = configuration.getAssociatedResourceIdentifier().associatedSecondaryID(resource); + final var id = configuration.getPrimaryToSecondaryMapper().toSecondaryResourceID(resource); return get(id); } diff --git a/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/processing/event/source/informer/ManagedInformerEventSource.java b/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/processing/event/source/informer/ManagedInformerEventSource.java index e2624b8169..dd34e653b2 100644 --- a/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/processing/event/source/informer/ManagedInformerEventSource.java +++ b/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/processing/event/source/informer/ManagedInformerEventSource.java @@ -95,9 +95,7 @@ public Optional get(ResourceID resourceID) { } @Override - public Optional getSecondaryResource(P primary) { - return get(ResourceID.fromResource(primary)); - } + public abstract Optional getSecondaryResource(P primary); @Override public Optional getCachedValue(ResourceID resourceID) { diff --git a/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/processing/event/source/informer/TemporaryResourceCache.java b/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/processing/event/source/informer/TemporaryResourceCache.java index 468092490b..c0c041f3fb 100644 --- a/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/processing/event/source/informer/TemporaryResourceCache.java +++ b/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/processing/event/source/informer/TemporaryResourceCache.java @@ -53,7 +53,7 @@ public synchronized void putAddedResource(T newResource) { ResourceID resourceID = ResourceID.fromResource(newResource); if (managedInformerEventSource.get(resourceID).isEmpty()) { log.debug("Putting resource to cache with ID: {}", resourceID); - cache.put(ResourceID.fromResource(newResource), newResource); + cache.put(resourceID, newResource); } else { log.debug("Won't put resource into cache found already informer cache: {}", resourceID); } diff --git a/operator-framework-core/src/test/java/io/javaoperatorsdk/operator/processing/event/source/informer/InformerEventSourceTest.java b/operator-framework-core/src/test/java/io/javaoperatorsdk/operator/processing/event/source/informer/InformerEventSourceTest.java index 131454b3d2..96146789f6 100644 --- a/operator-framework-core/src/test/java/io/javaoperatorsdk/operator/processing/event/source/informer/InformerEventSourceTest.java +++ b/operator-framework-core/src/test/java/io/javaoperatorsdk/operator/processing/event/source/informer/InformerEventSourceTest.java @@ -49,7 +49,7 @@ void setup() { .thenReturn(labeledResourceClientMock); when(labeledResourceClientMock.runnableInformer(0)).thenReturn(informer); - when(informerConfiguration.getPrimaryResourcesRetriever()) + when(informerConfiguration.getSecondaryToPrimaryMapper()) .thenReturn(mock(SecondaryToPrimaryMapper.class)); informerEventSource = new InformerEventSource<>(informerConfiguration, clientMock); @@ -57,9 +57,9 @@ void setup() { informerEventSource.setEventHandler(eventHandlerMock); SecondaryToPrimaryMapper secondaryToPrimaryMapper = mock(SecondaryToPrimaryMapper.class); - when(informerConfiguration.getPrimaryResourcesRetriever()) + when(informerConfiguration.getSecondaryToPrimaryMapper()) .thenReturn(secondaryToPrimaryMapper); - when(secondaryToPrimaryMapper.associatedPrimaryResources(any())) + when(secondaryToPrimaryMapper.toPrimaryResourceIDs(any())) .thenReturn(Set.of(ResourceID.fromResource(testDeployment()))); } diff --git a/operator-framework/src/test/java/io/javaoperatorsdk/operator/sample/orderedmanageddependent/ConfigMapDependentResource1.java b/operator-framework/src/test/java/io/javaoperatorsdk/operator/sample/orderedmanageddependent/ConfigMapDependentResource1.java index e1641ca50e..c0469c6a7c 100644 --- a/operator-framework/src/test/java/io/javaoperatorsdk/operator/sample/orderedmanageddependent/ConfigMapDependentResource1.java +++ b/operator-framework/src/test/java/io/javaoperatorsdk/operator/sample/orderedmanageddependent/ConfigMapDependentResource1.java @@ -46,7 +46,7 @@ protected ConfigMap desired(OrderedManagedDependentCustomResource primary, } @Override - public ResourceID associatedSecondaryID(OrderedManagedDependentCustomResource primary) { + public ResourceID toSecondaryResourceID(OrderedManagedDependentCustomResource primary) { return new ResourceID(primary.getMetadata().getName() + "1", primary.getMetadata().getNamespace()); } diff --git a/operator-framework/src/test/java/io/javaoperatorsdk/operator/sample/orderedmanageddependent/ConfigMapDependentResource2.java b/operator-framework/src/test/java/io/javaoperatorsdk/operator/sample/orderedmanageddependent/ConfigMapDependentResource2.java index f4ae1f15fe..40e55d4589 100644 --- a/operator-framework/src/test/java/io/javaoperatorsdk/operator/sample/orderedmanageddependent/ConfigMapDependentResource2.java +++ b/operator-framework/src/test/java/io/javaoperatorsdk/operator/sample/orderedmanageddependent/ConfigMapDependentResource2.java @@ -46,7 +46,7 @@ protected ConfigMap desired(OrderedManagedDependentCustomResource primary, } @Override - public ResourceID associatedSecondaryID(OrderedManagedDependentCustomResource primary) { + public ResourceID toSecondaryResourceID(OrderedManagedDependentCustomResource primary) { return new ResourceID(primary.getMetadata().getName() + "2", primary.getMetadata().getNamespace()); } diff --git a/sample-operators/mysql-schema/src/main/java/io/javaoperatorsdk/operator/sample/dependent/SecretDependentResource.java b/sample-operators/mysql-schema/src/main/java/io/javaoperatorsdk/operator/sample/dependent/SecretDependentResource.java index 673e5154f9..7f39d09130 100644 --- a/sample-operators/mysql-schema/src/main/java/io/javaoperatorsdk/operator/sample/dependent/SecretDependentResource.java +++ b/sample-operators/mysql-schema/src/main/java/io/javaoperatorsdk/operator/sample/dependent/SecretDependentResource.java @@ -59,7 +59,7 @@ public Result match(Secret actual, MySQLSchema primary, Context