chore(serializers.nowmetric): Migrate to new-style framework (#13340)

This commit is contained in:
Sven Rebhan 2023-05-26 15:50:33 +02:00 committed by GitHub
parent 2a33f496c4
commit d769495276
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
4 changed files with 32 additions and 25 deletions

View File

@ -0,0 +1,7 @@
//go:build !custom || serializers || serializers.nowmetric
package all
import (
_ "github.com/influxdata/telegraf/plugins/serializers/nowmetric" // register plugin
)

View File

@ -7,11 +7,10 @@ import (
"time" "time"
"github.com/influxdata/telegraf" "github.com/influxdata/telegraf"
"github.com/influxdata/telegraf/plugins/serializers"
) )
type serializer struct { type Serializer struct{}
TimestampUnits time.Duration
}
/* /*
Example for the JSON generated and pushed to the MID Example for the JSON generated and pushed to the MID
@ -38,12 +37,7 @@ type OIMetric struct {
type OIMetrics []OIMetric type OIMetrics []OIMetric
func NewSerializer() (*serializer, error) { func (s *Serializer) Serialize(metric telegraf.Metric) (out []byte, err error) {
s := &serializer{}
return s, nil
}
func (s *serializer) Serialize(metric telegraf.Metric) (out []byte, err error) {
serialized, err := s.createObject(metric) serialized, err := s.createObject(metric)
if err != nil { if err != nil {
return []byte{}, err return []byte{}, err
@ -51,7 +45,7 @@ func (s *serializer) Serialize(metric telegraf.Metric) (out []byte, err error) {
return serialized, nil 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) objects := make([]byte, 0)
for _, metric := range metrics { for _, metric := range metrics {
m, err := s.createObject(metric) m, err := s.createObject(metric)
@ -65,7 +59,7 @@ func (s *serializer) SerializeBatch(metrics []telegraf.Metric) (out []byte, err
return replaced, nil 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. /* ServiceNow Operational Intelligence supports an array of JSON objects.
** Following elements accepted in the request body: ** Following elements accepted in the request body:
** metric_type: The name of the metric ** metric_type: The name of the metric
@ -132,3 +126,16 @@ func verifyValue(v interface{}) bool {
_, ok := v.(string) _, ok := v.(string)
return !ok 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
}

View File

@ -22,7 +22,7 @@ func TestSerializeMetricFloat(t *testing.T) {
} }
m := metric.New("cpu", tags, fields, now) m := metric.New("cpu", tags, fields, now)
s, _ := NewSerializer() s := &Serializer{}
var buf []byte var buf []byte
buf, err := s.Serialize(m) buf, err := s.Serialize(m)
require.NoError(t, err) require.NoError(t, err)
@ -72,7 +72,7 @@ func TestSerialize_TimestampUnits(t *testing.T) {
}, },
time.Unix(1525478795, 123456789), time.Unix(1525478795, 123456789),
) )
s, _ := NewSerializer() s := &Serializer{}
actual, err := s.Serialize(m) actual, err := s.Serialize(m)
require.NoError(t, err) require.NoError(t, err)
require.Equal(t, tt.expected, string(actual)) require.Equal(t, tt.expected, string(actual))
@ -90,7 +90,7 @@ func TestSerializeMetricInt(t *testing.T) {
} }
m := metric.New("cpu", tags, fields, now) m := metric.New("cpu", tags, fields, now)
s, _ := NewSerializer() s := &Serializer{}
var buf []byte var buf []byte
buf, err := s.Serialize(m) buf, err := s.Serialize(m)
require.NoError(t, err) require.NoError(t, err)
@ -114,7 +114,7 @@ func TestSerializeMetricString(t *testing.T) {
} }
m := metric.New("cpu", tags, fields, now) m := metric.New("cpu", tags, fields, now)
s, _ := NewSerializer() s := &Serializer{}
var buf []byte var buf []byte
buf, err := s.Serialize(m) buf, err := s.Serialize(m)
require.NoError(t, err) require.NoError(t, err)
@ -138,7 +138,7 @@ func TestSerializeMultiFields(t *testing.T) {
return m.FieldList()[i].Key < m.FieldList()[j].Key return m.FieldList()[i].Key < m.FieldList()[j].Key
}) })
s, _ := NewSerializer() s := &Serializer{}
var buf []byte var buf []byte
buf, err := s.Serialize(m) buf, err := s.Serialize(m)
require.NoError(t, err) require.NoError(t, err)
@ -164,7 +164,7 @@ func TestSerializeMetricWithEscapes(t *testing.T) {
} }
m := metric.New("My CPU", tags, fields, now) m := metric.New("My CPU", tags, fields, now)
s, _ := NewSerializer() s := &Serializer{}
buf, err := s.Serialize(m) buf, err := s.Serialize(m)
require.NoError(t, err) require.NoError(t, err)
@ -187,7 +187,7 @@ func TestSerializeBatch(t *testing.T) {
time.Unix(0, 0), time.Unix(0, 0),
) )
metrics := []telegraf.Metric{m, m} metrics := []telegraf.Metric{m, m}
s, _ := NewSerializer() s := &Serializer{}
buf, err := s.SerializeBatch(metrics) buf, err := s.SerializeBatch(metrics)
require.NoError(t, err) require.NoError(t, err)
require.Equal( require.Equal(

View File

@ -5,7 +5,6 @@ import (
"time" "time"
"github.com/influxdata/telegraf" "github.com/influxdata/telegraf"
"github.com/influxdata/telegraf/plugins/serializers/nowmetric"
"github.com/influxdata/telegraf/plugins/serializers/prometheus" "github.com/influxdata/telegraf/plugins/serializers/prometheus"
"github.com/influxdata/telegraf/plugins/serializers/prometheusremotewrite" "github.com/influxdata/telegraf/plugins/serializers/prometheusremotewrite"
"github.com/influxdata/telegraf/plugins/serializers/splunkmetric" "github.com/influxdata/telegraf/plugins/serializers/splunkmetric"
@ -163,8 +162,6 @@ func NewSerializer(config *Config) (Serializer, error) {
switch config.DataFormat { switch config.DataFormat {
case "splunkmetric": case "splunkmetric":
serializer, err = NewSplunkmetricSerializer(config.HecRouting, config.SplunkmetricMultiMetric, config.SplunkmetricOmitEventTag), nil serializer, err = NewSplunkmetricSerializer(config.HecRouting, config.SplunkmetricMultiMetric, config.SplunkmetricOmitEventTag), nil
case "nowmetric":
serializer, err = NewNowSerializer()
case "wavefront": case "wavefront":
serializer, err = NewWavefrontSerializer( serializer, err = NewWavefrontSerializer(
config.Prefix, config.Prefix,
@ -243,7 +240,3 @@ func NewWavefrontSerializer(prefix string, useStrict bool, sourceOverride []stri
func NewSplunkmetricSerializer(splunkmetricHecRouting bool, splunkmetricMultimetric bool, splunkmetricOmitEventTag bool) Serializer { func NewSplunkmetricSerializer(splunkmetricHecRouting bool, splunkmetricMultimetric bool, splunkmetricOmitEventTag bool) Serializer {
return splunkmetric.NewSerializer(splunkmetricHecRouting, splunkmetricMultimetric, splunkmetricOmitEventTag) return splunkmetric.NewSerializer(splunkmetricHecRouting, splunkmetricMultimetric, splunkmetricOmitEventTag)
} }
func NewNowSerializer() (Serializer, error) {
return nowmetric.NewSerializer()
}