Fix false LLDP_MISMATCH: compare the switch's name with the server's lldpd neighbour
The switch port's LLDP entry describes the server, while the server's lldpctl describes the switch, so the two were never comparable and every link with lldpd running was flagged as cross-cabled. Pass the switch name in the port data and compare it with the server's neighbour instead; skip the check without it.
This commit is contained in:
+16
-1
@@ -473,12 +473,27 @@ class TestAnalyze:
|
||||
assert 'LLDP_MISSING' in codes
|
||||
|
||||
def test_lldp_mismatch_is_warning(self):
|
||||
# The server's lldpd sees a different switch than the one this port belongs to.
|
||||
sections = self._sections(lldpctl={'available': True, 'neighbor_system': 'wrong-switch'})
|
||||
switch_data = {'speed_mbps': 1000, 'lldp': {'system_name': 'core-sw-01'}}
|
||||
switch_data = {'speed_mbps': 1000, 'switch_name': 'core-sw-01', 'lldp': {'system_name': 'server-a'}}
|
||||
result = DiagnosticsRunner.analyze(sections, switch_data)
|
||||
codes = [w['code'] for w in result['warnings']]
|
||||
assert 'LLDP_MISMATCH' in codes
|
||||
|
||||
def test_lldp_match_is_not_a_warning(self):
|
||||
# Correct cabling: the switch sees the server, the server sees the switch.
|
||||
sections = self._sections(lldpctl={'available': True, 'neighbor_system': 'core-sw-01'})
|
||||
switch_data = {'speed_mbps': 1000, 'switch_name': 'core-sw-01', 'lldp': {'system_name': 'server-a'}}
|
||||
result = DiagnosticsRunner.analyze(sections, switch_data)
|
||||
codes = [w['code'] for w in result['warnings']]
|
||||
assert 'LLDP_MISMATCH' not in codes
|
||||
|
||||
def test_lldp_without_switch_name_skips_check(self):
|
||||
sections = self._sections(lldpctl={'available': True, 'neighbor_system': 'anything'})
|
||||
result = DiagnosticsRunner.analyze(sections, {'speed_mbps': 1000, 'lldp': {'system_name': 'server-a'}})
|
||||
codes = [w['code'] for w in result['warnings']]
|
||||
assert 'LLDP_MISMATCH' not in codes
|
||||
|
||||
def test_healthy_link_no_issues(self):
|
||||
result = DiagnosticsRunner.analyze(self._sections(), {})
|
||||
assert result['issues'] == []
|
||||
|
||||
Reference in New Issue
Block a user