fix: WireGuard peers keep their tunnel key when others come and go (#32)
driver / lint (pull_request) Successful in 17s
driver / standard (pull_request) Failing after 17s
driver / test (3.10) (pull_request) Failing after 3s
driver / test (3.11) (pull_request) Failing after 6s
driver / types (pull_request) Successful in 1m2s
driver / lowest (pull_request) Successful in 59s
driver / test (3.13) (pull_request) Successful in 1m39s
driver / test (3.12) (pull_request) Successful in 1m42s
driver / build (pull_request) Successful in 29s
driver / security (pull_request) Successful in 1m11s
CI / driver (pull_request) Failing after 3m12s
driver / publish (pull_request) Skipped

get_vpn_tunnels() keyed WireGuard peers with a running counter over the
peer rows, so a peer added ahead of an existing one renumbered every peer
after it. Whatever a consumer stores per key moved with it: netOrk's site
link and tunnel check ended up on a new, offline peer and alarmed while the
real tunnel was up.

The key is now the interface and the start of the public key, as in
napalm-linux, made URL-safe because the key is a path segment. Two peers
sharing the prefix get the whole key; a row without a public key keeps its
position. IPsec and OpenVPN keys were already stable.

Every WireGuard key changes once; netOrk carries its
per-tunnel metadata across (netork#1654).
This commit is contained in:
Christian Manivong committed 2026-10-27 09:20:30 +01:00
1 parent 63ce6e78bd
commit 9f45952605
3 files changed
+137 -3

No files matched your search

+6
View File
@@ -6,6 +6,12 @@ All notable changes to this driver. The format follows
## [Unreleased]
### Fixed
- `get_vpn_tunnels()` keys a WireGuard peer by its interface and the start of its
public key (`wireguard-wg0-aBcD1234`, URL-safe) instead of its position, so a peer
added ahead of another no longer renumbers it (#32). Every WireGuard key changes
once with this release.
## [0.5.0] - 2026-10-23
The first release on PyPI.