TLS sdc-be-init: truststore & keystore handling
[sdc.git] / catalog-be / src / main / resources / scripts / sdcBePy / tosca / main.py
1 import json
2 import os
3 import sys
4 from argparse import ArgumentParser
5
6 from sdcBePy.common import logger
7 from sdcBePy.common.properties import init_properties
8 from sdcBePy.common.sdcBeProxy import SdcBeProxy
9
10
11 def usage():
12     print(sys.argv[0],
13           '[-s <scheme> | --scheme=<scheme> ] [-i <be host> | --ip=<be host>] [-p <be port> | '
14           '--port=<be port> ] --header=<header> ] [-u <user userId> | --user=<user userId> ] [-d <true|false> | '
15           '--debug=<true|false>] [-v <true|false> | --updateVersion=<true|false>]')
16
17
18 def load_be_config(conf_path):
19     with open(conf_path, 'r', encoding='utf-8') as f:
20         return json.load(f)
21
22
23 def parse_param():
24     parser = ArgumentParser()
25
26     path = os.path.dirname(__file__)
27     parser.add_argument('--conf', default=os.path.join(path, 'data', 'beConfig.json'))
28
29     parser.add_argument('--ip', "-i")
30     parser.add_argument('--port', "-p")
31     parser.add_argument('--header')
32     parser.add_argument('--adminUser', "-a")
33     parser.add_argument('--https', action='store_true')
34     parser.add_argument('--updateVersion', action='store_false')
35     parser.add_argument('--debug', action='store_true')
36     parser.add_argument('--tls_cert')
37     parser.add_argument('--tls_key')
38     parser.add_argument('--tls_key_pw')
39     parser.add_argument('--ca_cert')
40
41     args, _ = parser.parse_known_args()
42
43     return [args.conf, 'https' if args.https else 'http',
44             args.ip, args.port, args.header, args.adminUser, args.updateVersion,
45             args.debug, args.tls_cert, args.tls_key, args.tls_key_pw, args.ca_cert]
46
47
48 def get_args():
49     print('Number of arguments:', len(sys.argv), 'arguments.')
50
51     conf_path, scheme, be_host, be_port, header, admin_user, update_version, debug, tls_cert, tls_key, tls_key_pw, ca_cert = parse_param()
52     defaults = load_be_config(conf_path)
53
54     # Use defaults if param not provided by the user
55     if be_host is None:
56         be_host = defaults["beHost"]
57     if be_port is None:
58         be_port = defaults["bePort"]
59     if admin_user is None:
60         admin_user = defaults["adminUser"]
61
62     if header is None:
63         print('scheme =', scheme, ',be host =', be_host, ', be port =', be_port, ', user =', admin_user,
64           ', debug =', debug, ', update_version =', update_version)
65     else:
66         print('scheme =', scheme, ',be host =', be_host, ', be port =', be_port, ', header =', header, ', user =', admin_user,
67               ', debug =', debug, ', update_version =', update_version)
68
69     init_properties(defaults["retryTime"], defaults["retryAttempt"], defaults["resourceLen"])
70     return scheme, be_host, be_port, header, admin_user, update_version, debug, tls_cert, tls_key, tls_key_pw, ca_cert
71
72
73 def parse_and_create_proxy():
74     scheme, be_host, be_port, header, admin_user, update_version, debug, tls_cert, tls_key, tls_key_pw, ca_cert = get_args()
75
76     if debug is False:
77         print('Disabling debug mode')
78         logger.debugFlag = debug
79
80     try:
81         sdc_be_proxy = SdcBeProxy(be_host, be_port, header, scheme, tls_cert, tls_key, tls_key_pw, ca_cert, admin_user, debug=debug)
82     except AttributeError:
83         usage()
84         sys.exit(3)
85
86     return sdc_be_proxy, update_version
87