Updates for network checker
- New checks for uniform MTU and Duplicate IPs
- Updated mapping for K8s envs
- K8s envs can skip networks using IF name keywords. Defaults to "docker"
- Network listing now gives details on Names and used MTU
Related-PROD: PROD-35288
Change-Id: Ida345ce1762038f744c460805d607d1439e434b8
diff --git a/cfg_checker/modules/network/mapper.py b/cfg_checker/modules/network/mapper.py
index fff6bb6..f0fd78d 100644
--- a/cfg_checker/modules/network/mapper.py
+++ b/cfg_checker/modules/network/mapper.py
@@ -196,7 +196,7 @@
))
logger_cli.info("-> done collecting networks data")
- logger_cli.info("-> mapping IPs")
+ logger_cli.info("-> mapping runtime network IPs")
# match interfaces by IP subnets
for host, node_data in self.master.nodes.items():
if not self.master.is_node_available(host):
@@ -437,7 +437,9 @@
return _result
def map_networks(self):
+ logger_cli.info("-> Mapping reclass networks")
self.map_network(self.RECLASS)
+ logger_cli.info("-> Mapping runtime networks")
self.map_network(self.RUNTIME)
def map_network(self, source):
@@ -455,7 +457,7 @@
self.networks[source] = _networks
return _networks
- def create_map(self):
+ def create_map(self, skip_keywords=None):
"""Create all needed elements for map output
:return: none
@@ -804,6 +806,7 @@
return _result
def map_networks(self):
+ logger_cli.info("-> Mapping runtime networks")
self.map_network(self.RUNTIME)
def map_network(self, source):
@@ -822,13 +825,15 @@
self.networks[source] = _networks
return _networks
- def create_map(self):
+ def create_map(self, skip_keywords=None):
"""Create all needed elements for map output
:return: none
"""
+ # shortcut
_runtime = self.networks[self.RUNTIME]
-
+ # networks to skip
+ _net_skip_list = []
# main networks, target vars
_map = {}
# No matter of proto, at least one IP will be present for the network
@@ -866,6 +871,11 @@
for _host in _a:
for _if in _host['ifs']:
_ip_str = str(_if.exploded)
+ # Make sure we print VIP properly
+ if _host['vip'] == _ip_str:
+ _if_name = " "*7
+ _if_name_suffix = ""
+ _ip_str += " VIP"
# Save all data
_values = {
@@ -876,6 +886,7 @@
"ip_address": _ip_str,
"rt_mtu": _host['mtu'],
"status": _host['state'],
+ "type": _host['type'],
"raw_data": _raw,
}
if node in _map[_net]:
@@ -884,7 +895,15 @@
else:
_map[_net][node] = [_values]
_notes = []
+ # process skips: if key substring found in interface name
+ # then skip the whole network.
+ if any([True for _w in skip_keywords if _w in _if_name]):
+ _net_skip_list.append(_net)
+ # remove skipped networks from list
+ _net_skip_list = list(set(_net_skip_list))
+ for _net in _net_skip_list:
+ _map.pop(_net)
# save map
self.map = _map
return
@@ -897,7 +916,7 @@
"""
logger_cli.info("# Networks")
logger_cli.info(
- " {0:8} {1:25} {2:25} {3:10} {4:10}".format(
+ " {0:47} {1:12} {2:25} {3:5} {4:4}".format(
"Host",
"IF",
"IP",
@@ -912,7 +931,7 @@
_n = self.map[network][hostname]
for _i in _n:
# Host IF IP Proto MTU State Gate Def.Gate
- _text = "{:7} {:17} {:25} {:5} {:10}".format(
+ _text = "{:10} {:2} {:25} {:5} {:4}".format(
_i['interface'],
_i['interface_note'],
_i['ip_address'],
@@ -920,7 +939,7 @@
_i['status']
)
logger_cli.info(
- " {0:8} {1}".format(
+ " {0:47} {1}".format(
node,
_text
)