Skip to content

Commit 5047ca0

Browse files
committed
feat: make primary cache accessible from Context (#2053)
* feat: make primary cache accessible from Context Signed-off-by: Chris Laprun <claprun@redhat.com> * refactor: introduce IndexedResourceCache interface Signed-off-by: Chris Laprun <claprun@redhat.com> * refactor: move read-only cache interfaces to api package Signed-off-by: Chris Laprun <claprun@redhat.com> --------- Signed-off-by: Chris Laprun <claprun@redhat.com>
1 parent 3fe0f8e commit 5047ca0

File tree

5 files changed

+27
-5
lines changed

5 files changed

+27
-5
lines changed

operator-framework-core/src/main/java/io/javaoperatorsdk/operator/api/reconciler/Context.java

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@
1010
import io.javaoperatorsdk.operator.api.config.ControllerConfiguration;
1111
import io.javaoperatorsdk.operator.api.reconciler.dependent.managed.ManagedDependentResourceContext;
1212
import io.javaoperatorsdk.operator.processing.event.EventSourceRetriever;
13+
import io.javaoperatorsdk.operator.processing.event.source.IndexerResourceCache;
1314

1415
public interface Context<P extends HasMetadata> {
1516

@@ -43,4 +44,12 @@ <R> Optional<R> getSecondaryResource(Class<R> expectedType,
4344
* ExecutorService initialized by framework for workflows. Used for workflow standalone mode.
4445
*/
4546
ExecutorService getWorkflowExecutorService();
47+
48+
/**
49+
* Retrieves the primary resource cache.
50+
*
51+
* @return the {@link IndexerResourceCache} associated with the associated {@link Reconciler} for
52+
* this context
53+
*/
54+
IndexedResourceCache<P> getPrimaryCache();
4655
}

operator-framework-core/src/main/java/io/javaoperatorsdk/operator/api/reconciler/DefaultContext.java

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,11 @@ public <T> Set<T> getSecondaryResources(Class<T> expectedType) {
4040
return getSecondaryResourcesAsStream(expectedType).collect(Collectors.toSet());
4141
}
4242

43+
@Override
44+
public IndexedResourceCache<P> getPrimaryCache() {
45+
return controller.getEventSourceManager().getControllerResourceEventSource();
46+
}
47+
4348
@Override
4449
public <R> Stream<R> getSecondaryResourcesAsStream(Class<R> expectedType) {
4550
return controller.getEventSourceManager().getResourceEventSourcesFor(expectedType).stream()
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
package io.javaoperatorsdk.operator.api.reconciler;
2+
3+
import java.util.List;
4+
5+
import io.fabric8.kubernetes.api.model.HasMetadata;
6+
7+
public interface IndexedResourceCache<T extends HasMetadata> extends ResourceCache<T> {
8+
List<T> byIndex(String indexName, String indexKey);
9+
}
Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,10 @@
1-
package io.javaoperatorsdk.operator.processing.event.source;
1+
package io.javaoperatorsdk.operator.api.reconciler;
22

33
import java.util.function.Predicate;
44
import java.util.stream.Stream;
55

66
import io.fabric8.kubernetes.api.model.HasMetadata;
7+
import io.javaoperatorsdk.operator.processing.event.source.Cache;
78

89
@SuppressWarnings("unchecked")
910
public interface ResourceCache<T extends HasMetadata> extends Cache<T> {

operator-framework-core/src/main/java/io/javaoperatorsdk/operator/processing/event/source/IndexerResourceCache.java

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -5,15 +5,13 @@
55
import java.util.function.Function;
66

77
import io.fabric8.kubernetes.api.model.HasMetadata;
8+
import io.javaoperatorsdk.operator.api.reconciler.IndexedResourceCache;
89

9-
public interface IndexerResourceCache<T extends HasMetadata> extends ResourceCache<T> {
10+
public interface IndexerResourceCache<T extends HasMetadata> extends IndexedResourceCache<T> {
1011

1112
void addIndexers(Map<String, Function<T, List<String>>> indexers);
1213

1314
default void addIndexer(String name, Function<T, List<String>> indexer) {
1415
addIndexers(Map.of(name, indexer));
1516
}
16-
17-
List<T> byIndex(String indexName, String indexKey);
18-
1917
}

0 commit comments

Comments
 (0)