diff options
author | BongoEADGC6 <BongoEADGC6@users.noreply.github.com> | 2019-11-12 13:12:36 -0500 |
---|---|---|
committer | Zach Marano <zmarano@google.com> | 2019-11-12 10:12:36 -0800 |
commit | 653d6d707fb9cfc6db94621979bc4e6975a98568 (patch) | |
tree | 81412c8559637389011ee646d3c741d35116a2b8 | |
parent | 900e29c2a0e2d7eec016a112aa5f734e7dc19ffe (diff) | |
download | google-compute-image-packages-653d6d707fb9cfc6db94621979bc4e6975a98568.tar.gz |
Added retry loop to _HandleMetadataUpdate (#864)
-rw-r--r-- | packages/python-google-compute-engine/google_compute_engine/metadata_watcher.py | 16 | ||||
-rw-r--r-- | packages/python-google-compute-engine/google_compute_engine/tests/metadata_watcher_test.py | 16 |
2 files changed, 15 insertions, 17 deletions
diff --git a/packages/python-google-compute-engine/google_compute_engine/metadata_watcher.py b/packages/python-google-compute-engine/google_compute_engine/metadata_watcher.py index 72a12f9..bf688cf 100644 --- a/packages/python-google-compute-engine/google_compute_engine/metadata_watcher.py +++ b/packages/python-google-compute-engine/google_compute_engine/metadata_watcher.py @@ -154,7 +154,7 @@ class MetadataWatcher(object): def _HandleMetadataUpdate( self, metadata_key='', recursive=True, wait=True, timeout=None, - retry=True): + retries=5): """Wait for a successful metadata response. Args: @@ -162,25 +162,23 @@ class MetadataWatcher(object): recursive: bool, True if we should recursively watch for metadata changes. wait: bool, True if we should wait for a metadata change. timeout: int, timeout in seconds for returning metadata output. - retry: bool, True if we should retry on failure. + retries: int, Number of times to retry obtaining metadata. Returns: json, the deserialized contents of the metadata server. """ exception = None - while True: + while retries >= 0: try: return self._GetMetadataUpdate( metadata_key=metadata_key, recursive=recursive, wait=wait, timeout=timeout) except (httpclient.HTTPException, socket.error, urlerror.URLError) as e: + retries -= 1 if not isinstance(e, type(exception)): exception = e self.logger.error('GET request error retrieving metadata. %s.', e) - if retry: - continue - else: - break + time.sleep(1) def WatchMetadata( self, handler, metadata_key='', recursive=True, timeout=None): @@ -202,7 +200,7 @@ class MetadataWatcher(object): self.logger.exception('Exception calling the response handler. %s.', e) def GetMetadata( - self, metadata_key='', recursive=True, timeout=None, retry=True): + self, metadata_key='', recursive=True, timeout=None, retries=5): """Retrieve the contents of metadata server for a metadata key. Args: @@ -216,4 +214,4 @@ class MetadataWatcher(object): """ return self._HandleMetadataUpdate( metadata_key=metadata_key, recursive=recursive, wait=False, - timeout=timeout, retry=retry) + timeout=timeout, retries=retries) diff --git a/packages/python-google-compute-engine/google_compute_engine/tests/metadata_watcher_test.py b/packages/python-google-compute-engine/google_compute_engine/tests/metadata_watcher_test.py index 1bce509..9c0ca46 100644 --- a/packages/python-google-compute-engine/google_compute_engine/tests/metadata_watcher_test.py +++ b/packages/python-google-compute-engine/google_compute_engine/tests/metadata_watcher_test.py @@ -259,12 +259,12 @@ class MetadataWatcherTest(unittest.TestCase): metadata_key = 'instance/id' recursive = False wait = False - retry = True + retries = 5 self.assertEqual( self.mock_watcher._HandleMetadataUpdate( metadata_key=metadata_key, recursive=recursive, wait=wait, - timeout=None, retry=retry), + timeout=None, retries=retries), {}) expected_calls = [ mock.call( @@ -282,12 +282,12 @@ class MetadataWatcherTest(unittest.TestCase): metadata_key = 'instance/id' recursive = False wait = False - retry = False + retries = 0 self.assertIsNone( self.mock_watcher._HandleMetadataUpdate( metadata_key=metadata_key, recursive=recursive, wait=wait, - timeout=None, retry=retry)) + timeout=None, retries=retries)) expected_calls = [ mock.call( metadata_key=metadata_key, recursive=recursive, wait=wait, @@ -333,7 +333,7 @@ class MetadataWatcherTest(unittest.TestCase): self.assertEqual(self.mock_watcher.GetMetadata(), {}) mock_response.assert_called_once_with( - metadata_key='', recursive=True, wait=False, timeout=None, retry=True) + metadata_key='', recursive=True, wait=False, timeout=None, retries=5) self.mock_watcher.logger.exception.assert_not_called() def testGetMetadataArgs(self): @@ -342,15 +342,15 @@ class MetadataWatcherTest(unittest.TestCase): self.mock_watcher._HandleMetadataUpdate = mock_response metadata_key = 'instance/id' recursive = False - retry = False + retries = 5 response = self.mock_watcher.GetMetadata( metadata_key=metadata_key, recursive=recursive, timeout=60, - retry=retry) + retries=retries) self.assertEqual(response, {}) mock_response.assert_called_once_with( metadata_key=metadata_key, recursive=False, wait=False, timeout=60, - retry=False) + retries=5) self.mock_watcher.logger.exception.assert_not_called() |