iSCSI support, audit wizard, CSV improvements, bug fixes #1
Reference in New Issue
Block a user
No description provided.
Delete Branch "devel"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Summary
DELETErequired for data-destructive operations).id_mapwith placeholder IDs during dry run so downstream objects (targets, target-extents) can remap references without cascading failures.path_localfield from create payloads (rejected by TrueNAS 25.x with EINVAL).csv_source.py.Test plan
path_localerrors🤖 Generated with Claude Code
client.py: - check_iscsi_zvols(): queries pool.dataset.query for VOLUME type, returns list of missing zvol names - create_zvol(): creates a single zvol via pool.dataset.create - create_missing_zvols(): opens a fresh connection and creates a batch of zvols from a {name: volsize_bytes} dict summary.py: - Add zvols_to_check and missing_zvols list fields - Report shows a WARNING block listing missing zvols when present migrate.py: - _migrate_iscsi_extents() populates summary.zvols_to_check with the dataset name for each DISK-type extent during dry run cli.py: - Add _parse_size() to parse human-friendly size strings (100G, 500GiB, 1T, etc.) to bytes - run() calls check_iscsi_zvols() during dry run and stores results in summary.missing_zvols - Wizard prompts for size and creates missing zvols after the dry run report, before asking the user to confirm the live run Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>The TrueNAS API rejects port inside listen array items (iscsi_portal_create.listen.0.port: Extra inputs are not permitted). Port is a global iSCSI setting, not per-listen-IP. - _iscsi_portal_payload(): strip port from each listen entry, keeping only {"ip": "..."} - _prompt_iscsi_portals(): remove port prompt from wizard; show source IPs without port in the display Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>