Skip to content

Commit 6c73a50

Browse files
committed
feat: pass selector as String instead of parsing it
This is a new feature of Fabric8 5.9+
1 parent 915e413 commit 6c73a50

File tree

2 files changed

+17
-40
lines changed

2 files changed

+17
-40
lines changed

operator-framework-core/src/main/java/io/javaoperatorsdk/operator/processing/event/internal/CustomResourceEventSource.java

Lines changed: 17 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -6,8 +6,10 @@
66
import org.slf4j.Logger;
77
import org.slf4j.LoggerFactory;
88

9+
import io.fabric8.kubernetes.api.model.KubernetesResourceList;
910
import io.fabric8.kubernetes.client.CustomResource;
1011
import io.fabric8.kubernetes.client.KubernetesClientException;
12+
import io.fabric8.kubernetes.client.dsl.FilterWatchListDeletable;
1113
import io.fabric8.kubernetes.client.informers.ResourceEventHandler;
1214
import io.fabric8.kubernetes.client.informers.SharedIndexInformer;
1315
import io.fabric8.kubernetes.client.informers.cache.Cache;
@@ -23,7 +25,6 @@
2325
import static io.javaoperatorsdk.operator.processing.KubernetesResourceUtils.getName;
2426
import static io.javaoperatorsdk.operator.processing.KubernetesResourceUtils.getUID;
2527
import static io.javaoperatorsdk.operator.processing.KubernetesResourceUtils.getVersion;
26-
import static io.javaoperatorsdk.operator.processing.event.internal.LabelSelectorParser.parseSimpleLabelSelector;
2728

2829
/**
2930
* This is a special case since is not bound to a single custom resource
@@ -74,20 +75,16 @@ public void start() {
7475

7576
try {
7677
if (ControllerConfiguration.allNamespacesWatched(targetNamespaces)) {
77-
var informer = client.inAnyNamespace()
78-
.withLabels(parseSimpleLabelSelector(labelSelector)).runnableInformer(0);
79-
informer.addEventHandler(this);
80-
sharedIndexInformers.put(ANY_NAMESPACE_MAP_KEY, informer);
78+
final var filteredBySelectorClient = client.inAnyNamespace()
79+
.withLabelSelector(labelSelector);
80+
final var informer =
81+
createAndRunInformerFor(filteredBySelectorClient, ANY_NAMESPACE_MAP_KEY);
8182
log.debug("Registered {} -> {} for any namespace", controller, informer);
82-
informer.run();
8383
} else {
8484
targetNamespaces.forEach(
8585
ns -> {
86-
var informer = client.inNamespace(ns)
87-
.withLabels(parseSimpleLabelSelector(labelSelector)).runnableInformer(0);
88-
informer.addEventHandler(this);
89-
sharedIndexInformers.put(ns, informer);
90-
informer.run();
86+
final var informer = createAndRunInformerFor(
87+
client.inNamespace(ns).withLabelSelector(labelSelector), ns);
9188
log.debug("Registered {} -> {} for namespace: {}", controller, informer,
9289
ns);
9390
});
@@ -107,6 +104,15 @@ public void start() {
107104
}
108105
}
109106

107+
private SharedIndexInformer<T> createAndRunInformerFor(
108+
FilterWatchListDeletable<T, KubernetesResourceList<T>> filteredBySelectorClient, String key) {
109+
var informer = filteredBySelectorClient.runnableInformer(0);
110+
informer.addEventHandler(this);
111+
sharedIndexInformers.put(key, informer);
112+
informer.run();
113+
return informer;
114+
}
115+
110116
@Override
111117
public void stop() {
112118
for (SharedIndexInformer<T> informer : sharedIndexInformers.values()) {

operator-framework-core/src/test/java/io/javaoperatorsdk/operator/processing/event/internal/LabelSelectorParserTest.java

Lines changed: 0 additions & 29 deletions
This file was deleted.

0 commit comments

Comments
 (0)