6
6
import org .slf4j .Logger ;
7
7
import org .slf4j .LoggerFactory ;
8
8
9
+ import io .fabric8 .kubernetes .api .model .KubernetesResourceList ;
9
10
import io .fabric8 .kubernetes .client .CustomResource ;
10
11
import io .fabric8 .kubernetes .client .KubernetesClientException ;
12
+ import io .fabric8 .kubernetes .client .dsl .FilterWatchListDeletable ;
11
13
import io .fabric8 .kubernetes .client .informers .ResourceEventHandler ;
12
14
import io .fabric8 .kubernetes .client .informers .SharedIndexInformer ;
13
15
import io .fabric8 .kubernetes .client .informers .cache .Cache ;
23
25
import static io .javaoperatorsdk .operator .processing .KubernetesResourceUtils .getName ;
24
26
import static io .javaoperatorsdk .operator .processing .KubernetesResourceUtils .getUID ;
25
27
import static io .javaoperatorsdk .operator .processing .KubernetesResourceUtils .getVersion ;
26
- import static io .javaoperatorsdk .operator .processing .event .internal .LabelSelectorParser .parseSimpleLabelSelector ;
27
28
28
29
/**
29
30
* This is a special case since is not bound to a single custom resource
@@ -74,20 +75,16 @@ public void start() {
74
75
75
76
try {
76
77
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 );
81
82
log .debug ("Registered {} -> {} for any namespace" , controller , informer );
82
- informer .run ();
83
83
} else {
84
84
targetNamespaces .forEach (
85
85
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 );
91
88
log .debug ("Registered {} -> {} for namespace: {}" , controller , informer ,
92
89
ns );
93
90
});
@@ -107,6 +104,15 @@ public void start() {
107
104
}
108
105
}
109
106
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
+
110
116
@ Override
111
117
public void stop () {
112
118
for (SharedIndexInformer <T > informer : sharedIndexInformers .values ()) {
0 commit comments