@@ -22,7 +22,7 @@ import (
22
22
"github.com/prometheus/client_golang/prometheus"
23
23
"github.com/prometheus/client_golang/prometheus/promauto"
24
24
"github.com/prometheus/common/model"
25
- "github.com/prometheus/prometheus/config"
25
+ promconfig "github.com/prometheus/prometheus/config"
26
26
"github.com/prometheus/prometheus/discovery"
27
27
"github.com/prometheus/prometheus/model/relabel"
28
28
"gopkg.in/yaml.v3"
@@ -41,7 +41,7 @@ type Discoverer struct {
41
41
log logr.Logger
42
42
manager * discovery.Manager
43
43
close chan struct {}
44
- configsMap map [allocatorWatcher.EventSource ]* config. Config
44
+ configsMap map [allocatorWatcher.EventSource ][] * promconfig. ScrapeConfig
45
45
hook discoveryHook
46
46
scrapeConfigsHash hash.Hash
47
47
scrapeConfigsUpdater scrapeConfigsUpdater
@@ -52,33 +52,30 @@ type discoveryHook interface {
52
52
}
53
53
54
54
type scrapeConfigsUpdater interface {
55
- UpdateScrapeConfigResponse (map [string ]* config .ScrapeConfig ) error
55
+ UpdateScrapeConfigResponse (map [string ]* promconfig .ScrapeConfig ) error
56
56
}
57
57
58
58
func NewDiscoverer (log logr.Logger , manager * discovery.Manager , hook discoveryHook , scrapeConfigsUpdater scrapeConfigsUpdater ) * Discoverer {
59
59
return & Discoverer {
60
60
log : log ,
61
61
manager : manager ,
62
62
close : make (chan struct {}),
63
- configsMap : make (map [allocatorWatcher.EventSource ]* config. Config ),
63
+ configsMap : make (map [allocatorWatcher.EventSource ][] * promconfig. ScrapeConfig ),
64
64
hook : hook ,
65
+ scrapeConfigsHash : nil , // we want the first update to succeed even if the config is empty
65
66
scrapeConfigsUpdater : scrapeConfigsUpdater ,
66
67
}
67
68
}
68
69
69
- func (m * Discoverer ) ApplyConfig (source allocatorWatcher.EventSource , cfg * config.Config ) error {
70
- if cfg == nil {
71
- m .log .Info ("Service Discovery got empty Prometheus config" , "source" , source .String ())
72
- return nil
73
- }
74
- m .configsMap [source ] = cfg
75
- jobToScrapeConfig := make (map [string ]* config.ScrapeConfig )
70
+ func (m * Discoverer ) ApplyConfig (source allocatorWatcher.EventSource , scrapeConfigs []* promconfig.ScrapeConfig ) error {
71
+ m .configsMap [source ] = scrapeConfigs
72
+ jobToScrapeConfig := make (map [string ]* promconfig.ScrapeConfig )
76
73
77
74
discoveryCfg := make (map [string ]discovery.Configs )
78
75
relabelCfg := make (map [string ][]* relabel.Config )
79
76
80
- for _ , value := range m .configsMap {
81
- for _ , scrapeConfig := range value . ScrapeConfigs {
77
+ for _ , configs := range m .configsMap {
78
+ for _ , scrapeConfig := range configs {
82
79
jobToScrapeConfig [scrapeConfig .JobName ] = scrapeConfig
83
80
discoveryCfg [scrapeConfig .JobName ] = scrapeConfig .ServiceDiscoveryConfigs
84
81
relabelCfg [scrapeConfig .JobName ] = scrapeConfig .RelabelConfigs
@@ -137,7 +134,7 @@ func (m *Discoverer) Close() {
137
134
138
135
// Calculate a hash for a scrape config map.
139
136
// This is done by marshaling to YAML because it's the most straightforward and doesn't run into problems with unexported fields.
140
- func getScrapeConfigHash (jobToScrapeConfig map [string ]* config .ScrapeConfig ) (hash.Hash64 , error ) {
137
+ func getScrapeConfigHash (jobToScrapeConfig map [string ]* promconfig .ScrapeConfig ) (hash.Hash64 , error ) {
141
138
var err error
142
139
hash := fnv .New64 ()
143
140
yamlEncoder := yaml .NewEncoder (hash )
0 commit comments