From 1216ea497da57a375c0a5add271104fb63f4935c Mon Sep 17 00:00:00 2001 From: Weyert de Boer Date: Sun, 6 Apr 2025 15:49:23 +0100 Subject: [PATCH 1/4] refactor: use `getStringFromEnv` instead of `process.env` Updates the code to user the helper utilities to retrieve environment variable values fixes #5560 Signed-off-by: Weyert de Boer --- .../otlp-grpc-env-configuration.ts | 28 ++++++++----------- 1 file changed, 12 insertions(+), 16 deletions(-) diff --git a/experimental/packages/otlp-grpc-exporter-base/src/configuration/otlp-grpc-env-configuration.ts b/experimental/packages/otlp-grpc-exporter-base/src/configuration/otlp-grpc-env-configuration.ts index d4017d8ca00..dfc325fecb2 100644 --- a/experimental/packages/otlp-grpc-exporter-base/src/configuration/otlp-grpc-env-configuration.ts +++ b/experimental/packages/otlp-grpc-exporter-base/src/configuration/otlp-grpc-env-configuration.ts @@ -15,7 +15,7 @@ */ import { UnresolvedOtlpGrpcConfiguration } from './otlp-grpc-configuration'; import type { ChannelCredentials, Metadata } from '@grpc/grpc-js'; -import { parseKeyPairsIntoRecord } from '@opentelemetry/core'; +import { getStringFromEnv, parseKeyPairsIntoRecord } from '@opentelemetry/core'; import { createEmptyMetadata, createInsecureCredentials, @@ -43,9 +43,9 @@ function fallbackIfNullishOrBlank( function getMetadataFromEnv(signalIdentifier: string): Metadata | undefined { const signalSpecificRawHeaders = - process.env[`OTEL_EXPORTER_OTLP_${signalIdentifier}_HEADERS`]?.trim(); + getStringFromEnv(`OTEL_EXPORTER_OTLP_${signalIdentifier}_HEADERS`); const nonSignalSpecificRawHeaders = - process.env['OTEL_EXPORTER_OTLP_HEADERS']?.trim(); + getStringFromEnv('OTEL_EXPORTER_OTLP_HEADERS'); const signalSpecificHeaders = parseKeyPairsIntoRecord( signalSpecificRawHeaders @@ -100,9 +100,9 @@ function getUrlFromEnv(signalIdentifier: string) { // - https://example.test:4317 -> use secure credentials from environment (or provided via code) const specificEndpoint = - process.env[`OTEL_EXPORTER_OTLP_${signalIdentifier}_ENDPOINT`]?.trim(); + getStringFromEnv(`OTEL_EXPORTER_OTLP_${signalIdentifier}_ENDPOINT`); const nonSpecificEndpoint = - process.env[`OTEL_EXPORTER_OTLP_ENDPOINT`]?.trim(); + getStringFromEnv(`OTEL_EXPORTER_OTLP_ENDPOINT`); return fallbackIfNullishOrBlank(specificEndpoint, nonSpecificEndpoint); } @@ -128,16 +128,12 @@ function getUrlFromEnv(signalIdentifier: string) { * @param signalIdentifier */ function getInsecureSettingFromEnv(signalIdentifier: string): boolean { - const signalSpecificInsecureValue = process.env[ - `OTEL_EXPORTER_OTLP_${signalIdentifier}_INSECURE` - ] - ?.toLowerCase() - .trim(); - const nonSignalSpecificInsecureValue = process.env[ + const signalSpecificInsecureValue = getStringFromEnv( + `OTEL_EXPORTER_OTLP_${signalIdentifier}_INSECURE`)?.toLowerCase(); + const nonSignalSpecificInsecureValue = getStringFromEnv( `OTEL_EXPORTER_OTLP_INSECURE` - ] - ?.toLowerCase() - .trim(); + ) + ?.toLowerCase(); return ( fallbackIfNullishOrBlank( @@ -152,8 +148,8 @@ function readFileFromEnv( nonSignalSpecificEnvVar: string, warningMessage: string ): Buffer | undefined { - const signalSpecificPath = process.env[signalSpecificEnvVar]?.trim(); - const nonSignalSpecificPath = process.env[nonSignalSpecificEnvVar]?.trim(); + const signalSpecificPath = getStringFromEnv(signalSpecificEnvVar); + const nonSignalSpecificPath = getStringFromEnv(nonSignalSpecificEnvVar); const filePath = fallbackIfNullishOrBlank( signalSpecificPath, From d4ee7ce186a307fc85fe1f29118721dff3d3a16e Mon Sep 17 00:00:00 2001 From: Weyert de Boer Date: Sun, 6 Apr 2025 15:51:18 +0100 Subject: [PATCH 2/4] chore: add missing CHANGELOG entry to package Signed-off-by: Weyert de Boer --- experimental/CHANGELOG.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/experimental/CHANGELOG.md b/experimental/CHANGELOG.md index 231a8436e7c..048c995b766 100644 --- a/experimental/CHANGELOG.md +++ b/experimental/CHANGELOG.md @@ -16,6 +16,8 @@ For notes on migrating to 2.x / 0.200.x see [the upgrade guide](doc/upgrade-to-2 ### :house: Internal +* refactor(exporter-otlp-grpc): use getStringFromEnv instead of process.env [#5595](https://github.com/open-telemetry/opentelemetry-js/pull/5595) @weyert + ## 0.200.0 ### Summary From 9510279eb2ef69f2cf8f22d6987585ff027bd69e Mon Sep 17 00:00:00 2001 From: Weyert de Boer Date: Wed, 9 Apr 2025 16:51:43 +0100 Subject: [PATCH 3/4] style: resolve the formatting issues --- .../otlp-grpc-env-configuration.ts | 24 ++++++++++--------- 1 file changed, 13 insertions(+), 11 deletions(-) diff --git a/experimental/packages/otlp-grpc-exporter-base/src/configuration/otlp-grpc-env-configuration.ts b/experimental/packages/otlp-grpc-exporter-base/src/configuration/otlp-grpc-env-configuration.ts index dfc325fecb2..54ad1bc16e1 100644 --- a/experimental/packages/otlp-grpc-exporter-base/src/configuration/otlp-grpc-env-configuration.ts +++ b/experimental/packages/otlp-grpc-exporter-base/src/configuration/otlp-grpc-env-configuration.ts @@ -42,10 +42,12 @@ function fallbackIfNullishOrBlank( } function getMetadataFromEnv(signalIdentifier: string): Metadata | undefined { - const signalSpecificRawHeaders = - getStringFromEnv(`OTEL_EXPORTER_OTLP_${signalIdentifier}_HEADERS`); - const nonSignalSpecificRawHeaders = - getStringFromEnv('OTEL_EXPORTER_OTLP_HEADERS'); + const signalSpecificRawHeaders = getStringFromEnv( + `OTEL_EXPORTER_OTLP_${signalIdentifier}_HEADERS` + ); + const nonSignalSpecificRawHeaders = getStringFromEnv( + 'OTEL_EXPORTER_OTLP_HEADERS' + ); const signalSpecificHeaders = parseKeyPairsIntoRecord( signalSpecificRawHeaders @@ -99,10 +101,10 @@ function getUrlFromEnv(signalIdentifier: string) { // - http://example.test:4317 -> use insecure credentials if nothing else is provided // - https://example.test:4317 -> use secure credentials from environment (or provided via code) - const specificEndpoint = - getStringFromEnv(`OTEL_EXPORTER_OTLP_${signalIdentifier}_ENDPOINT`); - const nonSpecificEndpoint = - getStringFromEnv(`OTEL_EXPORTER_OTLP_ENDPOINT`); + const specificEndpoint = getStringFromEnv( + `OTEL_EXPORTER_OTLP_${signalIdentifier}_ENDPOINT` + ); + const nonSpecificEndpoint = getStringFromEnv(`OTEL_EXPORTER_OTLP_ENDPOINT`); return fallbackIfNullishOrBlank(specificEndpoint, nonSpecificEndpoint); } @@ -129,11 +131,11 @@ function getUrlFromEnv(signalIdentifier: string) { */ function getInsecureSettingFromEnv(signalIdentifier: string): boolean { const signalSpecificInsecureValue = getStringFromEnv( - `OTEL_EXPORTER_OTLP_${signalIdentifier}_INSECURE`)?.toLowerCase(); + `OTEL_EXPORTER_OTLP_${signalIdentifier}_INSECURE` + )?.toLowerCase(); const nonSignalSpecificInsecureValue = getStringFromEnv( `OTEL_EXPORTER_OTLP_INSECURE` - ) - ?.toLowerCase(); + )?.toLowerCase(); return ( fallbackIfNullishOrBlank( From abfb0d07af1d81d6e422c40bac638fadaf186839 Mon Sep 17 00:00:00 2001 From: Weyert de Boer Date: Wed, 9 Apr 2025 17:26:23 +0100 Subject: [PATCH 4/4] test: resolve the broken unit test --- .../src/configuration/otlp-grpc-env-configuration.ts | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/experimental/packages/otlp-grpc-exporter-base/src/configuration/otlp-grpc-env-configuration.ts b/experimental/packages/otlp-grpc-exporter-base/src/configuration/otlp-grpc-env-configuration.ts index 54ad1bc16e1..c3a88577774 100644 --- a/experimental/packages/otlp-grpc-exporter-base/src/configuration/otlp-grpc-env-configuration.ts +++ b/experimental/packages/otlp-grpc-exporter-base/src/configuration/otlp-grpc-env-configuration.ts @@ -106,7 +106,10 @@ function getUrlFromEnv(signalIdentifier: string) { ); const nonSpecificEndpoint = getStringFromEnv(`OTEL_EXPORTER_OTLP_ENDPOINT`); - return fallbackIfNullishOrBlank(specificEndpoint, nonSpecificEndpoint); + return fallbackIfNullishOrBlank( + specificEndpoint?.trim(), + nonSpecificEndpoint?.trim() + ); } /**