Skip to content

Commit

Permalink
Adds user agent string to grpc headers
Browse files Browse the repository at this point in the history
  • Loading branch information
pridhi-arora committed Nov 10, 2022
1 parent 787e499 commit 5363731
Show file tree
Hide file tree
Showing 4 changed files with 20 additions and 4 deletions.
2 changes: 2 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -32,6 +32,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
([#2997](https://github.com/open-telemetry/opentelemetry-python/pull/2997))
- Fix a bug with exporter retries for with newer versions of the backoff library
([#2980](https://github.com/open-telemetry/opentelemetry-python/pull/2980))
- [exporter-otlp-proto-grpc] add user agent string
([#3009](https://github.com/open-telemetry/opentelemetry-python/pull/3009))

## Version 1.13.0/0.34b0 (2022-09-26)

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -69,3 +69,7 @@
API
---
"""
from .version import __version__

otel_string = "OTel OTLP Exporter Python/" + __version__
_OTLP_GRPC_HEADERS = [("user-agent", otel_string)]
Original file line number Diff line number Diff line change
Expand Up @@ -54,6 +54,9 @@
from opentelemetry.sdk.resources import Resource as SDKResource
from opentelemetry.util.re import parse_headers
from opentelemetry.sdk.metrics.export import MetricsData
from opentelemetry.exporter.otlp.proto.grpc import (
_OTLP_GRPC_HEADERS,
)

logger = getLogger(__name__)
SDKDataT = TypeVar("SDKDataT")
Expand Down Expand Up @@ -251,6 +254,10 @@ def __init__(
self._headers = tuple(temp_headers.items())
elif isinstance(self._headers, dict):
self._headers = tuple(self._headers.items())
if self._headers is None:
self._headers = tuple(_OTLP_GRPC_HEADERS)
else:
self._headers = self._headers + tuple(_OTLP_GRPC_HEADERS)

self._timeout = timeout or int(
environ.get(OTEL_EXPORTER_OTLP_TIMEOUT, 10)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -69,6 +69,8 @@
from opentelemetry.test.spantestutil import (
get_span_with_dropped_attributes_events_links,
)
from opentelemetry.exporter.otlp.proto.grpc.version import __version__


THIS_DIR = os.path.dirname(__file__)

Expand Down Expand Up @@ -275,21 +277,21 @@ def test_otlp_headers_from_env(self, mock_ssl_channel, mock_secure):
exporter = OTLPSpanExporter()
# pylint: disable=protected-access
self.assertEqual(
exporter._headers, (("key1", "value1"), ("key2", "VALUE=2"))
exporter._headers, (("key1", "value1"),("key2", "VALUE=2"), ("user-agent", "OTel OTLP Exporter Python/" + __version__))
)
exporter = OTLPSpanExporter(
headers=(("key3", "value3"), ("key4", "value4"))
)
# pylint: disable=protected-access
self.assertEqual(
exporter._headers, (("key3", "value3"), ("key4", "value4"))
exporter._headers, (("key3", "value3"), ("key4", "value4"), ("user-agent", "OTel OTLP Exporter Python/" + __version__))
)
exporter = OTLPSpanExporter(
headers={"key5": "value5", "key6": "value6"}
)
# pylint: disable=protected-access
self.assertEqual(
exporter._headers, (("key5", "value5"), ("key6", "value6"))
exporter._headers, (("key5", "value5"), ("key6", "value6"), ("user-agent", "OTel OTLP Exporter Python/" + __version__))
)

@patch.dict(
Expand Down Expand Up @@ -434,7 +436,8 @@ def test_otlp_exporter_otlp_compression_precendence(
def test_otlp_headers(self, mock_ssl_channel, mock_secure):
exporter = OTLPSpanExporter()
# pylint: disable=protected-access
self.assertIsNone(exporter._headers, None)
#This ensures that there is no other header than standard user-agent.
self.assertEqual(exporter._headers, (("user-agent", "OTel OTLP Exporter Python/" + __version__),))

@patch("opentelemetry.exporter.otlp.proto.grpc.exporter.backoff")
@patch("opentelemetry.exporter.otlp.proto.grpc.exporter.sleep")
Expand Down

0 comments on commit 5363731

Please sign in to comment.