From 7fce9b8bcc56b25a0c3d801cdd97be5ad76023f9 Mon Sep 17 00:00:00 2001 From: Kroeger Date: Tue, 10 Jan 2023 12:58:16 +0000 Subject: [PATCH 1/9] Update values as required for issue --- .../src/opentelemetry/exporter/otlp/proto/grpc/__init__.py | 2 +- .../tests/test_proto_log_exporter.py | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/exporter/opentelemetry-exporter-otlp-proto-grpc/src/opentelemetry/exporter/otlp/proto/grpc/__init__.py b/exporter/opentelemetry-exporter-otlp-proto-grpc/src/opentelemetry/exporter/otlp/proto/grpc/__init__.py index 60af18de2e6..07553d69d03 100644 --- a/exporter/opentelemetry-exporter-otlp-proto-grpc/src/opentelemetry/exporter/otlp/proto/grpc/__init__.py +++ b/exporter/opentelemetry-exporter-otlp-proto-grpc/src/opentelemetry/exporter/otlp/proto/grpc/__init__.py @@ -71,5 +71,5 @@ """ from .version import __version__ -_USER_AGENT_HEADER_VALUE = "OTel OTLP Exporter Python/" + __version__ +_USER_AGENT_HEADER_VALUE = "OTel-OTLP-Exporter-Python/" + __version__ _OTLP_GRPC_HEADERS = [("user-agent", _USER_AGENT_HEADER_VALUE)] diff --git a/exporter/opentelemetry-exporter-otlp-proto-http/tests/test_proto_log_exporter.py b/exporter/opentelemetry-exporter-otlp-proto-http/tests/test_proto_log_exporter.py index b273a618cf9..5aa14b5cf43 100644 --- a/exporter/opentelemetry-exporter-otlp-proto-http/tests/test_proto_log_exporter.py +++ b/exporter/opentelemetry-exporter-otlp-proto-http/tests/test_proto_log_exporter.py @@ -91,6 +91,7 @@ def test_constructor_default(self): exporter._session.headers.get("Content-Type"), "application/x-protobuf", ) + #self.assertTrue("OTel-OTLP-Exporter-Python/" in exporter._session.headers.get("User-Agent")) @patch.dict( "os.environ", From fdede26b09e3fd74fa8c5b3d065caefdd72fdf08 Mon Sep 17 00:00:00 2001 From: Kroeger Date: Tue, 10 Jan 2023 13:01:34 +0000 Subject: [PATCH 2/9] add CHANGED_FILES link --- CHANGED_FILES | 2 ++ 1 file changed, 2 insertions(+) create mode 100644 CHANGED_FILES diff --git a/CHANGED_FILES b/CHANGED_FILES new file mode 100644 index 00000000000..f6540d76b77 --- /dev/null +++ b/CHANGED_FILES @@ -0,0 +1,2 @@ +internal_forks\fidelity-opentelemetry-python\exporter\opentelemetry-exporter-otlp-proto-grpc\src\opentelemetry\exporter\otlp\proto\grpc\__init__.py +internal_forks\fidelity-opentelemetry-python\exporter\opentelemetry-exporter-otlp-proto-http\tests\test_proto_log_exporter.py \ No newline at end of file From 3119ae03ce2838aa0df8d80e0f11df96db3a725a Mon Sep 17 00:00:00 2001 From: Kroeger Date: Tue, 10 Jan 2023 13:02:39 +0000 Subject: [PATCH 3/9] update changelog --- CHANGELOG.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index e0f43a10da0..16c88e330bf 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,6 +7,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ## Unreleased +- Remove spaces from example exporter User-Agent header to conform to RFC7231 & RFC7230. + ## Version 1.15.0/0.36b0 (2022-12-09) - Regenerate opentelemetry-proto to be compatible with protobuf 3 and 4 From 322ebef604dfffdc730c1cd7cc5c95436c9903d0 Mon Sep 17 00:00:00 2001 From: Kroeger Date: Wed, 11 Jan 2023 11:13:21 +0000 Subject: [PATCH 4/9] update test to validate setting --- .../tests/test_proto_log_exporter.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/exporter/opentelemetry-exporter-otlp-proto-http/tests/test_proto_log_exporter.py b/exporter/opentelemetry-exporter-otlp-proto-http/tests/test_proto_log_exporter.py index 5aa14b5cf43..8c75b2f5961 100644 --- a/exporter/opentelemetry-exporter-otlp-proto-http/tests/test_proto_log_exporter.py +++ b/exporter/opentelemetry-exporter-otlp-proto-http/tests/test_proto_log_exporter.py @@ -91,7 +91,7 @@ def test_constructor_default(self): exporter._session.headers.get("Content-Type"), "application/x-protobuf", ) - #self.assertTrue("OTel-OTLP-Exporter-Python/" in exporter._session.headers.get("User-Agent")) + self.assertTrue("OTel-OTLP-Exporter-Python/" in exporter._session.headers.get("User-Agent")) @patch.dict( "os.environ", From cf07436467ce079254ff6d158d0f34ad748050b2 Mon Sep 17 00:00:00 2001 From: Kroeger Date: Wed, 11 Jan 2023 11:36:05 +0000 Subject: [PATCH 5/9] update only oltp exporter --- CHANGED_FILES | 5 +++-- .../src/opentelemetry/exporter/otlp/proto/grpc/__init__.py | 2 +- .../src/opentelemetry/exporter/otlp/proto/http/__init__.py | 2 +- .../tests/test_proto_log_exporter.py | 6 +++++- .../tests/test_proto_span_exporter.py | 5 +++++ 5 files changed, 15 insertions(+), 5 deletions(-) diff --git a/CHANGED_FILES b/CHANGED_FILES index f6540d76b77..e76f578a99d 100644 --- a/CHANGED_FILES +++ b/CHANGED_FILES @@ -1,2 +1,3 @@ -internal_forks\fidelity-opentelemetry-python\exporter\opentelemetry-exporter-otlp-proto-grpc\src\opentelemetry\exporter\otlp\proto\grpc\__init__.py -internal_forks\fidelity-opentelemetry-python\exporter\opentelemetry-exporter-otlp-proto-http\tests\test_proto_log_exporter.py \ No newline at end of file +exporter/opentelemetry-exporter-otlp-proto-http/src/opentelemetry/exporter/otlp/proto/http/__init__.py +exporter/opentelemetry-exporter-otlp-proto-http/tests/test_proto_log_exporter.py +exporter/opentelemetry-exporter-otlp-proto-http/tests/test_proto_span_exporter.py \ No newline at end of file diff --git a/exporter/opentelemetry-exporter-otlp-proto-grpc/src/opentelemetry/exporter/otlp/proto/grpc/__init__.py b/exporter/opentelemetry-exporter-otlp-proto-grpc/src/opentelemetry/exporter/otlp/proto/grpc/__init__.py index 07553d69d03..60af18de2e6 100644 --- a/exporter/opentelemetry-exporter-otlp-proto-grpc/src/opentelemetry/exporter/otlp/proto/grpc/__init__.py +++ b/exporter/opentelemetry-exporter-otlp-proto-grpc/src/opentelemetry/exporter/otlp/proto/grpc/__init__.py @@ -71,5 +71,5 @@ """ from .version import __version__ -_USER_AGENT_HEADER_VALUE = "OTel-OTLP-Exporter-Python/" + __version__ +_USER_AGENT_HEADER_VALUE = "OTel OTLP Exporter Python/" + __version__ _OTLP_GRPC_HEADERS = [("user-agent", _USER_AGENT_HEADER_VALUE)] diff --git a/exporter/opentelemetry-exporter-otlp-proto-http/src/opentelemetry/exporter/otlp/proto/http/__init__.py b/exporter/opentelemetry-exporter-otlp-proto-http/src/opentelemetry/exporter/otlp/proto/http/__init__.py index a14f0e2992d..2c40b39590b 100644 --- a/exporter/opentelemetry-exporter-otlp-proto-http/src/opentelemetry/exporter/otlp/proto/http/__init__.py +++ b/exporter/opentelemetry-exporter-otlp-proto-http/src/opentelemetry/exporter/otlp/proto/http/__init__.py @@ -76,7 +76,7 @@ _OTLP_HTTP_HEADERS = { "Content-Type": "application/x-protobuf", - "User-Agent": "OTel OTLP Exporter Python/" + __version__, + "User-Agent": "OTel-OTLP-Exporter-Python/" + __version__, } diff --git a/exporter/opentelemetry-exporter-otlp-proto-http/tests/test_proto_log_exporter.py b/exporter/opentelemetry-exporter-otlp-proto-http/tests/test_proto_log_exporter.py index 8c75b2f5961..8a434c617b5 100644 --- a/exporter/opentelemetry-exporter-otlp-proto-http/tests/test_proto_log_exporter.py +++ b/exporter/opentelemetry-exporter-otlp-proto-http/tests/test_proto_log_exporter.py @@ -22,6 +22,7 @@ import responses from opentelemetry._logs import SeverityNumber +from opentelemetry.exporter.otlp.proto.http.version import __version__ from opentelemetry.exporter.otlp.proto.http import Compression from opentelemetry.exporter.otlp.proto.http._log_exporter import ( DEFAULT_COMPRESSION, @@ -91,7 +92,10 @@ def test_constructor_default(self): exporter._session.headers.get("Content-Type"), "application/x-protobuf", ) - self.assertTrue("OTel-OTLP-Exporter-Python/" in exporter._session.headers.get("User-Agent")) + self.assertEqual( + exporter._session.headers.get("User-Agent"), + "OTel-OTLP-Exporter-Python/" + __version__, + ) @patch.dict( "os.environ", diff --git a/exporter/opentelemetry-exporter-otlp-proto-http/tests/test_proto_span_exporter.py b/exporter/opentelemetry-exporter-otlp-proto-http/tests/test_proto_span_exporter.py index 64ca6fbbb86..2d89cb0c0f3 100644 --- a/exporter/opentelemetry-exporter-otlp-proto-http/tests/test_proto_span_exporter.py +++ b/exporter/opentelemetry-exporter-otlp-proto-http/tests/test_proto_span_exporter.py @@ -19,6 +19,7 @@ import requests import responses +from opentelemetry.exporter.otlp.proto.http.version import __version__ from opentelemetry.exporter.otlp.proto.http import Compression from opentelemetry.exporter.otlp.proto.http.trace_exporter import ( DEFAULT_COMPRESSION, @@ -67,6 +68,10 @@ def test_constructor_default(self): exporter._session.headers.get("Content-Type"), "application/x-protobuf", ) + self.assertEqual( + exporter._session.headers.get("User-Agent"), + "OTel-OTLP-Exporter-Python/" + __version__, + ) @patch.dict( "os.environ", From 08990d18b76ee3c5ed0f9c112a76bc9400b91338 Mon Sep 17 00:00:00 2001 From: Kroeger Date: Wed, 11 Jan 2023 12:09:48 +0000 Subject: [PATCH 6/9] update grpc exporter --- CHANGED_FILES | 6 +++++- .../opentelemetry/exporter/otlp/proto/grpc/__init__.py | 2 +- .../tests/logs/test_otlp_logs_exporter.py | 2 +- .../tests/test_otlp_metrics_exporter.py | 4 ++-- .../tests/test_otlp_trace_exporter.py | 8 ++++---- 5 files changed, 13 insertions(+), 9 deletions(-) diff --git a/CHANGED_FILES b/CHANGED_FILES index e76f578a99d..11c2cb9c634 100644 --- a/CHANGED_FILES +++ b/CHANGED_FILES @@ -1,3 +1,7 @@ exporter/opentelemetry-exporter-otlp-proto-http/src/opentelemetry/exporter/otlp/proto/http/__init__.py +exporter/opentelemetry-exporter-otlp-proto-grpc/src/opentelemetry/exporter/otlp/proto/grpc/__init__.py exporter/opentelemetry-exporter-otlp-proto-http/tests/test_proto_log_exporter.py -exporter/opentelemetry-exporter-otlp-proto-http/tests/test_proto_span_exporter.py \ No newline at end of file +exporter/opentelemetry-exporter-otlp-proto-http/tests/test_proto_span_exporter.py +exporter/opentelemetry-exporter-otlp-proto-grpc/tests/logs/test_otlp_logs_exporter.py +exporter/opentelemetry-exporter-otlp-proto-grpc/tests/test_otlp_metrics_exporter.py +exporter/opentelemetry-exporter-otlp-proto-grpc/tests/test_otlp_trace_exporter.py \ No newline at end of file diff --git a/exporter/opentelemetry-exporter-otlp-proto-grpc/src/opentelemetry/exporter/otlp/proto/grpc/__init__.py b/exporter/opentelemetry-exporter-otlp-proto-grpc/src/opentelemetry/exporter/otlp/proto/grpc/__init__.py index 60af18de2e6..07553d69d03 100644 --- a/exporter/opentelemetry-exporter-otlp-proto-grpc/src/opentelemetry/exporter/otlp/proto/grpc/__init__.py +++ b/exporter/opentelemetry-exporter-otlp-proto-grpc/src/opentelemetry/exporter/otlp/proto/grpc/__init__.py @@ -71,5 +71,5 @@ """ from .version import __version__ -_USER_AGENT_HEADER_VALUE = "OTel OTLP Exporter Python/" + __version__ +_USER_AGENT_HEADER_VALUE = "OTel-OTLP-Exporter-Python/" + __version__ _OTLP_GRPC_HEADERS = [("user-agent", _USER_AGENT_HEADER_VALUE)] diff --git a/exporter/opentelemetry-exporter-otlp-proto-grpc/tests/logs/test_otlp_logs_exporter.py b/exporter/opentelemetry-exporter-otlp-proto-grpc/tests/logs/test_otlp_logs_exporter.py index 0861d06d654..94c1d38d6fb 100644 --- a/exporter/opentelemetry-exporter-otlp-proto-grpc/tests/logs/test_otlp_logs_exporter.py +++ b/exporter/opentelemetry-exporter-otlp-proto-grpc/tests/logs/test_otlp_logs_exporter.py @@ -254,7 +254,7 @@ def test_otlp_headers_from_env(self): # pylint: disable=protected-access self.assertEqual( self.exporter._headers, - (("user-agent", "OTel OTLP Exporter Python/" + __version__),), + (("user-agent", "OTel-OTLP-Exporter-Python/" + __version__),), ) @patch("opentelemetry.exporter.otlp.proto.grpc.exporter._expo") diff --git a/exporter/opentelemetry-exporter-otlp-proto-grpc/tests/test_otlp_metrics_exporter.py b/exporter/opentelemetry-exporter-otlp-proto-grpc/tests/test_otlp_metrics_exporter.py index 6436661a985..31bb878a5f9 100644 --- a/exporter/opentelemetry-exporter-otlp-proto-grpc/tests/test_otlp_metrics_exporter.py +++ b/exporter/opentelemetry-exporter-otlp-proto-grpc/tests/test_otlp_metrics_exporter.py @@ -418,7 +418,7 @@ def test_otlp_headers_from_env(self, mock_ssl_channel, mock_secure): ( ("key1", "value1"), ("key2", "VALUE=2"), - ("user-agent", "OTel OTLP Exporter Python/" + __version__), + ("user-agent", "OTel-OTLP-Exporter-Python/" + __version__), ), ) exporter = OTLPMetricExporter( @@ -430,7 +430,7 @@ def test_otlp_headers_from_env(self, mock_ssl_channel, mock_secure): ( ("key3", "value3"), ("key4", "value4"), - ("user-agent", "OTel OTLP Exporter Python/" + __version__), + ("user-agent", "OTel-OTLP-Exporter-Python/" + __version__), ), ) diff --git a/exporter/opentelemetry-exporter-otlp-proto-grpc/tests/test_otlp_trace_exporter.py b/exporter/opentelemetry-exporter-otlp-proto-grpc/tests/test_otlp_trace_exporter.py index 5c8f0407254..36ae0a7c11e 100644 --- a/exporter/opentelemetry-exporter-otlp-proto-grpc/tests/test_otlp_trace_exporter.py +++ b/exporter/opentelemetry-exporter-otlp-proto-grpc/tests/test_otlp_trace_exporter.py @@ -281,7 +281,7 @@ def test_otlp_headers_from_env(self, mock_ssl_channel, mock_secure): ( ("key1", "value1"), ("key2", "VALUE=2"), - ("user-agent", "OTel OTLP Exporter Python/" + __version__), + ("user-agent", "OTel-OTLP-Exporter-Python/" + __version__), ), ) exporter = OTLPSpanExporter( @@ -293,7 +293,7 @@ def test_otlp_headers_from_env(self, mock_ssl_channel, mock_secure): ( ("key3", "value3"), ("key4", "value4"), - ("user-agent", "OTel OTLP Exporter Python/" + __version__), + ("user-agent", "OTel-OTLP-Exporter-Python/" + __version__), ), ) exporter = OTLPSpanExporter( @@ -305,7 +305,7 @@ def test_otlp_headers_from_env(self, mock_ssl_channel, mock_secure): ( ("key5", "value5"), ("key6", "value6"), - ("user-agent", "OTel OTLP Exporter Python/" + __version__), + ("user-agent", "OTel-OTLP-Exporter-Python/" + __version__), ), ) @@ -454,7 +454,7 @@ def test_otlp_headers(self, mock_ssl_channel, mock_secure): # This ensures that there is no other header than standard user-agent. self.assertEqual( exporter._headers, - (("user-agent", "OTel OTLP Exporter Python/" + __version__),), + (("user-agent", "OTel-OTLP-Exporter-Python/" + __version__),), ) @patch("opentelemetry.exporter.otlp.proto.grpc.exporter.backoff") From 7411ae201d39492592bad800796a3f8aca99a349 Mon Sep 17 00:00:00 2001 From: keithkroeger <10414523+keithkroeger@users.noreply.github.com> Date: Sat, 14 Jan 2023 07:21:53 +0000 Subject: [PATCH 7/9] Update CHANGELOG.md Co-authored-by: Srikanth Chekuri --- CHANGELOG.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index d74a2bd82d0..eec44b50138 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -13,7 +13,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - Add db metric name to semantic conventions ([#3115](https://github.com/open-telemetry/opentelemetry-python/pull/3115)) -- Remove spaces from example exporter User-Agent header to conform to RFC7231 & RFC7230. +- Fix User-Agent header value for OTLP exporters to conform to RFC7231 & RFC7230 + ([#3128](https://github.com/open-telemetry/opentelemetry-python/pull/3128)) ## Version 1.15.0/0.36b0 (2022-12-09) From 1e0dc141ef541fcff961896f8458ca764609db9a Mon Sep 17 00:00:00 2001 From: keithkroeger Date: Mon, 16 Jan 2023 11:31:50 +0000 Subject: [PATCH 8/9] remove CHANGED_FILES# --- CHANGED_FILES | 7 ------- 1 file changed, 7 deletions(-) delete mode 100644 CHANGED_FILES diff --git a/CHANGED_FILES b/CHANGED_FILES deleted file mode 100644 index 11c2cb9c634..00000000000 --- a/CHANGED_FILES +++ /dev/null @@ -1,7 +0,0 @@ -exporter/opentelemetry-exporter-otlp-proto-http/src/opentelemetry/exporter/otlp/proto/http/__init__.py -exporter/opentelemetry-exporter-otlp-proto-grpc/src/opentelemetry/exporter/otlp/proto/grpc/__init__.py -exporter/opentelemetry-exporter-otlp-proto-http/tests/test_proto_log_exporter.py -exporter/opentelemetry-exporter-otlp-proto-http/tests/test_proto_span_exporter.py -exporter/opentelemetry-exporter-otlp-proto-grpc/tests/logs/test_otlp_logs_exporter.py -exporter/opentelemetry-exporter-otlp-proto-grpc/tests/test_otlp_metrics_exporter.py -exporter/opentelemetry-exporter-otlp-proto-grpc/tests/test_otlp_trace_exporter.py \ No newline at end of file From 8d6af7463cec9638a7970b018024934257efec9d Mon Sep 17 00:00:00 2001 From: keith Date: Sat, 21 Jan 2023 09:41:35 +0000 Subject: [PATCH 9/9] update location of imports for linting --- .../tests/test_proto_log_exporter.py | 2 +- .../tests/test_proto_span_exporter.py | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/exporter/opentelemetry-exporter-otlp-proto-http/tests/test_proto_log_exporter.py b/exporter/opentelemetry-exporter-otlp-proto-http/tests/test_proto_log_exporter.py index 597023bdc3a..05bdfb9af30 100644 --- a/exporter/opentelemetry-exporter-otlp-proto-http/tests/test_proto_log_exporter.py +++ b/exporter/opentelemetry-exporter-otlp-proto-http/tests/test_proto_log_exporter.py @@ -22,7 +22,6 @@ import responses from opentelemetry._logs import SeverityNumber -from opentelemetry.exporter.otlp.proto.http.version import __version__ from opentelemetry.exporter.otlp.proto.http import Compression from opentelemetry.exporter.otlp.proto.http._log_exporter import ( DEFAULT_COMPRESSION, @@ -39,6 +38,7 @@ _encode_value, _ProtobufEncoder, ) +from opentelemetry.exporter.otlp.proto.http.version import __version__ from opentelemetry.proto.collector.logs.v1.logs_service_pb2 import ( ExportLogsServiceRequest, ) diff --git a/exporter/opentelemetry-exporter-otlp-proto-http/tests/test_proto_span_exporter.py b/exporter/opentelemetry-exporter-otlp-proto-http/tests/test_proto_span_exporter.py index 2d89cb0c0f3..a1d96f50b44 100644 --- a/exporter/opentelemetry-exporter-otlp-proto-http/tests/test_proto_span_exporter.py +++ b/exporter/opentelemetry-exporter-otlp-proto-http/tests/test_proto_span_exporter.py @@ -19,7 +19,6 @@ import requests import responses -from opentelemetry.exporter.otlp.proto.http.version import __version__ from opentelemetry.exporter.otlp.proto.http import Compression from opentelemetry.exporter.otlp.proto.http.trace_exporter import ( DEFAULT_COMPRESSION, @@ -29,6 +28,7 @@ OTLPSpanExporter, _is_backoff_v2, ) +from opentelemetry.exporter.otlp.proto.http.version import __version__ from opentelemetry.sdk.environment_variables import ( OTEL_EXPORTER_OTLP_CERTIFICATE, OTEL_EXPORTER_OTLP_COMPRESSION,