fix(outputs.sumologic): Unwrap serializer for type check (#13522)

This commit is contained in:
Sven Rebhan 2023-07-04 21:37:16 +02:00 committed by GitHub
parent 261e0223a7
commit 0291aafe51
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
1 changed files with 20 additions and 22 deletions

View File

@ -13,6 +13,7 @@ import (
"github.com/influxdata/telegraf"
"github.com/influxdata/telegraf/config"
"github.com/influxdata/telegraf/internal"
"github.com/influxdata/telegraf/models"
"github.com/influxdata/telegraf/plugins/outputs"
"github.com/influxdata/telegraf/plugins/serializers"
"github.com/influxdata/telegraf/plugins/serializers/carbon2"
@ -58,7 +59,6 @@ type SumoLogic struct {
client *http.Client
serializer serializers.Serializer
err error
headers map[string]string
}
@ -67,21 +67,6 @@ func (*SumoLogic) SampleConfig() string {
}
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
}
@ -95,8 +80,24 @@ func (s *SumoLogic) createClient() *http.Client {
}
func (s *SumoLogic) Connect() error {
if s.err != nil {
return fmt.Errorf("sumologic: incorrect configuration: %w", s.err)
s.headers = make(map[string]string)
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 {
@ -109,13 +110,10 @@ func (s *SumoLogic) Connect() error {
}
func (s *SumoLogic) Close() error {
return s.err
return nil
}
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 {
return errors.New("sumologic: serializer unset")
}