chore(serializers)!: Remove old-style creation (#15971)
This commit is contained in:
parent
598079ad64
commit
18cdb1a99e
|
|
@ -87,6 +87,10 @@
|
||||||
delivery state update of un-parseable messages from `ACK` to `NACK` without
|
delivery state update of un-parseable messages from `ACK` to `NACK` without
|
||||||
requeueing. This way, those messages are not lost and can optionally be
|
requeueing. This way, those messages are not lost and can optionally be
|
||||||
handled using a dead-letter exchange by other means.
|
handled using a dead-letter exchange by other means.
|
||||||
|
- Removal of old-style serializer creation. This should not directly affect
|
||||||
|
users as it is an API change. All serializers in Telegraf are already ported
|
||||||
|
to the new framework. If you experience any issues with not being able to
|
||||||
|
create serializers let us know!
|
||||||
|
|
||||||
### Bugfixes
|
### Bugfixes
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1212,15 +1212,6 @@ func (c *Config) addOutput(name string, table *ast.Table) error {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
t.SetSerializer(serializer)
|
t.SetSerializer(serializer)
|
||||||
} else if t, ok := output.(serializers.SerializerOutput); ok {
|
|
||||||
// Keep the old interface for backward compatibility
|
|
||||||
// DEPRECATED: Please switch your plugin to telegraf.Serializers
|
|
||||||
missThreshold = 1
|
|
||||||
serializer, err := c.addSerializer(name, table)
|
|
||||||
if err != nil {
|
|
||||||
return err
|
|
||||||
}
|
|
||||||
t.SetSerializer(serializer)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if t, ok := output.(telegraf.SerializerFuncPlugin); ok {
|
if t, ok := output.(telegraf.SerializerFuncPlugin); ok {
|
||||||
|
|
|
||||||
|
|
@ -630,7 +630,6 @@ func TestConfig_SerializerInterfaceNewFormat(t *testing.T) {
|
||||||
require.NoError(t, c.LoadConfig("./testdata/serializers_new.toml"))
|
require.NoError(t, c.LoadConfig("./testdata/serializers_new.toml"))
|
||||||
require.Len(t, c.Outputs, len(formats))
|
require.Len(t, c.Outputs, len(formats))
|
||||||
|
|
||||||
cfg := serializers.Config{}
|
|
||||||
override := map[string]struct {
|
override := map[string]struct {
|
||||||
param map[string]interface{}
|
param map[string]interface{}
|
||||||
mask []string
|
mask []string
|
||||||
|
|
@ -638,20 +637,12 @@ func TestConfig_SerializerInterfaceNewFormat(t *testing.T) {
|
||||||
|
|
||||||
expected := make([]telegraf.Serializer, 0, len(formats))
|
expected := make([]telegraf.Serializer, 0, len(formats))
|
||||||
for _, format := range formats {
|
for _, format := range formats {
|
||||||
formatCfg := &cfg
|
|
||||||
formatCfg.DataFormat = format
|
|
||||||
|
|
||||||
logger := logging.New("serializers", format, "test")
|
logger := logging.New("serializers", format, "test")
|
||||||
|
|
||||||
var serializer telegraf.Serializer
|
var serializer telegraf.Serializer
|
||||||
if creator, found := serializers.Serializers[format]; found {
|
if creator, found := serializers.Serializers[format]; found {
|
||||||
t.Logf("new-style %q", format)
|
t.Logf("new-style %q", format)
|
||||||
serializer = creator()
|
serializer = creator()
|
||||||
} else {
|
|
||||||
t.Logf("old-style %q", format)
|
|
||||||
var err error
|
|
||||||
serializer, err = serializers.NewSerializer(formatCfg)
|
|
||||||
require.NoErrorf(t, err, "No serializer for format %q", format)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if settings, found := override[format]; found {
|
if settings, found := override[format]; found {
|
||||||
|
|
@ -703,98 +694,6 @@ func TestConfig_SerializerInterfaceNewFormat(t *testing.T) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestConfig_SerializerInterfaceOldFormat(t *testing.T) {
|
|
||||||
formats := []string{
|
|
||||||
"carbon2",
|
|
||||||
"csv",
|
|
||||||
"graphite",
|
|
||||||
"influx",
|
|
||||||
"json",
|
|
||||||
"msgpack",
|
|
||||||
"nowmetric",
|
|
||||||
"prometheus",
|
|
||||||
"prometheusremotewrite",
|
|
||||||
"splunkmetric",
|
|
||||||
"wavefront",
|
|
||||||
}
|
|
||||||
|
|
||||||
c := config.NewConfig()
|
|
||||||
require.NoError(t, c.LoadConfig("./testdata/serializers_old.toml"))
|
|
||||||
require.Len(t, c.Outputs, len(formats))
|
|
||||||
|
|
||||||
cfg := serializers.Config{}
|
|
||||||
override := map[string]struct {
|
|
||||||
param map[string]interface{}
|
|
||||||
mask []string
|
|
||||||
}{}
|
|
||||||
|
|
||||||
expected := make([]telegraf.Serializer, 0, len(formats))
|
|
||||||
for _, format := range formats {
|
|
||||||
formatCfg := &cfg
|
|
||||||
formatCfg.DataFormat = format
|
|
||||||
|
|
||||||
logger := logging.New("serializers", format, "test")
|
|
||||||
|
|
||||||
var serializer serializers.Serializer
|
|
||||||
if creator, found := serializers.Serializers[format]; found {
|
|
||||||
t.Logf("new-style %q", format)
|
|
||||||
serializer = creator()
|
|
||||||
} else {
|
|
||||||
t.Logf("old-style %q", format)
|
|
||||||
var err error
|
|
||||||
serializer, err = serializers.NewSerializer(formatCfg)
|
|
||||||
require.NoErrorf(t, err, "No serializer for format %q", format)
|
|
||||||
}
|
|
||||||
|
|
||||||
if settings, found := override[format]; found {
|
|
||||||
s := reflect.Indirect(reflect.ValueOf(serializer))
|
|
||||||
for key, value := range settings.param {
|
|
||||||
v := reflect.ValueOf(value)
|
|
||||||
s.FieldByName(key).Set(v)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
models.SetLoggerOnPlugin(serializer, logger)
|
|
||||||
if s, ok := serializer.(telegraf.Initializer); ok {
|
|
||||||
require.NoError(t, s.Init())
|
|
||||||
}
|
|
||||||
expected = append(expected, serializer)
|
|
||||||
}
|
|
||||||
require.Len(t, expected, len(formats))
|
|
||||||
|
|
||||||
actual := make([]interface{}, 0)
|
|
||||||
for _, plugin := range c.Outputs {
|
|
||||||
output, ok := plugin.Output.(*MockupOutputPluginSerializerOld)
|
|
||||||
require.True(t, ok)
|
|
||||||
// Get the parser set with 'SetParser()'
|
|
||||||
if p, ok := output.Serializer.(*models.RunningSerializer); ok {
|
|
||||||
actual = append(actual, p.Serializer)
|
|
||||||
} else {
|
|
||||||
actual = append(actual, output.Serializer)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
require.Len(t, actual, len(formats))
|
|
||||||
|
|
||||||
for i, format := range formats {
|
|
||||||
// Determine the underlying type of the serializer
|
|
||||||
stype := reflect.Indirect(reflect.ValueOf(expected[i])).Interface()
|
|
||||||
// Ignore all unexported fields and fields not relevant for functionality
|
|
||||||
options := []cmp.Option{
|
|
||||||
cmpopts.IgnoreUnexported(stype),
|
|
||||||
cmpopts.IgnoreUnexported(reflect.Indirect(reflect.ValueOf(serializers_prometheus.MetricTypes{})).Interface()),
|
|
||||||
cmpopts.IgnoreTypes(sync.Mutex{}, regexp.Regexp{}),
|
|
||||||
cmpopts.IgnoreInterfaces(struct{ telegraf.Logger }{}),
|
|
||||||
}
|
|
||||||
if settings, found := override[format]; found {
|
|
||||||
options = append(options, cmpopts.IgnoreFields(stype, settings.mask...))
|
|
||||||
}
|
|
||||||
|
|
||||||
// Do a manual comparison as require.EqualValues will also work on unexported fields
|
|
||||||
// that cannot be cleared or ignored.
|
|
||||||
diff := cmp.Diff(expected[i], actual[i], options...)
|
|
||||||
require.Emptyf(t, diff, "Difference in SetSerializer() for %q", format)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
func TestConfig_ParserInterface(t *testing.T) {
|
func TestConfig_ParserInterface(t *testing.T) {
|
||||||
formats := []string{
|
formats := []string{
|
||||||
"collectd",
|
"collectd",
|
||||||
|
|
@ -1503,27 +1402,6 @@ func (m *MockupOutputPlugin) Write(_ []telegraf.Metric) error {
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
// Mockup OUTPUT plugin for serializer testing to avoid cyclic dependencies
|
|
||||||
type MockupOutputPluginSerializerOld struct {
|
|
||||||
Serializer serializers.Serializer
|
|
||||||
}
|
|
||||||
|
|
||||||
func (m *MockupOutputPluginSerializerOld) SetSerializer(s serializers.Serializer) {
|
|
||||||
m.Serializer = s
|
|
||||||
}
|
|
||||||
func (*MockupOutputPluginSerializerOld) Connect() error {
|
|
||||||
return nil
|
|
||||||
}
|
|
||||||
func (*MockupOutputPluginSerializerOld) Close() error {
|
|
||||||
return nil
|
|
||||||
}
|
|
||||||
func (*MockupOutputPluginSerializerOld) SampleConfig() string {
|
|
||||||
return "Mockup test output plugin"
|
|
||||||
}
|
|
||||||
func (*MockupOutputPluginSerializerOld) Write(_ []telegraf.Metric) error {
|
|
||||||
return nil
|
|
||||||
}
|
|
||||||
|
|
||||||
type MockupOutputPluginSerializerNew struct {
|
type MockupOutputPluginSerializerNew struct {
|
||||||
Serializer telegraf.Serializer
|
Serializer telegraf.Serializer
|
||||||
}
|
}
|
||||||
|
|
@ -1662,7 +1540,4 @@ func init() {
|
||||||
outputs.Add("serializer_test_new", func() telegraf.Output {
|
outputs.Add("serializer_test_new", func() telegraf.Output {
|
||||||
return &MockupOutputPluginSerializerNew{}
|
return &MockupOutputPluginSerializerNew{}
|
||||||
})
|
})
|
||||||
outputs.Add("serializer_test_old", func() telegraf.Output {
|
|
||||||
return &MockupOutputPluginSerializerOld{}
|
|
||||||
})
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -5,7 +5,6 @@ import (
|
||||||
|
|
||||||
"github.com/influxdata/telegraf"
|
"github.com/influxdata/telegraf"
|
||||||
logging "github.com/influxdata/telegraf/logger"
|
logging "github.com/influxdata/telegraf/logger"
|
||||||
"github.com/influxdata/telegraf/plugins/serializers"
|
|
||||||
"github.com/influxdata/telegraf/selfstat"
|
"github.com/influxdata/telegraf/selfstat"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
@ -19,7 +18,7 @@ type SerializerConfig struct {
|
||||||
}
|
}
|
||||||
|
|
||||||
type RunningSerializer struct {
|
type RunningSerializer struct {
|
||||||
Serializer serializers.Serializer
|
Serializer telegraf.Serializer
|
||||||
Config *SerializerConfig
|
Config *SerializerConfig
|
||||||
log telegraf.Logger
|
log telegraf.Logger
|
||||||
|
|
||||||
|
|
@ -28,7 +27,7 @@ type RunningSerializer struct {
|
||||||
SerializationTime selfstat.Stat
|
SerializationTime selfstat.Stat
|
||||||
}
|
}
|
||||||
|
|
||||||
func NewRunningSerializer(serializer serializers.Serializer, config *SerializerConfig) *RunningSerializer {
|
func NewRunningSerializer(serializer telegraf.Serializer, config *SerializerConfig) *RunningSerializer {
|
||||||
tags := map[string]string{"type": config.DataFormat}
|
tags := map[string]string{"type": config.DataFormat}
|
||||||
if config.Alias != "" {
|
if config.Alias != "" {
|
||||||
tags["alias"] = config.Alias
|
tags["alias"] = config.Alias
|
||||||
|
|
|
||||||
|
|
@ -17,7 +17,6 @@ import (
|
||||||
"github.com/influxdata/telegraf/plugins/common/proxy"
|
"github.com/influxdata/telegraf/plugins/common/proxy"
|
||||||
"github.com/influxdata/telegraf/plugins/common/tls"
|
"github.com/influxdata/telegraf/plugins/common/tls"
|
||||||
"github.com/influxdata/telegraf/plugins/outputs"
|
"github.com/influxdata/telegraf/plugins/outputs"
|
||||||
"github.com/influxdata/telegraf/plugins/serializers"
|
|
||||||
)
|
)
|
||||||
|
|
||||||
//go:embed sample.conf
|
//go:embed sample.conf
|
||||||
|
|
@ -67,7 +66,7 @@ type AMQP struct {
|
||||||
tls.ClientConfig
|
tls.ClientConfig
|
||||||
proxy.TCPProxy
|
proxy.TCPProxy
|
||||||
|
|
||||||
serializer serializers.Serializer
|
serializer telegraf.Serializer
|
||||||
connect func(*ClientConfig) (Client, error)
|
connect func(*ClientConfig) (Client, error)
|
||||||
client Client
|
client Client
|
||||||
config *ClientConfig
|
config *ClientConfig
|
||||||
|
|
@ -84,7 +83,7 @@ func (*AMQP) SampleConfig() string {
|
||||||
return sampleConfig
|
return sampleConfig
|
||||||
}
|
}
|
||||||
|
|
||||||
func (q *AMQP) SetSerializer(serializer serializers.Serializer) {
|
func (q *AMQP) SetSerializer(serializer telegraf.Serializer) {
|
||||||
q.serializer = serializer
|
q.serializer = serializer
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -20,7 +20,6 @@ import (
|
||||||
"github.com/influxdata/telegraf/internal"
|
"github.com/influxdata/telegraf/internal"
|
||||||
"github.com/influxdata/telegraf/internal/choice"
|
"github.com/influxdata/telegraf/internal/choice"
|
||||||
"github.com/influxdata/telegraf/plugins/outputs"
|
"github.com/influxdata/telegraf/plugins/outputs"
|
||||||
"github.com/influxdata/telegraf/plugins/serializers"
|
|
||||||
"github.com/influxdata/telegraf/plugins/serializers/json"
|
"github.com/influxdata/telegraf/plugins/serializers/json"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
@ -36,7 +35,7 @@ type AzureDataExplorer struct {
|
||||||
TableName string `toml:"table_name"`
|
TableName string `toml:"table_name"`
|
||||||
CreateTables bool `toml:"create_tables"`
|
CreateTables bool `toml:"create_tables"`
|
||||||
IngestionType string `toml:"ingestion_type"`
|
IngestionType string `toml:"ingestion_type"`
|
||||||
serializer serializers.Serializer
|
serializer telegraf.Serializer
|
||||||
kustoClient *kusto.Client
|
kustoClient *kusto.Client
|
||||||
metricIngestors map[string]ingest.Ingestor
|
metricIngestors map[string]ingest.Ingestor
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -18,7 +18,6 @@ import (
|
||||||
"github.com/influxdata/telegraf/config"
|
"github.com/influxdata/telegraf/config"
|
||||||
"github.com/influxdata/telegraf/internal"
|
"github.com/influxdata/telegraf/internal"
|
||||||
"github.com/influxdata/telegraf/plugins/outputs"
|
"github.com/influxdata/telegraf/plugins/outputs"
|
||||||
"github.com/influxdata/telegraf/plugins/serializers"
|
|
||||||
)
|
)
|
||||||
|
|
||||||
//go:embed sample.conf
|
//go:embed sample.conf
|
||||||
|
|
@ -45,7 +44,7 @@ type PubSub struct {
|
||||||
|
|
||||||
stubTopic func(id string) topic
|
stubTopic func(id string) topic
|
||||||
|
|
||||||
serializer serializers.Serializer
|
serializer telegraf.Serializer
|
||||||
publishResults []publishResult
|
publishResults []publishResult
|
||||||
encoder internal.ContentEncoder
|
encoder internal.ContentEncoder
|
||||||
}
|
}
|
||||||
|
|
@ -54,7 +53,7 @@ func (*PubSub) SampleConfig() string {
|
||||||
return sampleConfig
|
return sampleConfig
|
||||||
}
|
}
|
||||||
|
|
||||||
func (ps *PubSub) SetSerializer(serializer serializers.Serializer) {
|
func (ps *PubSub) SetSerializer(serializer telegraf.Serializer) {
|
||||||
ps.serializer = serializer
|
ps.serializer = serializer
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -11,7 +11,6 @@ import (
|
||||||
"github.com/influxdata/telegraf"
|
"github.com/influxdata/telegraf"
|
||||||
"github.com/influxdata/telegraf/config"
|
"github.com/influxdata/telegraf/config"
|
||||||
"github.com/influxdata/telegraf/plugins/outputs"
|
"github.com/influxdata/telegraf/plugins/outputs"
|
||||||
"github.com/influxdata/telegraf/plugins/serializers"
|
|
||||||
)
|
)
|
||||||
|
|
||||||
//go:embed sample.conf
|
//go:embed sample.conf
|
||||||
|
|
@ -62,7 +61,7 @@ type EventHubs struct {
|
||||||
|
|
||||||
Hub EventHubInterface
|
Hub EventHubInterface
|
||||||
batchOptions []eventhub.BatchOption
|
batchOptions []eventhub.BatchOption
|
||||||
serializer serializers.Serializer
|
serializer telegraf.Serializer
|
||||||
}
|
}
|
||||||
|
|
||||||
const (
|
const (
|
||||||
|
|
@ -104,7 +103,7 @@ func (e *EventHubs) Close() error {
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func (e *EventHubs) SetSerializer(serializer serializers.Serializer) {
|
func (e *EventHubs) SetSerializer(serializer telegraf.Serializer) {
|
||||||
e.serializer = serializer
|
e.serializer = serializer
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -16,7 +16,6 @@ import (
|
||||||
"github.com/influxdata/telegraf/config"
|
"github.com/influxdata/telegraf/config"
|
||||||
"github.com/influxdata/telegraf/internal"
|
"github.com/influxdata/telegraf/internal"
|
||||||
"github.com/influxdata/telegraf/plugins/outputs"
|
"github.com/influxdata/telegraf/plugins/outputs"
|
||||||
"github.com/influxdata/telegraf/plugins/serializers"
|
|
||||||
)
|
)
|
||||||
|
|
||||||
//go:embed sample.conf
|
//go:embed sample.conf
|
||||||
|
|
@ -33,7 +32,7 @@ type Exec struct {
|
||||||
Log telegraf.Logger `toml:"-"`
|
Log telegraf.Logger `toml:"-"`
|
||||||
|
|
||||||
runner Runner
|
runner Runner
|
||||||
serializer serializers.Serializer
|
serializer telegraf.Serializer
|
||||||
}
|
}
|
||||||
|
|
||||||
func (*Exec) SampleConfig() string {
|
func (*Exec) SampleConfig() string {
|
||||||
|
|
@ -47,7 +46,7 @@ func (e *Exec) Init() error {
|
||||||
}
|
}
|
||||||
|
|
||||||
// SetSerializer sets the serializer for the output.
|
// SetSerializer sets the serializer for the output.
|
||||||
func (e *Exec) SetSerializer(serializer serializers.Serializer) {
|
func (e *Exec) SetSerializer(serializer telegraf.Serializer) {
|
||||||
e.serializer = serializer
|
e.serializer = serializer
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -14,7 +14,6 @@ import (
|
||||||
"github.com/influxdata/telegraf/config"
|
"github.com/influxdata/telegraf/config"
|
||||||
"github.com/influxdata/telegraf/internal/process"
|
"github.com/influxdata/telegraf/internal/process"
|
||||||
"github.com/influxdata/telegraf/plugins/outputs"
|
"github.com/influxdata/telegraf/plugins/outputs"
|
||||||
"github.com/influxdata/telegraf/plugins/serializers"
|
|
||||||
)
|
)
|
||||||
|
|
||||||
//go:embed sample.conf
|
//go:embed sample.conf
|
||||||
|
|
@ -29,14 +28,14 @@ type Execd struct {
|
||||||
Log telegraf.Logger
|
Log telegraf.Logger
|
||||||
|
|
||||||
process *process.Process
|
process *process.Process
|
||||||
serializer serializers.Serializer
|
serializer telegraf.Serializer
|
||||||
}
|
}
|
||||||
|
|
||||||
func (*Execd) SampleConfig() string {
|
func (*Execd) SampleConfig() string {
|
||||||
return sampleConfig
|
return sampleConfig
|
||||||
}
|
}
|
||||||
|
|
||||||
func (e *Execd) SetSerializer(s serializers.Serializer) {
|
func (e *Execd) SetSerializer(s telegraf.Serializer) {
|
||||||
e.serializer = s
|
e.serializer = s
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -13,7 +13,6 @@ import (
|
||||||
"github.com/influxdata/telegraf/internal"
|
"github.com/influxdata/telegraf/internal"
|
||||||
"github.com/influxdata/telegraf/internal/rotate"
|
"github.com/influxdata/telegraf/internal/rotate"
|
||||||
"github.com/influxdata/telegraf/plugins/outputs"
|
"github.com/influxdata/telegraf/plugins/outputs"
|
||||||
"github.com/influxdata/telegraf/plugins/serializers"
|
|
||||||
)
|
)
|
||||||
|
|
||||||
//go:embed sample.conf
|
//go:embed sample.conf
|
||||||
|
|
@ -32,14 +31,14 @@ type File struct {
|
||||||
encoder internal.ContentEncoder
|
encoder internal.ContentEncoder
|
||||||
writer io.Writer
|
writer io.Writer
|
||||||
closers []io.Closer
|
closers []io.Closer
|
||||||
serializer serializers.Serializer
|
serializer telegraf.Serializer
|
||||||
}
|
}
|
||||||
|
|
||||||
func (*File) SampleConfig() string {
|
func (*File) SampleConfig() string {
|
||||||
return sampleConfig
|
return sampleConfig
|
||||||
}
|
}
|
||||||
|
|
||||||
func (f *File) SetSerializer(serializer serializers.Serializer) {
|
func (f *File) SetSerializer(serializer telegraf.Serializer) {
|
||||||
f.serializer = serializer
|
f.serializer = serializer
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -25,7 +25,6 @@ import (
|
||||||
common_aws "github.com/influxdata/telegraf/plugins/common/aws"
|
common_aws "github.com/influxdata/telegraf/plugins/common/aws"
|
||||||
common_http "github.com/influxdata/telegraf/plugins/common/http"
|
common_http "github.com/influxdata/telegraf/plugins/common/http"
|
||||||
"github.com/influxdata/telegraf/plugins/outputs"
|
"github.com/influxdata/telegraf/plugins/outputs"
|
||||||
"github.com/influxdata/telegraf/plugins/serializers"
|
|
||||||
)
|
)
|
||||||
|
|
||||||
//go:embed sample.conf
|
//go:embed sample.conf
|
||||||
|
|
@ -56,7 +55,7 @@ type HTTP struct {
|
||||||
Log telegraf.Logger `toml:"-"`
|
Log telegraf.Logger `toml:"-"`
|
||||||
|
|
||||||
client *http.Client
|
client *http.Client
|
||||||
serializer serializers.Serializer
|
serializer telegraf.Serializer
|
||||||
|
|
||||||
awsCfg *aws.Config
|
awsCfg *aws.Config
|
||||||
common_aws.CredentialConfig
|
common_aws.CredentialConfig
|
||||||
|
|
@ -70,7 +69,7 @@ func (*HTTP) SampleConfig() string {
|
||||||
return sampleConfig
|
return sampleConfig
|
||||||
}
|
}
|
||||||
|
|
||||||
func (h *HTTP) SetSerializer(serializer serializers.Serializer) {
|
func (h *HTTP) SetSerializer(serializer telegraf.Serializer) {
|
||||||
h.serializer = serializer
|
h.serializer = serializer
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -21,7 +21,6 @@ import (
|
||||||
common_aws "github.com/influxdata/telegraf/plugins/common/aws"
|
common_aws "github.com/influxdata/telegraf/plugins/common/aws"
|
||||||
common_http "github.com/influxdata/telegraf/plugins/common/http"
|
common_http "github.com/influxdata/telegraf/plugins/common/http"
|
||||||
"github.com/influxdata/telegraf/plugins/common/oauth"
|
"github.com/influxdata/telegraf/plugins/common/oauth"
|
||||||
"github.com/influxdata/telegraf/plugins/serializers"
|
|
||||||
"github.com/influxdata/telegraf/plugins/serializers/influx"
|
"github.com/influxdata/telegraf/plugins/serializers/influx"
|
||||||
"github.com/influxdata/telegraf/plugins/serializers/json"
|
"github.com/influxdata/telegraf/plugins/serializers/json"
|
||||||
"github.com/influxdata/telegraf/testutil"
|
"github.com/influxdata/telegraf/testutil"
|
||||||
|
|
@ -735,7 +734,7 @@ func TestBatchedUnbatched(t *testing.T) {
|
||||||
jsonSerializer := &json.Serializer{}
|
jsonSerializer := &json.Serializer{}
|
||||||
require.NoError(t, jsonSerializer.Init())
|
require.NoError(t, jsonSerializer.Init())
|
||||||
|
|
||||||
s := map[string]serializers.Serializer{
|
s := map[string]telegraf.Serializer{
|
||||||
"influx": influxSerializer,
|
"influx": influxSerializer,
|
||||||
"json": jsonSerializer,
|
"json": jsonSerializer,
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -16,7 +16,6 @@ import (
|
||||||
"github.com/influxdata/telegraf/plugins/common/kafka"
|
"github.com/influxdata/telegraf/plugins/common/kafka"
|
||||||
"github.com/influxdata/telegraf/plugins/common/proxy"
|
"github.com/influxdata/telegraf/plugins/common/proxy"
|
||||||
"github.com/influxdata/telegraf/plugins/outputs"
|
"github.com/influxdata/telegraf/plugins/outputs"
|
||||||
"github.com/influxdata/telegraf/plugins/serializers"
|
|
||||||
)
|
)
|
||||||
|
|
||||||
//go:embed sample.conf
|
//go:embed sample.conf
|
||||||
|
|
@ -56,7 +55,7 @@ type Kafka struct {
|
||||||
producerFunc func(addrs []string, config *sarama.Config) (sarama.SyncProducer, error)
|
producerFunc func(addrs []string, config *sarama.Config) (sarama.SyncProducer, error)
|
||||||
producer sarama.SyncProducer
|
producer sarama.SyncProducer
|
||||||
|
|
||||||
serializer serializers.Serializer
|
serializer telegraf.Serializer
|
||||||
}
|
}
|
||||||
|
|
||||||
type TopicSuffix struct {
|
type TopicSuffix struct {
|
||||||
|
|
@ -114,7 +113,7 @@ func (k *Kafka) GetTopicName(metric telegraf.Metric) (telegraf.Metric, string) {
|
||||||
return metric, topicName
|
return metric, topicName
|
||||||
}
|
}
|
||||||
|
|
||||||
func (k *Kafka) SetSerializer(serializer serializers.Serializer) {
|
func (k *Kafka) SetSerializer(serializer telegraf.Serializer) {
|
||||||
k.serializer = serializer
|
k.serializer = serializer
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -14,7 +14,6 @@ import (
|
||||||
"github.com/influxdata/telegraf"
|
"github.com/influxdata/telegraf"
|
||||||
common_aws "github.com/influxdata/telegraf/plugins/common/aws"
|
common_aws "github.com/influxdata/telegraf/plugins/common/aws"
|
||||||
"github.com/influxdata/telegraf/plugins/outputs"
|
"github.com/influxdata/telegraf/plugins/outputs"
|
||||||
"github.com/influxdata/telegraf/plugins/serializers"
|
|
||||||
)
|
)
|
||||||
|
|
||||||
//go:embed sample.conf
|
//go:embed sample.conf
|
||||||
|
|
@ -32,7 +31,7 @@ type (
|
||||||
Debug bool `toml:"debug"`
|
Debug bool `toml:"debug"`
|
||||||
|
|
||||||
Log telegraf.Logger `toml:"-"`
|
Log telegraf.Logger `toml:"-"`
|
||||||
serializer serializers.Serializer
|
serializer telegraf.Serializer
|
||||||
svc kinesisClient
|
svc kinesisClient
|
||||||
|
|
||||||
common_aws.CredentialConfig
|
common_aws.CredentialConfig
|
||||||
|
|
@ -86,7 +85,7 @@ func (k *KinesisOutput) Close() error {
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func (k *KinesisOutput) SetSerializer(serializer serializers.Serializer) {
|
func (k *KinesisOutput) SetSerializer(serializer telegraf.Serializer) {
|
||||||
k.serializer = serializer
|
k.serializer = serializer
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -12,7 +12,6 @@ import (
|
||||||
"github.com/stretchr/testify/require"
|
"github.com/stretchr/testify/require"
|
||||||
|
|
||||||
"github.com/influxdata/telegraf"
|
"github.com/influxdata/telegraf"
|
||||||
"github.com/influxdata/telegraf/plugins/serializers"
|
|
||||||
"github.com/influxdata/telegraf/plugins/serializers/influx"
|
"github.com/influxdata/telegraf/plugins/serializers/influx"
|
||||||
"github.com/influxdata/telegraf/testutil"
|
"github.com/influxdata/telegraf/testutil"
|
||||||
)
|
)
|
||||||
|
|
@ -566,11 +565,7 @@ func (m *mockKinesisPutRecords) AssertRequests(
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func createTestMetric(
|
func createTestMetric(t *testing.T, name string, serializer telegraf.Serializer) (telegraf.Metric, []byte) {
|
||||||
t *testing.T,
|
|
||||||
name string,
|
|
||||||
serializer serializers.Serializer,
|
|
||||||
) (telegraf.Metric, []byte) {
|
|
||||||
metric := testutil.TestMetric(1, name)
|
metric := testutil.TestMetric(1, name)
|
||||||
|
|
||||||
data, err := serializer.Serialize(metric)
|
data, err := serializer.Serialize(metric)
|
||||||
|
|
@ -579,11 +574,7 @@ func createTestMetric(
|
||||||
return metric, data
|
return metric, data
|
||||||
}
|
}
|
||||||
|
|
||||||
func createTestMetrics(
|
func createTestMetrics(t *testing.T, count uint32, serializer telegraf.Serializer) ([]telegraf.Metric, [][]byte) {
|
||||||
t *testing.T,
|
|
||||||
count uint32,
|
|
||||||
serializer serializers.Serializer,
|
|
||||||
) ([]telegraf.Metric, [][]byte) {
|
|
||||||
metrics := make([]telegraf.Metric, 0, count)
|
metrics := make([]telegraf.Metric, 0, count)
|
||||||
metricsData := make([][]byte, 0, count)
|
metricsData := make([][]byte, 0, count)
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -14,7 +14,6 @@ import (
|
||||||
"github.com/influxdata/telegraf/internal"
|
"github.com/influxdata/telegraf/internal"
|
||||||
"github.com/influxdata/telegraf/plugins/common/mqtt"
|
"github.com/influxdata/telegraf/plugins/common/mqtt"
|
||||||
"github.com/influxdata/telegraf/plugins/outputs"
|
"github.com/influxdata/telegraf/plugins/outputs"
|
||||||
"github.com/influxdata/telegraf/plugins/serializers"
|
|
||||||
)
|
)
|
||||||
|
|
||||||
//go:embed sample.conf
|
//go:embed sample.conf
|
||||||
|
|
@ -36,7 +35,7 @@ type MQTT struct {
|
||||||
mqtt.MqttConfig
|
mqtt.MqttConfig
|
||||||
|
|
||||||
client mqtt.Client
|
client mqtt.Client
|
||||||
serializer serializers.Serializer
|
serializer telegraf.Serializer
|
||||||
generator *TopicNameGenerator
|
generator *TopicNameGenerator
|
||||||
|
|
||||||
homieDeviceNameGenerator *HomieGenerator
|
homieDeviceNameGenerator *HomieGenerator
|
||||||
|
|
@ -118,7 +117,7 @@ func (m *MQTT) Connect() error {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
func (m *MQTT) SetSerializer(serializer serializers.Serializer) {
|
func (m *MQTT) SetSerializer(serializer telegraf.Serializer) {
|
||||||
m.serializer = serializer
|
m.serializer = serializer
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -17,7 +17,6 @@ import (
|
||||||
"github.com/influxdata/telegraf/internal/choice"
|
"github.com/influxdata/telegraf/internal/choice"
|
||||||
"github.com/influxdata/telegraf/plugins/common/tls"
|
"github.com/influxdata/telegraf/plugins/common/tls"
|
||||||
"github.com/influxdata/telegraf/plugins/outputs"
|
"github.com/influxdata/telegraf/plugins/outputs"
|
||||||
"github.com/influxdata/telegraf/plugins/serializers"
|
|
||||||
)
|
)
|
||||||
|
|
||||||
//go:embed sample.conf
|
//go:embed sample.conf
|
||||||
|
|
@ -39,7 +38,7 @@ type NATS struct {
|
||||||
conn *nats.Conn
|
conn *nats.Conn
|
||||||
jetstreamClient jetstream.JetStream
|
jetstreamClient jetstream.JetStream
|
||||||
jetstreamStreamConfig *jetstream.StreamConfig
|
jetstreamStreamConfig *jetstream.StreamConfig
|
||||||
serializer serializers.Serializer
|
serializer telegraf.Serializer
|
||||||
}
|
}
|
||||||
|
|
||||||
// StreamConfig is the configuration for creating stream
|
// StreamConfig is the configuration for creating stream
|
||||||
|
|
@ -83,7 +82,7 @@ func (*NATS) SampleConfig() string {
|
||||||
return sampleConfig
|
return sampleConfig
|
||||||
}
|
}
|
||||||
|
|
||||||
func (n *NATS) SetSerializer(serializer serializers.Serializer) {
|
func (n *NATS) SetSerializer(serializer telegraf.Serializer) {
|
||||||
n.serializer = serializer
|
n.serializer = serializer
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -9,7 +9,6 @@ import (
|
||||||
|
|
||||||
"github.com/influxdata/telegraf"
|
"github.com/influxdata/telegraf"
|
||||||
"github.com/influxdata/telegraf/plugins/outputs"
|
"github.com/influxdata/telegraf/plugins/outputs"
|
||||||
"github.com/influxdata/telegraf/plugins/serializers"
|
|
||||||
)
|
)
|
||||||
|
|
||||||
//go:embed sample.conf
|
//go:embed sample.conf
|
||||||
|
|
@ -21,14 +20,14 @@ type NSQ struct {
|
||||||
Log telegraf.Logger `toml:"-"`
|
Log telegraf.Logger `toml:"-"`
|
||||||
|
|
||||||
producer *nsq.Producer
|
producer *nsq.Producer
|
||||||
serializer serializers.Serializer
|
serializer telegraf.Serializer
|
||||||
}
|
}
|
||||||
|
|
||||||
func (*NSQ) SampleConfig() string {
|
func (*NSQ) SampleConfig() string {
|
||||||
return sampleConfig
|
return sampleConfig
|
||||||
}
|
}
|
||||||
|
|
||||||
func (n *NSQ) SetSerializer(serializer serializers.Serializer) {
|
func (n *NSQ) SetSerializer(serializer telegraf.Serializer) {
|
||||||
n.serializer = serializer
|
n.serializer = serializer
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -19,7 +19,6 @@ import (
|
||||||
"github.com/influxdata/telegraf/internal"
|
"github.com/influxdata/telegraf/internal"
|
||||||
common_tls "github.com/influxdata/telegraf/plugins/common/tls"
|
common_tls "github.com/influxdata/telegraf/plugins/common/tls"
|
||||||
"github.com/influxdata/telegraf/plugins/outputs"
|
"github.com/influxdata/telegraf/plugins/outputs"
|
||||||
"github.com/influxdata/telegraf/plugins/serializers"
|
|
||||||
)
|
)
|
||||||
|
|
||||||
//go:embed sample.conf
|
//go:embed sample.conf
|
||||||
|
|
@ -32,7 +31,7 @@ type SocketWriter struct {
|
||||||
common_tls.ClientConfig
|
common_tls.ClientConfig
|
||||||
Log telegraf.Logger `toml:"-"`
|
Log telegraf.Logger `toml:"-"`
|
||||||
|
|
||||||
serializers.Serializer
|
serializer telegraf.Serializer
|
||||||
|
|
||||||
encoder internal.ContentEncoder
|
encoder internal.ContentEncoder
|
||||||
|
|
||||||
|
|
@ -43,8 +42,8 @@ func (*SocketWriter) SampleConfig() string {
|
||||||
return sampleConfig
|
return sampleConfig
|
||||||
}
|
}
|
||||||
|
|
||||||
func (sw *SocketWriter) SetSerializer(s serializers.Serializer) {
|
func (sw *SocketWriter) SetSerializer(s telegraf.Serializer) {
|
||||||
sw.Serializer = s
|
sw.serializer = s
|
||||||
}
|
}
|
||||||
|
|
||||||
func (sw *SocketWriter) Connect() error {
|
func (sw *SocketWriter) Connect() error {
|
||||||
|
|
@ -141,7 +140,7 @@ func (sw *SocketWriter) Write(metrics []telegraf.Metric) error {
|
||||||
}
|
}
|
||||||
|
|
||||||
for _, m := range metrics {
|
for _, m := range metrics {
|
||||||
bs, err := sw.Serialize(m)
|
bs, err := sw.serializer.Serialize(m)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
sw.Log.Debugf("Could not serialize metric: %v", err)
|
sw.Log.Debugf("Could not serialize metric: %v", err)
|
||||||
continue
|
continue
|
||||||
|
|
|
||||||
|
|
@ -19,7 +19,7 @@ func newSocketWriter(t *testing.T, addr string) *SocketWriter {
|
||||||
require.NoError(t, serializer.Init())
|
require.NoError(t, serializer.Init())
|
||||||
return &SocketWriter{
|
return &SocketWriter{
|
||||||
Address: addr,
|
Address: addr,
|
||||||
Serializer: serializer,
|
serializer: serializer,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -79,12 +79,12 @@ func TestSocketWriter_unixgram(t *testing.T) {
|
||||||
|
|
||||||
func testSocketWriterStream(t *testing.T, sw *SocketWriter, lconn net.Conn) {
|
func testSocketWriterStream(t *testing.T, sw *SocketWriter, lconn net.Conn) {
|
||||||
metrics := []telegraf.Metric{testutil.TestMetric(1, "test")}
|
metrics := []telegraf.Metric{testutil.TestMetric(1, "test")}
|
||||||
mbs1out, err := sw.Serialize(metrics[0])
|
mbs1out, err := sw.serializer.Serialize(metrics[0])
|
||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
mbs1out, err = sw.encoder.Encode(mbs1out)
|
mbs1out, err = sw.encoder.Encode(mbs1out)
|
||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
metrics = append(metrics, testutil.TestMetric(2, "test"))
|
metrics = append(metrics, testutil.TestMetric(2, "test"))
|
||||||
mbs2out, err := sw.Serialize(metrics[1])
|
mbs2out, err := sw.serializer.Serialize(metrics[1])
|
||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
mbs2out, err = sw.encoder.Encode(mbs2out)
|
mbs2out, err = sw.encoder.Encode(mbs2out)
|
||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
|
|
@ -104,13 +104,13 @@ func testSocketWriterStream(t *testing.T, sw *SocketWriter, lconn net.Conn) {
|
||||||
|
|
||||||
func testSocketWriterPacket(t *testing.T, sw *SocketWriter, lconn net.PacketConn) {
|
func testSocketWriterPacket(t *testing.T, sw *SocketWriter, lconn net.PacketConn) {
|
||||||
metrics := []telegraf.Metric{testutil.TestMetric(1, "test")}
|
metrics := []telegraf.Metric{testutil.TestMetric(1, "test")}
|
||||||
mbs1out, err := sw.Serialize(metrics[0])
|
mbs1out, err := sw.serializer.Serialize(metrics[0])
|
||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
mbs1out, err = sw.encoder.Encode(mbs1out)
|
mbs1out, err = sw.encoder.Encode(mbs1out)
|
||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
mbs1str := string(mbs1out)
|
mbs1str := string(mbs1out)
|
||||||
metrics = append(metrics, testutil.TestMetric(2, "test"))
|
metrics = append(metrics, testutil.TestMetric(2, "test"))
|
||||||
mbs2out, err := sw.Serialize(metrics[1])
|
mbs2out, err := sw.serializer.Serialize(metrics[1])
|
||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
mbs2out, err = sw.encoder.Encode(mbs2out)
|
mbs2out, err = sw.encoder.Encode(mbs2out)
|
||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
|
|
@ -191,7 +191,7 @@ func TestSocketWriter_Write_reconnect(t *testing.T) {
|
||||||
wg.Wait()
|
wg.Wait()
|
||||||
require.NoError(t, lerr)
|
require.NoError(t, lerr)
|
||||||
|
|
||||||
mbsout, err := sw.Serialize(metrics[0])
|
mbsout, err := sw.serializer.Serialize(metrics[0])
|
||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
buf := make([]byte, 256)
|
buf := make([]byte, 256)
|
||||||
n, err := lconn.Read(buf)
|
n, err := lconn.Read(buf)
|
||||||
|
|
|
||||||
|
|
@ -14,7 +14,6 @@ import (
|
||||||
"github.com/influxdata/telegraf/config"
|
"github.com/influxdata/telegraf/config"
|
||||||
common_tls "github.com/influxdata/telegraf/plugins/common/tls"
|
common_tls "github.com/influxdata/telegraf/plugins/common/tls"
|
||||||
"github.com/influxdata/telegraf/plugins/outputs"
|
"github.com/influxdata/telegraf/plugins/outputs"
|
||||||
"github.com/influxdata/telegraf/plugins/serializers"
|
|
||||||
)
|
)
|
||||||
|
|
||||||
//go:embed sample.conf
|
//go:embed sample.conf
|
||||||
|
|
@ -35,7 +34,7 @@ type STOMP struct {
|
||||||
conn net.Conn
|
conn net.Conn
|
||||||
stomp *stomp.Conn
|
stomp *stomp.Conn
|
||||||
|
|
||||||
serialize serializers.Serializer
|
serialize telegraf.Serializer
|
||||||
}
|
}
|
||||||
|
|
||||||
func (q *STOMP) Connect() error {
|
func (q *STOMP) Connect() error {
|
||||||
|
|
@ -71,7 +70,7 @@ func (q *STOMP) Connect() error {
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func (q *STOMP) SetSerializer(serializer serializers.Serializer) {
|
func (q *STOMP) SetSerializer(serializer telegraf.Serializer) {
|
||||||
q.serialize = serializer
|
q.serialize = serializer
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -15,7 +15,6 @@ import (
|
||||||
"github.com/influxdata/telegraf/internal"
|
"github.com/influxdata/telegraf/internal"
|
||||||
"github.com/influxdata/telegraf/models"
|
"github.com/influxdata/telegraf/models"
|
||||||
"github.com/influxdata/telegraf/plugins/outputs"
|
"github.com/influxdata/telegraf/plugins/outputs"
|
||||||
"github.com/influxdata/telegraf/plugins/serializers"
|
|
||||||
"github.com/influxdata/telegraf/plugins/serializers/carbon2"
|
"github.com/influxdata/telegraf/plugins/serializers/carbon2"
|
||||||
"github.com/influxdata/telegraf/plugins/serializers/graphite"
|
"github.com/influxdata/telegraf/plugins/serializers/graphite"
|
||||||
"github.com/influxdata/telegraf/plugins/serializers/prometheus"
|
"github.com/influxdata/telegraf/plugins/serializers/prometheus"
|
||||||
|
|
@ -57,7 +56,7 @@ type SumoLogic struct {
|
||||||
Log telegraf.Logger `toml:"-"`
|
Log telegraf.Logger `toml:"-"`
|
||||||
|
|
||||||
client *http.Client
|
client *http.Client
|
||||||
serializer serializers.Serializer
|
serializer telegraf.Serializer
|
||||||
|
|
||||||
headers map[string]string
|
headers map[string]string
|
||||||
}
|
}
|
||||||
|
|
@ -66,7 +65,7 @@ func (*SumoLogic) SampleConfig() string {
|
||||||
return sampleConfig
|
return sampleConfig
|
||||||
}
|
}
|
||||||
|
|
||||||
func (s *SumoLogic) SetSerializer(serializer serializers.Serializer) {
|
func (s *SumoLogic) SetSerializer(serializer telegraf.Serializer) {
|
||||||
s.serializer = serializer
|
s.serializer = serializer
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -82,7 +81,7 @@ func (s *SumoLogic) createClient() *http.Client {
|
||||||
func (s *SumoLogic) Connect() error {
|
func (s *SumoLogic) Connect() error {
|
||||||
s.headers = make(map[string]string)
|
s.headers = make(map[string]string)
|
||||||
|
|
||||||
var serializer serializers.Serializer
|
var serializer telegraf.Serializer
|
||||||
if unwrapped, ok := s.serializer.(*models.RunningSerializer); ok {
|
if unwrapped, ok := s.serializer.(*models.RunningSerializer); ok {
|
||||||
serializer = unwrapped.Serializer
|
serializer = unwrapped.Serializer
|
||||||
} else {
|
} else {
|
||||||
|
|
|
||||||
|
|
@ -16,7 +16,6 @@ import (
|
||||||
"github.com/influxdata/telegraf/plugins/common/proxy"
|
"github.com/influxdata/telegraf/plugins/common/proxy"
|
||||||
"github.com/influxdata/telegraf/plugins/common/tls"
|
"github.com/influxdata/telegraf/plugins/common/tls"
|
||||||
"github.com/influxdata/telegraf/plugins/outputs"
|
"github.com/influxdata/telegraf/plugins/outputs"
|
||||||
"github.com/influxdata/telegraf/plugins/serializers"
|
|
||||||
)
|
)
|
||||||
|
|
||||||
//go:embed sample.conf
|
//go:embed sample.conf
|
||||||
|
|
@ -42,7 +41,7 @@ type WebSocket struct {
|
||||||
tls.ClientConfig
|
tls.ClientConfig
|
||||||
|
|
||||||
conn *ws.Conn
|
conn *ws.Conn
|
||||||
serializer serializers.Serializer
|
serializer telegraf.Serializer
|
||||||
}
|
}
|
||||||
|
|
||||||
func (*WebSocket) SampleConfig() string {
|
func (*WebSocket) SampleConfig() string {
|
||||||
|
|
@ -50,7 +49,7 @@ func (*WebSocket) SampleConfig() string {
|
||||||
}
|
}
|
||||||
|
|
||||||
// SetSerializer implements serializers.SerializerOutput.
|
// SetSerializer implements serializers.SerializerOutput.
|
||||||
func (w *WebSocket) SetSerializer(serializer serializers.Serializer) {
|
func (w *WebSocket) SetSerializer(serializer telegraf.Serializer) {
|
||||||
w.serializer = serializer
|
w.serializer = serializer
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -15,7 +15,6 @@ import (
|
||||||
"github.com/influxdata/telegraf/internal/process"
|
"github.com/influxdata/telegraf/internal/process"
|
||||||
"github.com/influxdata/telegraf/plugins/parsers/influx"
|
"github.com/influxdata/telegraf/plugins/parsers/influx"
|
||||||
"github.com/influxdata/telegraf/plugins/processors"
|
"github.com/influxdata/telegraf/plugins/processors"
|
||||||
"github.com/influxdata/telegraf/plugins/serializers"
|
|
||||||
)
|
)
|
||||||
|
|
||||||
//go:embed sample.conf
|
//go:embed sample.conf
|
||||||
|
|
@ -28,7 +27,7 @@ type Execd struct {
|
||||||
Log telegraf.Logger
|
Log telegraf.Logger
|
||||||
|
|
||||||
parser telegraf.Parser
|
parser telegraf.Parser
|
||||||
serializer serializers.Serializer
|
serializer telegraf.Serializer
|
||||||
acc telegraf.Accumulator
|
acc telegraf.Accumulator
|
||||||
process *process.Process
|
process *process.Process
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -101,7 +101,7 @@ func (s *Serializer) SerializeBatch(metrics []telegraf.Metric) ([]byte, error) {
|
||||||
|
|
||||||
func init() {
|
func init() {
|
||||||
serializers.Add("binary",
|
serializers.Add("binary",
|
||||||
func() serializers.Serializer {
|
func() telegraf.Serializer {
|
||||||
return &Serializer{}
|
return &Serializer{}
|
||||||
},
|
},
|
||||||
)
|
)
|
||||||
|
|
|
||||||
|
|
@ -112,16 +112,8 @@ func (s *Serializer) createObject(metric telegraf.Metric) []byte {
|
||||||
|
|
||||||
func init() {
|
func init() {
|
||||||
serializers.Add("carbon2",
|
serializers.Add("carbon2",
|
||||||
func() serializers.Serializer {
|
func() telegraf.Serializer {
|
||||||
return &Serializer{}
|
return &Serializer{}
|
||||||
},
|
},
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
// InitFromConfig is a compatibility function to construct the parser the old way
|
|
||||||
func (s *Serializer) InitFromConfig(cfg *serializers.Config) error {
|
|
||||||
s.Format = cfg.Carbon2Format
|
|
||||||
s.SanitizeReplaceChar = cfg.Carbon2SanitizeReplaceChar
|
|
||||||
|
|
||||||
return nil
|
|
||||||
}
|
|
||||||
|
|
|
||||||
|
|
@ -192,7 +192,7 @@ func (s *Serializer) createEvent(m telegraf.Metric) (*cloudevents.Event, error)
|
||||||
|
|
||||||
func init() {
|
func init() {
|
||||||
serializers.Add("cloudevents",
|
serializers.Add("cloudevents",
|
||||||
func() serializers.Serializer {
|
func() telegraf.Serializer {
|
||||||
return &Serializer{}
|
return &Serializer{}
|
||||||
},
|
},
|
||||||
)
|
)
|
||||||
|
|
|
||||||
|
|
@ -238,18 +238,8 @@ func (s *Serializer) writeDataOrdered(metric telegraf.Metric) error {
|
||||||
|
|
||||||
func init() {
|
func init() {
|
||||||
serializers.Add("csv",
|
serializers.Add("csv",
|
||||||
func() serializers.Serializer {
|
func() telegraf.Serializer {
|
||||||
return &Serializer{}
|
return &Serializer{}
|
||||||
},
|
},
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
// InitFromConfig is a compatibility function to construct the parser the old way
|
|
||||||
func (s *Serializer) InitFromConfig(cfg *serializers.Config) error {
|
|
||||||
s.TimestampFormat = cfg.TimestampFormat
|
|
||||||
s.Separator = cfg.CSVSeparator
|
|
||||||
s.Header = cfg.CSVHeader
|
|
||||||
s.Prefix = cfg.CSVPrefix
|
|
||||||
|
|
||||||
return nil
|
|
||||||
}
|
|
||||||
|
|
|
||||||
|
|
@ -355,20 +355,8 @@ func compatibleSanitize(name, value string) string {
|
||||||
|
|
||||||
func init() {
|
func init() {
|
||||||
serializers.Add("graphite",
|
serializers.Add("graphite",
|
||||||
func() serializers.Serializer {
|
func() telegraf.Serializer {
|
||||||
return &GraphiteSerializer{}
|
return &GraphiteSerializer{}
|
||||||
},
|
},
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
// InitFromConfig is a compatibility function to construct the parser the old way
|
|
||||||
func (s *GraphiteSerializer) InitFromConfig(cfg *serializers.Config) error {
|
|
||||||
s.Prefix = cfg.Prefix
|
|
||||||
s.Templates = cfg.Templates
|
|
||||||
s.StrictRegex = cfg.GraphiteStrictRegex
|
|
||||||
s.TagSupport = cfg.GraphiteTagSupport
|
|
||||||
s.TagSanitizeMode = cfg.GraphiteTagSanitizeMode
|
|
||||||
s.Separator = cfg.GraphiteSeparator
|
|
||||||
|
|
||||||
return nil
|
|
||||||
}
|
|
||||||
|
|
|
||||||
|
|
@ -328,17 +328,8 @@ func appendStringField(buf []byte, value string) []byte {
|
||||||
|
|
||||||
func init() {
|
func init() {
|
||||||
serializers.Add("influx",
|
serializers.Add("influx",
|
||||||
func() serializers.Serializer {
|
func() telegraf.Serializer {
|
||||||
return &Serializer{}
|
return &Serializer{}
|
||||||
},
|
},
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
// InitFromConfig is a compatibility function to construct the parser the old way
|
|
||||||
func (s *Serializer) InitFromConfig(cfg *serializers.Config) error {
|
|
||||||
s.MaxLineBytes = cfg.InfluxMaxLineBytes
|
|
||||||
s.SortFields = cfg.InfluxSortFields
|
|
||||||
s.UintSupport = cfg.InfluxUintSupport
|
|
||||||
|
|
||||||
return nil
|
|
||||||
}
|
|
||||||
|
|
|
||||||
|
|
@ -162,19 +162,8 @@ func (s *Serializer) transform(obj interface{}) (interface{}, error) {
|
||||||
|
|
||||||
func init() {
|
func init() {
|
||||||
serializers.Add("json",
|
serializers.Add("json",
|
||||||
func() serializers.Serializer {
|
func() telegraf.Serializer {
|
||||||
return &Serializer{}
|
return &Serializer{}
|
||||||
},
|
},
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
// InitFromConfig is a compatibility function to construct the parser the old way
|
|
||||||
func (s *Serializer) InitFromConfig(cfg *serializers.Config) error {
|
|
||||||
s.TimestampUnits = config.Duration(cfg.TimestampUnits)
|
|
||||||
s.TimestampFormat = cfg.TimestampFormat
|
|
||||||
s.Transformation = cfg.Transformation
|
|
||||||
s.NestedFieldsInclude = cfg.JSONNestedFieldInclude
|
|
||||||
s.NestedFieldsExclude = cfg.JSONNestedFieldExclude
|
|
||||||
|
|
||||||
return nil
|
|
||||||
}
|
|
||||||
|
|
|
||||||
|
|
@ -40,13 +40,8 @@ func (s *Serializer) SerializeBatch(metrics []telegraf.Metric) ([]byte, error) {
|
||||||
|
|
||||||
func init() {
|
func init() {
|
||||||
serializers.Add("msgpack",
|
serializers.Add("msgpack",
|
||||||
func() serializers.Serializer {
|
func() telegraf.Serializer {
|
||||||
return &Serializer{}
|
return &Serializer{}
|
||||||
},
|
},
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
// InitFromConfig is a compatibility function to construct the parser the old way
|
|
||||||
func (s *Serializer) InitFromConfig(_ *serializers.Config) error {
|
|
||||||
return nil
|
|
||||||
}
|
|
||||||
|
|
|
||||||
|
|
@ -130,13 +130,8 @@ func verifyValue(v interface{}) bool {
|
||||||
|
|
||||||
func init() {
|
func init() {
|
||||||
serializers.Add("nowmetric",
|
serializers.Add("nowmetric",
|
||||||
func() serializers.Serializer {
|
func() telegraf.Serializer {
|
||||||
return &Serializer{}
|
return &Serializer{}
|
||||||
},
|
},
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
// InitFromConfig is a compatibility function to construct the parser the old way
|
|
||||||
func (s *Serializer) InitFromConfig(_ *serializers.Config) error {
|
|
||||||
return nil
|
|
||||||
}
|
|
||||||
|
|
|
||||||
|
|
@ -88,18 +88,8 @@ func (s *Serializer) SerializeBatch(metrics []telegraf.Metric) ([]byte, error) {
|
||||||
|
|
||||||
func init() {
|
func init() {
|
||||||
serializers.Add("prometheus",
|
serializers.Add("prometheus",
|
||||||
func() serializers.Serializer {
|
func() telegraf.Serializer {
|
||||||
return &Serializer{}
|
return &Serializer{}
|
||||||
},
|
},
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
// InitFromConfig is a compatibility function to construct the parser the old way
|
|
||||||
func (s *Serializer) InitFromConfig(cfg *serializers.Config) error {
|
|
||||||
s.FormatConfig.CompactEncoding = cfg.PrometheusCompactEncoding
|
|
||||||
s.FormatConfig.SortMetrics = cfg.PrometheusSortMetrics
|
|
||||||
s.FormatConfig.StringAsLabel = cfg.PrometheusStringAsLabel
|
|
||||||
s.FormatConfig.ExportTimestamp = cfg.PrometheusExportTimestamp
|
|
||||||
|
|
||||||
return nil
|
|
||||||
}
|
|
||||||
|
|
|
||||||
|
|
@ -350,16 +350,8 @@ func (sl sortableLabels) Swap(i, j int) {
|
||||||
|
|
||||||
func init() {
|
func init() {
|
||||||
serializers.Add("prometheusremotewrite",
|
serializers.Add("prometheusremotewrite",
|
||||||
func() serializers.Serializer {
|
func() telegraf.Serializer {
|
||||||
return &Serializer{}
|
return &Serializer{}
|
||||||
},
|
},
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
// InitFromConfig is a compatibility function to construct the parser the old way
|
|
||||||
func (s *Serializer) InitFromConfig(cfg *serializers.Config) error {
|
|
||||||
s.SortMetrics = cfg.PrometheusSortMetrics
|
|
||||||
s.StringAsLabel = cfg.PrometheusStringAsLabel
|
|
||||||
|
|
||||||
return nil
|
|
||||||
}
|
|
||||||
|
|
|
||||||
|
|
@ -1,14 +1,9 @@
|
||||||
package serializers
|
package serializers
|
||||||
|
|
||||||
import (
|
import "github.com/influxdata/telegraf"
|
||||||
"fmt"
|
|
||||||
"time"
|
|
||||||
|
|
||||||
"github.com/influxdata/telegraf"
|
|
||||||
)
|
|
||||||
|
|
||||||
// Creator is the function to create a new serializer
|
// Creator is the function to create a new serializer
|
||||||
type Creator func() Serializer
|
type Creator func() telegraf.Serializer
|
||||||
|
|
||||||
// Serializers contains the registry of all known serializers (following the new style)
|
// Serializers contains the registry of all known serializers (following the new style)
|
||||||
var Serializers = make(map[string]Creator)
|
var Serializers = make(map[string]Creator)
|
||||||
|
|
@ -17,157 +12,3 @@ var Serializers = make(map[string]Creator)
|
||||||
func Add(name string, creator Creator) {
|
func Add(name string, creator Creator) {
|
||||||
Serializers[name] = creator
|
Serializers[name] = creator
|
||||||
}
|
}
|
||||||
|
|
||||||
// SerializerOutput is an interface for output plugins that are able to
|
|
||||||
// serialize telegraf metrics into arbitrary data formats.
|
|
||||||
type SerializerOutput interface {
|
|
||||||
// SetSerializer sets the serializer function for the interface.
|
|
||||||
SetSerializer(serializer Serializer)
|
|
||||||
}
|
|
||||||
|
|
||||||
// Serializer is an interface defining functions that a serializer plugin must
|
|
||||||
// satisfy.
|
|
||||||
//
|
|
||||||
// Implementations of this interface should be reentrant but are not required
|
|
||||||
// to be thread-safe.
|
|
||||||
type Serializer interface {
|
|
||||||
// Serialize takes a single telegraf metric and turns it into a byte buffer.
|
|
||||||
// separate metrics should be separated by a newline, and there should be
|
|
||||||
// a newline at the end of the buffer.
|
|
||||||
//
|
|
||||||
// New plugins should use SerializeBatch instead to allow for non-line
|
|
||||||
// delimited metrics.
|
|
||||||
Serialize(metric telegraf.Metric) ([]byte, error)
|
|
||||||
|
|
||||||
// SerializeBatch takes an array of telegraf metric and serializes it into
|
|
||||||
// a byte buffer. This method is not required to be suitable for use with
|
|
||||||
// line oriented framing.
|
|
||||||
SerializeBatch(metrics []telegraf.Metric) ([]byte, error)
|
|
||||||
}
|
|
||||||
|
|
||||||
// SerializerCompatibility is an interface for backward-compatible initialization of serializers
|
|
||||||
type SerializerCompatibility interface {
|
|
||||||
// InitFromConfig sets the serializers internal variables from the old-style config
|
|
||||||
InitFromConfig(config *Config) error
|
|
||||||
}
|
|
||||||
|
|
||||||
// Config is a struct that covers the data types needed for all serializer types,
|
|
||||||
// and can be used to instantiate _any_ of the serializers.
|
|
||||||
type Config struct {
|
|
||||||
// DataFormat can be one of the serializer types listed in NewSerializer.
|
|
||||||
DataFormat string `toml:"data_format"`
|
|
||||||
|
|
||||||
// Carbon2 metric format.
|
|
||||||
Carbon2Format string `toml:"carbon2_format"`
|
|
||||||
|
|
||||||
// Character used for metric name sanitization in Carbon2.
|
|
||||||
Carbon2SanitizeReplaceChar string `toml:"carbon2_sanitize_replace_char"`
|
|
||||||
|
|
||||||
// Separator for CSV
|
|
||||||
CSVSeparator string `toml:"csv_separator"`
|
|
||||||
|
|
||||||
// Output a CSV header for naming the columns
|
|
||||||
CSVHeader bool `toml:"csv_header"`
|
|
||||||
|
|
||||||
// Prefix the tag and field columns for CSV format
|
|
||||||
CSVPrefix bool `toml:"csv_column_prefix"`
|
|
||||||
|
|
||||||
// Support tags in graphite protocol
|
|
||||||
GraphiteTagSupport bool `toml:"graphite_tag_support"`
|
|
||||||
|
|
||||||
// Support tags which follow the spec
|
|
||||||
GraphiteTagSanitizeMode string `toml:"graphite_tag_sanitize_mode"`
|
|
||||||
|
|
||||||
// Character for separating metric name and field for Graphite tags
|
|
||||||
GraphiteSeparator string `toml:"graphite_separator"`
|
|
||||||
|
|
||||||
// Regex string
|
|
||||||
GraphiteStrictRegex string `toml:"graphite_strict_sanitize_regex"`
|
|
||||||
|
|
||||||
// Maximum line length in bytes; influx format only
|
|
||||||
InfluxMaxLineBytes int `toml:"influx_max_line_bytes"`
|
|
||||||
|
|
||||||
// Sort field keys, set to true only when debugging as it less performant
|
|
||||||
// than unsorted fields; influx format only
|
|
||||||
InfluxSortFields bool `toml:"influx_sort_fields"`
|
|
||||||
|
|
||||||
// Support unsigned integer output; influx format only
|
|
||||||
InfluxUintSupport bool `toml:"influx_uint_support"`
|
|
||||||
|
|
||||||
// Omit timestamp from output; influx format only
|
|
||||||
InfluxOmitTimestamp bool `toml:"influx_omit_timestamp"`
|
|
||||||
|
|
||||||
// Prefix to add to all measurements, only supports Graphite
|
|
||||||
Prefix string `toml:"prefix"`
|
|
||||||
|
|
||||||
// Template for converting telegraf metrics into Graphite
|
|
||||||
// only supports Graphite
|
|
||||||
Template string `toml:"template"`
|
|
||||||
|
|
||||||
// Templates same Template, but multiple
|
|
||||||
Templates []string `toml:"templates"`
|
|
||||||
|
|
||||||
// Timestamp units to use for JSON formatted output
|
|
||||||
TimestampUnits time.Duration `toml:"timestamp_units"`
|
|
||||||
|
|
||||||
// Timestamp format to use for JSON and CSV formatted output
|
|
||||||
TimestampFormat string `toml:"timestamp_format"`
|
|
||||||
|
|
||||||
// Transformation as JSONata expression to use for JSON formatted output
|
|
||||||
Transformation string `toml:"transformation"`
|
|
||||||
|
|
||||||
// Field filter for interpreting data as nested JSON for JSON serializer
|
|
||||||
JSONNestedFieldInclude []string `toml:"json_nested_fields_include"`
|
|
||||||
JSONNestedFieldExclude []string `toml:"json_nested_fields_exclude"`
|
|
||||||
|
|
||||||
// Include HEC routing fields for splunkmetric output
|
|
||||||
HecRouting bool `toml:"hec_routing"`
|
|
||||||
|
|
||||||
// Enable Splunk MultiMetric output (Splunk 8.0+)
|
|
||||||
SplunkmetricMultiMetric bool `toml:"splunkmetric_multi_metric"`
|
|
||||||
|
|
||||||
// Omit the Splunk Event "metric" tag
|
|
||||||
SplunkmetricOmitEventTag bool `toml:"splunkmetric_omit_event_tag"`
|
|
||||||
|
|
||||||
// Point tags to use as the source name for Wavefront (if none found, host will be used).
|
|
||||||
WavefrontSourceOverride []string `toml:"wavefront_source_override"`
|
|
||||||
|
|
||||||
// Use Strict rules to sanitize metric and tag names from invalid characters for Wavefront
|
|
||||||
// When enabled forward slash (/) and comma (,) will be accepted
|
|
||||||
WavefrontUseStrict bool `toml:"wavefront_use_strict"`
|
|
||||||
|
|
||||||
// Convert "_" in prefixes to "." for Wavefront
|
|
||||||
WavefrontDisablePrefixConversion bool `toml:"wavefront_disable_prefix_conversion"`
|
|
||||||
|
|
||||||
// Include the metric timestamp on each sample.
|
|
||||||
PrometheusExportTimestamp bool `toml:"prometheus_export_timestamp"`
|
|
||||||
|
|
||||||
// Sort prometheus metric families and metric samples. Useful for
|
|
||||||
// debugging.
|
|
||||||
PrometheusSortMetrics bool `toml:"prometheus_sort_metrics"`
|
|
||||||
|
|
||||||
// Output string fields as metric labels; when false string fields are
|
|
||||||
// discarded.
|
|
||||||
PrometheusStringAsLabel bool `toml:"prometheus_string_as_label"`
|
|
||||||
|
|
||||||
// Encode metrics without HELP metadata. This helps reduce the payload size.
|
|
||||||
PrometheusCompactEncoding bool `toml:"prometheus_compact_encoding"`
|
|
||||||
}
|
|
||||||
|
|
||||||
// NewSerializer a Serializer interface based on the given config.
|
|
||||||
func NewSerializer(config *Config) (Serializer, error) {
|
|
||||||
creator, found := Serializers[config.DataFormat]
|
|
||||||
if !found {
|
|
||||||
return nil, fmt.Errorf("invalid data format: %s", config.DataFormat)
|
|
||||||
}
|
|
||||||
|
|
||||||
// Try to create new-style serializers the old way...
|
|
||||||
serializer := creator()
|
|
||||||
p, ok := serializer.(SerializerCompatibility)
|
|
||||||
if !ok {
|
|
||||||
return nil, fmt.Errorf("serializer for %q cannot be created the old way", config.DataFormat)
|
|
||||||
}
|
|
||||||
err := p.InitFromConfig(config)
|
|
||||||
|
|
||||||
return serializer, err
|
|
||||||
}
|
|
||||||
|
|
|
||||||
|
|
@ -210,17 +210,8 @@ func verifyValue(v interface{}) (value interface{}, valid bool) {
|
||||||
|
|
||||||
func init() {
|
func init() {
|
||||||
serializers.Add("splunkmetric",
|
serializers.Add("splunkmetric",
|
||||||
func() serializers.Serializer {
|
func() telegraf.Serializer {
|
||||||
return &Serializer{}
|
return &Serializer{}
|
||||||
},
|
},
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
// InitFromConfig is a compatibility function to construct the parser the old way
|
|
||||||
func (s *Serializer) InitFromConfig(cfg *serializers.Config) error {
|
|
||||||
s.HecRouting = cfg.HecRouting
|
|
||||||
s.MultiMetric = cfg.SplunkmetricMultiMetric
|
|
||||||
s.OmitEventTag = cfg.SplunkmetricOmitEventTag
|
|
||||||
|
|
||||||
return nil
|
|
||||||
}
|
|
||||||
|
|
|
||||||
|
|
@ -95,7 +95,7 @@ func (s *Serializer) SerializeBatch(metrics []telegraf.Metric) ([]byte, error) {
|
||||||
|
|
||||||
func init() {
|
func init() {
|
||||||
serializers.Add("template",
|
serializers.Add("template",
|
||||||
func() serializers.Serializer {
|
func() telegraf.Serializer {
|
||||||
return &Serializer{}
|
return &Serializer{}
|
||||||
},
|
},
|
||||||
)
|
)
|
||||||
|
|
|
||||||
|
|
@ -189,18 +189,8 @@ func (b *buffer) WriteFloat64(val float64) {
|
||||||
|
|
||||||
func init() {
|
func init() {
|
||||||
serializers.Add("wavefront",
|
serializers.Add("wavefront",
|
||||||
func() serializers.Serializer {
|
func() telegraf.Serializer {
|
||||||
return &Serializer{}
|
return &Serializer{}
|
||||||
},
|
},
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
// InitFromConfig is a compatibility function to construct the parser the old way
|
|
||||||
func (s *Serializer) InitFromConfig(cfg *serializers.Config) error {
|
|
||||||
s.Prefix = cfg.Prefix
|
|
||||||
s.UseStrict = cfg.WavefrontUseStrict
|
|
||||||
s.SourceOverride = cfg.WavefrontSourceOverride
|
|
||||||
s.DisablePrefixConversions = cfg.WavefrontDisablePrefixConversion
|
|
||||||
|
|
||||||
return nil
|
|
||||||
}
|
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue