Files
Christian Manivong a13af149d9 feat(vm-provision): let Proxmox download cloud images into an import storage
Provisioning downloaded every cloud image over SSH into
/var/lib/vz/template/netork-images, on the node's root filesystem. On a
small root that fills up and takes Proxmox down with it (netOrk #480).

When the node has an active storage with content type "import" (Proxmox
8.2+), Proxmox now does it itself: download-url with checksum
verification into that storage, then import-from as the root disk. The
file is named after a hash of the full URL and reused when present.
Proxmox takes the format from the extension and has no ".img", so
Ubuntu's qcow2 .img is stored as .qcow2 -- a wrong guess fails at import
instead of attaching a qcow2 container as a raw disk.

Without an import storage, or for an image type Proxmox cannot import,
the SSH download is used as before.
2026-10-02 08:59:17 +02:00

2.6 KiB

Changelog

All notable changes to this project will be documented in this file.

The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.

[Unreleased]

Added

  • Cloud images for create_vm_from_cloud_init are downloaded by Proxmox itself when the node has an active storage with content type import (Proxmox 8.2+): download-url with checksum verification, then import-from as the root disk. The image no longer passes through the node's root filesystem. Files are named netork-<url hash>-<name>.<qcow2|raw|vmdk> and reused; Ubuntu's .img is stored as .qcow2. Without such a storage, or for an image type Proxmox cannot import, the SSH download into /var/lib/vz/template/netork-images is used as before.
  • HypervisorDriver contract methods start_vm, stop_vm, reboot_vm, suspend_vm and get_vm_config. They accept a VM's name or vmid, raise ValueError/RuntimeError instead of returning a result dict, and wait for the Proxmox task to finish. power_vm is unchanged.
  • Snapshot methods get_vm_snapshots, create_vm_snapshot, delete_vm_snapshot, rollback_vm_snapshot for VMs and containers (containers never save RAM state).
  • reboot_host() restarts the node through the API instead of SSH.

Changed

  • get_vms() reports vmid as a string ("100"), following napalm-device-types 2.0. Ordering stays numeric.

[0.1.0] - 2024-01-01

Added

  • Initial release of the Proxmox VE NAPALM driver
  • Support for classic Linux networking (/etc/network/interfaces, Linux bridges)
  • Support for Proxmox SDN (zones: VLAN, QinQ, VXLAN, EVPN; VNets and subnets)
  • Support for Open vSwitch (OVS) bridges, bonds, and internal ports
  • Password and API token authentication via proxmoxer
  • Implemented NAPALM methods:
    • open, close, is_alive
    • get_facts
    • get_interfaces, get_interfaces_ip, get_interfaces_counters
    • get_environment (CPU, memory, temperature sensors)
    • get_arp_table (via /proc/net/arp)
    • get_mac_address_table (Linux bridge fdb + OVS appctl)
    • get_vlans (SDN VNet tags + bridge vlan show)
    • get_network_instances (SDN zones as NAPALM network instances)
    • get_ntp_servers, get_ntp_stats
    • get_snmp_information
    • get_users
    • get_config, load_merge_candidate, load_replace_candidate
    • compare_config, commit_config, discard_config, rollback
    • get_lldp_neighbors, get_lldp_neighbors_detail
    • get_ipv6_neighbors_table
    • ping, traceroute, cli
    • get_route_to
  • 149 unit tests with ~79% code coverage
  • Full type annotations