Skip to content
Merged
Show file tree
Hide file tree
Changes from 3 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 3 additions & 0 deletions sdk-extension/opentelemetry-sdk-extension-aws/CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,9 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0

## Unreleased

- `opentelemetry-sdk-extension-aws`: make ecs and beanstalk resource detector silent when loaded outside AWS
([#3076](https://github.com/open-telemetry/opentelemetry-python-contrib/pull/3076))

## Version 2.0.2 (2024-08-05)

See [common CHANGELOG](../../CHANGELOG.md) for the changes in this and prior versions.
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -41,6 +41,9 @@ def detect(self) -> "Resource":
else:
conf_file_path = "/var/elasticbeanstalk/xray/environment.conf"

if not os.path.exists(conf_file_path):
return Resource.get_empty()

try:
with open(conf_file_path, encoding="utf-8") as conf_file:
parsed_data = json.load(conf_file)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -41,9 +41,7 @@ def detect(self) -> "Resource":
if not os.environ.get(
"ECS_CONTAINER_METADATA_URI"
) and not os.environ.get("ECS_CONTAINER_METADATA_URI_V4"):
raise RuntimeError(
"Missing ECS_CONTAINER_METADATA_URI therefore process is not on ECS."
)
return Resource.get_empty()

container_id = ""
try:
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -41,9 +41,19 @@ class AwsBeanstalkResourceDetectorTest(unittest.TestCase):
new_callable=mock_open,
read_data=f'{{"deployment_id":"{MockBeanstalkResourceAttributes[ResourceAttributes.SERVICE_INSTANCE_ID]}","environment_name":"{MockBeanstalkResourceAttributes[ResourceAttributes.SERVICE_NAMESPACE]}","version_label":"{MockBeanstalkResourceAttributes[ResourceAttributes.SERVICE_VERSION]}"}}',
)
def test_simple_create(self, mock_open_function):
@patch("os.path.exists", return_value=True)
def test_simple_create(self, mock_path_exists, mock_open_function):
actual = AwsBeanstalkResourceDetector().detect()
self.assertDictEqual(
actual.attributes.copy(),
OrderedDict(MockBeanstalkResourceAttributes),
)

@patch("os.name", "posix")
@patch("os.path.exists", return_value=False)
def test_not_on_beanstalk(self, mock_path_exists):
actual = AwsBeanstalkResourceDetector().detect()
self.assertDictEqual(actual.attributes.copy(), {})
mock_path_exists.assert_called_once_with(
"/var/elasticbeanstalk/xray/environment.conf"
)
Original file line number Diff line number Diff line change
Expand Up @@ -79,6 +79,11 @@ def _http_get_function_fargate(url: str, *args, **kwargs) -> str:


class AwsEcsResourceDetectorTest(unittest.TestCase):
@patch.dict("os.environ", {}, clear=True)
def test_not_on_ecs(self):
actual = AwsEcsResourceDetector().detect()
self.assertDictEqual(actual.attributes.copy(), {})

@patch.dict(
"os.environ",
{"ECS_CONTAINER_METADATA_URI": "mock-uri"},
Expand Down
Loading