Files
napalm-proxmox/CHANGELOG.md
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

60 lines
2.6 KiB
Markdown

# Changelog
All notable changes to this project will be documented in this file.
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
## [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