Skip to content

Commit

Permalink
Add url decode for OTEL_RESOUCE_ATTRIBUTES (open-telemetry#3046)
Browse files Browse the repository at this point in the history
  • Loading branch information
shalevr authored Nov 30, 2022
1 parent 8a0ce15 commit 638988c
Show file tree
Hide file tree
Showing 3 changed files with 25 additions and 1 deletion.
2 changes: 2 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0

## Unreleased

- Add url decode values from OTEL_RESOURCE_ATTRIBUTES
([#3046](https://github.com/open-telemetry/opentelemetry-python/pull/3046))
- Fixed circular dependency issue with custom samplers
([#3026](https://github.com/open-telemetry/opentelemetry-python/pull/3026))
- Add missing entry points for OTLP/HTTP exporter
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -62,6 +62,7 @@
import sys
import typing
from json import dumps
from urllib import parse

import pkg_resources

Expand Down Expand Up @@ -289,7 +290,8 @@ def detect(self) -> "Resource":
exc,
)
continue
env_resource_map[key.strip()] = value.strip()
value_url_decoded = parse.unquote(value.strip())
env_resource_map[key.strip()] = value_url_decoded

service_name = os.environ.get(OTEL_SERVICE_NAME)
if service_name:
Expand Down
20 changes: 20 additions & 0 deletions opentelemetry-sdk/tests/resources/test_resources.py
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,7 @@
import uuid
from logging import ERROR
from unittest import mock
from urllib import parse

from opentelemetry.sdk import resources

Expand Down Expand Up @@ -492,6 +493,25 @@ def test_invalid_key_value_pairs(self):
resources.Resource({"k": "v", "k2": "v2", "foo": "bar=baz"}),
)

def test_multiple_with_url_decode(self):
detector = resources.OTELResourceDetector()
os.environ[
resources.OTEL_RESOURCE_ATTRIBUTES
] = "key=value%20test%0A, key2=value+%202"
self.assertEqual(
detector.detect(),
resources.Resource({"key": "value test\n", "key2": "value+ 2"}),
)
self.assertEqual(
detector.detect(),
resources.Resource(
{
"key": parse.unquote("value%20test%0A"),
"key2": parse.unquote("value+%202"),
}
),
)

@mock.patch.dict(
os.environ,
{resources.OTEL_SERVICE_NAME: "test-srv-name"},
Expand Down

0 comments on commit 638988c

Please sign in to comment.