@@ -75,8 +75,8 @@ type poolKey struct {
7575 provider string
7676}
7777
78- // provider holds a Discoverer instance, its configuration, cancel func and its subscribers.
79- type provider struct {
78+ // Provider holds a Discoverer instance, its configuration, cancel func and its subscribers.
79+ type Provider struct {
8080 name string
8181 d Discoverer
8282 config interface {}
@@ -92,11 +92,20 @@ type provider struct {
9292 newSubs map [string ]struct {}
9393}
9494
95+ // Discoverer return the Discoverer of the provider
96+ func (p * Provider ) Discoverer () Discoverer {
97+ return p .d
98+ }
99+
95100// IsStarted return true if Discoverer is started.
96- func (p * provider ) IsStarted () bool {
101+ func (p * Provider ) IsStarted () bool {
97102 return p .cancel != nil
98103}
99104
105+ func (p * Provider ) Config () interface {} {
106+ return p .config
107+ }
108+
100109// NewManager is the Discovery Manager constructor.
101110func NewManager (ctx context.Context , logger log.Logger , options ... func (* Manager )) * Manager {
102111 if logger == nil {
@@ -148,7 +157,7 @@ type Manager struct {
148157 targetsMtx sync.Mutex
149158
150159 // providers keeps track of SD providers.
151- providers []* provider
160+ providers []* Provider
152161 // The sync channel sends the updates as a map where the key is the job value from the scrape config.
153162 syncCh chan map [string ][]* targetgroup.Group
154163
@@ -163,6 +172,11 @@ type Manager struct {
163172 lastProvider uint
164173}
165174
175+ // Providers returns the currently configured SD providers.
176+ func (m * Manager ) Providers () []* Provider {
177+ return m .providers
178+ }
179+
166180// Run starts the background processing.
167181func (m * Manager ) Run () error {
168182 go m .sender ()
@@ -194,7 +208,7 @@ func (m *Manager) ApplyConfig(cfg map[string]Configs) error {
194208 wg sync.WaitGroup
195209 // keep shows if we keep any providers after reload.
196210 keep bool
197- newProviders []* provider
211+ newProviders []* Provider
198212 )
199213 for _ , prov := range m .providers {
200214 // Cancel obsolete providers.
@@ -260,7 +274,7 @@ func (m *Manager) ApplyConfig(cfg map[string]Configs) error {
260274
261275// StartCustomProvider is used for sdtool. Only use this if you know what you're doing.
262276func (m * Manager ) StartCustomProvider (ctx context.Context , name string , worker Discoverer ) {
263- p := & provider {
277+ p := & Provider {
264278 name : name ,
265279 d : worker ,
266280 subs : map [string ]struct {}{
@@ -271,7 +285,7 @@ func (m *Manager) StartCustomProvider(ctx context.Context, name string, worker D
271285 m .startProvider (ctx , p )
272286}
273287
274- func (m * Manager ) startProvider (ctx context.Context , p * provider ) {
288+ func (m * Manager ) startProvider (ctx context.Context , p * Provider ) {
275289 level .Debug (m .logger ).Log ("msg" , "Starting provider" , "provider" , p .name , "subs" , fmt .Sprintf ("%v" , p .subs ))
276290 ctx , cancel := context .WithCancel (ctx )
277291 updates := make (chan []* targetgroup.Group )
@@ -283,7 +297,7 @@ func (m *Manager) startProvider(ctx context.Context, p *provider) {
283297}
284298
285299// cleaner cleans resources associated with provider.
286- func (m * Manager ) cleaner (p * provider ) {
300+ func (m * Manager ) cleaner (p * Provider ) {
287301 m .targetsMtx .Lock ()
288302 p .mu .RLock ()
289303 for s := range p .subs {
@@ -296,7 +310,7 @@ func (m *Manager) cleaner(p *provider) {
296310 }
297311}
298312
299- func (m * Manager ) updater (ctx context.Context , p * provider , updates chan []* targetgroup.Group ) {
313+ func (m * Manager ) updater (ctx context.Context , p * Provider , updates chan []* targetgroup.Group ) {
300314 // Ensure targets from this provider are cleaned up.
301315 defer m .cleaner (p )
302316 for {
@@ -422,7 +436,7 @@ func (m *Manager) registerProviders(cfgs Configs, setName string) int {
422436 failed ++
423437 return
424438 }
425- m .providers = append (m .providers , & provider {
439+ m .providers = append (m .providers , & Provider {
426440 name : fmt .Sprintf ("%s/%d" , typ , m .lastProvider ),
427441 d : d ,
428442 config : cfg ,
0 commit comments