diff --git a/CHANGELOG.md b/CHANGELOG.md index 26425b40a9..11363cc165 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,6 +7,9 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ## Unreleased +- `opentelemetry-resource-detector-azure` Added 10s timeout to VM Resource Detector + ([#2119](https://github.com/open-telemetry/opentelemetry-python-contrib/pull/2119)) + ## Version 1.22.0/0.43b0 (2023-12-14) ### Added diff --git a/resource/opentelemetry-resource-detector-azure/src/opentelemetry/resource/detector/azure/vm.py b/resource/opentelemetry-resource-detector-azure/src/opentelemetry/resource/detector/azure/vm.py index 8dd741b901..e90fec5a8d 100644 --- a/resource/opentelemetry-resource-detector-azure/src/opentelemetry/resource/detector/azure/vm.py +++ b/resource/opentelemetry-resource-detector-azure/src/opentelemetry/resource/detector/azure/vm.py @@ -68,8 +68,8 @@ def get_azure_vm_metadata(self): # pylint: disable=no-self-use request = Request(_AZURE_VM_METADATA_ENDPOINT) request.add_header("Metadata", "True") try: - with urlopen(request).read() as response: - return loads(response) + with urlopen(request, timeout=10) as response: + return loads(response.read()) except URLError: # Not on Azure VM return None diff --git a/resource/opentelemetry-resource-detector-azure/tests/test_vm.py b/resource/opentelemetry-resource-detector-azure/tests/test_vm.py index 13ec225c82..fd443aa3be 100644 --- a/resource/opentelemetry-resource-detector-azure/tests/test_vm.py +++ b/resource/opentelemetry-resource-detector-azure/tests/test_vm.py @@ -363,18 +363,18 @@ class TestAzureVMResourceDetector(unittest.TestCase): @patch("opentelemetry.resource.detector.azure.vm.urlopen") def test_linux(self, mock_urlopen): - mock_open = Mock() - mock_urlopen.return_value = mock_open - mock_open.read.return_value = LINUX_JSON + mock_response = Mock() + mock_urlopen.return_value = mock_response + mock_response.read.return_value = LINUX_JSON attributes = AzureVMResourceDetector().detect().attributes for attribute_key, attribute_value in LINUX_ATTRIBUTES.items(): self.assertEqual(attributes[attribute_key], attribute_value) @patch("opentelemetry.resource.detector.azure.vm.urlopen") def test_windows(self, mock_urlopen): - mock_open = Mock() - mock_urlopen.return_value = mock_open - mock_open.read.return_value = WINDOWS_JSON + mock_response = Mock() + mock_urlopen.return_value = mock_response + mock_response.read.return_value = WINDOWS_JSON attributes = AzureVMResourceDetector().detect().attributes for attribute_key, attribute_value in LINUX_ATTRIBUTES.items(): self.assertEqual(attributes[attribute_key], attribute_value)