From 37cae84cd2288c152ba8d6953e53283a17aa8a7f Mon Sep 17 00:00:00 2001 From: Kevin Adams Date: Mon, 31 Aug 2026 08:56:30 -0400 Subject: [PATCH] docs: confirm zfs.snapshot.* live-tested -- WS write path fully verified Full volume_snapshot/_info/_rollback/_delete cycle against .92 succeeded with zero param-shape issues on the first try. Every API call this plugin makes over the WebSocket transport is now live-verified. See ADR-012. Co-Authored-By: Claude Sonnet 5 --- perl5/PVE/Storage/Custom/TrueNAS.pm | 21 ++++++++++----------- 1 file changed, 10 insertions(+), 11 deletions(-) diff --git a/perl5/PVE/Storage/Custom/TrueNAS.pm b/perl5/PVE/Storage/Custom/TrueNAS.pm index 2110ed5..bb8317d 100644 --- a/perl5/PVE/Storage/Custom/TrueNAS.pm +++ b/perl5/PVE/Storage/Custom/TrueNAS.pm @@ -16,17 +16,16 @@ package PVE::Storage::Custom::TrueNAS; # plugin has no way to know for an arbitrary API key (ADR-012). # iSCSI: QEMU libiscsi (iscsi:// paths) — no iscsiadm session management # -# WARNING: the WebSocket transport (_api_ws, _ws_connect, _ws_call) has been -# live-verified for every *read* (query) call this plugin makes (ADR-012, -# four runs across three TrueNAS SCALE versions incl. 25.04.2.6), and for a -# full alloc_image/path/volume_size_info/free_image cycle against .92 -# (2026-08-31) — zvol, extent, target, targetextent create AND delete all -# confirmed leaving zero orphans. Two real bugs were caught and fixed doing -# that (see ADR-012): missing int() on regex-captured ids, and -# iscsi.extent.delete's positional (id, remove, force) signature, which is -# NOT (id, {force=>bool}). Still entirely untested against the WS transport: -# zfs.snapshot.* (create/delete/rollback/query) — verify before trusting -# volume_snapshot* operations in production on SCALE 25.04+. +# NOTE: every API call this plugin makes over the WebSocket transport +# (_api_ws, _ws_connect, _ws_call) has been live-verified against a real +# TrueNAS SCALE host (.92, 25.04.2.6) as of 2026-08-31 — see ADR-012 for the +# full history. Covered: every read (query) call, a complete +# alloc_image/path/volume_size_info/free_image cycle (target/extent/ +# targetextent/dataset create+delete, zero orphans left behind), and a full +# snapshot cycle (volume_snapshot/_info/_rollback/_delete). Two real bugs +# were caught and fixed along the way (see ADR-012): missing int() on +# regex-captured ids, and iscsi.extent.delete's positional +# (id, remove, force) signature, which is NOT (id, {force=>bool}). # # Per-VM target architecture: # Each VM gets its own iSCSI target (proxmox-vm-).