/
set.go
77 lines (63 loc) · 1.61 KB
/
set.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
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
package collector
import (
"github.com/giantswarm/exporterkit/collector"
"github.com/giantswarm/microerror"
"github.com/giantswarm/micrologger"
"go.etcd.io/etcd/clientv3"
)
const (
MetricsNamespace = "etcd_kubernetes"
)
type SetConfig struct {
Logger micrologger.Logger
EtcdClientConfig *clientv3.Config
EtcdPrefix string
EventsPrefix string
}
// Set is basically only a wrapper for the operator's collector implementations.
// It eases the iniitialization and prevents some weird import mess so we do not
// have to alias packages.
type Set struct {
*collector.Set
}
func NewSet(config SetConfig) (*Set, error) {
var err error
var collectors []collector.Interface
{
c := EtcdConfig{ //nolint
Logger: config.Logger,
EtcdClientConfig: config.EtcdClientConfig,
EtcdPrefix: config.EtcdPrefix,
}
eventsCollectorConfig := EventsCollectorConfig{
Logger: config.Logger,
EtcdClientConfig: config.EtcdClientConfig,
EventsPrefix: config.EventsPrefix,
}
etcdCollector, err := NewEtcd(c)
if err != nil {
return nil, microerror.Mask(err)
}
eventCollector, err := NewEventsCollector(eventsCollectorConfig)
if err != nil {
return nil, microerror.Mask(err)
}
collectors = append(collectors, etcdCollector)
collectors = append(collectors, eventCollector)
}
var collectorSet *collector.Set
{
c := collector.SetConfig{
Collectors: collectors,
Logger: config.Logger,
}
collectorSet, err = collector.NewSet(c)
if err != nil {
return nil, microerror.Mask(err)
}
}
s := &Set{
Set: collectorSet,
}
return s, nil
}