From 2e09b75839487a67ed994244e0323fd175fbe987 Mon Sep 17 00:00:00 2001 From: Arx Cruz Date: Fri, 16 Apr 2021 12:08:36 +0200 Subject: [PATCH] Updating download_with_retry function Older versions of tenacity doesn't support iterator in the Retrying class, so updating the function to use the decorator instead, so we can keep compatibility. Change-Id: I33fa112975f355cf4f4396ec331200b15a366161 --- config_tempest/services/image.py | 26 ++++++++++++++------------ requirements.txt | 2 +- 2 files changed, 15 insertions(+), 13 deletions(-) diff --git a/config_tempest/services/image.py b/config_tempest/services/image.py index 68c15893..e7888e62 100644 --- a/config_tempest/services/image.py +++ b/config_tempest/services/image.py @@ -22,16 +22,25 @@ from functools import wraps from six.moves import urllib from tempest.lib import exceptions -from tenacity import RetryError -from tenacity import Retrying +from tenacity import retry from tenacity import stop_after_attempt from config_tempest import constants as C from config_tempest.services.base import VersionedService +stop = stop_after_attempt(len(C.DEFAULT_IMAGES)) + + class ImageService(VersionedService): + def __init__(self, name, s_type, service_url, token, + disable_ssl_validation, client=None, **kwargs): + super(ImageService, self).__init__( + name, s_type, service_url, token, disable_ssl_validation, + client, **kwargs) + self.retry_attempt = -1 + def set_image_preferences(self, disk_format, non_admin, no_rng=False, convert=False): """Sets image prefferences. @@ -178,17 +187,10 @@ class ImageService(VersionedService): image = self._upload_image(image_name, image_dest) return image['id'] + @retry(stop=stop) def _download_with_retry(self, destination): - retry_attempt = -1 - attempts = len(C.DEFAULT_IMAGES) - try: - for attempt in Retrying(stop=stop_after_attempt(attempts)): - retry_attempt += 1 - with attempt: - self._download_file(C.DEFAULT_IMAGES[retry_attempt], - destination) - except RetryError: - pass + self.retry_attempt += 1 + self._download_file(C.DEFAULT_IMAGES[self.retry_attempt], destination) def _find_image(self, image_id, image_name): """Find image by ID or name (the image client doesn't have this). diff --git a/requirements.txt b/requirements.txt index b88e111c..b397877c 100644 --- a/requirements.txt +++ b/requirements.txt @@ -8,5 +8,5 @@ tempest>=14.0.0 # Apache-2.0 requests>=2.10.0,!=2.12.2 # Apache-2.0 openstacksdk>=0.11.3 # Apache-2.0 oslo.config>=3.23.0 # Apache-2.0 -tenacity +tenacity>=5.1.1 PyYAML>=3.12 # MIT