From e23a54b6db2dfe706fd76fca0ccac9ec176a7367 Mon Sep 17 00:00:00 2001 From: Granville Schmidt <1246157+gramidt@users.noreply.github.com> Date: Tue, 9 Feb 2021 13:31:30 -0700 Subject: [PATCH] f5cloudexporter: Implemented User-Agent header with version (#2292) * implemented User-Agent header with version Signed-off-by: Granville Schmidt <1246157+gramidt@users.noreply.github.com> * updated function name per recommendation Signed-off-by: Granville Schmidt <1246157+gramidt@users.noreply.github.com> --- exporter/f5cloudexporter/config_test.go | 4 +++- exporter/f5cloudexporter/factory.go | 13 ++++++++++++ exporter/f5cloudexporter/factory_test.go | 27 +++++++++++++++++++++--- 3 files changed, 40 insertions(+), 4 deletions(-) diff --git a/exporter/f5cloudexporter/config_test.go b/exporter/f5cloudexporter/config_test.go index a82681e7f788..b1fedb938513 100644 --- a/exporter/f5cloudexporter/config_test.go +++ b/exporter/f5cloudexporter/config_test.go @@ -66,7 +66,9 @@ func TestLoadConfig(t *testing.T) { ReadBufferSize: 123, WriteBufferSize: 345, Timeout: time.Second * 10, - Headers: map[string]string{}, + Headers: map[string]string{ + "User-Agent": "opentelemetry-collector-contrib {{version}}", + }, }, }, Source: "dev", diff --git a/exporter/f5cloudexporter/factory.go b/exporter/f5cloudexporter/factory.go index f41111b141b1..0255f126255a 100644 --- a/exporter/f5cloudexporter/factory.go +++ b/exporter/f5cloudexporter/factory.go @@ -17,6 +17,7 @@ package f5cloudexporter import ( "context" "net/http" + "strings" "go.opentelemetry.io/collector/component" "go.opentelemetry.io/collector/config/configmodels" @@ -58,6 +59,8 @@ func (f *f5cloudFactory) CreateMetricsExporter( return nil, err } + fillUserAgent(cfg, params.ApplicationStartInfo.Version) + return f.ExporterFactory.CreateMetricsExporter(ctx, params, &cfg.Config) } @@ -72,6 +75,8 @@ func (f *f5cloudFactory) CreateTracesExporter( return nil, err } + fillUserAgent(cfg, params.ApplicationStartInfo.Version) + return f.ExporterFactory.CreateTracesExporter(ctx, params, &cfg.Config) } @@ -86,6 +91,8 @@ func (f *f5cloudFactory) CreateLogsExporter( return nil, err } + fillUserAgent(cfg, params.ApplicationStartInfo.Version) + return f.ExporterFactory.CreateLogsExporter(ctx, params, &cfg.Config) } @@ -101,6 +108,8 @@ func (f *f5cloudFactory) CreateDefaultConfig() configmodels.Exporter { cfg.TypeVal = typeStr cfg.NameVal = typeStr + cfg.Headers["User-Agent"] = "opentelemetry-collector-contrib {{version}}" + cfg.HTTPClientSettings.CustomRoundTripper = func(next http.RoundTripper) (http.RoundTripper, error) { ts, err := f.getTokenSource(cfg) if err != nil { @@ -122,3 +131,7 @@ func getTokenSourceFromConfig(config *Config) (oauth2.TokenSource, error) { return ts, nil } + +func fillUserAgent(cfg *Config, version string) { + cfg.Headers["User-Agent"] = strings.ReplaceAll(cfg.Headers["User-Agent"], "{{version}}", version) +} diff --git a/exporter/f5cloudexporter/factory_test.go b/exporter/f5cloudexporter/factory_test.go index 37e56a0fad40..03ec3aaa29e8 100644 --- a/exporter/f5cloudexporter/factory_test.go +++ b/exporter/f5cloudexporter/factory_test.go @@ -60,10 +60,17 @@ func TestFactory_CreateMetricsExporter(t *testing.T) { Audience: "tests", } - creationParams := component.ExporterCreateParams{Logger: zap.NewNop()} + creationParams := component.ExporterCreateParams{ + Logger: zap.NewNop(), + ApplicationStartInfo: component.ApplicationStartInfo{ + Version: "0.0.0", + }, + } oexp, err := factory.CreateMetricsExporter(context.Background(), creationParams, cfg) require.Nil(t, err) require.NotNil(t, oexp) + + require.Equal(t, "opentelemetry-collector-contrib 0.0.0", cfg.Headers["User-Agent"]) } func TestFactory_CreateMetricsExporterInvalidConfig(t *testing.T) { @@ -86,10 +93,17 @@ func TestFactory_CreateTraceExporter(t *testing.T) { Audience: "tests", } - creationParams := component.ExporterCreateParams{Logger: zap.NewNop()} + creationParams := component.ExporterCreateParams{ + Logger: zap.NewNop(), + ApplicationStartInfo: component.ApplicationStartInfo{ + Version: "0.0.0", + }, + } oexp, err := factory.CreateTracesExporter(context.Background(), creationParams, cfg) require.Nil(t, err) require.NotNil(t, oexp) + + require.Equal(t, "opentelemetry-collector-contrib 0.0.0", cfg.Headers["User-Agent"]) } func Test_Factory_CreateTraceExporterInvalidConfig(t *testing.T) { @@ -112,10 +126,17 @@ func TestFactory_CreateLogsExporter(t *testing.T) { Audience: "tests", } - creationParams := component.ExporterCreateParams{Logger: zap.NewNop()} + creationParams := component.ExporterCreateParams{ + Logger: zap.NewNop(), + ApplicationStartInfo: component.ApplicationStartInfo{ + Version: "0.0.0", + }, + } oexp, err := factory.CreateLogsExporter(context.Background(), creationParams, cfg) require.Nil(t, err) require.NotNil(t, oexp) + + require.Equal(t, "opentelemetry-collector-contrib 0.0.0", cfg.Headers["User-Agent"]) } func TestFactory_CreateLogsExporterInvalidConfig(t *testing.T) {