Skip to content

Commit

Permalink
fix(outputs.sumologic): Unwrap serializer for type check (#13522)
Browse files Browse the repository at this point in the history
  • Loading branch information
srebhan authored Jul 4, 2023
1 parent 261e022 commit 0291aaf
Showing 1 changed file with 20 additions and 22 deletions.
42 changes: 20 additions & 22 deletions plugins/outputs/sumologic/sumologic.go
Original file line number Diff line number Diff line change
Expand Up @@ -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"
Expand Down Expand Up @@ -58,7 +59,6 @@ type SumoLogic struct {
client *http.Client
serializer serializers.Serializer

err error
headers map[string]string
}

Expand All @@ -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
}

Expand All @@ -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 {
Expand All @@ -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")
}
Expand Down

0 comments on commit 0291aaf

Please sign in to comment.