-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathcli.py
117 lines (106 loc) · 4.1 KB
/
cli.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
import argparse
import logging
import logging.config
import bridge as brg
import node
import utils as utl
from client_config import CLI_CONFIG
def main():
'''
Start pCLI, initialize logger and argparse
'''
logger = logging.getLogger(__name__)
logging.config.dictConfig({
'version': 1,
'disable_existing_loggers': False,
'formatters': {
'simple': {
'format': ('%(asctime)s - %(levelname)s - '
'%(module)s: %(funcName)s - '
'%(name)s: %(message)s')
},
},
'handlers': {
'default': {
'level':'DEBUG',
'class':'logging.FileHandler',
'filename': CLI_CONFIG['pcli_log_path'],
'formatter': 'simple'
},
},
'loggers': {
'': {
'handlers': ['default'],
'level': 'INFO',
'propagate': 0
}
}
})
parser = argparse.ArgumentParser('pcli')
parser.add_argument('-v', action='version', version=utl.__version__)
subparsers = parser.add_subparsers(dest='command')
subparsers.required = True
p_bridge_commands = subparsers.add_parser('bridge', help='interact with bridge\'s components')
p_bridge_commands.set_defaults(func=brg.bridge_mng)
p_bridge_commands.add_argument(nargs=1,
choices=['start', 'stop', 'restart',
'deploy', 'start_single', 'stop_single',
'restart_single'],
dest='action',
help='specify action')
p_bridge_commands.add_argument(nargs=1,
choices=['api',
'syncer_native',
'syncer_host',
'all'],
dest='bridge_comp',
help='specify component')
p_bridge_commands.add_argument('-n',
required=True,
metavar='',
dest='node_name',
help='select node')
p_node = subparsers.add_parser('node',
help='interact with nodes')
p_node.set_defaults(func=node.node_mng)
p_node.add_argument('-n',
metavar='',
dest='node_name',
help='node name')
p_node.add_argument('-p',
nargs='+',
metavar='',
dest='pkg_name',
help='package name (`all` for whole package)')
p_node.add_argument('-a',
metavar='',
dest='adv_mode',
help='advanced mode for provisioning')
p_node.add_argument('-s',
metavar='',
dest='exec_script',
help='run script on node')
p_node.add_argument('--dev',
action='store_true',
dest='dev_mode',
help='dev mode')
p_node.add_argument(nargs=1,
choices=['clean',
'destroy',
'exec',
'list',
'provisioning',
'ssh',
'update'],
dest='action',
help='specify action')
p_node.add_argument(nargs='?',
metavar='',
dest='cmd_to_exec',
help='run cmd on node')
p_update = subparsers.add_parser('update', help='update pCLI')
p_update.set_defaults(func=utl.check_for_pcli_updates)
args = parser.parse_args()
args.func(args)
if __name__ == '__main__':
main()