summaryrefslogtreecommitdiffstats
path: root/src/go/collectors/go.d.plugin/agent/discovery/sd/pipeline/compose.go
diff options
context:
space:
mode:
Diffstat (limited to 'src/go/collectors/go.d.plugin/agent/discovery/sd/pipeline/compose.go')
-rw-r--r--src/go/collectors/go.d.plugin/agent/discovery/sd/pipeline/compose.go39
1 files changed, 34 insertions, 5 deletions
diff --git a/src/go/collectors/go.d.plugin/agent/discovery/sd/pipeline/compose.go b/src/go/collectors/go.d.plugin/agent/discovery/sd/pipeline/compose.go
index 68274ab182..de2ed21b8f 100644
--- a/src/go/collectors/go.d.plugin/agent/discovery/sd/pipeline/compose.go
+++ b/src/go/collectors/go.d.plugin/agent/discovery/sd/pipeline/compose.go
@@ -4,6 +4,7 @@ package pipeline
import (
"bytes"
+ "errors"
"fmt"
"text/template"
@@ -70,14 +71,13 @@ func (c *configComposer) compose(tgt model.Target) []confgroup.Config {
continue
}
- var cfg confgroup.Config
-
- if err := yaml.Unmarshal(c.buf.Bytes(), &cfg); err != nil {
- c.Warningf("failed on yaml unmarshalling: %v", err)
+ cfgs, err := c.parseTemplateData(c.buf.Bytes())
+ if err != nil {
+ c.Warningf("failed to parse template data: %v", err)
continue
}
- configs = append(configs, cfg)
+ configs = append(configs, cfgs...)
}
}
@@ -87,6 +87,35 @@ func (c *configComposer) compose(tgt model.Target) []confgroup.Config {
return configs
}
+func (c *configComposer) parseTemplateData(bs []byte) ([]confgroup.Config, error) {
+ var data any
+ if err := yaml.Unmarshal(bs, &data); err != nil {
+ return nil, err
+ }
+
+ type (
+ single = map[any]any
+ multi = []any
+ )
+
+ switch data.(type) {
+ case single:
+ var cfg confgroup.Config
+ if err := yaml.Unmarshal(bs, &cfg); err != nil {
+ return nil, err
+ }
+ return []confgroup.Config{cfg}, nil
+ case multi:
+ var cfgs []confgroup.Config
+ if err := yaml.Unmarshal(bs, &cfgs); err != nil {
+ return nil, err
+ }
+ return cfgs, nil
+ default:
+ return nil, errors.New("unknown config format")
+ }
+}
+
func newComposeRules(cfg []ComposeRuleConfig) ([]*composeRule, error) {
var rules []*composeRule