2 from datetime import datetime
4 from sdcBePy.common.bColors import BColors
5 from sdcBePy.common.logger import print_and_exit
6 from sdcBePy.common.normative.toscaElements import process_and_create_normative_element
7 from sdcBePy.common.normative.toscaTypes import process_and_create_normative_types
8 from sdcBePy.common.errors import ResourceCreationError
9 from sdcBePy import properties
14 def process_element_list(normative_elements_list, sdc_be_proxy, model=None):
16 for normative_element in normative_elements_list:
17 if normative_element is None:
22 process_and_create_normative_element(normative_element,
23 sdc_be_proxy=sdc_be_proxy, model=model)
25 except ResourceCreationError as e:
26 _check_and_retry(attempt, e.error_code, e.message)
27 except Exception as e:
28 _check_and_retry(attempt, 1, str(e))
31 def process_type_list(normative_type_list, sdc_be_proxy, update_version):
33 for normative_type in normative_type_list:
37 process_and_create_normative_types(normative_type,
38 sdc_be_proxy=sdc_be_proxy,
39 update_version=update_version)
41 except ResourceCreationError as e:
42 _check_and_retry(attempt, e.error_code, e.message)
43 normative_type.normative_types_list = _reduce(normative_type.normative_types_list, e.resource_name)
44 except Exception as e:
45 _check_and_retry(attempt, 1, str(e))
48 def _check_and_retry(attempt, code, message):
49 if attempt == properties.retry_attempts + 1:
50 print_and_exit(code, message)
52 print(colors.FAIL + '[WARRING]: ' + datetime.now().strftime('%Y/%m/%d %H:%M:%S')
53 + ' ' + message + ", try again: #" + str(attempt) + colors.END_C)
54 time.sleep(properties.retry_time)
57 def _reduce(_list, element):
58 return _list[_list.index(element)::]