Skip to content

Commit 9adb088

Browse files
authored
[otlp] Move spec envvar key definitions to a single spot (#5428)
1 parent 81d29cf commit 9adb088

File tree

6 files changed

+53
-40
lines changed

6 files changed

+53
-40
lines changed
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
// Copyright The OpenTelemetry Authors
2+
// SPDX-License-Identifier: Apache-2.0
3+
4+
namespace OpenTelemetry.Exporter;
5+
6+
/// <summary>
7+
/// Contains spec environment variable key definitions for OpenTelemetry Protocol (OTLP) exporter.
8+
/// </summary>
9+
/// <remarks>
10+
/// Specification: <see href="https://github.com/open-telemetry/opentelemetry-specification/blob/main/specification/protocol/exporter.md"/>.
11+
/// </remarks>
12+
internal static class OtlpExporterSpecEnvVarKeyDefinitions
13+
{
14+
public const string DefaultEndpointEnvVarName = "OTEL_EXPORTER_OTLP_ENDPOINT";
15+
public const string DefaultHeadersEnvVarName = "OTEL_EXPORTER_OTLP_HEADERS";
16+
public const string DefaultTimeoutEnvVarName = "OTEL_EXPORTER_OTLP_TIMEOUT";
17+
public const string DefaultProtocolEnvVarName = "OTEL_EXPORTER_OTLP_PROTOCOL";
18+
19+
public const string MetricsTemporalityPreferenceEnvVarName = "OTEL_EXPORTER_OTLP_METRICS_TEMPORALITY_PREFERENCE";
20+
}

src/OpenTelemetry.Exporter.OpenTelemetryProtocol/OtlpExporterOptions.cs

+4-9
Original file line numberDiff line numberDiff line change
@@ -22,11 +22,6 @@ namespace OpenTelemetry.Exporter;
2222
/// </summary>
2323
public class OtlpExporterOptions
2424
{
25-
internal const string EndpointEnvVarName = "OTEL_EXPORTER_OTLP_ENDPOINT";
26-
internal const string HeadersEnvVarName = "OTEL_EXPORTER_OTLP_HEADERS";
27-
internal const string TimeoutEnvVarName = "OTEL_EXPORTER_OTLP_TIMEOUT";
28-
internal const string ProtocolEnvVarName = "OTEL_EXPORTER_OTLP_PROTOCOL";
29-
3025
internal static readonly KeyValuePair<string, string>[] StandardHeaders = new KeyValuePair<string, string>[]
3126
{
3227
new KeyValuePair<string, string>("User-Agent", GetUserAgentString()),
@@ -56,23 +51,23 @@ internal OtlpExporterOptions(
5651
Debug.Assert(configuration != null, "configuration was null");
5752
Debug.Assert(defaultBatchOptions != null, "defaultBatchOptions was null");
5853

59-
if (configuration.TryGetUriValue(EndpointEnvVarName, out var endpoint))
54+
if (configuration.TryGetUriValue(OtlpExporterSpecEnvVarKeyDefinitions.DefaultEndpointEnvVarName, out var endpoint))
6055
{
6156
this.endpoint = endpoint;
6257
}
6358

64-
if (configuration.TryGetStringValue(HeadersEnvVarName, out var headers))
59+
if (configuration.TryGetStringValue(OtlpExporterSpecEnvVarKeyDefinitions.DefaultHeadersEnvVarName, out var headers))
6560
{
6661
this.Headers = headers;
6762
}
6863

69-
if (configuration.TryGetIntValue(TimeoutEnvVarName, out var timeout))
64+
if (configuration.TryGetIntValue(OtlpExporterSpecEnvVarKeyDefinitions.DefaultTimeoutEnvVarName, out var timeout))
7065
{
7166
this.TimeoutMilliseconds = timeout;
7267
}
7368

7469
if (configuration.TryGetValue<OtlpExportProtocol>(
75-
ProtocolEnvVarName,
70+
OtlpExporterSpecEnvVarKeyDefinitions.DefaultProtocolEnvVarName,
7671
OtlpExportProtocolParser.TryParse,
7772
out var protocol))
7873
{

src/OpenTelemetry.Exporter.OpenTelemetryProtocol/OtlpMetricExporterExtensions.cs

+2-4
Original file line numberDiff line numberDiff line change
@@ -16,8 +16,6 @@ namespace OpenTelemetry.Metrics;
1616
/// </summary>
1717
public static class OtlpMetricExporterExtensions
1818
{
19-
internal const string OtlpMetricExporterTemporalityPreferenceEnvVarKey = "OTEL_EXPORTER_OTLP_METRICS_TEMPORALITY_PREFERENCE";
20-
2119
/// <summary>
2220
/// Adds <see cref="OtlpMetricExporter"/> to the <see cref="MeterProviderBuilder"/> using default options.
2321
/// </summary>
@@ -65,7 +63,7 @@ public static MeterProviderBuilder AddOtlpExporter(
6563
services.AddOptions<MetricReaderOptions>(finalOptionsName).Configure<IConfiguration>(
6664
(readerOptions, config) =>
6765
{
68-
var otlpTemporalityPreference = config[OtlpMetricExporterTemporalityPreferenceEnvVarKey];
66+
var otlpTemporalityPreference = config[OtlpExporterSpecEnvVarKeyDefinitions.MetricsTemporalityPreferenceEnvVarName];
6967
if (!string.IsNullOrWhiteSpace(otlpTemporalityPreference)
7068
&& Enum.TryParse<MetricReaderTemporalityPreference>(otlpTemporalityPreference, ignoreCase: true, out var enumValue))
7169
{
@@ -142,7 +140,7 @@ public static MeterProviderBuilder AddOtlpExporter(
142140
services.AddOptions<MetricReaderOptions>(finalOptionsName).Configure<IConfiguration>(
143141
(readerOptions, config) =>
144142
{
145-
var otlpTemporalityPreference = config[OtlpMetricExporterTemporalityPreferenceEnvVarKey];
143+
var otlpTemporalityPreference = config[OtlpExporterSpecEnvVarKeyDefinitions.MetricsTemporalityPreferenceEnvVarName];
146144
if (!string.IsNullOrWhiteSpace(otlpTemporalityPreference)
147145
&& Enum.TryParse<MetricReaderTemporalityPreference>(otlpTemporalityPreference, ignoreCase: true, out var enumValue))
148146
{

test/OpenTelemetry.Exporter.OpenTelemetryProtocol.Tests/BaseOtlpHttpExportClientTests.cs

+2-2
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ public void ValidateOtlpHttpExportClientEndpoint(string optionEndpoint, string e
2121
{
2222
try
2323
{
24-
Environment.SetEnvironmentVariable(OtlpExporterOptions.EndpointEnvVarName, endpointEnvVar);
24+
Environment.SetEnvironmentVariable(OtlpExporterSpecEnvVarKeyDefinitions.DefaultEndpointEnvVarName, endpointEnvVar);
2525

2626
OtlpExporterOptions options = new() { Protocol = OtlpExportProtocol.HttpProtobuf };
2727

@@ -35,7 +35,7 @@ public void ValidateOtlpHttpExportClientEndpoint(string optionEndpoint, string e
3535
}
3636
finally
3737
{
38-
Environment.SetEnvironmentVariable(OtlpExporterOptions.EndpointEnvVarName, null);
38+
Environment.SetEnvironmentVariable(OtlpExporterSpecEnvVarKeyDefinitions.DefaultEndpointEnvVarName, null);
3939
}
4040
}
4141

test/OpenTelemetry.Exporter.OpenTelemetryProtocol.Tests/OtlpExporterOptionsTests.cs

+24-24
Original file line numberDiff line numberDiff line change
@@ -46,10 +46,10 @@ public void OtlpExporterOptions_DefaultsForHttpProtobuf()
4646
[Fact]
4747
public void OtlpExporterOptions_EnvironmentVariableOverride()
4848
{
49-
Environment.SetEnvironmentVariable(OtlpExporterOptions.EndpointEnvVarName, "http://test:8888");
50-
Environment.SetEnvironmentVariable(OtlpExporterOptions.HeadersEnvVarName, "A=2,B=3");
51-
Environment.SetEnvironmentVariable(OtlpExporterOptions.TimeoutEnvVarName, "2000");
52-
Environment.SetEnvironmentVariable(OtlpExporterOptions.ProtocolEnvVarName, "http/protobuf");
49+
Environment.SetEnvironmentVariable(OtlpExporterSpecEnvVarKeyDefinitions.DefaultEndpointEnvVarName, "http://test:8888");
50+
Environment.SetEnvironmentVariable(OtlpExporterSpecEnvVarKeyDefinitions.DefaultHeadersEnvVarName, "A=2,B=3");
51+
Environment.SetEnvironmentVariable(OtlpExporterSpecEnvVarKeyDefinitions.DefaultTimeoutEnvVarName, "2000");
52+
Environment.SetEnvironmentVariable(OtlpExporterSpecEnvVarKeyDefinitions.DefaultProtocolEnvVarName, "http/protobuf");
5353

5454
var options = new OtlpExporterOptions();
5555

@@ -64,10 +64,10 @@ public void OtlpExporterOptions_UsingIConfiguration()
6464
{
6565
var values = new Dictionary<string, string>()
6666
{
67-
[OtlpExporterOptions.EndpointEnvVarName] = "http://test:8888",
68-
[OtlpExporterOptions.HeadersEnvVarName] = "A=2,B=3",
69-
[OtlpExporterOptions.TimeoutEnvVarName] = "2000",
70-
[OtlpExporterOptions.ProtocolEnvVarName] = "http/protobuf",
67+
[OtlpExporterSpecEnvVarKeyDefinitions.DefaultEndpointEnvVarName] = "http://test:8888",
68+
[OtlpExporterSpecEnvVarKeyDefinitions.DefaultHeadersEnvVarName] = "A=2,B=3",
69+
[OtlpExporterSpecEnvVarKeyDefinitions.DefaultTimeoutEnvVarName] = "2000",
70+
[OtlpExporterSpecEnvVarKeyDefinitions.DefaultProtocolEnvVarName] = "http/protobuf",
7171
};
7272

7373
var configuration = new ConfigurationBuilder()
@@ -85,9 +85,9 @@ public void OtlpExporterOptions_UsingIConfiguration()
8585
[Fact]
8686
public void OtlpExporterOptions_InvalidEnvironmentVariableOverride()
8787
{
88-
Environment.SetEnvironmentVariable(OtlpExporterOptions.EndpointEnvVarName, "invalid");
89-
Environment.SetEnvironmentVariable(OtlpExporterOptions.TimeoutEnvVarName, "invalid");
90-
Environment.SetEnvironmentVariable(OtlpExporterOptions.ProtocolEnvVarName, "invalid");
88+
Environment.SetEnvironmentVariable(OtlpExporterSpecEnvVarKeyDefinitions.DefaultEndpointEnvVarName, "invalid");
89+
Environment.SetEnvironmentVariable(OtlpExporterSpecEnvVarKeyDefinitions.DefaultTimeoutEnvVarName, "invalid");
90+
Environment.SetEnvironmentVariable(OtlpExporterSpecEnvVarKeyDefinitions.DefaultProtocolEnvVarName, "invalid");
9191

9292
var options = new OtlpExporterOptions();
9393

@@ -99,10 +99,10 @@ public void OtlpExporterOptions_InvalidEnvironmentVariableOverride()
9999
[Fact]
100100
public void OtlpExporterOptions_SetterOverridesEnvironmentVariable()
101101
{
102-
Environment.SetEnvironmentVariable(OtlpExporterOptions.EndpointEnvVarName, "http://test:8888");
103-
Environment.SetEnvironmentVariable(OtlpExporterOptions.HeadersEnvVarName, "A=2,B=3");
104-
Environment.SetEnvironmentVariable(OtlpExporterOptions.TimeoutEnvVarName, "2000");
105-
Environment.SetEnvironmentVariable(OtlpExporterOptions.ProtocolEnvVarName, "grpc");
102+
Environment.SetEnvironmentVariable(OtlpExporterSpecEnvVarKeyDefinitions.DefaultEndpointEnvVarName, "http://test:8888");
103+
Environment.SetEnvironmentVariable(OtlpExporterSpecEnvVarKeyDefinitions.DefaultHeadersEnvVarName, "A=2,B=3");
104+
Environment.SetEnvironmentVariable(OtlpExporterSpecEnvVarKeyDefinitions.DefaultTimeoutEnvVarName, "2000");
105+
Environment.SetEnvironmentVariable(OtlpExporterSpecEnvVarKeyDefinitions.DefaultProtocolEnvVarName, "grpc");
106106

107107
var options = new OtlpExporterOptions
108108
{
@@ -121,7 +121,7 @@ public void OtlpExporterOptions_SetterOverridesEnvironmentVariable()
121121
[Fact]
122122
public void OtlpExporterOptions_ProtocolSetterDoesNotOverrideCustomEndpointFromEnvVariables()
123123
{
124-
Environment.SetEnvironmentVariable(OtlpExporterOptions.EndpointEnvVarName, "http://test:8888");
124+
Environment.SetEnvironmentVariable(OtlpExporterSpecEnvVarKeyDefinitions.DefaultEndpointEnvVarName, "http://test:8888");
125125

126126
var options = new OtlpExporterOptions { Protocol = OtlpExportProtocol.Grpc };
127127

@@ -141,17 +141,17 @@ public void OtlpExporterOptions_ProtocolSetterDoesNotOverrideCustomEndpointFromS
141141
[Fact]
142142
public void OtlpExporterOptions_EnvironmentVariableNames()
143143
{
144-
Assert.Equal("OTEL_EXPORTER_OTLP_ENDPOINT", OtlpExporterOptions.EndpointEnvVarName);
145-
Assert.Equal("OTEL_EXPORTER_OTLP_HEADERS", OtlpExporterOptions.HeadersEnvVarName);
146-
Assert.Equal("OTEL_EXPORTER_OTLP_TIMEOUT", OtlpExporterOptions.TimeoutEnvVarName);
147-
Assert.Equal("OTEL_EXPORTER_OTLP_PROTOCOL", OtlpExporterOptions.ProtocolEnvVarName);
144+
Assert.Equal("OTEL_EXPORTER_OTLP_ENDPOINT", OtlpExporterSpecEnvVarKeyDefinitions.DefaultEndpointEnvVarName);
145+
Assert.Equal("OTEL_EXPORTER_OTLP_HEADERS", OtlpExporterSpecEnvVarKeyDefinitions.DefaultHeadersEnvVarName);
146+
Assert.Equal("OTEL_EXPORTER_OTLP_TIMEOUT", OtlpExporterSpecEnvVarKeyDefinitions.DefaultTimeoutEnvVarName);
147+
Assert.Equal("OTEL_EXPORTER_OTLP_PROTOCOL", OtlpExporterSpecEnvVarKeyDefinitions.DefaultProtocolEnvVarName);
148148
}
149149

150150
private static void ClearEnvVars()
151151
{
152-
Environment.SetEnvironmentVariable(OtlpExporterOptions.EndpointEnvVarName, null);
153-
Environment.SetEnvironmentVariable(OtlpExporterOptions.HeadersEnvVarName, null);
154-
Environment.SetEnvironmentVariable(OtlpExporterOptions.TimeoutEnvVarName, null);
155-
Environment.SetEnvironmentVariable(OtlpExporterOptions.ProtocolEnvVarName, null);
152+
Environment.SetEnvironmentVariable(OtlpExporterSpecEnvVarKeyDefinitions.DefaultEndpointEnvVarName, null);
153+
Environment.SetEnvironmentVariable(OtlpExporterSpecEnvVarKeyDefinitions.DefaultHeadersEnvVarName, null);
154+
Environment.SetEnvironmentVariable(OtlpExporterSpecEnvVarKeyDefinitions.DefaultTimeoutEnvVarName, null);
155+
Environment.SetEnvironmentVariable(OtlpExporterSpecEnvVarKeyDefinitions.DefaultProtocolEnvVarName, null);
156156
}
157157
}

test/OpenTelemetry.Exporter.OpenTelemetryProtocol.Tests/OtlpLogExporterTests.cs

+1-1
Original file line numberDiff line numberDiff line change
@@ -1517,7 +1517,7 @@ private static void RunVerifyEnvironmentVariablesTakenFromIConfigurationTest(
15171517
{
15181518
var values = new Dictionary<string, string>()
15191519
{
1520-
[OtlpExporterOptions.EndpointEnvVarName] = "http://test:8888",
1520+
[OtlpExporterSpecEnvVarKeyDefinitions.DefaultEndpointEnvVarName] = "http://test:8888",
15211521
};
15221522

15231523
var configuration = new ConfigurationBuilder()

0 commit comments

Comments
 (0)