From 430704ef80c40f8a02ab0643e83449e35a6d70f0 Mon Sep 17 00:00:00 2001 From: Frode Nordahl Date: Wed, 16 Sep 2020 11:01:53 +0200 Subject: [PATCH] Retry retrofit action The retrofit process involves downloading packages from the internet and is as such susceptible to random failures due to internet gremlins. --- .../octavia/diskimage_retrofit/setup.py | 25 +++++++++++++------ 1 file changed, 17 insertions(+), 8 deletions(-) diff --git a/zaza/openstack/charm_tests/octavia/diskimage_retrofit/setup.py b/zaza/openstack/charm_tests/octavia/diskimage_retrofit/setup.py index 7fbca5e..73d1aad 100644 --- a/zaza/openstack/charm_tests/octavia/diskimage_retrofit/setup.py +++ b/zaza/openstack/charm_tests/octavia/diskimage_retrofit/setup.py @@ -15,6 +15,7 @@ """Code for configuring octavia-diskimage-retrofit.""" import logging +import tenacity import zaza.model @@ -39,12 +40,20 @@ def retrofit_amphora_image(unit='octavia-diskimage-retrofit/0', if image_id: params.update({'source-image': image_id}) - # NOTE(fnordahl) ``zaza.model.run_action_on_leader`` fails here, - # apparently has to do with handling of subordinates in ``libjuju`` or - # ``juju`` itself. - action = zaza.model.run_action( - unit, - 'retrofit-image', - action_params=params, - raise_on_failure=True) + # NOTE(fnordahl) the retrofit process involves downloading packages from + # the internet and is as such susceptible to random failures due to + # internet gremlins. + for attempt in tenacity.Retrying( + stop=tenacity.stop_after_attempt(3), + wait=tenacity.wait_exponential( + multiplier=1, min=2, max=10)): + with attempt: + # NOTE(fnordahl) ``zaza.model.run_action_on_leader`` fails here, + # apparently has to do with handling of subordinates in ``libjuju`` + # or ``juju`` itself. + action = zaza.model.run_action( + unit, + 'retrofit-image', + action_params=params, + raise_on_failure=True) return action