fix issue with loading processor config from execd (#8274)

This commit is contained in:
Steven Soroka 2020-10-15 13:46:13 -04:00 committed by GitHub
parent 4872d7b4a9
commit 796b3b8d41
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 40 additions and 1 deletions

View File

@ -116,7 +116,11 @@ func createPluginsWithTomlConfig(md toml.MetaData, conf config) (loadedConfig, e
plugin := creator()
if len(primitives) > 0 {
primitive := primitives[0]
if err := md.PrimitiveDecode(primitive, plugin); err != nil {
var p telegraf.PluginDescriber = plugin
if processor, ok := plugin.(unwrappable); ok {
p = processor.Unwrap()
}
if err := md.PrimitiveDecode(primitive, p); err != nil {
return loadedConf, err
}
}
@ -169,3 +173,7 @@ func DefaultImportedPlugins() (config, error) {
}
return conf, nil
}
type unwrappable interface {
Unwrap() telegraf.Processor
}

View File

@ -8,6 +8,7 @@ import (
"github.com/influxdata/telegraf"
tgConfig "github.com/influxdata/telegraf/config"
"github.com/influxdata/telegraf/plugins/inputs"
"github.com/influxdata/telegraf/plugins/processors"
"github.com/stretchr/testify/require"
)
@ -55,6 +56,19 @@ func TestLoadingSpecialTypes(t *testing.T) {
require.EqualValues(t, 3*1000*1000, inp.Size)
}
func TestLoadingProcessorWithConfig(t *testing.T) {
proc := &testConfigProcessor{}
processors.Add("test_config_load", func() telegraf.Processor {
return proc
})
c := "./testdata/processor.conf"
_, err := LoadConfig(&c)
require.NoError(t, err)
require.EqualValues(t, "yep", proc.Loaded)
}
type testDurationInput struct {
Duration tgConfig.Duration `toml:"duration"`
Size tgConfig.Size `toml:"size"`
@ -70,3 +84,18 @@ func (i *testDurationInput) Description() string {
func (i *testDurationInput) Gather(acc telegraf.Accumulator) error {
return nil
}
type testConfigProcessor struct {
Loaded string `toml:"loaded"`
}
func (p *testConfigProcessor) SampleConfig() string {
return ""
}
func (p *testConfigProcessor) Description() string {
return ""
}
func (p *testConfigProcessor) Apply(metrics ...telegraf.Metric) []telegraf.Metric {
return metrics
}

View File

@ -0,0 +1,2 @@
[[processors.test_config_load]]
loaded = "yep"