-
napalm-proxmox 0.8.0
Stabledriver / lint (push) Successful in 17sdriver / standard (push) Successful in 17sdriver / types (push) Successful in 1m8sdriver / test (3.11) (push) Successful in 1m23sdriver / test (3.10) (push) Successful in 1m26sdriver / test (3.12) (push) Successful in 1m14sdriver / lowest (push) Successful in 42sdriver / test (3.13) (push) Successful in 1m9sdriver / build (push) Successful in 32sdriver / security (push) Successful in 1m10sdriver / publish (push) Successful in 32sCI / driver (push) Successful in 4m6sreleased this
2026-10-24 15:06:57 +00:00 | 0 commits to main since this releaseThe first release on PyPI. It collects everything since 0.1.0.
Changed
- The driver follows the NAPALM driver standard
(https://git.netork.io/NAPALM/driver-standard): CI on Gitea runs ruff, mypy, the
tests on Python 3.10–3.13 and at the lowest declared versions, bandit, pip-audit and
a build check, and a release tag publishes to PyPI. The package now shipspy.typed.
Python 3.9 is no longer supported; napalm-device-types never ran on it. - Exceptions the driver deliberately ignores (closing the node's SSH session, the
is_alive()probe) are now logged at debug level. - The project links point at git.netork.io.
Added
- apt's proxy (napalm-device-types'
AptProxyMixin, NetOrk/netork#1397):get_package_proxy(),get_package_proxy_report(),check_package_proxy(url, expect)and the fixconfigure_package_proxy(url), as on any Debian host. The node is logged in as root, so the file is written and other proxy lines are commented out over the exec path. Requires napalm-device-types 4.22.0; version 0.7.0. get_service_packages()(napalm-device-types'ServicePackagesMixin, NetOrk/netork#1236): which installed packages each systemd unit of the node is made of — the one shipping its unit file and the one shipping itsExecStartbinary. Read-only, over the exec path. Requires napalm-device-types 4.20.0; version 0.6.0.
Security
- The node's SSH session (the fallback for node commands and the provisioning steps) verifies its host key (NetOrk/netork#1167): the key the caller expects for port 22 in
optional_args["ssh_host_keys"], else the first one; every key seen goes tooptional_args["ssh_host_key_observer"]. A changed key is refused before any login: a provisioning step fails, a best-effort read returns nothing. Both paths now share one session (_node_ssh). Replaces paramiko'sAutoAddPolicy. Requires napalm-device-types 4.19.0; version 0.5.0.
Changed
- Breaking:
get_device_warningsis gone; the node reports facts and the caller
names the warnings (netOrk #1111). lldpd and the pending updates were already facts
(get_packages,get_available_updates). The subscription is now
get_licenses()(napalm-device-types 4.14LicenseMixin): onepve-subscription
entry with the API's status as aLicenseStatus(notfound→none,newand
suspended→unknown), its message asdetail, product name and due date when
subscribed. The old check compared againstNotFoundwhile the API answers
notfound, so it never fired. Requires napalm-device-types 4.14.0; version 0.4.0. - Breaking:
run_device_action(fix_snmp,install_lldpd) is gone. The driver
implements napalm-device-types 4.13's fix templates:configure_snmp_agent(settings)
with the caller's community and allowed sources (onerocommunityline each, ufw only
for those sources, no fixed temp file),get_management_peer(), and
install_package(name)as the contract says, soensure_packagecomes from the base
package. Every step reads its exit status. Requires napalm-device-types 4.13.0;
version 0.3.0.
Added
get_system_identity()(napalm-device-types 4.9SystemIdentityMixin): the node's SMBIOS
system UUID, product serial and board serial over the exec path, vendor placeholders
empty. netOrk matches a server to its BMC on these. Requires napalm-device-types 4.9.0;
version 0.2.0.- FreeBSD and OpenBSD guests:
create_vm_from_cloud_init(guest_os=...)with
GUEST_AGENTSfrom napalm-device-types 3.0. A BSD guest gets OS type
otherand a network-config v2 snippet of its own (cicustom network=),
because FreeBSD's nuageinit skips runcmd on the v1 Proxmox generates.
OpenBSD's agent runs over ISA serial behindserial0, as the image keeps
its console on com0. An unknownguest_osis refused before anything is
created. - Packed cloud images (FreeBSD's
.qcow2.xz) are unpacked on the node after
the packed file's checksum is verified; only the unpacked file is cached.
Proxmox'sdownload-urlunpacks ISOs only, so they always go over SSH.
Fixed
get_vm_statusno longer reports a loopback address as the VM's IP when
the agent lists loopback under another name thanlo(lo0on the BSDs,
listed first by OpenBSD).destroy_vmreads the VM's cloud-init snippets before deleting the VM, and
removes all of them; it read them afterwards, when the config was gone (#15).- Cloud images for
create_vm_from_cloud_initare downloaded by Proxmox itself
when the node has an active storage with content typeimport(Proxmox
8.2+):download-urlwith checksum verification, thenimport-fromas the
root disk. The image no longer passes through the node's root filesystem.
Files are namednetork-<url hash>-<name>.<qcow2|raw|vmdk>and reused;
Ubuntu's.imgis stored as.qcow2. Without such a storage, or for an
image type Proxmox cannot import, the SSH download into
/var/lib/vz/template/netork-imagesis used as before. HypervisorDrivercontract methodsstart_vm,stop_vm,reboot_vm,
suspend_vmandget_vm_config. They accept a VM's name or vmid, raise
ValueError/RuntimeErrorinstead of returning a result dict, and wait
for the Proxmox task to finish.power_vmis unchanged.- Snapshot methods
get_vm_snapshots,create_vm_snapshot,
delete_vm_snapshot,rollback_vm_snapshotfor VMs and containers
(containers never save RAM state). reboot_host()restarts the node through the API instead of SSH.
Changed
get_vms()reportsvmidas a string ("100"), following
napalm-device-types 2.0. Ordering stays numeric.
Downloads
- The driver follows the NAPALM driver standard