Groundwork for FreeBSD and OpenBSD guests in netOrk's VM provisioning (NetOrk/netork#794).
Change
HypervisorDriver.GUEST_AGENTS = {guest_os: (packages, runcmd)} replaces GUEST_AGENT_PACKAGES / GUEST_AGENT_RUNCMD. It stays class-level data, because netOrk reads it off the driver class without connecting. The keys are the guests a driver provisions; create_vm_from_cloud_init(guest_os=...) is documented to refuse any other with ValueError. The base keeps Linux with qemu-guest-agent.
New module provisioning:
QEMU_GUEST_AGENTS: Linux, FreeBSD (qemu-guest-agent, sysrc + service), OpenBSD (qemu-ga, rcctl), verified on FreeBSD 15.1 and OpenBSD 7.9 cloud images (NetOrk/netork#793).
network_config(): network-config v2 with MAC matching, moved here from napalm-vmware. FreeBSD's nuageinit reads only v2; on the v1 Proxmox generates it fails and skips runcmd.
README: a paragraph on GUEST_AGENTS and the module.
Version 3.0.0 (breaking: the two attributes are removed). napalm-vmware and netOrk are the only users; both follow in their own PRs.
Merge order
This one first. NAPALM/napalm-proxmox and NAPALM/napalm-vmware build against device-types main in CI, and netOrk pins all three afterwards.
Tests
tests/test_provisioning.py (new); the superseded TestGuestAgentDeclaration in test_vm_identifiers.py is removed. 399 passed.
Groundwork for FreeBSD and OpenBSD guests in netOrk's VM provisioning (NetOrk/netork#794).
## Change
- `HypervisorDriver.GUEST_AGENTS = {guest_os: (packages, runcmd)}` replaces `GUEST_AGENT_PACKAGES` / `GUEST_AGENT_RUNCMD`. It stays class-level data, because netOrk reads it off the driver class without connecting. The keys are the guests a driver provisions; `create_vm_from_cloud_init(guest_os=...)` is documented to refuse any other with ValueError. The base keeps Linux with qemu-guest-agent.
- New module `provisioning`:
- `QEMU_GUEST_AGENTS`: Linux, FreeBSD (`qemu-guest-agent`, `sysrc` + `service`), OpenBSD (`qemu-ga`, `rcctl`), verified on FreeBSD 15.1 and OpenBSD 7.9 cloud images (NetOrk/netork#793).
- `network_config()`: network-config v2 with MAC matching, moved here from napalm-vmware. FreeBSD's nuageinit reads only v2; on the v1 Proxmox generates it fails and skips runcmd.
- `split_compression()`: suffix → unpack command (`xz`, `gz`, `bz2`, `zst`).
- README: a paragraph on `GUEST_AGENTS` and the module.
- Version 3.0.0 (breaking: the two attributes are removed). napalm-vmware and netOrk are the only users; both follow in their own PRs.
## Merge order
This one first. NAPALM/napalm-proxmox and NAPALM/napalm-vmware build against device-types `main` in CI, and netOrk pins all three afterwards.
## Tests
`tests/test_provisioning.py` (new); the superseded `TestGuestAgentDeclaration` in `test_vm_identifiers.py` is removed. 399 passed.
GUEST_AGENT_PACKAGES / GUEST_AGENT_RUNCMD described one agent per
hypervisor. A hypervisor that provisions FreeBSD and OpenBSD guests needs
a different agent per guest, and netOrk has to know which guests a driver
can provision at all (NetOrk/netork#794). Both now come from one
class-level mapping netOrk reads off the driver class:
GUEST_AGENTS = {guest_os: (packages, runcmd)}
Its keys are the guests the driver provisions, and
create_vm_from_cloud_init(guest_os=...) refuses any other. The base keeps
Linux with qemu-guest-agent.
New module `provisioning`, generic for every hypervisor:
- QEMU_GUEST_AGENTS: the QEMU agent for Linux, FreeBSD and OpenBSD, with
package names and service commands verified on FreeBSD 15.1 and
OpenBSD 7.9 cloud images (NetOrk/netork#793).
- network_config(): cloud-init's network-config v2 with MAC matching,
moved here from napalm-vmware. FreeBSD's nuageinit reads no other
version.
- split_compression(): how a packed image (.xz, .gz, .bz2, .zst) is
unpacked.
BREAKING CHANGE: GUEST_AGENT_PACKAGES and GUEST_AGENT_RUNCMD are gone;
drivers declare GUEST_AGENTS instead.
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.
Groundwork for FreeBSD and OpenBSD guests in netOrk's VM provisioning (NetOrk/netork#794).
Change
HypervisorDriver.GUEST_AGENTS = {guest_os: (packages, runcmd)}replacesGUEST_AGENT_PACKAGES/GUEST_AGENT_RUNCMD. It stays class-level data, because netOrk reads it off the driver class without connecting. The keys are the guests a driver provisions;create_vm_from_cloud_init(guest_os=...)is documented to refuse any other with ValueError. The base keeps Linux with qemu-guest-agent.provisioning:QEMU_GUEST_AGENTS: Linux, FreeBSD (qemu-guest-agent,sysrc+service), OpenBSD (qemu-ga,rcctl), verified on FreeBSD 15.1 and OpenBSD 7.9 cloud images (NetOrk/netork#793).network_config(): network-config v2 with MAC matching, moved here from napalm-vmware. FreeBSD's nuageinit reads only v2; on the v1 Proxmox generates it fails and skips runcmd.split_compression(): suffix → unpack command (xz,gz,bz2,zst).GUEST_AGENTSand the module.Merge order
This one first. NAPALM/napalm-proxmox and NAPALM/napalm-vmware build against device-types
mainin CI, and netOrk pins all three afterwards.Tests
tests/test_provisioning.py(new); the supersededTestGuestAgentDeclarationintest_vm_identifiers.pyis removed. 399 passed.