master
go 67 lines 1.83 KB
Raw
1 // SPDX-License-Identifier: GPL-3.0-or-later
2
3 package discoveryproviders
4
5 import (
6 "github.com/netdata/netdata/go/plugins/plugin/agent/discovery"
7 "github.com/netdata/netdata/go/plugins/plugin/agent/discovery/dummy"
8 "github.com/netdata/netdata/go/plugins/plugin/agent/discovery/file"
9 "github.com/netdata/netdata/go/plugins/plugin/agent/discovery/sd"
10 )
11
12 func File() discovery.ProviderFactory {
13 return discovery.NewProviderFactory("file", func(ctx discovery.BuildContext) (discovery.Discoverer, bool, error) {
14 if len(ctx.ReadPaths)+len(ctx.Paths.CollectorsConfigWatchPath) == 0 {
15 return nil, false, nil
16 }
17
18 d, err := file.NewDiscovery(file.Config{
19 Registry: ctx.Registry,
20 Read: ctx.ReadPaths,
21 Watch: ctx.Paths.CollectorsConfigWatchPath,
22 })
23 if err != nil {
24 return nil, false, err
25 }
26 return d, true, nil
27 })
28 }
29
30 func Dummy() discovery.ProviderFactory {
31 return discovery.NewProviderFactory("dummy", func(ctx discovery.BuildContext) (discovery.Discoverer, bool, error) {
32 if len(ctx.DummyNames) == 0 {
33 return nil, false, nil
34 }
35
36 d, err := dummy.NewDiscovery(dummy.Config{
37 Registry: ctx.Registry,
38 Names: ctx.DummyNames,
39 })
40 if err != nil {
41 return nil, false, err
42 }
43 return d, true, nil
44 })
45 }
46
47 func SD(registry sd.Registry) discovery.ProviderFactory {
48 return discovery.NewProviderFactory("sd", func(ctx discovery.BuildContext) (discovery.Discoverer, bool, error) {
49 if len(ctx.Paths.ServiceDiscoveryConfigDir) == 0 {
50 return nil, false, nil
51 }
52
53 d, err := sd.NewServiceDiscovery(sd.Config{
54 ConfigDefaults: ctx.Registry,
55 PluginName: ctx.Identity.Name,
56 RunModePolicy: ctx.RunMode,
57 Out: ctx.Out,
58 ConfDir: ctx.Paths.ServiceDiscoveryConfigDir,
59 FnReg: ctx.FnReg,
60 Discoverers: registry,
61 })
62 if err != nil {
63 return nil, false, err
64 }
65 return d, true, nil
66 })
67 }