blob: 22125f6b30e5a39d57a644c40a60f02b66192ec9 [file] [log] [blame]
Alex Savatieiev5118de02019-02-20 15:50:42 -06001import os
2import sys
Alex3ebc5632019-04-18 16:47:18 -05003from logging import DEBUG, INFO
Alex Savatieiev06ab17d2019-02-26 18:40:48 -06004
Alex265f45e2019-04-23 18:51:23 -05005from cfg_checker.cli.command import execute_command
6from cfg_checker.cli.network import init_network_parser
7from cfg_checker.cli.package import init_package_parser
8from cfg_checker.cli.reclass import init_reclass_parser
Alex Savatieievc9055712019-03-01 14:43:56 -06009from cfg_checker.common import config, logger, logger_cli
Alex265f45e2019-04-23 18:51:23 -050010from cfg_checker.helpers.args_utils import MyParser
Alex Savatieiev5118de02019-02-20 15:50:42 -060011
12pkg_dir = os.path.dirname(__file__)
13pkg_dir = os.path.normpath(pkg_dir)
14
Alex Savatieiev9c642112019-02-26 13:55:43 -060015
Alex Savatieiev5118de02019-02-20 15:50:42 -060016def config_check_entrypoint():
Alex Savatieiev9c642112019-02-26 13:55:43 -060017 """
Alex3ebc5632019-04-18 16:47:18 -050018 Main entry point. Uses nested parsers structure
Alex Savatieiev9c642112019-02-26 13:55:43 -060019 with a default function to execute the comand
20
21 :return: - no return value
22 """
Alex Savatieiev4c406322019-02-28 17:37:09 -060023 # Main entrypoint
24 parser = MyParser(prog="# Mirantis Cloud configuration checker")
Alex3ebc5632019-04-18 16:47:18 -050025
Alex Savatieiev799bee32019-02-20 17:19:26 -060026 parser.add_argument(
27 "-d",
28 "--debug",
29 action="store_true", default=False,
30 help="Set CLI logging level to DEBUG"
31 )
Alex Savatieiev9c642112019-02-26 13:55:43 -060032 parser.add_argument(
Alex Savatieiev63576832019-02-27 15:46:26 -060033 '-s',
34 '--sudo',
35 action='store_true', default=True,
36 help="Use sudo for getting salt creds"
37 )
Alex Savatieiev5118de02019-02-20 15:50:42 -060038 subparsers = parser.add_subparsers(dest='command')
Alex265f45e2019-04-23 18:51:23 -050039
40 # package
Alex Savatieiev5118de02019-02-20 15:50:42 -060041 pkg_parser = subparsers.add_parser(
42 'packages',
43 help="Package versions check (Candidate vs Installed)"
44 )
Alex265f45e2019-04-23 18:51:23 -050045 init_package_parser(pkg_parser)
Alex Savatieiev5118de02019-02-20 15:50:42 -060046
47 # networking
48 net_parser = subparsers.add_parser(
49 'network',
Alex Savatieiev9c642112019-02-26 13:55:43 -060050 help="Network infrastructure checks and reports"
Alex Savatieiev5118de02019-02-20 15:50:42 -060051 )
Alex265f45e2019-04-23 18:51:23 -050052 init_network_parser(net_parser)
Alex3ebc5632019-04-18 16:47:18 -050053
Alex Savatieiev9c642112019-02-26 13:55:43 -060054 # reclass
55 reclass_parser = subparsers.add_parser(
56 'reclass',
57 help="Reclass related checks and reports"
58 )
Alex265f45e2019-04-23 18:51:23 -050059 init_reclass_parser(reclass_parser)
Alex41485522019-04-12 17:26:18 -050060
Alex3ebc5632019-04-18 16:47:18 -050061 # parse arguments
Alex Savatieiev9c642112019-02-26 13:55:43 -060062 try:
63 args = parser.parse_args()
Alex3ebc5632019-04-18 16:47:18 -050064 except TypeError:
Alex Savatieievc9055712019-03-01 14:43:56 -060065 logger_cli.info("\n# Please, check arguments")
Alex265f45e2019-04-23 18:51:23 -050066 sys.exit(0)
Alex Savatieiev5118de02019-02-20 15:50:42 -060067
Alex Savatieiev63576832019-02-27 15:46:26 -060068 # Pass externally configured values
69 config.ssh_uses_sudo = args.sudo
Alex3ebc5632019-04-18 16:47:18 -050070
Alex Savatieiev799bee32019-02-20 17:19:26 -060071 # Handle options
72 if args.debug:
73 logger_cli.setLevel(DEBUG)
74 else:
75 logger_cli.setLevel(INFO)
76
Alex Savatieiev5118de02019-02-20 15:50:42 -060077 # Execute the command
Alex265f45e2019-04-23 18:51:23 -050078 result = execute_command(args, args.command)
Alex Savatieiev5118de02019-02-20 15:50:42 -060079 logger.debug(result)
Alex265f45e2019-04-23 18:51:23 -050080 sys.exit(result)
Alex Savatieiev4c406322019-02-28 17:37:09 -060081
Alex3ebc5632019-04-18 16:47:18 -050082
Alex Savatieiev4c406322019-02-28 17:37:09 -060083if __name__ == '__main__':
Alex265f45e2019-04-23 18:51:23 -050084 config_check_entrypoint()