This is an automated email from the ASF dual-hosted git repository.

astefanutti pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/camel-k.git

commit 2b06b9a579d47e4617a229aaa486b833c445cc76
Author: Antonin Stefanutti <[email protected]>
AuthorDate: Thu Mar 4 15:32:52 2021 +0100

    fix: Do not rely on default controller-runtime EventBroadcaster
---
 pkg/cmd/operator/operator.go | 10 +++++++---
 1 file changed, 7 insertions(+), 3 deletions(-)

diff --git a/pkg/cmd/operator/operator.go b/pkg/cmd/operator/operator.go
index 39253a0..7b07ef6 100644
--- a/pkg/cmd/operator/operator.go
+++ b/pkg/cmd/operator/operator.go
@@ -111,15 +111,17 @@ func Run(healthPort, monitoringPort int32) {
                os.Exit(1)
        }
 
-       // Configure event broadcaster
-       var eventBroadcaster record.EventBroadcaster
+       // We do not rely on the event broadcaster managed by controller 
runtime,
+       // so that we can check the operator has been granted permission to 
create
+       // Events. This is required for the operator to be installable by 
standard
+       // admin users, that are not granted create permission on Events by 
default.
+       eventBroadcaster := record.NewBroadcaster()
        // nolint: gocritic
        if ok, err := kubernetes.CheckPermission(context.TODO(), c, 
corev1.GroupName, "events", namespace, "", "create"); err != nil {
                log.Error(err, "cannot check permissions for configuring event 
broadcaster")
        } else if !ok {
                log.Info("Event broadcasting to Kubernetes is disabled because 
of missing permissions to create events")
        } else {
-               eventBroadcaster = record.NewBroadcaster()
                
eventBroadcaster.StartRecordingToSink(&typedcorev1.EventSinkImpl{Interface: 
c.CoreV1().Events(namespace)})
        }
 
@@ -168,6 +170,8 @@ func Run(healthPort, monitoringPort int32) {
                log.Error(err, "manager exited non-zero")
                os.Exit(1)
        }
+
+       eventBroadcaster.Shutdown()
 }
 
 // getWatchNamespace returns the Namespace the operator should be watching for 
changes

Reply via email to