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
This commit is contained in:
Arx Cruz 2021-04-16 12:08:36 +02:00
parent 33b2a939b5
commit 2e09b75839
2 changed files with 15 additions and 13 deletions

View File

@ -22,16 +22,25 @@ from functools import wraps
from six.moves import urllib from six.moves import urllib
from tempest.lib import exceptions from tempest.lib import exceptions
from tenacity import RetryError from tenacity import retry
from tenacity import Retrying
from tenacity import stop_after_attempt from tenacity import stop_after_attempt
from config_tempest import constants as C from config_tempest import constants as C
from config_tempest.services.base import VersionedService from config_tempest.services.base import VersionedService
stop = stop_after_attempt(len(C.DEFAULT_IMAGES))
class ImageService(VersionedService): 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, def set_image_preferences(self, disk_format, non_admin, no_rng=False,
convert=False): convert=False):
"""Sets image prefferences. """Sets image prefferences.
@ -178,17 +187,10 @@ class ImageService(VersionedService):
image = self._upload_image(image_name, image_dest) image = self._upload_image(image_name, image_dest)
return image['id'] return image['id']
@retry(stop=stop)
def _download_with_retry(self, destination): def _download_with_retry(self, destination):
retry_attempt = -1 self.retry_attempt += 1
attempts = len(C.DEFAULT_IMAGES) self._download_file(C.DEFAULT_IMAGES[self.retry_attempt], destination)
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
def _find_image(self, image_id, image_name): def _find_image(self, image_id, image_name):
"""Find image by ID or name (the image client doesn't have this). """Find image by ID or name (the image client doesn't have this).

View File

@ -8,5 +8,5 @@ tempest>=14.0.0 # Apache-2.0
requests>=2.10.0,!=2.12.2 # Apache-2.0 requests>=2.10.0,!=2.12.2 # Apache-2.0
openstacksdk>=0.11.3 # Apache-2.0 openstacksdk>=0.11.3 # Apache-2.0
oslo.config>=3.23.0 # Apache-2.0 oslo.config>=3.23.0 # Apache-2.0
tenacity tenacity>=5.1.1
PyYAML>=3.12 # MIT PyYAML>=3.12 # MIT