blob: 2ce37eb83b453d8d0e85fa99099ae0ed41d6b4fc [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
Alexbab1efe2019-04-23 18:51:23 -05005from cfg_checker.cli.command import execute_command, helps, parsers
Alex Savatieievc9055712019-03-01 14:43:56 -06006from cfg_checker.common import config, logger, logger_cli
Alex265f45e2019-04-23 18:51:23 -05007from cfg_checker.helpers.args_utils import MyParser
Alex Savatieiev5118de02019-02-20 15:50:42 -06008
9pkg_dir = os.path.dirname(__file__)
10pkg_dir = os.path.normpath(pkg_dir)
11
Alex Savatieiev9c642112019-02-26 13:55:43 -060012
Alex Savatieiev5118de02019-02-20 15:50:42 -060013def config_check_entrypoint():
Alex Savatieiev9c642112019-02-26 13:55:43 -060014 """
Alex3ebc5632019-04-18 16:47:18 -050015 Main entry point. Uses nested parsers structure
Alex Savatieiev9c642112019-02-26 13:55:43 -060016 with a default function to execute the comand
17
18 :return: - no return value
19 """
Alex Savatieiev4c406322019-02-28 17:37:09 -060020 # Main entrypoint
21 parser = MyParser(prog="# Mirantis Cloud configuration checker")
Alex3ebc5632019-04-18 16:47:18 -050022
Alex Savatieiev799bee32019-02-20 17:19:26 -060023 parser.add_argument(
24 "-d",
25 "--debug",
26 action="store_true", default=False,
27 help="Set CLI logging level to DEBUG"
28 )
Alex Savatieiev9c642112019-02-26 13:55:43 -060029 parser.add_argument(
Alex Savatieiev63576832019-02-27 15:46:26 -060030 '-s',
31 '--sudo',
32 action='store_true', default=True,
33 help="Use sudo for getting salt creds"
34 )
Alexe9908f72020-05-19 16:04:53 -050035
36 parser.add_argument(
37 '--skip-nodes',
38 metavar='skip_string', default=None,
39 help="String with nodes to skip. Only trailing '*' supported!"
40 " Example: 'cmp*,ctl01'"
41 )
42
43 parser.add_argument(
44 '--skip-nodes-file',
45 metavar='skip_nodes_file', default=None,
46 help="Filename with nodes to skip. Note: use fqdn node names."
47 )
48
Alex Savatieiev5118de02019-02-20 15:50:42 -060049 subparsers = parser.add_subparsers(dest='command')
Alex265f45e2019-04-23 18:51:23 -050050
Alexbab1efe2019-04-23 18:51:23 -050051 # create parsers
52 for _command in helps.keys():
53 _parser = subparsers.add_parser(
54 _command,
55 help=helps[_command]
56 )
57 parsers[_command](_parser)
Alex41485522019-04-12 17:26:18 -050058
Alex3ebc5632019-04-18 16:47:18 -050059 # parse arguments
Alex Savatieiev9c642112019-02-26 13:55:43 -060060 try:
Alexd0391d42019-05-21 18:48:55 -050061 args, unknown = parser.parse_known_args()
Alex3ebc5632019-04-18 16:47:18 -050062 except TypeError:
Alex Savatieievc9055712019-03-01 14:43:56 -060063 logger_cli.info("\n# Please, check arguments")
Alex3bc95f62020-03-05 17:00:04 -060064 sys.exit(1)
Alex Savatieiev5118de02019-02-20 15:50:42 -060065
Alexd0391d42019-05-21 18:48:55 -050066 if unknown:
67 logger_cli.error(
68 "# Unexpected arguments: {}".format(
69 ", ".join(["'{}'".format(a) for a in unknown])
70 )
71 )
72 sys.exit(1)
73
Alex Savatieiev63576832019-02-27 15:46:26 -060074 # Pass externally configured values
75 config.ssh_uses_sudo = args.sudo
Alex3ebc5632019-04-18 16:47:18 -050076
Alex Savatieiev799bee32019-02-20 17:19:26 -060077 # Handle options
78 if args.debug:
79 logger_cli.setLevel(DEBUG)
80 else:
81 logger_cli.setLevel(INFO)
82
Alex Savatieiev5118de02019-02-20 15:50:42 -060083 # Execute the command
Alex265f45e2019-04-23 18:51:23 -050084 result = execute_command(args, args.command)
Alex Savatieiev5118de02019-02-20 15:50:42 -060085 logger.debug(result)
Alex265f45e2019-04-23 18:51:23 -050086 sys.exit(result)
Alex Savatieiev4c406322019-02-28 17:37:09 -060087
Alex3ebc5632019-04-18 16:47:18 -050088
Alex Savatieiev4c406322019-02-28 17:37:09 -060089if __name__ == '__main__':
Alex265f45e2019-04-23 18:51:23 -050090 config_check_entrypoint()