Skip to content

Commit 5625a78

Browse files
committed
refactors and fixes
Signed-off-by: Attila Mészáros <csviri@gmail.com>
1 parent c51bdbd commit 5625a78

File tree

12 files changed

+62
-52
lines changed

12 files changed

+62
-52
lines changed

caffeine-bounded-cache-support/src/test/java/io/javaoperatorsdk/operator/processing/event/source/cache/sample/AbstractTestReconciler.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -80,7 +80,8 @@ public List<EventSource> prepareEventSources(
8080
var es = new InformerEventSource<>(InformerConfiguration.from(ConfigMap.class, context)
8181
.withItemStore(boundedItemStore)
8282
.withSecondaryToPrimaryMapper(
83-
Mappers.fromOwnerReference(this instanceof BoundedCacheClusterScopeTestReconciler))
83+
Mappers.fromOwnerReferences(context.getPrimaryResourceClass(),
84+
this instanceof BoundedCacheClusterScopeTestReconciler))
8485
.build(), context);
8586

8687
return List.of(es);

operator-framework-core/src/main/java/io/javaoperatorsdk/operator/api/config/informer/InformerConfiguration.java

Lines changed: 23 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -50,9 +50,7 @@ protected DefaultInformerConfiguration(String labelSelector,
5050
this.followControllerNamespaceChanges = followControllerNamespaceChanges;
5151
this.groupVersionKind = groupVersionKind;
5252
this.primaryToSecondaryMapper = primaryToSecondaryMapper;
53-
this.secondaryToPrimaryMapper =
54-
Objects.requireNonNullElse(secondaryToPrimaryMapper,
55-
Mappers.fromOwnerReferences());
53+
this.secondaryToPrimaryMapper = secondaryToPrimaryMapper;
5654
this.onDeleteFilter = onDeleteFilter;
5755
}
5856

