freenas-proxmox/.claude/cos/adrs/ADR-008-pve-version-support...

71 lines
3.0 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# ADR-008: PVE Version Support Matrix
**Date**: 2026-05-19
**Status**: Superseded by ADR-009
**Deciders**: Kevin Adams
## Context
Proxmox VE releases 8.4, 9.0, and 9.1 introduced storage-subsystem changes that
affect which PVE versions the plugin must support and under what constraints.
Specifically:
- **PVE 8.4** broke our existing `pvemanagerlib.js` patch (issue #223)
- **PVE 9.0** introduced Snapshot-as-Volume-Chains for thick-provisioned iSCSI
- **PVE 9.1** is the current stable release as of 2026-05-19
The plugin currently ships a single patch per major PVE version (7.x, 8.x).
Phase 3 (v3.0) eliminates all patches by using the proper `PVE::Storage::Custom`
plugin interface — but we need a clear decision on which PVE versions each release
series must support.
## Decision
### v2.x (current) — patch-based
| PVE version | Support level | Notes |
|-------------|--------------|-------|
| PVE 7.x | Best-effort | No active testing; patches ship but may lag |
| PVE 8.08.3 | Supported | Existing patch works |
| PVE 8.4.x | Supported (blocked) | pvemanagerlib.js patch broken — fix tracked in #223 |
| PVE 9.x | Not supported | pvemanagerlib.js too diverged; v3.0 is the answer |
v2.3.0 is the **last planned release to ship patched versions of PVE system files**.
It will support PVE 7 (best-effort) and PVE 8 (fully). PVE 9.x users should wait
for v3.0 or run v2.x in degraded mode (plugin works; UI dropdown may not show).
### v3.0.x — custom plugin, no patches
| PVE version | Support level | Notes |
|-------------|--------------|-------|
| PVE 8.x | Supported (core) | Custom plugin interface available since PVE 7 |
| PVE 9.0+ | Fully supported | Includes snapshot-as-volume-chains integration |
| PVE 7.x | Not supported | v3.0 requires API features not available in PVE 7 |
**Minimum supported PVE for v3.0: 8.x (core), 9.0 (snapshots).**
Snapshot support (`volume_snapshot`, `volume_snapshot_rollback`,
`volume_snapshot_delete`) requires PVE 9.0 Snapshot-as-Volume-Chains and will
be gated at runtime: the methods will be present but return an appropriate error
on PVE < 9.0.
## Consequences
- Issue #223 (pvemanagerlib.js PVE 8.4 fix) must ship in v2.3.0
- v3.0.0 must implement the full `PVE::Storage::Custom` interface including
`volume_snapshot*` methods (initially returning unsupported on PVE < 9.0)
- CI for v3.0 must test against both PVE 8.x and PVE 9.x targets
- The v3.0.0 milestone description and related issues should call out
PVE 9.0 as the target for snapshot feature parity
- PVE 9.x users stuck on v2.x should be documented in a known-limitations note
## Alternatives Considered
**Support PVE 9.x in v2.x via a new patch**: rejected pvemanagerlib.js diverged
significantly in 9.0; maintaining a third patch variant adds fragility without
addressing the root cause (patch-based approach).
**Make PVE 9.0 the minimum for v3.0**: rejected custom storage plugins work in
PVE 8.x and dropping 8.x support would leave a large user base with no upgrade
path until they upgrade PVE.