Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Fix KeyError: 'pvid' in lldp.py #223

Open
wants to merge 2 commits into
base: master
Choose a base branch
from
Open

Fix KeyError: 'pvid' in lldp.py #223

wants to merge 2 commits into from

Conversation

illes
Copy link
Contributor

@illes illes commented Apr 26, 2022

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': {}}

```
lldp.eth0.vlan.vlan-id=300
lldp.eth0.vlan.pvid=yes
lldp.eth0.vlan=VLAN300
```
```
Version: lldpd 1.0.11
```

```
{'300': {'pvid': True}, 'VLAN300': {}}
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'
```
@rosberen
Copy link

rosberen commented Apr 26, 2022

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
main()
File "/opt/netbox_agent/netbox_agent/cli.py", line 50, in main
return run(config)
File "/opt/netbox_agent/netbox_agent/cli.py", line 43, in run
server.netbox_create_or_update(config)
File "/opt/netbox_agent/netbox_agent/server.py", line 413, in netbox_create_or_update
self.network.create_or_update_netbox_network_cards()
File "/opt/netbox_agent/netbox_agent/network.py", line 443, in create_or_update_netbox_network_cards
ret, interface = self.reset_vlan_on_interface(nic, interface)
File "/opt/netbox_agent/netbox_agent/network.py", line 248, in reset_vlan_on_interface
pvid_vlan = [key for (key, value) in lldp_vlan.items() if value['pvid']]
File "/opt/netbox_agent/netbox_agent/network.py", line 248, in
pvid_vlan = [key for (key, value) in lldp_vlan.items() if value['pvid']]
KeyError: 'pvid'

@illes
Copy link
Contributor Author

illes commented Apr 29, 2022

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.

@cyrinux
Copy link
Collaborator

cyrinux commented Nov 14, 2022

@illes @rosberen sorry for the delay, is this PR ready for you ?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants