Hide keyboard shortcuts

Hot-keys on this page

r m x p   toggle line displays

j k   next/prev highlighted chunk

0   (zero) top of page

1   (one) first highlighted chunk

1import os 

2import sys 

3from logging import DEBUG, INFO 

4 

5from cfg_checker.cli.command import execute_command, helps, parsers 

6from cfg_checker.common import config, logger, logger_cli 

7from cfg_checker.helpers.args_utils import MyParser 

8 

9pkg_dir = os.path.dirname(__file__) 

10pkg_dir = os.path.normpath(pkg_dir) 

11 

12 

13def config_check_entrypoint(): 

14 """ 

15 Main entry point. Uses nested parsers structure 

16 with a default function to execute the comand 

17 

18 :return: - no return value 

19 """ 

20 # Main entrypoint 

21 parser = MyParser(prog="# Mirantis Cloud configuration checker") 

22 

23 parser.add_argument( 

24 "-d", 

25 "--debug", 

26 action="store_true", default=False, 

27 help="Set CLI logging level to DEBUG" 

28 ) 

29 parser.add_argument( 

30 '-s', 

31 '--sudo', 

32 action='store_true', default=True, 

33 help="Use sudo for getting salt creds" 

34 ) 

35 subparsers = parser.add_subparsers(dest='command') 

36 

37 # create parsers 

38 for _command in helps.keys(): 

39 _parser = subparsers.add_parser( 

40 _command, 

41 help=helps[_command] 

42 ) 

43 parsers[_command](_parser) 

44 

45 # parse arguments 

46 try: 

47 args, unknown = parser.parse_known_args() 

48 except TypeError: 

49 logger_cli.info("\n# Please, check arguments") 

50 sys.exit(1) 

51 

52 if unknown: 

53 logger_cli.error( 

54 "# Unexpected arguments: {}".format( 

55 ", ".join(["'{}'".format(a) for a in unknown]) 

56 ) 

57 ) 

58 sys.exit(1) 

59 

60 # Pass externally configured values 

61 config.ssh_uses_sudo = args.sudo 

62 

63 # Handle options 

64 if args.debug: 

65 logger_cli.setLevel(DEBUG) 

66 else: 

67 logger_cli.setLevel(INFO) 

68 

69 # Execute the command 

70 result = execute_command(args, args.command) 

71 logger.debug(result) 

72 sys.exit(result) 

73 

74 

75if __name__ == '__main__': 

76 config_check_entrypoint()