fix(outputs.sumologic): Unwrap serializer for type check (#13522)
This commit is contained in:
parent
261e0223a7
commit
0291aafe51
|
|
@ -13,6 +13,7 @@ import (
|
||||||
"github.com/influxdata/telegraf"
|
"github.com/influxdata/telegraf"
|
||||||
"github.com/influxdata/telegraf/config"
|
"github.com/influxdata/telegraf/config"
|
||||||
"github.com/influxdata/telegraf/internal"
|
"github.com/influxdata/telegraf/internal"
|
||||||
|
"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"
|
||||||
"github.com/influxdata/telegraf/plugins/serializers/carbon2"
|
"github.com/influxdata/telegraf/plugins/serializers/carbon2"
|
||||||
|
|
@ -58,7 +59,6 @@ type SumoLogic struct {
|
||||||
client *http.Client
|
client *http.Client
|
||||||
serializer serializers.Serializer
|
serializer serializers.Serializer
|
||||||
|
|
||||||
err error
|
|
||||||
headers map[string]string
|
headers map[string]string
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -67,21 +67,6 @@ func (*SumoLogic) SampleConfig() string {
|
||||||
}
|
}
|
||||||
|
|
||||||
func (s *SumoLogic) SetSerializer(serializer serializers.Serializer) {
|
func (s *SumoLogic) SetSerializer(serializer serializers.Serializer) {
|
||||||
if s.headers == nil {
|
|
||||||
s.headers = make(map[string]string)
|
|
||||||
}
|
|
||||||
|
|
||||||
switch serializer.(type) {
|
|
||||||
case *carbon2.Serializer:
|
|
||||||
s.headers[contentTypeHeader] = carbon2ContentType
|
|
||||||
case *graphite.GraphiteSerializer:
|
|
||||||
s.headers[contentTypeHeader] = graphiteContentType
|
|
||||||
case *prometheus.Serializer:
|
|
||||||
s.headers[contentTypeHeader] = prometheusContentType
|
|
||||||
default:
|
|
||||||
s.err = fmt.Errorf("unsupported serializer %T", serializer)
|
|
||||||
}
|
|
||||||
|
|
||||||
s.serializer = serializer
|
s.serializer = serializer
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -95,8 +80,24 @@ func (s *SumoLogic) createClient() *http.Client {
|
||||||
}
|
}
|
||||||
|
|
||||||
func (s *SumoLogic) Connect() error {
|
func (s *SumoLogic) Connect() error {
|
||||||
if s.err != nil {
|
s.headers = make(map[string]string)
|
||||||
return fmt.Errorf("sumologic: incorrect configuration: %w", s.err)
|
|
||||||
|
var serializer serializers.Serializer
|
||||||
|
if unwrapped, ok := s.serializer.(*models.RunningSerializer); ok {
|
||||||
|
serializer = unwrapped.Serializer
|
||||||
|
} else {
|
||||||
|
serializer = s.serializer
|
||||||
|
}
|
||||||
|
|
||||||
|
switch serializer.(type) {
|
||||||
|
case *carbon2.Serializer:
|
||||||
|
s.headers[contentTypeHeader] = carbon2ContentType
|
||||||
|
case *graphite.GraphiteSerializer:
|
||||||
|
s.headers[contentTypeHeader] = graphiteContentType
|
||||||
|
case *prometheus.Serializer:
|
||||||
|
s.headers[contentTypeHeader] = prometheusContentType
|
||||||
|
default:
|
||||||
|
return fmt.Errorf("unsupported serializer %T", serializer)
|
||||||
}
|
}
|
||||||
|
|
||||||
if s.Timeout == 0 {
|
if s.Timeout == 0 {
|
||||||
|
|
@ -109,13 +110,10 @@ func (s *SumoLogic) Connect() error {
|
||||||
}
|
}
|
||||||
|
|
||||||
func (s *SumoLogic) Close() error {
|
func (s *SumoLogic) Close() error {
|
||||||
return s.err
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func (s *SumoLogic) Write(metrics []telegraf.Metric) error {
|
func (s *SumoLogic) Write(metrics []telegraf.Metric) error {
|
||||||
if s.err != nil {
|
|
||||||
return fmt.Errorf("sumologic: incorrect configuration: %w", s.err)
|
|
||||||
}
|
|
||||||
if s.serializer == nil {
|
if s.serializer == nil {
|
||||||
return errors.New("sumologic: serializer unset")
|
return errors.New("sumologic: serializer unset")
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue