6
6
"sync"
7
7
"time"
8
8
9
+ corev1informers "k8s.io/client-go/informers/core/v1"
10
+
9
11
scyllav1alpha1 "github.com/scylladb/scylla-operator/pkg/api/scylla/v1alpha1"
10
12
scyllaclient "github.com/scylladb/scylla-operator/pkg/client/scylla/clientset/versioned"
11
13
scyllav1alpha1informers "github.com/scylladb/scylla-operator/pkg/client/scylla/informers/externalversions/scylla/v1alpha1"
@@ -54,6 +56,8 @@ type Controller struct {
54
56
55
57
scyllaDBClusterLister scyllav1alpha1listers.ScyllaDBClusterLister
56
58
scyllaOperatorConfigLister scyllav1alpha1listers.ScyllaOperatorConfigLister
59
+ configMapLister corev1listers.ConfigMapLister
60
+ secretLister corev1listers.SecretLister
57
61
58
62
remoteRemoteOwnerLister remotelister.GenericClusterLister [scyllav1alpha1listers.RemoteOwnerLister ]
59
63
remoteScyllaDBDatacenterLister remotelister.GenericClusterLister [scyllav1alpha1listers.ScyllaDBDatacenterLister ]
@@ -62,6 +66,8 @@ type Controller struct {
62
66
remoteEndpointSliceLister remotelister.GenericClusterLister [discoveryv1listers.EndpointSliceLister ]
63
67
remoteEndpointsLister remotelister.GenericClusterLister [corev1listers.EndpointsLister ]
64
68
remotePodLister remotelister.GenericClusterLister [corev1listers.PodLister ]
69
+ remoteConfigMapLister remotelister.GenericClusterLister [corev1listers.ConfigMapLister ]
70
+ remoteSecretLister remotelister.GenericClusterLister [corev1listers.SecretLister ]
65
71
66
72
cachesToSync []cache.InformerSynced
67
73
@@ -78,13 +84,17 @@ func NewController(
78
84
scyllaRemoteClient remoteclient.ClusterClientInterface [scyllaclient.Interface ],
79
85
scyllaDBClusterInformer scyllav1alpha1informers.ScyllaDBClusterInformer ,
80
86
scyllaOperatorConfigInformer scyllav1alpha1informers.ScyllaOperatorConfigInformer ,
87
+ configMapInformer corev1informers.ConfigMapInformer ,
88
+ secretInformer corev1informers.SecretInformer ,
81
89
remoteRemoteOwnerInformer remoteinformers.GenericClusterInformer ,
82
90
remoteScyllaDBDatacenterInformer remoteinformers.GenericClusterInformer ,
83
91
remoteNamespaceInformer remoteinformers.GenericClusterInformer ,
84
92
remoteServiceInformer remoteinformers.GenericClusterInformer ,
85
93
remoteEndpointSliceInformer remoteinformers.GenericClusterInformer ,
86
94
remoteEndpointsInformer remoteinformers.GenericClusterInformer ,
87
95
remotePodInformer remoteinformers.GenericClusterInformer ,
96
+ remoteConfigMapInformer remoteinformers.GenericClusterInformer ,
97
+ remoteSecretInformer remoteinformers.GenericClusterInformer ,
88
98
) (* Controller , error ) {
89
99
eventBroadcaster := record .NewBroadcaster ()
90
100
eventBroadcaster .StartStructuredLogging (0 )
@@ -98,6 +108,8 @@ func NewController(
98
108
99
109
scyllaDBClusterLister : scyllaDBClusterInformer .Lister (),
100
110
scyllaOperatorConfigLister : scyllaOperatorConfigInformer .Lister (),
111
+ configMapLister : configMapInformer .Lister (),
112
+ secretLister : secretInformer .Lister (),
101
113
102
114
remoteRemoteOwnerLister : remotelister .NewClusterLister (scyllav1alpha1listers .NewRemoteOwnerLister , remoteRemoteOwnerInformer .Indexer ().Cluster ),
103
115
remoteScyllaDBDatacenterLister : remotelister .NewClusterLister (scyllav1alpha1listers .NewScyllaDBDatacenterLister , remoteScyllaDBDatacenterInformer .Indexer ().Cluster ),
@@ -106,16 +118,23 @@ func NewController(
106
118
remoteEndpointSliceLister : remotelister .NewClusterLister (discoveryv1listers .NewEndpointSliceLister , remoteEndpointSliceInformer .Indexer ().Cluster ),
107
119
remoteEndpointsLister : remotelister .NewClusterLister (corev1listers .NewEndpointsLister , remoteEndpointsInformer .Indexer ().Cluster ),
108
120
remotePodLister : remotelister .NewClusterLister (corev1listers .NewPodLister , remotePodInformer .Indexer ().Cluster ),
121
+ remoteConfigMapLister : remotelister .NewClusterLister (corev1listers .NewConfigMapLister , remoteConfigMapInformer .Indexer ().Cluster ),
122
+ remoteSecretLister : remotelister .NewClusterLister (corev1listers .NewSecretLister , remoteSecretInformer .Indexer ().Cluster ),
109
123
110
124
cachesToSync : []cache.InformerSynced {
111
125
scyllaDBClusterInformer .Informer ().HasSynced ,
126
+ scyllaOperatorConfigInformer .Informer ().HasSynced ,
127
+ configMapInformer .Informer ().HasSynced ,
128
+ secretInformer .Informer ().HasSynced ,
112
129
remoteRemoteOwnerInformer .Informer ().HasSynced ,
113
130
remoteScyllaDBDatacenterInformer .Informer ().HasSynced ,
114
131
remoteNamespaceInformer .Informer ().HasSynced ,
115
132
remoteServiceInformer .Informer ().HasSynced ,
116
133
remoteEndpointSliceInformer .Informer ().HasSynced ,
117
134
remoteEndpointsInformer .Informer ().HasSynced ,
118
135
remotePodInformer .Informer ().HasSynced ,
136
+ remoteConfigMapInformer .Informer ().HasSynced ,
137
+ remoteSecretInformer .Informer ().HasSynced ,
119
138
},
120
139
121
140
eventRecorder : eventBroadcaster .NewRecorder (scheme .Scheme , corev1.EventSource {Component : "scylladbcluster-controller" }),
@@ -154,6 +173,11 @@ func NewController(
154
173
errs = append (errs , fmt .Errorf ("can't register to ScyllaDBCluster events: %w" , err ))
155
174
}
156
175
176
+ // Local ConfigMap and Secret handlers are skipped to optimize number of syncs which doesn't do anything.
177
+ // Applying configuration change requires rolling restart of ScyllaDBCluster, so these resources will be synced upon
178
+ // ScyllaDBCluster update.
179
+ // These could be added once ConfigMaps and Secrets would require immediate sync.
180
+
157
181
// TODO: add error handling once these start returning errors
158
182
remoteRemoteOwnerInformer .Informer ().AddEventHandler (
159
183
cache.ResourceEventHandlerFuncs {
@@ -211,6 +235,22 @@ func NewController(
211
235
},
212
236
)
213
237
238
+ remoteConfigMapInformer .Informer ().AddEventHandler (
239
+ cache.ResourceEventHandlerFuncs {
240
+ AddFunc : scc .addRemoteConfigMap ,
241
+ UpdateFunc : scc .updateRemoteConfigMap ,
242
+ DeleteFunc : scc .deleteRemoteConfigMap ,
243
+ },
244
+ )
245
+
246
+ remoteSecretInformer .Informer ().AddEventHandler (
247
+ cache.ResourceEventHandlerFuncs {
248
+ AddFunc : scc .addRemoteSecret ,
249
+ UpdateFunc : scc .updateRemoteSecret ,
250
+ DeleteFunc : scc .deleteRemoteSecret ,
251
+ },
252
+ )
253
+
214
254
err = utilerrors .NewAggregate (errs )
215
255
if err != nil {
216
256
return nil , fmt .Errorf ("can't register event handlers: %w" , err )
@@ -540,3 +580,49 @@ func (scc *Controller) deleteRemotePod(obj interface{}) {
540
580
scc .enqueueThroughParentLabel ,
541
581
)
542
582
}
583
+
584
+ func (scc * Controller ) addRemoteConfigMap (obj interface {}) {
585
+ scc .handlers .HandleAdd (
586
+ obj .(* corev1.ConfigMap ),
587
+ scc .enqueueThroughParentLabel ,
588
+ )
589
+ }
590
+
591
+ func (scc * Controller ) updateRemoteConfigMap (old , cur interface {}) {
592
+ scc .handlers .HandleUpdate (
593
+ old .(* corev1.ConfigMap ),
594
+ cur .(* corev1.ConfigMap ),
595
+ scc .enqueueThroughParentLabel ,
596
+ scc .deleteRemoteConfigMap ,
597
+ )
598
+ }
599
+
600
+ func (scc * Controller ) deleteRemoteConfigMap (obj interface {}) {
601
+ scc .handlers .HandleDelete (
602
+ obj ,
603
+ scc .enqueueThroughParentLabel ,
604
+ )
605
+ }
606
+
607
+ func (scc * Controller ) addRemoteSecret (obj interface {}) {
608
+ scc .handlers .HandleAdd (
609
+ obj .(* corev1.Secret ),
610
+ scc .enqueueThroughParentLabel ,
611
+ )
612
+ }
613
+
614
+ func (scc * Controller ) updateRemoteSecret (old , cur interface {}) {
615
+ scc .handlers .HandleUpdate (
616
+ old .(* corev1.Secret ),
617
+ cur .(* corev1.Secret ),
618
+ scc .enqueueThroughParentLabel ,
619
+ scc .deleteRemoteSecret ,
620
+ )
621
+ }
622
+
623
+ func (scc * Controller ) deleteRemoteSecret (obj interface {}) {
624
+ scc .handlers .HandleDelete (
625
+ obj ,
626
+ scc .enqueueThroughParentLabel ,
627
+ )
628
+ }
0 commit comments