/
set.go
98 lines (81 loc) · 2.15 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
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
package collector
import (
infrastructurev1alpha3 "github.com/giantswarm/apiextensions/v6/pkg/apis/infrastructure/v1alpha3"
"github.com/giantswarm/certs/v4/pkg/certs"
"github.com/giantswarm/exporterkit/collector"
"github.com/giantswarm/k8sclient/v7/pkg/k8sclient"
"github.com/giantswarm/microerror"
"github.com/giantswarm/micrologger"
)
type SetConfig struct {
CertSearcher certs.Interface
K8sClient k8sclient.Interface
Logger micrologger.Logger
NewCommonClusterObjectFunc func() infrastructurev1alpha3.CommonClusterObject
Provider string
}
// Set is basically only a wrapper for the operator's collector implementations.
// It eases the initialization 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 clusterCollector *Cluster
{
c := ClusterConfig{
K8sClient: config.K8sClient,
Logger: config.Logger,
NewCommonClusterObjectFunc: config.NewCommonClusterObjectFunc,
Provider: config.Provider,
}
clusterCollector, err = NewCluster(c)
if err != nil {
return nil, microerror.Mask(err)
}
}
var nodePoolCollector *NodePool
{
c := NodePoolConfig{
K8sClient: config.K8sClient,
Logger: config.Logger,
}
nodePoolCollector, err = NewNodePool(c)
if err != nil {
return nil, microerror.Mask(err)
}
}
var clusterTransitionCollector *ClusterTransition
{
c := ClusterTransitionConfig{
K8sClient: config.K8sClient,
Logger: config.Logger,
NewCommonClusterObjectFunc: config.NewCommonClusterObjectFunc,
Provider: config.Provider,
}
clusterTransitionCollector, err = NewClusterTransition(c)
if err != nil {
return nil, microerror.Mask(err)
}
}
var collectorSet *collector.Set
{
c := collector.SetConfig{
Collectors: []collector.Interface{
clusterCollector,
nodePoolCollector,
clusterTransitionCollector,
},
Logger: config.Logger,
}
collectorSet, err = collector.NewSet(c)
if err != nil {
return nil, microerror.Mask(err)
}
}
s := &Set{
Set: collectorSet,
}
return s, nil
}