Fix KeyError: 'pvid' in lldp.py #223
4 changed files with 19 additions and 2 deletions
|
@ -37,7 +37,7 @@ class LLDP():
|
|||
vid = value
|
||||
vlans[interface][value] = vlans[interface].get(vid, {})
|
||||
elif path.endswith('vlan'):
|
||||
vid = value.replace('vlan-', '')
|
||||
vid = value.replace('vlan-', '').replace('VLAN', '')
|
||||
vlans[interface][vid] = vlans[interface].get(vid, {})
|
||||
elif 'pvid' in path:
|
||||
vlans[interface][vid]['pvid'] = True
|
||||
|
|
|
@ -245,7 +245,7 @@ class Network(object):
|
|||
interface.untagged_vlan = None
|
||||
# Finally if LLDP reports a vlan-id with the pvid attribute
|
||||
elif lldp_vlan:
|
||||
pvid_vlan = [key for (key, value) in lldp_vlan.items() if value['pvid']]
|
||||
pvid_vlan = [key for (key, value) in lldp_vlan.items() if value.get('pvid')]
|
||||
if len(pvid_vlan) > 0 and (
|
||||
interface.mode is None or
|
||||
interface.mode.value != self.dcim_choices['interface:mode']['Access'] or
|
||||
|
|
7
tests/fixtures/lldp/223.txt
vendored
Normal file
7
tests/fixtures/lldp/223.txt
vendored
Normal file
|
@ -0,0 +1,7 @@
|
|||
lldp.eth0.vlan.vlan-id=300
|
||||
lldp.eth0.vlan.pvid=yes
|
||||
lldp.eth0.vlan=VLAN300
|
||||
|
||||
# PVID is optional
|
||||
lldp.eth1.vlan.vlan-id=300
|
||||
lldp.eth1.vlan=VLAN300
|
|
@ -18,3 +18,13 @@ def test_lldp_parse_with_port_desc(fixture):
|
|||
def test_lldp_parse_without_ifname(fixture):
|
||||
lldp = LLDP(fixture)
|
||||
assert lldp.get_switch_port('eth0') == 'xe-0/0/1'
|
||||
|
||||
|
||||
@parametrize_with_fixtures(
|
||||
'lldp/', only_filenames=[
|
||||
'223.txt',
|
||||
])
|
||||
def test_lldp_parse_with_vlan(fixture):
|
||||
lldp = LLDP(fixture)
|
||||
assert lldp.get_switch_vlan('eth0') == {'300': {'pvid': True}}
|
||||
assert lldp.get_switch_vlan('eth1') == {'300': {}}
|
||||
|
|
Loading…
Reference in a new issue