Skip to content
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.

Commit e331508

Browse files
committedOct 25, 2022
feat: decouple event source from cache + list discriminator (#1378)
1 parent 1781465 commit e331508

File tree

46 files changed

+614
-214
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

46 files changed

+614
-214
lines changed
 

‎operator-framework-core/src/main/java/io/javaoperatorsdk/operator/api/config/AnnotationControllerConfiguration.java

Lines changed: 10 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -15,9 +15,8 @@
1515
import io.javaoperatorsdk.operator.OperatorException;
1616
import io.javaoperatorsdk.operator.ReconcilerUtils;
1717
import io.javaoperatorsdk.operator.api.config.dependent.DependentResourceSpec;
18-
import io.javaoperatorsdk.operator.api.reconciler.Constants;
18+
import io.javaoperatorsdk.operator.api.reconciler.*;
1919
import io.javaoperatorsdk.operator.api.reconciler.ControllerConfiguration;
20-
import io.javaoperatorsdk.operator.api.reconciler.Reconciler;
2120
import io.javaoperatorsdk.operator.api.reconciler.dependent.Dependent;
2221
import io.javaoperatorsdk.operator.api.reconciler.dependent.DependentResource;
2322
import io.javaoperatorsdk.operator.processing.dependent.kubernetes.KubernetesDependent;
@@ -48,9 +47,8 @@ public AnnotationControllerConfiguration(Reconciler<P> reconciler) {
4847
this.reconciler = reconciler;
4948
this.annotation = reconciler.getClass().getAnnotation(ControllerConfiguration.class);
5049
if (annotation == null) {
51-
throw new OperatorException(
52-
"Missing mandatory @" + ControllerConfiguration.class.getSimpleName() +
53-
" annotation for reconciler: " + reconciler);
50+
throw new OperatorException("Missing mandatory @" + CONTROLLER_CONFIG_ANNOTATION +
51+
" annotation for reconciler: " + reconciler);
5452
}
5553
}
5654

@@ -256,6 +254,7 @@ private Object createKubernetesResourceConfig(Class<? extends DependentResource>
256254
OnUpdateFilter<? extends HasMetadata> onUpdateFilter = null;
257255
OnDeleteFilter<? extends HasMetadata> onDeleteFilter = null;
258256
GenericFilter<? extends HasMetadata> genericFilter = null;
257+
ResourceDiscriminator<?, ? extends HasMetadata> resourceDiscriminator = null;
259258
if (kubeDependent != null) {
260259
if (!Arrays.equals(KubernetesDependent.DEFAULT_NAMESPACES,
261260
kubeDependent.namespaces())) {
@@ -266,7 +265,6 @@ private Object createKubernetesResourceConfig(Class<? extends DependentResource>
266265
final var fromAnnotation = kubeDependent.labelSelector();
267266
labelSelector = Constants.NO_VALUE_SET.equals(fromAnnotation) ? null : fromAnnotation;
268267

269-
270268
final var context =
271269
Utils.contextFor(this, dependentType, null);
272270
onAddFilter = Utils.instantiate(kubeDependent.onAddFilter(), OnAddFilter.class, context);
@@ -276,10 +274,15 @@ private Object createKubernetesResourceConfig(Class<? extends DependentResource>
276274
Utils.instantiate(kubeDependent.onDeleteFilter(), OnDeleteFilter.class, context);
277275
genericFilter =
278276
Utils.instantiate(kubeDependent.genericFilter(), GenericFilter.class, context);
277+
278+
resourceDiscriminator =
279+
Utils.instantiate(kubeDependent.resourceDiscriminator(),
280+
ResourceDiscriminator.class, context);
279281
}
280282

281283
config =
282-
new KubernetesDependentResourceConfig(namespaces, labelSelector, configuredNS, onAddFilter,
284+
new KubernetesDependentResourceConfig(namespaces, labelSelector, configuredNS,
285+
resourceDiscriminator, onAddFilter,
283286
onUpdateFilter, onDeleteFilter, genericFilter);
284287

285288
return config;

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

Lines changed: 11 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -6,20 +6,27 @@
66
import io.fabric8.kubernetes.api.model.HasMetadata;
77
import io.javaoperatorsdk.operator.api.config.ControllerConfiguration;
88
import io.javaoperatorsdk.operator.api.reconciler.dependent.managed.ManagedDependentResourceContext;
9+
import io.javaoperatorsdk.operator.processing.event.EventSourceRetriever;
910

1011
public interface Context<P extends HasMetadata> {
1112

1213
Optional<RetryInfo> getRetryInfo();
1314

14-
default <T> Optional<T> getSecondaryResource(Class<T> expectedType) {
15-
return getSecondaryResource(expectedType, null);
15+
default <R> Optional<R> getSecondaryResource(Class<R> expectedType) {
16+
return getSecondaryResource(expectedType, (String) null);
1617
}
1718

18-
<T> Set<T> getSecondaryResources(Class<T> expectedType);
19+
<R> Set<R> getSecondaryResources(Class<R> expectedType);
1920

20-
<T> Optional<T> getSecondaryResource(Class<T> expectedType, String eventSourceName);
21+
@Deprecated(forRemoval = true)
22+
<R> Optional<R> getSecondaryResource(Class<R> expectedType, String eventSourceName);
23+
24+
<R> Optional<R> getSecondaryResource(Class<R> expectedType,
25+
ResourceDiscriminator<R, P> discriminator);
2126

2227
ControllerConfiguration<P> getControllerConfiguration();
2328

2429
ManagedDependentResourceContext managedDependentResourceContext();
30+
31+
EventSourceRetriever<P> eventSourceRetriever();
2532
}

0 commit comments

Comments
 (0)
Please sign in to comment.