master
go 69 lines 1.08 KB
Raw
1 // SPDX-License-Identifier: GPL-3.0-or-later
2
3 package sd
4
5 import (
6 "context"
7 "os"
8
9 "github.com/netdata/netdata/go/plugins/logger"
10 "github.com/netdata/netdata/go/plugins/pkg/multipath"
11 )
12
13 type confFile struct {
14 source string
15 content []byte
16 }
17
18 func newConfFileReader(log *logger.Logger, dir multipath.MultiPath) *confFileReader {
19 return &confFileReader{
20 Logger: log,
21 confDir: dir,
22 confChan: make(chan confFile),
23 }
24 }
25
26 type confFileReader struct {
27 *logger.Logger
28
29 confDir multipath.MultiPath
30 confChan chan confFile
31 }
32
33 func (c *confFileReader) run(ctx context.Context) {
34 files, err := c.confDir.FindFiles(".conf")
35 if err != nil {
36 c.Error(err)
37 return
38 }
39
40 if len(files) == 0 {
41 return
42 }
43
44 var confFiles []confFile
45
46 for _, file := range files {
47 bs, err := os.ReadFile(file)
48 if err != nil {
49 c.Error(err)
50 continue
51 }
52 confFiles = append(confFiles, confFile{
53 source: file,
54 content: bs,
55 })
56 }
57
58 for _, conf := range confFiles {
59 select {
60 case <-ctx.Done():
61 case c.confChan <- conf:
62 }
63 }
64
65 }
66
67 func (c *confFileReader) configs() chan confFile {
68 return c.confChan
69 }