@@ -3,7 +3,6 @@ package controller
3
3
import (
4
4
"context"
5
5
"fmt"
6
- "io/ioutil"
7
6
"os"
8
7
"reflect"
9
8
"regexp"
@@ -81,17 +80,20 @@ type ObjectStorageController struct {
81
80
RenewDeadline time.Duration
82
81
RetryPeriod time.Duration
83
82
83
+ eventBroadcaster record.EventBroadcaster
84
+ eventRecorder record.EventRecorder
85
+
84
86
// Controller
85
87
ResyncPeriod time.Duration
86
88
queue workqueue.RateLimitingInterface
87
89
threadiness int
88
90
89
91
// Listeners
90
- BucketListener BucketListener
91
- BucketClaimListener BucketClaimListener
92
- BucketAccessListener BucketAccessListener
93
- BucketClassListener BucketClassListener
94
- BucketAccessClassListener BucketAccessClassListener
92
+ BucketListener BucketListener
93
+ BucketClaimListener BucketClaimListener
94
+ BucketAccessListener BucketAccessListener
95
+ BucketClassListener BucketClassListener
96
+ BucketAccessClassListener BucketAccessClassListener
95
97
96
98
// leader election
97
99
leaderLock string
@@ -148,7 +150,17 @@ func NewObjectStorageControllerWithClientset(identity string, leaderLockName str
148
150
}
149
151
}
150
152
153
+ rb := record .NewBroadcaster ()
154
+
155
+ extendedScheme := scheme .Scheme
156
+ if err := v1alpha1 .AddToScheme (extendedScheme ); err != nil {
157
+ return nil , err
158
+ }
159
+
151
160
return & ObjectStorageController {
161
+ eventBroadcaster : rb ,
162
+ eventRecorder : rb .NewRecorder (extendedScheme , v1.EventSource {Component : id }),
163
+
152
164
identity : id ,
153
165
kubeClient : kubeClient ,
154
166
bucketClient : bucketClient ,
@@ -178,39 +190,28 @@ func (c *ObjectStorageController) Run(ctx context.Context) error {
178
190
return ns
179
191
}
180
192
181
- if data , err := ioutil .ReadFile ("/var/run/secrets/kubernetes.io/serviceaccount/namespace" ); err == nil {
193
+ if data , err := os .ReadFile ("/var/run/secrets/kubernetes.io/serviceaccount/namespace" ); err == nil {
182
194
if ns := strings .TrimSpace (string (data )); len (ns ) > 0 {
183
195
return ns
184
196
}
185
197
}
186
198
return "default"
187
199
}()
188
200
189
- sanitize := func (n string ) string {
190
- re := regexp .MustCompile ("[^a-zA-Z0-9-]" )
191
- name := strings .ToLower (re .ReplaceAllString (n , "-" ))
192
- if name [len (name )- 1 ] == '-' {
193
- // name must not end with '-'
194
- name = name + "X"
195
- }
196
- return name
197
- }
198
-
199
- leader := sanitize (fmt .Sprintf ("%s/%s" , c .leaderLock , c .identity ))
200
201
id , err := os .Hostname ()
201
202
if err != nil {
202
203
return fmt .Errorf ("error getting the default leader identity: %v" , err )
203
204
}
204
205
205
- recorder := record .NewBroadcaster ()
206
- recorder .StartRecordingToSink (& corev1.EventSinkImpl {Interface : c .kubeClient .CoreV1 ().Events (ns )})
207
- eRecorder := recorder .NewRecorder (scheme .Scheme , v1.EventSource {Component : leader })
206
+ c .eventBroadcaster .StartRecordingToSink (& corev1.EventSinkImpl {Interface : c .kubeClient .CoreV1 ().Events (ns )})
207
+ defer c .eventBroadcaster .Shutdown ()
208
208
209
209
rlConfig := resourcelock.ResourceLockConfig {
210
210
Identity : sanitize (id ),
211
- EventRecorder : eRecorder ,
211
+ EventRecorder : c . eventRecorder ,
212
212
}
213
213
214
+ leader := sanitize (fmt .Sprintf ("%s/%s" , c .leaderLock , c .identity ))
214
215
l , err := resourcelock .New (resourcelock .LeasesResourceLock , ns , leader , c .kubeClient .CoreV1 (), c .kubeClient .CoordinationV1 (), rlConfig )
215
216
if err != nil {
216
217
return err
@@ -423,6 +424,7 @@ func (c *ObjectStorageController) runController(ctx context.Context) {
423
424
if c .BucketListener != nil {
424
425
c .BucketListener .InitializeKubeClient (c .kubeClient )
425
426
c .BucketListener .InitializeBucketClient (c .bucketClient )
427
+ c .BucketListener .InitializeEventRecorder (c .eventRecorder )
426
428
addFunc := func (ctx context.Context , obj interface {}) error {
427
429
return c .BucketListener .Add (ctx , obj .(* v1alpha1.Bucket ))
428
430
}
@@ -437,6 +439,7 @@ func (c *ObjectStorageController) runController(ctx context.Context) {
437
439
if c .BucketClaimListener != nil {
438
440
c .BucketClaimListener .InitializeKubeClient (c .kubeClient )
439
441
c .BucketClaimListener .InitializeBucketClient (c .bucketClient )
442
+ c .BucketClaimListener .InitializeEventRecorder (c .eventRecorder )
440
443
addFunc := func (ctx context.Context , obj interface {}) error {
441
444
return c .BucketClaimListener .Add (ctx , obj .(* v1alpha1.BucketClaim ))
442
445
}
@@ -451,6 +454,7 @@ func (c *ObjectStorageController) runController(ctx context.Context) {
451
454
if c .BucketAccessListener != nil {
452
455
c .BucketAccessListener .InitializeKubeClient (c .kubeClient )
453
456
c .BucketAccessListener .InitializeBucketClient (c .bucketClient )
457
+ c .BucketAccessListener .InitializeEventRecorder (c .eventRecorder )
454
458
addFunc := func (ctx context.Context , obj interface {}) error {
455
459
return c .BucketAccessListener .Add (ctx , obj .(* v1alpha1.BucketAccess ))
456
460
}
@@ -465,6 +469,7 @@ func (c *ObjectStorageController) runController(ctx context.Context) {
465
469
if c .BucketClassListener != nil {
466
470
c .BucketClassListener .InitializeKubeClient (c .kubeClient )
467
471
c .BucketClassListener .InitializeBucketClient (c .bucketClient )
472
+ c .BucketClassListener .InitializeEventRecorder (c .eventRecorder )
468
473
addFunc := func (ctx context.Context , obj interface {}) error {
469
474
return c .BucketClassListener .Add (ctx , obj .(* v1alpha1.BucketClass ))
470
475
}
@@ -479,6 +484,7 @@ func (c *ObjectStorageController) runController(ctx context.Context) {
479
484
if c .BucketAccessClassListener != nil {
480
485
c .BucketAccessClassListener .InitializeKubeClient (c .kubeClient )
481
486
c .BucketAccessClassListener .InitializeBucketClient (c .bucketClient )
487
+ c .BucketAccessClassListener .InitializeEventRecorder (c .eventRecorder )
482
488
addFunc := func (ctx context.Context , obj interface {}) error {
483
489
return c .BucketAccessClassListener .Add (ctx , obj .(* v1alpha1.BucketAccessClass ))
484
490
}
@@ -493,3 +499,13 @@ func (c *ObjectStorageController) runController(ctx context.Context) {
493
499
494
500
<- ctx .Done ()
495
501
}
502
+
503
+ func sanitize (n string ) string {
504
+ re := regexp .MustCompile ("[^a-zA-Z0-9-]" )
505
+ name := strings .ToLower (re .ReplaceAllString (n , "-" ))
506
+ if name [len (name )- 1 ] == '-' {
507
+ // name must not end with '-'
508
+ name = name + "X"
509
+ }
510
+ return name
511
+ }
0 commit comments