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..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,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
+ */
+ 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 d6e5cb91ea..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
@@ -40,6 +40,11 @@ public Set getSecondaryResources(Class expectedType) {
return getSecondaryResourcesAsStream(expectedType).collect(Collectors.toSet());
}
+ @Override
+ public IndexedResourceCache getPrimaryCache() {
+ return controller.getEventSourceManager().getControllerResourceEventSource();
+ }
+
@Override
public Stream getSecondaryResourcesAsStream(Class expectedType) {
return controller.getEventSourceManager().getResourceEventSourcesFor(expectedType).stream()
diff --git a/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/api/reconciler/IndexedResourceCache.java b/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/api/reconciler/IndexedResourceCache.java
new file mode 100644
index 0000000000..29ac9c073a
--- /dev/null
+++ b/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/api/reconciler/IndexedResourceCache.java
@@ -0,0 +1,9 @@
+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);
+}
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 e52833d00a..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,15 +5,13 @@
import java.util.function.Function;
import io.fabric8.kubernetes.api.model.HasMetadata;
+import io.javaoperatorsdk.operator.api.reconciler.IndexedResourceCache;
-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);
-
}