func()

in pkg/exporter/render.go [36:91]


func (tmplt *EventTemplate) render(ctx context.Context, swEvent *sw.Event, kEvent *k8score.Event) chan bool {
	done := make(chan bool)

	go func() {
		var templateCtx k8s.TemplateContext

		select {
		case templateCtx = <-k8s.Registry.GetContext(ctx, kEvent):
		case <-ctx.Done():
			done <- true
			return
		}

		if logger.Log.IsLevelEnabled(logrus.DebugLevel) {
			if bs, err := json.Marshal(templateCtx); err == nil {
				logger.Log.Debugf("template context %+v", string(bs))
			}
		}

		render := func(t *template.Template, destination *string) error {
			if t == nil {
				return nil
			}

			var buf bytes.Buffer

			if err := t.Execute(&buf, templateCtx); err != nil {
				return err
			}

			if buf.Len() > 0 {
				*destination = buf.String()
			}

			return nil
		}

		if err := render(tmplt.messageTemplate, &swEvent.Message); err != nil {
			logger.Log.Debugf("failed to render the template, using the default event content. %+v", err)
		}

		if err := render(tmplt.sourceTemplate.serviceTemplate, &swEvent.Source.Service); err != nil {
			logger.Log.Debugf("failed to render service template, using the default event content. %+v", err)
		}
		if err := render(tmplt.sourceTemplate.serviceInstanceTemplate, &swEvent.Source.ServiceInstance); err != nil {
			logger.Log.Debugf("failed to render service instance template, using the default event content. %+v", err)
		}
		if err := render(tmplt.sourceTemplate.endpointTemplate, &swEvent.Source.Endpoint); err != nil {
			logger.Log.Debugf("failed to render endpoin template, using the default event content. %+v", err)
		}

		done <- true
	}()

	return done
}