netbox-agent
netbox-agent copied to clipboard
Fix KeyError: 'pvid' in lldp.py
lldp.eth0.vlan.vlan-id=300
lldp.eth0.vlan.pvid=yes
lldp.eth0.vlan=VLAN300
Version: lldpd 1.0.11
Traceback (most recent call last):
File "/root/.local/bin/netbox_agent", line 8, in <module>
sys.exit(main())
File "/root/.local/lib/python3.10/site-packages/netbox_agent/cli.py", line 44, in main
return run(config)
File "/root/.local/lib/python3.10/site-packages/netbox_agent/cli.py", line 39, in run
server.netbox_create_or_update(config)
File "/root/.local/lib/python3.10/site-packages/netbox_agent/server.py", line 292, in netbox_create_or_update
self.network.create_or_update_netbox_network_cards()
File "/root/.local/lib/python3.10/site-packages/netbox_agent/network.py", line 417, in create_or_update_netbox_network_cards
ret, interface = self.reset_vlan_on_interface(nic, interface)
File "/root/.local/lib/python3.10/site-packages/netbox_agent/network.py", line 234, in reset_vlan_on_interface
pvid_vlan = [key for (key, value) in lldp_vlan.items() if value['pvid']]
File "/root/.local/lib/python3.10/site-packages/netbox_agent/network.py", line 234, in <listcomp>
pvid_vlan = [key for (key, value) in lldp_vlan.items() if value['pvid']]
KeyError: 'pvid'
lldp_vlan := {'300': {'pvid': True}, 'VLAN300': {}}
Fix KeyError: 'pvid' in lldp.py #223 vid = value.replace('vlan-', '').replace('VLAN', '')
It still gives an error
Traceback (most recent call last):
File "/usr/lib64/python3.6/runpy.py", line 193, in _run_module_as_main
"main", mod_spec)
File "/usr/lib64/python3.6/runpy.py", line 85, in _run_code
exec(code, run_globals)
File "/opt/netbox_agent/netbox_agent/cli.py", line 54, in
You are right that KeyError: 'pvid'
can still happen, though not with the minimal example I provided. To catch that case, I added an example and tests.
@illes @rosberen sorry for the delay, is this PR ready for you ?