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