in pkg/exporter/console.go [78:125]
func (exporter *Console) Export(ctx context.Context, events chan *k8score.Event) {
logger.Log.Debugf("exporting events into %+v", exporter.Name())
for {
select {
case <-ctx.Done():
logger.Log.Debugf("stopping exporter %+v", exporter.Name())
return
case kEvent := <-events:
if logger.Log.IsLevelEnabled(logrus.DebugLevel) {
if bytes, err := json.Marshal(kEvent); err == nil {
logger.Log.Debugf("exporting event to %v: %v", exporter.Name(), string(bytes))
}
}
t := sw.Type_Normal
if kEvent.Type == k8score.EventTypeWarning {
t = sw.Type_Error
}
swEvent := &sw.Event{
Uuid: string(kEvent.UID),
Source: &sw.Source{},
Name: kEvent.Reason,
Type: t,
Message: kEvent.Message,
StartTime: kEvent.FirstTimestamp.UnixNano() / 1000000,
EndTime: kEvent.LastTimestamp.UnixNano() / 1000000,
}
if exporter.config.Template != nil {
go func() {
renderCtx, cancel := context.WithTimeout(ctx, time.Minute)
done := exporter.config.Template.render(renderCtx, swEvent, kEvent)
select {
case <-done:
logger.Log.Debugf("rendered event is: %+v", swEvent)
exporter.export(swEvent)
case <-renderCtx.Done():
logger.Log.Debugf("rendered event is: %+v", swEvent)
exporter.export(swEvent)
}
cancel()
}()
} else {
exporter.export(swEvent)
}
}
}
}