Skip to content

Commit 05200f0

Browse files
committed
feat(api): added EventRecorder n EventBroadcaster
1 parent 76de08e commit 05200f0

File tree

2 files changed

+35
-20
lines changed

2 files changed

+35
-20
lines changed

controller/controller.go

+33-20
Original file line numberDiff line numberDiff line change
@@ -81,17 +81,20 @@ type ObjectStorageController struct {
8181
RenewDeadline time.Duration
8282
RetryPeriod time.Duration
8383

84+
eventBroadcaster record.EventBroadcaster
85+
eventRecorder record.EventRecorder
86+
8487
// Controller
8588
ResyncPeriod time.Duration
8689
queue workqueue.RateLimitingInterface
8790
threadiness int
8891

8992
// Listeners
90-
BucketListener BucketListener
91-
BucketClaimListener BucketClaimListener
92-
BucketAccessListener BucketAccessListener
93-
BucketClassListener BucketClassListener
94-
BucketAccessClassListener BucketAccessClassListener
93+
BucketListener BucketListener
94+
BucketClaimListener BucketClaimListener
95+
BucketAccessListener BucketAccessListener
96+
BucketClassListener BucketClassListener
97+
BucketAccessClassListener BucketAccessClassListener
9598

9699
// leader election
97100
leaderLock string
@@ -148,7 +151,13 @@ func NewObjectStorageControllerWithClientset(identity string, leaderLockName str
148151
}
149152
}
150153

154+
rb := record.NewBroadcaster()
155+
leader := sanitize(fmt.Sprintf("%s/%s", leaderLockName, identity))
156+
151157
return &ObjectStorageController{
158+
eventBroadcaster: rb,
159+
eventRecorder: rb.NewRecorder(scheme.Scheme, v1.EventSource{Component: leader}),
160+
152161
identity: id,
153162
kubeClient: kubeClient,
154163
bucketClient: bucketClient,
@@ -186,31 +195,20 @@ func (c *ObjectStorageController) Run(ctx context.Context) error {
186195
return "default"
187196
}()
188197

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))
200198
id, err := os.Hostname()
201199
if err != nil {
202200
return fmt.Errorf("error getting the default leader identity: %v", err)
203201
}
204202

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})
203+
c.eventBroadcaster.StartRecordingToSink(&corev1.EventSinkImpl{Interface: c.kubeClient.CoreV1().Events(ns)})
204+
defer c.eventBroadcaster.Shutdown()
208205

209206
rlConfig := resourcelock.ResourceLockConfig{
210207
Identity: sanitize(id),
211-
EventRecorder: eRecorder,
208+
EventRecorder: c.eventRecorder,
212209
}
213210

211+
leader := sanitize(fmt.Sprintf("%s/%s", c.leaderLock, c.identity))
214212
l, err := resourcelock.New(resourcelock.LeasesResourceLock, ns, leader, c.kubeClient.CoreV1(), c.kubeClient.CoordinationV1(), rlConfig)
215213
if err != nil {
216214
return err
@@ -423,6 +421,7 @@ func (c *ObjectStorageController) runController(ctx context.Context) {
423421
if c.BucketListener != nil {
424422
c.BucketListener.InitializeKubeClient(c.kubeClient)
425423
c.BucketListener.InitializeBucketClient(c.bucketClient)
424+
c.BucketAccessListener.InitializeEventRecorder(c.eventRecorder)
426425
addFunc := func(ctx context.Context, obj interface{}) error {
427426
return c.BucketListener.Add(ctx, obj.(*v1alpha1.Bucket))
428427
}
@@ -437,6 +436,7 @@ func (c *ObjectStorageController) runController(ctx context.Context) {
437436
if c.BucketClaimListener != nil {
438437
c.BucketClaimListener.InitializeKubeClient(c.kubeClient)
439438
c.BucketClaimListener.InitializeBucketClient(c.bucketClient)
439+
c.BucketAccessListener.InitializeEventRecorder(c.eventRecorder)
440440
addFunc := func(ctx context.Context, obj interface{}) error {
441441
return c.BucketClaimListener.Add(ctx, obj.(*v1alpha1.BucketClaim))
442442
}
@@ -451,6 +451,7 @@ func (c *ObjectStorageController) runController(ctx context.Context) {
451451
if c.BucketAccessListener != nil {
452452
c.BucketAccessListener.InitializeKubeClient(c.kubeClient)
453453
c.BucketAccessListener.InitializeBucketClient(c.bucketClient)
454+
c.BucketAccessListener.InitializeEventRecorder(c.eventRecorder)
454455
addFunc := func(ctx context.Context, obj interface{}) error {
455456
return c.BucketAccessListener.Add(ctx, obj.(*v1alpha1.BucketAccess))
456457
}
@@ -465,6 +466,7 @@ func (c *ObjectStorageController) runController(ctx context.Context) {
465466
if c.BucketClassListener != nil {
466467
c.BucketClassListener.InitializeKubeClient(c.kubeClient)
467468
c.BucketClassListener.InitializeBucketClient(c.bucketClient)
469+
c.BucketAccessListener.InitializeEventRecorder(c.eventRecorder)
468470
addFunc := func(ctx context.Context, obj interface{}) error {
469471
return c.BucketClassListener.Add(ctx, obj.(*v1alpha1.BucketClass))
470472
}
@@ -479,6 +481,7 @@ func (c *ObjectStorageController) runController(ctx context.Context) {
479481
if c.BucketAccessClassListener != nil {
480482
c.BucketAccessClassListener.InitializeKubeClient(c.kubeClient)
481483
c.BucketAccessClassListener.InitializeBucketClient(c.bucketClient)
484+
c.BucketAccessListener.InitializeEventRecorder(c.eventRecorder)
482485
addFunc := func(ctx context.Context, obj interface{}) error {
483486
return c.BucketAccessClassListener.Add(ctx, obj.(*v1alpha1.BucketAccessClass))
484487
}
@@ -493,3 +496,13 @@ func (c *ObjectStorageController) runController(ctx context.Context) {
493496

494497
<-ctx.Done()
495498
}
499+
500+
func sanitize(n string) string {
501+
re := regexp.MustCompile("[^a-zA-Z0-9-]")
502+
name := strings.ToLower(re.ReplaceAllString(n, "-"))
503+
if name[len(name)-1] == '-' {
504+
// name must not end with '-'
505+
name = name + "X"
506+
}
507+
return name
508+
}

controller/interfaces.go

+2
Original file line numberDiff line numberDiff line change
@@ -9,12 +9,14 @@ import (
99

1010
// k8s client
1111
kubeclientset "k8s.io/client-go/kubernetes"
12+
"k8s.io/client-go/tools/record"
1213
)
1314

1415
// Set the clients for each of the listeners
1516
type GenericListener interface {
1617
InitializeKubeClient(kubeclientset.Interface)
1718
InitializeBucketClient(bucketclientset.Interface)
19+
InitializeEventRecorder(record.EventRecorder)
1820
}
1921

2022
type BucketListener interface {

0 commit comments

Comments
 (0)