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
