From e2928bb7c29c433dbc8120feda3bae7a760cecbb Mon Sep 17 00:00:00 2001 From: Chris Laprun Date: Tue, 12 Sep 2023 10:21:03 +0200 Subject: [PATCH 1/3] feat: make primary cache accessible from Context Signed-off-by: Chris Laprun --- .../javaoperatorsdk/operator/api/reconciler/Context.java | 9 +++++++++ .../operator/api/reconciler/DefaultContext.java | 6 ++++++ 2 files changed, 15 insertions(+) diff --git a/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/api/reconciler/Context.java b/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/api/reconciler/Context.java index 5043ed675c..632c79e285 100644 --- a/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/api/reconciler/Context.java +++ b/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/api/reconciler/Context.java @@ -10,6 +10,7 @@ import io.javaoperatorsdk.operator.api.config.ControllerConfiguration; import io.javaoperatorsdk.operator.api.reconciler.dependent.managed.ManagedDependentResourceContext; import io.javaoperatorsdk.operator.processing.event.EventSourceRetriever; +import io.javaoperatorsdk.operator.processing.event.source.IndexerResourceCache; public interface Context

{ @@ -43,4 +44,12 @@ Optional getSecondaryResource(Class expectedType, * ExecutorService initialized by framework for workflows. Used for workflow standalone mode. */ ExecutorService getWorkflowExecutorService(); + + /** + * Retrieves the primary resource cache. + * + * @return the {@link IndexerResourceCache} associated with the associated {@link Reconciler} for + * this context + */ + IndexerResourceCache

getPrimaryCache(); } diff --git a/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/api/reconciler/DefaultContext.java b/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/api/reconciler/DefaultContext.java index d6e5cb91ea..a299bb79af 100644 --- a/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/api/reconciler/DefaultContext.java +++ b/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/api/reconciler/DefaultContext.java @@ -13,6 +13,7 @@ import io.javaoperatorsdk.operator.api.reconciler.dependent.managed.ManagedDependentResourceContext; import io.javaoperatorsdk.operator.processing.Controller; import io.javaoperatorsdk.operator.processing.event.EventSourceRetriever; +import io.javaoperatorsdk.operator.processing.event.source.IndexerResourceCache; public class DefaultContext

implements Context

{ @@ -40,6 +41,11 @@ public Set getSecondaryResources(Class expectedType) { return getSecondaryResourcesAsStream(expectedType).collect(Collectors.toSet()); } + @Override + public IndexerResourceCache

getPrimaryCache() { + return controller.getEventSourceManager().getControllerResourceEventSource(); + } + @Override public Stream getSecondaryResourcesAsStream(Class expectedType) { return controller.getEventSourceManager().getResourceEventSourcesFor(expectedType).stream() From 216582ca438f50ea5ac89f56c3c5c629ad26e16a Mon Sep 17 00:00:00 2001 From: Chris Laprun Date: Wed, 13 Sep 2023 08:33:46 +0200 Subject: [PATCH 2/3] refactor: introduce IndexedResourceCache interface Signed-off-by: Chris Laprun --- .../javaoperatorsdk/operator/api/reconciler/Context.java | 3 ++- .../operator/api/reconciler/DefaultContext.java | 4 ++-- .../processing/event/source/IndexedResourceCache.java | 9 +++++++++ .../processing/event/source/IndexerResourceCache.java | 5 +---- 4 files changed, 14 insertions(+), 7 deletions(-) create mode 100644 operator-framework-core/src/main/java/io/javaoperatorsdk/operator/processing/event/source/IndexedResourceCache.java diff --git a/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/api/reconciler/Context.java b/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/api/reconciler/Context.java index 632c79e285..41d69ba1af 100644 --- a/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/api/reconciler/Context.java +++ b/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/api/reconciler/Context.java @@ -10,6 +10,7 @@ import io.javaoperatorsdk.operator.api.config.ControllerConfiguration; import io.javaoperatorsdk.operator.api.reconciler.dependent.managed.ManagedDependentResourceContext; import io.javaoperatorsdk.operator.processing.event.EventSourceRetriever; +import io.javaoperatorsdk.operator.processing.event.source.IndexedResourceCache; import io.javaoperatorsdk.operator.processing.event.source.IndexerResourceCache; public interface Context

{ @@ -51,5 +52,5 @@ Optional getSecondaryResource(Class expectedType, * @return the {@link IndexerResourceCache} associated with the associated {@link Reconciler} for * this context */ - IndexerResourceCache

getPrimaryCache(); + IndexedResourceCache

getPrimaryCache(); } diff --git a/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/api/reconciler/DefaultContext.java b/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/api/reconciler/DefaultContext.java index a299bb79af..a73a484319 100644 --- a/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/api/reconciler/DefaultContext.java +++ b/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/api/reconciler/DefaultContext.java @@ -13,7 +13,7 @@ import io.javaoperatorsdk.operator.api.reconciler.dependent.managed.ManagedDependentResourceContext; import io.javaoperatorsdk.operator.processing.Controller; import io.javaoperatorsdk.operator.processing.event.EventSourceRetriever; -import io.javaoperatorsdk.operator.processing.event.source.IndexerResourceCache; +import io.javaoperatorsdk.operator.processing.event.source.IndexedResourceCache; public class DefaultContext

implements Context

{ @@ -42,7 +42,7 @@ public Set getSecondaryResources(Class expectedType) { } @Override - public IndexerResourceCache

getPrimaryCache() { + public IndexedResourceCache

getPrimaryCache() { return controller.getEventSourceManager().getControllerResourceEventSource(); } diff --git a/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/processing/event/source/IndexedResourceCache.java b/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/processing/event/source/IndexedResourceCache.java new file mode 100644 index 0000000000..8ad0dd811d --- /dev/null +++ b/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/processing/event/source/IndexedResourceCache.java @@ -0,0 +1,9 @@ +package io.javaoperatorsdk.operator.processing.event.source; + +import io.fabric8.kubernetes.api.model.HasMetadata; + +import java.util.List; + +public interface IndexedResourceCache extends ResourceCache { + List byIndex(String indexName, String indexKey); +} diff --git a/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/processing/event/source/IndexerResourceCache.java b/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/processing/event/source/IndexerResourceCache.java index e52833d00a..c3f390364d 100644 --- a/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/processing/event/source/IndexerResourceCache.java +++ b/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/processing/event/source/IndexerResourceCache.java @@ -6,14 +6,11 @@ import io.fabric8.kubernetes.api.model.HasMetadata; -public interface IndexerResourceCache extends ResourceCache { +public interface IndexerResourceCache extends IndexedResourceCache { void addIndexers(Map>> indexers); default void addIndexer(String name, Function> indexer) { addIndexers(Map.of(name, indexer)); } - - List byIndex(String indexName, String indexKey); - } From 08af84f1145c26f6f98bb1525f4db9049d5fcfb0 Mon Sep 17 00:00:00 2001 From: Chris Laprun Date: Wed, 13 Sep 2023 08:35:56 +0200 Subject: [PATCH 3/3] refactor: move read-only cache interfaces to api package Signed-off-by: Chris Laprun --- .../javaoperatorsdk/operator/api/reconciler/Context.java | 1 - .../operator/api/reconciler/DefaultContext.java | 1 - .../source => api/reconciler}/IndexedResourceCache.java | 8 ++++---- .../event/source => api/reconciler}/ResourceCache.java | 3 ++- .../processing/event/source/IndexerResourceCache.java | 1 + 5 files changed, 7 insertions(+), 7 deletions(-) rename operator-framework-core/src/main/java/io/javaoperatorsdk/operator/{processing/event/source => api/reconciler}/IndexedResourceCache.java (58%) rename operator-framework-core/src/main/java/io/javaoperatorsdk/operator/{processing/event/source => api/reconciler}/ResourceCache.java (76%) diff --git a/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/api/reconciler/Context.java b/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/api/reconciler/Context.java index 41d69ba1af..e157ed5fd7 100644 --- a/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/api/reconciler/Context.java +++ b/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/api/reconciler/Context.java @@ -10,7 +10,6 @@ import io.javaoperatorsdk.operator.api.config.ControllerConfiguration; import io.javaoperatorsdk.operator.api.reconciler.dependent.managed.ManagedDependentResourceContext; import io.javaoperatorsdk.operator.processing.event.EventSourceRetriever; -import io.javaoperatorsdk.operator.processing.event.source.IndexedResourceCache; import io.javaoperatorsdk.operator.processing.event.source.IndexerResourceCache; public interface Context

{ diff --git a/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/api/reconciler/DefaultContext.java b/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/api/reconciler/DefaultContext.java index a73a484319..2b0f20ef33 100644 --- a/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/api/reconciler/DefaultContext.java +++ b/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/api/reconciler/DefaultContext.java @@ -13,7 +13,6 @@ import io.javaoperatorsdk.operator.api.reconciler.dependent.managed.ManagedDependentResourceContext; import io.javaoperatorsdk.operator.processing.Controller; import io.javaoperatorsdk.operator.processing.event.EventSourceRetriever; -import io.javaoperatorsdk.operator.processing.event.source.IndexedResourceCache; public class DefaultContext

implements Context

{ diff --git a/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/processing/event/source/IndexedResourceCache.java b/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/api/reconciler/IndexedResourceCache.java similarity index 58% rename from operator-framework-core/src/main/java/io/javaoperatorsdk/operator/processing/event/source/IndexedResourceCache.java rename to operator-framework-core/src/main/java/io/javaoperatorsdk/operator/api/reconciler/IndexedResourceCache.java index 8ad0dd811d..29ac9c073a 100644 --- a/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/processing/event/source/IndexedResourceCache.java +++ b/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/api/reconciler/IndexedResourceCache.java @@ -1,9 +1,9 @@ -package io.javaoperatorsdk.operator.processing.event.source; - -import io.fabric8.kubernetes.api.model.HasMetadata; +package io.javaoperatorsdk.operator.api.reconciler; import java.util.List; +import io.fabric8.kubernetes.api.model.HasMetadata; + public interface IndexedResourceCache extends ResourceCache { - List byIndex(String indexName, String indexKey); + List byIndex(String indexName, String indexKey); } diff --git a/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/processing/event/source/ResourceCache.java b/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/api/reconciler/ResourceCache.java similarity index 76% rename from operator-framework-core/src/main/java/io/javaoperatorsdk/operator/processing/event/source/ResourceCache.java rename to operator-framework-core/src/main/java/io/javaoperatorsdk/operator/api/reconciler/ResourceCache.java index b0b9e88746..130bd23e8d 100644 --- a/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/processing/event/source/ResourceCache.java +++ b/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/api/reconciler/ResourceCache.java @@ -1,9 +1,10 @@ -package io.javaoperatorsdk.operator.processing.event.source; +package io.javaoperatorsdk.operator.api.reconciler; import java.util.function.Predicate; import java.util.stream.Stream; import io.fabric8.kubernetes.api.model.HasMetadata; +import io.javaoperatorsdk.operator.processing.event.source.Cache; @SuppressWarnings("unchecked") public interface ResourceCache extends Cache { diff --git a/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/processing/event/source/IndexerResourceCache.java b/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/processing/event/source/IndexerResourceCache.java index c3f390364d..3938d8219b 100644 --- a/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/processing/event/source/IndexerResourceCache.java +++ b/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/processing/event/source/IndexerResourceCache.java @@ -5,6 +5,7 @@ import java.util.function.Function; import io.fabric8.kubernetes.api.model.HasMetadata; +import io.javaoperatorsdk.operator.api.reconciler.IndexedResourceCache; public interface IndexerResourceCache extends IndexedResourceCache {