-
Notifications
You must be signed in to change notification settings - Fork 86
/
job_worker.go
40 lines (32 loc) · 984 Bytes
/
job_worker.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
package telemetry
import (
"context"
"github.com/go-logr/logr"
)
//go:generate go run github.com/maxbrunsfeld/counterfeiter/v6 . DataCollector
// DataCollector collects telemetry data.
type DataCollector interface {
// Collect collects and returns telemetry Data.
Collect(ctx context.Context) (Data, error)
}
func CreateTelemetryJobWorker(
logger logr.Logger,
exporter Exporter,
dataCollector DataCollector,
) func(ctx context.Context) {
return func(ctx context.Context) {
// Gather telemetry
logger.V(1).Info("Gathering telemetry data")
// We will need to gather data as defined in https://github.com/nginxinc/nginx-gateway-fabric/issues/793
data, err := dataCollector.Collect(ctx)
if err != nil {
logger.Error(err, "Failed to collect telemetry data")
return
}
// Export telemetry
logger.V(1).Info("Exporting telemetry data")
if err := exporter.Export(ctx, &data); err != nil {
logger.Error(err, "Failed to export telemetry data")
}
}
}