From d7694952762526f91dcabf3623eeab8fea97bb64 Mon Sep 17 00:00:00 2001 From: Sven Rebhan <36194019+srebhan@users.noreply.github.com> Date: Fri, 26 May 2023 15:50:33 +0200 Subject: [PATCH] chore(serializers.nowmetric): Migrate to new-style framework (#13340) --- plugins/serializers/all/nowmetric.go | 7 +++++ plugins/serializers/nowmetric/nowmetric.go | 29 ++++++++++++------- .../serializers/nowmetric/nowmetric_test.go | 14 ++++----- plugins/serializers/registry.go | 7 ----- 4 files changed, 32 insertions(+), 25 deletions(-) create mode 100644 plugins/serializers/all/nowmetric.go diff --git a/plugins/serializers/all/nowmetric.go b/plugins/serializers/all/nowmetric.go new file mode 100644 index 000000000..b0f3b8ce3 --- /dev/null +++ b/plugins/serializers/all/nowmetric.go @@ -0,0 +1,7 @@ +//go:build !custom || serializers || serializers.nowmetric + +package all + +import ( + _ "github.com/influxdata/telegraf/plugins/serializers/nowmetric" // register plugin +) diff --git a/plugins/serializers/nowmetric/nowmetric.go b/plugins/serializers/nowmetric/nowmetric.go index b67c8c7f4..119edb2de 100644 --- a/plugins/serializers/nowmetric/nowmetric.go +++ b/plugins/serializers/nowmetric/nowmetric.go @@ -7,11 +7,10 @@ import ( "time" "github.com/influxdata/telegraf" + "github.com/influxdata/telegraf/plugins/serializers" ) -type serializer struct { - TimestampUnits time.Duration -} +type Serializer struct{} /* Example for the JSON generated and pushed to the MID @@ -38,12 +37,7 @@ type OIMetric struct { type OIMetrics []OIMetric -func NewSerializer() (*serializer, error) { - s := &serializer{} - return s, nil -} - -func (s *serializer) Serialize(metric telegraf.Metric) (out []byte, err error) { +func (s *Serializer) Serialize(metric telegraf.Metric) (out []byte, err error) { serialized, err := s.createObject(metric) if err != nil { return []byte{}, err @@ -51,7 +45,7 @@ func (s *serializer) Serialize(metric telegraf.Metric) (out []byte, err error) { return serialized, nil } -func (s *serializer) SerializeBatch(metrics []telegraf.Metric) (out []byte, err error) { +func (s *Serializer) SerializeBatch(metrics []telegraf.Metric) (out []byte, err error) { objects := make([]byte, 0) for _, metric := range metrics { m, err := s.createObject(metric) @@ -65,7 +59,7 @@ func (s *serializer) SerializeBatch(metrics []telegraf.Metric) (out []byte, err return replaced, nil } -func (s *serializer) createObject(metric telegraf.Metric) ([]byte, error) { +func (s *Serializer) createObject(metric telegraf.Metric) ([]byte, error) { /* ServiceNow Operational Intelligence supports an array of JSON objects. ** Following elements accepted in the request body: ** metric_type: The name of the metric @@ -132,3 +126,16 @@ func verifyValue(v interface{}) bool { _, ok := v.(string) return !ok } + +func init() { + serializers.Add("nowmetric", + func() serializers.Serializer { + return &Serializer{} + }, + ) +} + +// InitFromConfig is a compatibility function to construct the parser the old way +func (s *Serializer) InitFromConfig(_ *serializers.Config) error { + return nil +} diff --git a/plugins/serializers/nowmetric/nowmetric_test.go b/plugins/serializers/nowmetric/nowmetric_test.go index ad462d230..3ea03d8a0 100644 --- a/plugins/serializers/nowmetric/nowmetric_test.go +++ b/plugins/serializers/nowmetric/nowmetric_test.go @@ -22,7 +22,7 @@ func TestSerializeMetricFloat(t *testing.T) { } m := metric.New("cpu", tags, fields, now) - s, _ := NewSerializer() + s := &Serializer{} var buf []byte buf, err := s.Serialize(m) require.NoError(t, err) @@ -72,7 +72,7 @@ func TestSerialize_TimestampUnits(t *testing.T) { }, time.Unix(1525478795, 123456789), ) - s, _ := NewSerializer() + s := &Serializer{} actual, err := s.Serialize(m) require.NoError(t, err) require.Equal(t, tt.expected, string(actual)) @@ -90,7 +90,7 @@ func TestSerializeMetricInt(t *testing.T) { } m := metric.New("cpu", tags, fields, now) - s, _ := NewSerializer() + s := &Serializer{} var buf []byte buf, err := s.Serialize(m) require.NoError(t, err) @@ -114,7 +114,7 @@ func TestSerializeMetricString(t *testing.T) { } m := metric.New("cpu", tags, fields, now) - s, _ := NewSerializer() + s := &Serializer{} var buf []byte buf, err := s.Serialize(m) require.NoError(t, err) @@ -138,7 +138,7 @@ func TestSerializeMultiFields(t *testing.T) { return m.FieldList()[i].Key < m.FieldList()[j].Key }) - s, _ := NewSerializer() + s := &Serializer{} var buf []byte buf, err := s.Serialize(m) require.NoError(t, err) @@ -164,7 +164,7 @@ func TestSerializeMetricWithEscapes(t *testing.T) { } m := metric.New("My CPU", tags, fields, now) - s, _ := NewSerializer() + s := &Serializer{} buf, err := s.Serialize(m) require.NoError(t, err) @@ -187,7 +187,7 @@ func TestSerializeBatch(t *testing.T) { time.Unix(0, 0), ) metrics := []telegraf.Metric{m, m} - s, _ := NewSerializer() + s := &Serializer{} buf, err := s.SerializeBatch(metrics) require.NoError(t, err) require.Equal( diff --git a/plugins/serializers/registry.go b/plugins/serializers/registry.go index 2b961367c..eafcedd4c 100644 --- a/plugins/serializers/registry.go +++ b/plugins/serializers/registry.go @@ -5,7 +5,6 @@ import ( "time" "github.com/influxdata/telegraf" - "github.com/influxdata/telegraf/plugins/serializers/nowmetric" "github.com/influxdata/telegraf/plugins/serializers/prometheus" "github.com/influxdata/telegraf/plugins/serializers/prometheusremotewrite" "github.com/influxdata/telegraf/plugins/serializers/splunkmetric" @@ -163,8 +162,6 @@ func NewSerializer(config *Config) (Serializer, error) { switch config.DataFormat { case "splunkmetric": serializer, err = NewSplunkmetricSerializer(config.HecRouting, config.SplunkmetricMultiMetric, config.SplunkmetricOmitEventTag), nil - case "nowmetric": - serializer, err = NewNowSerializer() case "wavefront": serializer, err = NewWavefrontSerializer( config.Prefix, @@ -243,7 +240,3 @@ func NewWavefrontSerializer(prefix string, useStrict bool, sourceOverride []stri func NewSplunkmetricSerializer(splunkmetricHecRouting bool, splunkmetricMultimetric bool, splunkmetricOmitEventTag bool) Serializer { return splunkmetric.NewSerializer(splunkmetricHecRouting, splunkmetricMultimetric, splunkmetricOmitEventTag) } - -func NewNowSerializer() (Serializer, error) { - return nowmetric.NewSerializer() -}