TLS sdc-be-init: truststore & keystore handling
[sdc.git] / catalog-be / src / main / resources / scripts / sdcBePy / common / normative / main.py
1 import time
2 from datetime import datetime
3
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
10
11 colors = BColors()
12
13
14 def process_element_list(normative_elements_list, sdc_be_proxy, model=None):
15     attempt = 0
16     for normative_element in normative_elements_list:
17         if normative_element is None:
18             continue
19         while True:
20             attempt += 1
21             try:
22                 process_and_create_normative_element(normative_element,
23                                                      sdc_be_proxy=sdc_be_proxy, model=model)
24                 break
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))
29
30
31 def process_type_list(normative_type_list, sdc_be_proxy, update_version):
32     attempt = 0
33     for normative_type in normative_type_list:
34         while True:
35             attempt += 1
36             try:
37                 process_and_create_normative_types(normative_type,
38                                                    sdc_be_proxy=sdc_be_proxy,
39                                                    update_version=update_version)
40                 break
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))
46
47
48 def _check_and_retry(attempt, code, message):
49     if attempt == properties.retry_attempts + 1:
50         print_and_exit(code, message)
51
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)
55
56
57 def _reduce(_list, element):
58     return _list[_list.index(element)::]