master
go 33 lines 894 Bytes
Raw
1 // SPDX-License-Identifier: GPL-3.0-or-later
2
3 package sd
4
5 import (
6 "fmt"
7
8 "github.com/netdata/netdata/go/plugins/plugin/agent/discovery/sd/model"
9 "github.com/netdata/netdata/go/plugins/plugin/agent/discovery/sd/pipeline"
10 )
11
12 func (d *ServiceDiscovery) discovererRegistry() Registry {
13 return d.discoverers
14 }
15
16 func (d *ServiceDiscovery) newDiscoverersFromRegistry(payload pipeline.DiscovererPayload, source string) ([]model.Discoverer, error) {
17 desc, ok := d.discovererRegistry().Get(payload.Type())
18 if !ok {
19 return nil, fmt.Errorf("unsupported discoverer type %q", payload.Type())
20 }
21
22 cfg, err := desc.ParseJSONConfig(payload.Config)
23 if err != nil {
24 return nil, fmt.Errorf("parse %q config: %w", payload.Type(), err)
25 }
26
27 return desc.NewDiscoverers(cfg, source)
28 }
29
30 func (d *ServiceDiscovery) hasDiscovererType(typ string) bool {
31 _, ok := d.discovererRegistry().Get(typ)
32 return ok
33 }