get_dhcp_leases() (napalm_opnsense/opnsense.py, ~L1309-1385) tries Kea, then ISC, then the ARP table as a fallback. When all three fail, the last except logs and returns [].
netOrk is changing its poll so that a failed read (None / exception) keeps the stored leases and an empty list means "the server has no leases" and clears them (NetOrk/netork#1189). With the current driver, an outage of the firewall's API during a poll would then delete every stored lease of that firewall.
Fix: raise (e.g. RuntimeError naming all three failures) when no source could be read; return [] only when a source answered and had nothing. Note that Kea/ISC answering [] currently falls through to the ARP fallback — keep that behaviour unless a source answered successfully with no leases and the others failed; document the decision in the docstring.
**Priority: P2** (important and urgent — blocks NetOrk/netork#1189).
`get_dhcp_leases()` (`napalm_opnsense/opnsense.py`, ~L1309-1385) tries Kea, then ISC, then the ARP table as a fallback. When all three fail, the last `except` logs and returns `[]`.
netOrk is changing its poll so that a failed read (`None` / exception) keeps the stored leases and an empty list means "the server has no leases" and clears them (NetOrk/netork#1189). With the current driver, an outage of the firewall's API during a poll would then delete every stored lease of that firewall.
**Fix:** raise (e.g. `RuntimeError` naming all three failures) when no source could be read; return `[]` only when a source answered and had nothing. Note that Kea/ISC answering `[]` currently falls through to the ARP fallback — keep that behaviour unless a source answered successfully with no leases and the others failed; document the decision in the docstring.
Found during NetOrk/netork#1189 (2026-10-21).
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
Priority: P2 (important and urgent — blocks NetOrk/netork#1189).
get_dhcp_leases()(napalm_opnsense/opnsense.py, ~L1309-1385) tries Kea, then ISC, then the ARP table as a fallback. When all three fail, the lastexceptlogs and returns[].netOrk is changing its poll so that a failed read (
None/ exception) keeps the stored leases and an empty list means "the server has no leases" and clears them (NetOrk/netork#1189). With the current driver, an outage of the firewall's API during a poll would then delete every stored lease of that firewall.Fix: raise (e.g.
RuntimeErrornaming all three failures) when no source could be read; return[]only when a source answered and had nothing. Note that Kea/ISC answering[]currently falls through to the ARP fallback — keep that behaviour unless a source answered successfully with no leases and the others failed; document the decision in the docstring.Found during NetOrk/netork#1189 (2026-10-21).