Coverage for cfg_checker/modules/network/__init__.py : 34%

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
1from cfg_checker.common import logger_cli
2from cfg_checker.helpers import args_utils
3from cfg_checker.modules.network import checker, mapper, pinger
6command_help = "Network infrastructure checks and reports"
9def init_parser(_parser):
10 # network subparser
11 net_subparsers = _parser.add_subparsers(dest='type')
13 net_check_parser = net_subparsers.add_parser(
14 'check',
15 help="Do network check and print the result"
16 )
18 net_check_parser.add_argument(
19 '--detailed',
20 action="store_true", default=False,
21 help="Print error details after summary"
22 )
24 net_report_parser = net_subparsers.add_parser(
25 'report',
26 help="Generate network check report"
27 )
29 net_report_parser.add_argument(
30 '--html',
31 metavar='network_html_filename',
32 help="HTML filename to save report"
33 )
35 net_ping_parser = net_subparsers.add_parser(
36 'ping',
37 help="Ping all nodes with each other using network CIDR"
38 )
40 net_ping_parser.add_argument(
41 '--cidr',
42 metavar='network_ping_cidr',
43 help="Subnet CIDR to ping nodes in"
44 )
45 net_ping_parser.add_argument(
46 '--mtu',
47 metavar='network_ping_mtu',
48 help="MTU size to use. Ping will be done for MTU - 20 - 8"
49 )
50 net_ping_parser.add_argument(
51 '--detailed',
52 action="store_true", default=False,
53 help="Print detailed report at the end"
54 )
56 net_subparsers.add_parser(
57 'map',
58 help="Print network map"
59 )
61 net_subparsers.add_parser(
62 'list',
63 help="List networks in reclass"
64 )
66 return _parser
69def do_check(args):
70 # Net Checks
71 # should not print map, etc...
72 # Just bare summary and errors
73 logger_cli.info("# Network check to console")
74 netChecker = checker.NetworkChecker()
75 netChecker.check_networks()
77 # save what was collected
78 netChecker.errors.save_iteration_data()
80 # print a report
81 netChecker.print_summary()
83 # if set, print details
84 if args.detailed:
85 netChecker.print_error_details()
88def do_report(args):
89 # Network Report
90 # should generate Static HTML page
91 # with node/network map and values
93 logger_cli.info("# Network report (check, node map")
95 _filename = args_utils.get_arg(args, 'html')
97 netChecker = checker.NetworkChecker()
98 netChecker.check_networks(map=False)
100 # save what was collected
101 netChecker.errors.save_iteration_data()
102 netChecker.create_html_report(_filename)
104 return
107def do_map(args):
108 # Network Map
109 # Should generate network map to console or HTML
110 logger_cli.info("# Network report")
112 networkMap = mapper.NetworkMapper()
113 networkMap.prepare_all_maps()
114 networkMap.create_map()
115 networkMap.print_map()
117 return
120def do_list(args):
121 # Network List
122 # Should generate network map to console or HTML
123 _map = mapper.NetworkMapper()
124 reclass = _map.map_network(_map.RECLASS)
125 runtime = _map.map_network(_map.RUNTIME)
127 _s = [str(_n) for _n in reclass.keys()]
128 logger_cli.info("\n# Reclass networks list")
129 logger_cli.info("\n".join(_s))
130 _s = [str(_n) for _n in runtime.keys()]
131 logger_cli.info("\n# Runtime networks list")
132 logger_cli.info("\n".join(_s))
134 return
137def do_ping(args):
138 # Network pinger
139 # Checks if selected nodes are pingable
140 # with a desireble parameters: MTU, Frame, etc
141 if not args.cidr:
142 logger_cli.error("\n# Use mcp-check network list to get list of CIDRs")
143 _cidr = args_utils.get_arg(args, "cidr")
144 _pinger = pinger.NetworkPinger(mtu=args.mtu, detailed=args.detailed)
146 _ret = _pinger.ping_nodes(_cidr)
148 if _ret < 0:
149 # no need to save the iterations and summary
150 return
151 else:
152 # save what was collected
153 _pinger.errors.save_iteration_data()
155 # print a report
156 _pinger.print_summary()
158 # if set, print details
159 if args.detailed:
160 _pinger.print_details()
162 return
165def do_trace(args):
166 # Network packet tracer
167 # Check if packet is delivered to proper network host
168 logger_cli.info("# Packet Tracer not yet implemented")
170 # TODO: Packet tracer
172 return