Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
aos
GitHub Repository: aos/grafana-agent
Path: blob/main/component/otelcol/internal/scheduler/host.go
4096 views
1
package scheduler
2
3
import (
4
"github.com/go-kit/log"
5
"github.com/go-kit/log/level"
6
7
otelcomponent "go.opentelemetry.io/collector/component"
8
otelconfig "go.opentelemetry.io/collector/config"
9
)
10
11
// Host implements otelcomponent.Host for Grafana Agent Flow.
12
type Host struct {
13
log log.Logger
14
15
extensions map[otelconfig.ComponentID]otelcomponent.Extension
16
exporters map[otelconfig.DataType]map[otelconfig.ComponentID]otelcomponent.Exporter
17
}
18
19
// NewHost creates a new Host.
20
func NewHost(l log.Logger, opts ...HostOption) *Host {
21
h := &Host{log: l}
22
for _, opt := range opts {
23
opt(h)
24
}
25
return h
26
}
27
28
// HostOption customizes behavior of the Host.
29
type HostOption func(*Host)
30
31
// WithHostExtensions provides a custom set of extensions to the Host.
32
func WithHostExtensions(extensions map[otelconfig.ComponentID]otelcomponent.Extension) HostOption {
33
return func(h *Host) {
34
h.extensions = extensions
35
}
36
}
37
38
// WithHostExporters provides a custom set of exporters to the Host.
39
func WithHostExporters(exporters map[otelconfig.DataType]map[otelconfig.ComponentID]otelcomponent.Exporter) HostOption {
40
return func(h *Host) {
41
h.exporters = exporters
42
}
43
}
44
45
var _ otelcomponent.Host = (*Host)(nil)
46
47
// ReportFatalError implements otelcomponent.Host.
48
func (h *Host) ReportFatalError(err error) {
49
level.Error(h.log).Log("msg", "fatal error running component", "err", err)
50
}
51
52
// GetFactory implements otelcomponent.Host.
53
func (h *Host) GetFactory(kind otelcomponent.Kind, componentType otelconfig.Type) otelcomponent.Factory {
54
// GetFactory is used for components to create other components. It's not
55
// clear if we want to allow this right now, so it's disabled.
56
return nil
57
}
58
59
// GetExtensions implements otelcomponent.Host.
60
func (h *Host) GetExtensions() map[otelconfig.ComponentID]otelcomponent.Extension {
61
return h.extensions
62
}
63
64
// GetExporters implements otelcomponent.Host.
65
func (h *Host) GetExporters() map[otelconfig.DataType]map[otelconfig.ComponentID]otelcomponent.Exporter {
66
return h.exporters
67
}
68
69