diff options
Diffstat (limited to 'catalog-be/src/main/resources/scripts/sdcBePy/common/normative/main.py')
-rw-r--r-- | catalog-be/src/main/resources/scripts/sdcBePy/common/normative/main.py | 50 |
1 files changed, 45 insertions, 5 deletions
diff --git a/catalog-be/src/main/resources/scripts/sdcBePy/common/normative/main.py b/catalog-be/src/main/resources/scripts/sdcBePy/common/normative/main.py index a30d46d4d5..ad8338cee4 100644 --- a/catalog-be/src/main/resources/scripts/sdcBePy/common/normative/main.py +++ b/catalog-be/src/main/resources/scripts/sdcBePy/common/normative/main.py @@ -1,16 +1,56 @@ +import time +from datetime import datetime + +from sdcBePy.common.bColors import BColors +from sdcBePy.common.logger import print_and_exit from sdcBePy.common.normative.toscaElements import process_and_create_normative_element from sdcBePy.common.normative.toscaTypes import process_and_create_normative_types +from sdcBePy.common.errors import ResourceCreationError +from sdcBePy import properties + +colors = BColors() def process_element_list(normative_elements_list, sdc_be_proxy): + attempt = 0 for normative_element in normative_elements_list: - process_and_create_normative_element(normative_element, - sdc_be_proxy=sdc_be_proxy) + while True: + attempt += 1 + try: + process_and_create_normative_element(normative_element, + sdc_be_proxy=sdc_be_proxy) + break + except ResourceCreationError as e: + _check_and_retry(attempt, e.error_code, e.message) + except Exception as e: + _check_and_retry(attempt, 1, str(e)) def process_type_list(normative_type_list, sdc_be_proxy, update_version): + attempt = 0 for normative_type in normative_type_list: - process_and_create_normative_types(normative_type, - sdc_be_proxy=sdc_be_proxy, - update_version=update_version) + while True: + attempt += 1 + try: + process_and_create_normative_types(normative_type, + sdc_be_proxy=sdc_be_proxy, + update_version=update_version) + break + except ResourceCreationError as e: + _check_and_retry(attempt, e.error_code, e.message) + normative_type.normative_types_list = _reduce(normative_type.normative_types_list, e.resource_name) + except Exception as e: + _check_and_retry(attempt, 1, str(e)) + + +def _check_and_retry(attempt, code, message): + if attempt == properties.retry_attempts + 1: + print_and_exit(code, message) + + print(colors.FAIL + '[WARRING]: ' + datetime.now().strftime('%Y/%m/%d %H:%M:%S') + + ' ' + message + ", try again: #" + str(attempt) + colors.END_C) + time.sleep(properties.retry_time) + +def _reduce(_list, element): + return _list[_list.index(element)::] |