blob: 9260f30eff324cfb0862086d66bdabfc888446d1 [file] [log] [blame]
Alex Savatieiev5118de02019-02-20 15:50:42 -06001import argparse
2import os
3import sys
4
5import reporter
6from cfg_checker.common import utils, const
7from cfg_checker.common import config, logger, logger_cli, pkg_dir
8from cfg_checker.clients import salt
9
10from cfg_checker.pkg_check import CloudPackageChecker
11
12pkg_dir = os.path.dirname(__file__)
13pkg_dir = os.path.normpath(pkg_dir)
14
15
16class MyParser(argparse.ArgumentParser):
17 def error(self, message):
18 sys.stderr.write('Error: {0}\n\n'.format(message))
19 self.print_help()
20
21
22
23def help_message():
24 print"""
25 Please, use following examples to generate info reports:\n
26 cfg_checker packages report\n
27 cfg_checker network check\n
28 cfg_checker network report\n
29 """
30 return
31
32def pkg_check(args):
33 # create package versions report
34 _filename = args.file
35 # init connection to salt and collect minion data
36 pChecker = CloudPackageChecker()
37 # collect data on installed packages
38 pChecker.collect_installed_packages()
39 # diff installed and candidates
40 # pChecker.collect_packages()
41 # report it
42 pChecker.create_html_report(_filename)
43
44
45def net_check(args):
46 print("This is net check routine")
47
48 return
49
50
51def net_report(args):
52 print("This is net check routine")
53
54 return
55
56
57def config_check_entrypoint():
58 # Main entrypointр
59 parser = MyParser(prog="Cloud configuration checker")
60 subparsers = parser.add_subparsers(dest='command')
61 # packages
62 pkg_parser = subparsers.add_parser(
63 'packages',
64 help="Package versions check (Candidate vs Installed)"
65 )
66 pkg_subparsers = pkg_parser.add_subparsers(dest='type')
67
68 pkg_report_parser = pkg_subparsers.add_parser(
69 'report',
70 help="Report package versions to HTML file"
71 )
72 pkg_report_parser.add_argument(
73 '-f',
74 '--file',
75 help="HTML filename to save report"
76 )
77
78 # networking
79 net_parser = subparsers.add_parser(
80 'network',
81 help="Network infrastructure checks"
82 )
83 net_subparsers = net_parser.add_subparsers(dest='type')
84
85 net_check_parser = net_subparsers.add_parser(
86 'check',
87 help="Do network check and print the result"
88 )
89 net_check_parser.set_defaults(func=net_check)
90
91 net_report_parser = net_subparsers.add_parser(
92 'report',
93 help="Generate network check report"
94 )
95 net_report_parser.add_argument(
96 '-f',
97 '--file',
98 help="HTML filename to save report"
99 )
100 net_report_parser.set_defaults(func=net_report)
101
102 #parse arguments
103 args = parser.parse_args()
104
105 # Execute the command
106 result = args.func(args)
107
108 logger.debug(result)
109 return
110
111if __name__ == '__main__':
112 config_check_entrypoint()