Files
kubernetes-event-exporter/pkg/exporter/engine.go
Mustafa Akın f9335bda24 Updated packages, tidied and changed package name from opsgenie to resmoio (#45)
* 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
2022-12-19 10:45:46 +03:00

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")
}