From 4ee65391499af538960c63d02a979fe38d21135f Mon Sep 17 00:00:00 2001 From: James Falcon Date: Tue, 14 Jan 2025 13:34:31 -0600 Subject: [PATCH] fix: Don't log error in wait_for_url (#5972) There are use cases where we may want to recover or not treat a failure of this function as an error. This change lets the caller decide what to do. Logging was added to callsites that didn't already have it. Fixes GH-5971 --- cloudinit/sources/DataSourceEc2.py | 1 + cloudinit/sources/DataSourceExoscale.py | 1 + cloudinit/url_helper.py | 1 - tests/unittests/test_url_helper.py | 6 +----- 4 files changed, 3 insertions(+), 6 deletions(-) diff --git a/cloudinit/sources/DataSourceEc2.py b/cloudinit/sources/DataSourceEc2.py index b52d3d4079b..7893f0eb596 100644 --- a/cloudinit/sources/DataSourceEc2.py +++ b/cloudinit/sources/DataSourceEc2.py @@ -326,6 +326,7 @@ def _maybe_fetch_api_token(self, mdurls): # If we get here, then wait_for_url timed out, waiting for IMDS # or the IMDS HTTP endpoint is disabled + LOG.error("Unable to get response from urls: %s", urls) return None def wait_for_metadata_service(self): diff --git a/cloudinit/sources/DataSourceExoscale.py b/cloudinit/sources/DataSourceExoscale.py index 38e00cacdfc..36b2529687e 100644 --- a/cloudinit/sources/DataSourceExoscale.py +++ b/cloudinit/sources/DataSourceExoscale.py @@ -79,6 +79,7 @@ def crawl_metadata(self): metadata_ready = self.wait_for_metadata_service() if not metadata_ready: + LOG.error("Unable to get response from metadata service") return {} return read_metadata( diff --git a/cloudinit/url_helper.py b/cloudinit/url_helper.py index e7f9d3a609c..ad2c6383d6a 100644 --- a/cloudinit/url_helper.py +++ b/cloudinit/url_helper.py @@ -983,7 +983,6 @@ def read_url_parallel( # We've already exceeded our max_wait. Time to bail. break - LOG.error("Timed out, no response from urls: %s", urls) return False, None diff --git a/tests/unittests/test_url_helper.py b/tests/unittests/test_url_helper.py index 7b0fe70f02b..618571739f5 100644 --- a/tests/unittests/test_url_helper.py +++ b/tests/unittests/test_url_helper.py @@ -2,7 +2,6 @@ # pylint: disable=attribute-defined-outside-init import logging -import re from functools import partial from threading import Event from time import process_time @@ -733,7 +732,7 @@ def test_order(self, addresses, expected_address_index, response): assert response.encode() == response_contents @responses.activate - def test_timeout(self, caplog): + def test_timeout(self): """If no endpoint responds in time, expect no response""" self.event.clear() @@ -761,9 +760,6 @@ def test_timeout(self, caplog): self.event.set() assert not url assert not response_contents - assert re.search( - r"open 'https:\/\/sleep1\/'.*Timed out", caplog.text, re.DOTALL - ) def test_explicit_arguments(self, retry_mocks): """Ensure that explicit arguments are respected"""