You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by as...@apache.org on 2021/03/05 11:46:50 UTC

[camel-k] 03/05: fix: Do not rely on default controller-runtime EventBroadcaster

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 <an...@stefanutti.fr>
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