mirror of
https://github.com/resmoio/kubernetes-event-exporter.git
synced 2026-02-14 14:39:50 +00:00
* Updated packages, tidied and changed package name from opsgenie to resmoio * Handle removal of clusterName from API and leader election api change * Update Dockerfile Go to 1.19 * Test case for parsing minCount properly for #43 * more extensive test case to also match apiVersion config
47 lines
1.1 KiB
Go
47 lines
1.1 KiB
Go
package exporter
|
|
|
|
import (
|
|
"github.com/resmoio/kubernetes-event-exporter/pkg/kube"
|
|
"github.com/rs/zerolog/log"
|
|
"reflect"
|
|
)
|
|
|
|
// Engine is responsible for initializing the receivers from sinks
|
|
type Engine struct {
|
|
Route Route
|
|
Registry ReceiverRegistry
|
|
}
|
|
|
|
func NewEngine(config *Config, registry ReceiverRegistry) *Engine {
|
|
for _, v := range config.Receivers {
|
|
sink, err := v.GetSink()
|
|
if err != nil {
|
|
log.Fatal().Err(err).Str("name", v.Name).Msg("Cannot initialize sink")
|
|
}
|
|
|
|
log.Info().
|
|
Str("name", v.Name).
|
|
Str("type", reflect.TypeOf(sink).String()).
|
|
Msg("Registering sink")
|
|
|
|
registry.Register(v.Name, sink)
|
|
}
|
|
|
|
return &Engine{
|
|
Route: config.Route,
|
|
Registry: registry,
|
|
}
|
|
}
|
|
|
|
// OnEvent does not care whether event is add or update. Prior filtering should be done in the controller/watcher
|
|
func (e *Engine) OnEvent(event *kube.EnhancedEvent) {
|
|
e.Route.ProcessEvent(event, e.Registry)
|
|
}
|
|
|
|
// Stop stops all registered sinks
|
|
func (e *Engine) Stop() {
|
|
log.Info().Msg("Closing sinks")
|
|
e.Registry.Close()
|
|
log.Info().Msg("All sinks closed")
|
|
}
|