From 9f5e95e860ccb15376850db87a1bb9b10ee8aec3 Mon Sep 17 00:00:00 2001 From: Jean-Marc Fontaine Date: Fri, 26 Apr 2024 15:42:17 +0000 Subject: [PATCH] Add retries limit when pulling Terraform plan --- spacemk/exporters/terraform.py | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/spacemk/exporters/terraform.py b/spacemk/exporters/terraform.py index 26f2ed3..59a5205 100644 --- a/spacemk/exporters/terraform.py +++ b/spacemk/exporters/terraform.py @@ -943,6 +943,10 @@ def _generate_migration_id(self, *args: str) -> str: return slugify("_".join(args)).replace("-", "_") def _get_plan(self, id_: str) -> dict: + pause_duration = 3 # seconds + max_retries = 40 + retries = 0 + while True: data = self._extract_data_from_api( path=f"/plans/{id_}", properties=["attributes.log-read-url", "attributes.status"] @@ -957,8 +961,14 @@ def _get_plan(self, id_: str) -> dict: data = {} break else: - logging.debug(f"Plan '{id_}' is not finished yet. Waiting 3 seconds before retrying.") - time.sleep(3) + logging.info(f"Plan '{id_}' is not finished yet. Waiting {pause_duration} seconds before retrying.") + time.sleep(pause_duration) + + retries += 1 + if retries >= max_retries: + logging.warning(f"Plan '{id_}' has not finished after {max_retries} retries. Giving up.") + data = {} + break return data