@@ -135,16 +133,21 @@ class InformerConfigurationBuilder<R extends HasMetadata> {
135133
private boolean inheritControllerNamespacesOnChange = false;
136134
private ItemStore<R> itemStore;
137135
private Long informerListLimit;
136+
private final Class<? extends HasMetadata> primaryResourceClass;
138137

139-
private InformerConfigurationBuilder(Class<R> resourceClass) {
138+
private InformerConfigurationBuilder(Class<R> resourceClass,
139+
Class<? extends HasMetadata> primaryResourceClass) {
140140
this.resourceClass = resourceClass;
141+
this.primaryResourceClass = primaryResourceClass;
141142
this.groupVersionKind = null;
142143
}
143144

144145
@SuppressWarnings("unchecked")
145-
private InformerConfigurationBuilder(GroupVersionKind groupVersionKind) {
146+
private InformerConfigurationBuilder(GroupVersionKind groupVersionKind,
147+
Class<? extends HasMetadata> primaryResourceClass) {
146148
this.resourceClass = (Class<R>) GenericKubernetesResource.class;
147149
this.groupVersionKind = groupVersionKind;
150+
this.primaryResourceClass = primaryResourceClass;
148151
}
149152

150153
public <P extends HasMetadata> InformerConfigurationBuilder<R> withPrimaryToSecondaryMapper(
@@ -264,23 +267,17 @@ public InformerConfigurationBuilder<R> withInformerListLimit(Long informerListLi
264267
public InformerConfiguration<R> build() {
265268
return new DefaultInformerConfiguration<>(labelSelector, resourceClass, groupVersionKind,
266269
primaryToSecondaryMapper,
267-
secondaryToPrimaryMapper,
270+
Objects.requireNonNullElse(secondaryToPrimaryMapper,
271+
Mappers.fromOwnerReferences(HasMetadata.getApiVersion(primaryResourceClass),
272+
HasMetadata.getKind(primaryResourceClass), false)),
268273
namespaces, inheritControllerNamespacesOnChange, onAddFilter, onUpdateFilter,
269274
onDeleteFilter, genericFilter, itemStore, informerListLimit);
270275
}
271276
}
272277

273278
static <R extends HasMetadata> InformerConfigurationBuilder<R> from(
274-
Class<R> resourceClass) {
275-
return new InformerConfigurationBuilder<>(resourceClass);
276-
}
277-
278-
/**
279-
* * For the case when want to use {@link GenericKubernetesResource}
280-
*/
281-
static <R extends HasMetadata> InformerConfigurationBuilder<R> from(
282-
GroupVersionKind groupVersionKind) {
283-
return new InformerConfigurationBuilder<>(groupVersionKind);
279+
Class<R> resourceClass, Class<? extends HasMetadata> primaryResourceClass) {
280+
return new InformerConfigurationBuilder<>(resourceClass, primaryResourceClass);
284281
}
285282

286283
/**
@@ -294,7 +291,8 @@ static <R extends HasMetadata> InformerConfigurationBuilder<R> from(
294291
*/
295292
static <R extends HasMetadata> InformerConfigurationBuilder<R> from(
296293
Class<R> resourceClass, EventSourceContext<?> eventSourceContext) {
297-
return new InformerConfigurationBuilder<>(resourceClass)
294+
return new InformerConfigurationBuilder<>(resourceClass,
295+
eventSourceContext.getPrimaryResourceClass())
298296
.withNamespacesInheritedFromController(eventSourceContext);
299297
}
300298

@@ -304,10 +302,17 @@ static <R extends HasMetadata> InformerConfigurationBuilder<R> from(
304302
@SuppressWarnings("unchecked")
305303
static InformerConfigurationBuilder<GenericKubernetesResource> from(
306304
GroupVersionKind groupVersionKind, EventSourceContext<?> eventSourceContext) {
307-
return new InformerConfigurationBuilder<GenericKubernetesResource>(groupVersionKind)
305+
return new InformerConfigurationBuilder<GenericKubernetesResource>(groupVersionKind,
306+
eventSourceContext.getPrimaryResourceClass())
308307
.withNamespacesInheritedFromController(eventSourceContext);
309308
}
310309

310+
static InformerConfigurationBuilder<GenericKubernetesResource> from(
311+
GroupVersionKind groupVersionKind, Class<? extends HasMetadata> primaryResourceClass) {
312+
return new InformerConfigurationBuilder<>(groupVersionKind,
313+
primaryResourceClass);
314+
}
315+
311316
@SuppressWarnings("unchecked")
312317
@Override
313318
default Class<R> getResourceClass() {

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

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,13 +16,16 @@ public class EventSourceContext<P extends HasMetadata> {
1616
private final IndexerResourceCache<P> primaryCache;
1717
private final ControllerConfiguration<P> controllerConfiguration;
1818
private final KubernetesClient client;
19+
private final Class<P> primaryResourceClass;
1920

2021
public EventSourceContext(IndexerResourceCache<P> primaryCache,
2122
ControllerConfiguration<P> controllerConfiguration,
22-
KubernetesClient client) {
23+
KubernetesClient client,
24+
Class<P> primaryResourceClass) {
2325
this.primaryCache = primaryCache;
2426
this.controllerConfiguration = controllerConfiguration;
2527
this.client = client;
28+
this.primaryResourceClass = primaryResourceClass;
2629
}
2730

2831
/**
@@ -54,4 +57,8 @@ public ControllerConfiguration<P> getControllerConfiguration() {
5457
public KubernetesClient getClient() {
5558
return client;
5659
}
60+
61+
public Class<P> getPrimaryResourceClass() {
62+
return primaryResourceClass;
63+
}
5764
}

operator-framework-core/src/main/java/io/javaoperatorsdk/operator/processing/Controller.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -103,7 +103,8 @@ public Controller(Reconciler<P> reconciler,
103103
eventSourceManager.postProcessDefaultEventSourcesAfterProcessorInitializer();
104104
controllerHealthInfo = new ControllerHealthInfo(eventSourceManager);
105105
eventSourceContext = new EventSourceContext<>(
106-
eventSourceManager.getControllerResourceEventSource(), configuration, kubernetesClient);
106+
eventSourceManager.getControllerResourceEventSource(), configuration, kubernetesClient,
107+
configuration.getResourceClass());
107108
initAndRegisterEventSources(eventSourceContext);
108109
configurationService.getMetrics().controllerRegistered(this);
109110
}

operator-framework-core/src/main/java/io/javaoperatorsdk/operator/processing/dependent/kubernetes/GenericKubernetesDependentResource.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ public GenericKubernetesDependentResource(GroupVersionKind groupVersionKind) {
1717
}
1818

1919
protected InformerConfiguration.InformerConfigurationBuilder<GenericKubernetesResource> informerConfigurationBuilder() {
20-
return InformerConfiguration.from(groupVersionKind);
20+
return InformerConfiguration.from(groupVersionKind, getPrimaryResourceType());
2121
}
2222

2323
@SuppressWarnings("unchecked")

operator-framework-core/src/main/java/io/javaoperatorsdk/operator/processing/dependent/kubernetes/KubernetesDependentResource.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -91,15 +91,15 @@ private void configureWith(String labelSelector, Set<String> namespaces,
9191

9292
// just to seamlessly handle GenericKubernetesDependentResource
9393
protected InformerConfiguration.InformerConfigurationBuilder<R> informerConfigurationBuilder() {
94-
return InformerConfiguration.from(resourceType());
94+
return InformerConfiguration.from(resourceType(), getPrimaryResourceType());
9595
}
9696

9797
@SuppressWarnings("unchecked")
9898
private SecondaryToPrimaryMapper<R> getSecondaryToPrimaryMapper() {
9999
if (this instanceof SecondaryToPrimaryMapper) {
100100
return (SecondaryToPrimaryMapper<R>) this;
101101
} else if (garbageCollected) {
102-
return Mappers.fromOwnerReferences(clustered);
102+
return Mappers.fromOwnerReferences(getPrimaryResourceType(), clustered);
103103
} else if (useNonOwnerRefBasedSecondaryToPrimaryMapping()) {
104104
return Mappers.fromDefaultAnnotations();
105105
} else {

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

Lines changed: 18 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
package io.javaoperatorsdk.operator.processing.event.source.informer;
22

33
import java.util.Collections;
4-
import java.util.Optional;
54
import java.util.Set;
65
import java.util.stream.Collectors;
76

@@ -43,36 +42,32 @@ public static <T extends HasMetadata> SecondaryToPrimaryMapper<T> fromLabel(
4342
return fromMetadata(nameKey, namespaceKey, true);
4443
}
4544

46-
public static <T extends HasMetadata> SecondaryToPrimaryMapper<T> fromOwnerReference(HasMetadata primaryResource) {
47-
return fromOwnerReference(false, primaryResource);
45+
public static <T extends HasMetadata> SecondaryToPrimaryMapper<T> fromOwnerReferences(
46+
Class<? extends HasMetadata> primaryResourceType, boolean clusterScoped) {
47+
return fromOwnerReferences(HasMetadata.getApiVersion(primaryResourceType),
48+
HasMetadata.getKind(primaryResourceType),
49+
clusterScoped);
4850
}
4951

50-
/**
51-
* @param clusterScoped if the owner is a cluster scoped resource
52-
* @return mapper
53-
* @param <T> type of the secondary resource, where the owner reference is
54-
*/
55-
public static <T extends HasMetadata> SecondaryToPrimaryMapper<T> fromOwnerReference(
56-
boolean clusterScoped, HasMetadata primaryResource) {
57-
return resource -> {
58-
var ownerReference = resource.getMetadata().getOwnerReferences().stream().filter(r ->
59-
r.getKind().equals(primaryResource.getKind()) && r.getApiVersion().equals(primaryResource.getApiVersion())
60-
).findAny();
61-
return ownerReference.map(or -> ResourceID.fromOwnerReference(resource, or, clusterScoped))
62-
.stream().collect(Collectors.toSet());
63-
};
52+
public static <T extends HasMetadata> SecondaryToPrimaryMapper<T> fromOwnerReferences(
53+
HasMetadata primaryResource) {
54+
return fromOwnerReferences(primaryResource, false);
6455
}
6556

66-
public static <T extends HasMetadata> SecondaryToPrimaryMapper<T> fromOwnerReferences(HasMetadata primaryResource) {
67-
return fromOwnerReferences(primaryResource,false);
57+
public static <T extends HasMetadata> SecondaryToPrimaryMapper<T> fromOwnerReferences(
58+
HasMetadata primaryResource,
59+
boolean clusterScoped) {
60+
return fromOwnerReferences(primaryResource.getApiVersion(), primaryResource.getKind(),
61+
clusterScoped);
6862
}
6963

70-
public static <T extends HasMetadata> SecondaryToPrimaryMapper<T> fromOwnerReferences(HasMetadata primaryResource,
64+
public static <T extends HasMetadata> SecondaryToPrimaryMapper<T> fromOwnerReferences(
65+
String apiVersion, String kind,
7166
boolean clusterScope) {
7267
return resource -> resource.getMetadata().getOwnerReferences()
73-
.stream()
74-
.filter(r->r.getKind().equals(primaryResource.getKind())
75-
&& r.getApiVersion().equals(primaryResource.getApiVersion()))
68+
.stream()
69+
.filter(r -> r.getKind().equals(kind)
70+
&& r.getApiVersion().equals(apiVersion))
7671
.map(or -> ResourceID.fromOwnerReference(resource, or, clusterScope))
7772
.collect(Collectors.toSet());
7873
}

operator-framework/src/test/java/io/javaoperatorsdk/operator/sample/clusterscopedresource/ClusterScopedCustomResourceReconciler.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -56,7 +56,8 @@ private ConfigMap desired(ClusterScopedCustomResource resource) {
5656
public List<EventSource> prepareEventSources(
5757
EventSourceContext<ClusterScopedCustomResource> context) {
5858
var ies = new InformerEventSource<>(InformerConfiguration.from(ConfigMap.class, context)
59-
.withSecondaryToPrimaryMapper(Mappers.fromOwnerReference(true))
59+
.withSecondaryToPrimaryMapper(
60+
Mappers.fromOwnerReferences(context.getPrimaryResourceClass(), true))
6061
.withLabelSelector(TEST_LABEL_KEY + "=" + TEST_LABEL_VALUE)
6162
.build(), context);
6263
return List.of(ies);

operator-framework/src/test/java/io/javaoperatorsdk/operator/sample/createupdateeventfilter/CreateUpdateEventFilterTestReconciler.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -93,7 +93,7 @@ private ConfigMap createConfigMap(CreateUpdateEventFilterTestCustomResource reso
9393
public List<EventSource> prepareEventSources(
9494
EventSourceContext<CreateUpdateEventFilterTestCustomResource> context) {
9595
InformerConfiguration<ConfigMap> informerConfiguration =
96-
InformerConfiguration.from(ConfigMap.class)
96+
InformerConfiguration.from(ConfigMap.class, context)
9797
.withLabelSelector("integrationtest = " + this.getClass().getSimpleName())
9898
.build();
9999
final var informerEventSource =

operator-framework/src/test/java/io/javaoperatorsdk/operator/sample/informereventsource/InformerEventSourceTestCustomReconciler.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,7 @@ public List<EventSource> prepareEventSources(
3636
EventSourceContext<InformerEventSourceTestCustomResource> context) {
3737

3838
InformerConfiguration<ConfigMap> config =
39-
InformerConfiguration.from(ConfigMap.class)
39+
InformerConfiguration.from(ConfigMap.class, context)
4040
.withSecondaryToPrimaryMapper(Mappers.fromAnnotation(RELATED_RESOURCE_NAME))
4141
.build();
4242

operator-framework/src/test/java/io/javaoperatorsdk/operator/sample/multiplesecondaryeventsource/MultipleSecondaryEventSourceReconciler.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -64,7 +64,7 @@ public int getNumberOfExecutions() {
6464
public List<EventSource> prepareEventSources(
6565
EventSourceContext<MultipleSecondaryEventSourceCustomResource> context) {
6666

67-
var config = InformerConfiguration.from(ConfigMap.class)
67+
var config = InformerConfiguration.from(ConfigMap.class, context)
6868
.withNamespaces(context.getControllerConfiguration().getNamespaces())
6969
.withLabelSelector("multisecondary")
7070
.withSecondaryToPrimaryMapper(s -> {

operator-framework/src/test/java/io/javaoperatorsdk/operator/sample/primaryindexer/PrimaryIndexerTestReconciler.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ public List<EventSource> prepareEventSources(
2222
context.getPrimaryCache().addIndexer(CONFIG_MAP_RELATION_INDEXER, indexer);
2323

2424
var informerConfiguration =
25-
InformerConfiguration.from(ConfigMap.class)
25+
InformerConfiguration.from(ConfigMap.class, context)
2626
.withSecondaryToPrimaryMapper(
2727
(ConfigMap secondaryResource) -> context
2828
.getPrimaryCache()

0 commit comments

Comments
 (0)