Network checks updates
- Node specific network errors
Change-Id: I4cc830aeaa129db20895a6902a429facf8622b20
Related-PROD: PROD-28199
diff --git a/cfg_checker/modules/network/checker.py b/cfg_checker/modules/network/checker.py
index 29ccb41..aeb1e61 100644
--- a/cfg_checker/modules/network/checker.py
+++ b/cfg_checker/modules/network/checker.py
@@ -211,6 +211,21 @@
"... no data for the node"
)
)
+ # add non-responsive node erorr
+ self.errors.add_error(
+ self.errors.NET_NODE_NON_RESPONSIVE,
+ host=hostname
+ )
+
+ # print empty row
+ _text = " # node non-responsive"
+ logger_cli.info(
+ " {0:17} {1}".format(
+ hostname.split('.')[0],
+ _text
+ )
+ )
+ continue
# get the gateway for current net
_routes = self.nodes[hostname]['routes']
@@ -235,10 +250,18 @@
# get proper reclass
_ip_str = str(_if.exploded)
_r = {}
- for _item in self.reclass_nets[network][hostname]:
- for _item_ifs in _item['ifs']:
- if _ip_str == str(_item_ifs.exploded):
- _r = _item
+ if hostname in self.reclass_nets[network]:
+ for _item in self.reclass_nets[network][hostname]:
+ for _item_ifs in _item['ifs']:
+ if _ip_str == str(_item_ifs.exploded):
+ _r = _item
+ else:
+ self.errors.add_error(
+ self.errors.NET_NODE_UNEXPECTED_IF,
+ host=hostname,
+ if_name=_host['name'],
+ if_ip=_ip_str
+ )
# check if node is UP
if not self.is_node_available(hostname):
@@ -270,7 +293,7 @@
# IF status in reclass
if 'enabled' not in _r:
- _enabled = "no record!"
+ _enabled = "(no record!)"
else:
_e = "enabled"
_d = "disabled"
@@ -292,8 +315,9 @@
# reclass is empty if MTU is untended to be 1500
_rc_mtu = "(-)"
elif _rc_mtu:
+ _rc_mtu_s = str(_rc_mtu)
# if there is an MTU value, match it
- if _host['mtu'] != str(_rc_mtu):
+ if _host['mtu'] != _rc_mtu_s:
self.errors.add_error(
self.errors.NET_MTU_MISMATCH,
host=hostname,
@@ -317,7 +341,7 @@
_name,
_ip_str,
_host['mtu'],
- str(_rc_mtu) if _rc_mtu else "(No!)",
+ "("+_rc_mtu_s+")" if _rc_mtu else "(No!)",
_host['state'],
_enabled,
_gate,
diff --git a/cfg_checker/modules/network/network_errors.py b/cfg_checker/modules/network/network_errors.py
index 2ec3d31..cb9dfef 100644
--- a/cfg_checker/modules/network/network_errors.py
+++ b/cfg_checker/modules/network/network_errors.py
@@ -13,6 +13,8 @@
NET_DUPLICATE_IF = next(_c)
NET_SUBNET_INTERSECT = next(_c)
NET_MASK_MISMATCH = next(_c)
+ NET_NODE_NON_RESPONSIVE = next(_c)
+ NET_NODE_UNEXPECTED_IF = next(_c)
def __init__(self):
super(NetworkErrors, self).__init__("NET")
@@ -37,6 +39,14 @@
self.NET_MASK_MISMATCH,
"IFs mask settings for the same subnet is not the same"
)
+ self.add_error_type(
+ self.NET_NODE_NON_RESPONSIVE,
+ "Node failed to respond on at least one non-ping salt call"
+ )
+ self.add_error_type(
+ self.NET_NODE_UNEXPECTED_IF,
+ "Node has unexpected IF with mapped IP"
+ )
del _c