Merge pull request 'fix(smoke): reuse existing PVE-side ISO instead of delete+re-upload' (#5) from fix-smoke-reuse-iso into main
Some checks failed
CI / validate-json (push) Waiting to run
CI / markdown-links (push) Waiting to run
Build ISO / build-iso (push) Has been cancelled
CI / lint (push) Has been cancelled
CI / test (push) Has been cancelled

Reviewed-on: #5
This commit is contained in:
daniel 2026-04-18 14:00:40 +02:00
commit cb6e92aa92

View file

@ -69,22 +69,21 @@ echo "==> node=$NODE sha=$SHORT_SHA iso=$(basename "$ISO_PATH")"
ISO_NAME="furtka-${SHORT_SHA}.iso" ISO_NAME="furtka-${SHORT_SHA}.iso"
VOLID="${ISO_STORAGE}:iso/${ISO_NAME}" VOLID="${ISO_STORAGE}:iso/${ISO_NAME}"
# --- Step 1: upload ISO ---------------------------------------------------- # --- Step 1: upload ISO (or reuse if same SHA already on PVE) ---------------
# PVE's upload endpoint errors if the file exists. Delete first so re-runs # For a given commit SHA the ISO bytes are reproducible, so if furtka-<sha>.iso
# on the same SHA (e.g. workflow re-dispatch) work. # is already in PVE storage from a prior smoke run we reuse it and skip the
# upload. Avoids DELETE-permission friction and shaves ~2 min off re-runs.
if api "$API/nodes/$NODE/storage/$ISO_STORAGE/content/$VOLID" \ if api "$API/nodes/$NODE/storage/$ISO_STORAGE/content/$VOLID" \
--output /dev/null 2>/dev/null; then --output /dev/null 2>/dev/null; then
echo "==> removing stale ISO $VOLID" echo "==> reusing existing ISO $VOLID"
api --request DELETE "$API/nodes/$NODE/storage/$ISO_STORAGE/content/$VOLID" \ else
--output /dev/null echo "==> uploading ISO as $ISO_NAME"
api --request POST "$API/nodes/$NODE/storage/$ISO_STORAGE/upload" \
--form "content=iso" \
--form "filename=@${ISO_PATH};filename=${ISO_NAME}" \
> /dev/null
fi fi
echo "==> uploading ISO as $ISO_NAME"
api --request POST "$API/nodes/$NODE/storage/$ISO_STORAGE/upload" \
--form "content=iso" \
--form "filename=@${ISO_PATH};filename=${ISO_NAME}" \
> /dev/null
# --- Step 2: pick a free VMID in the reserved range ------------------------ # --- Step 2: pick a free VMID in the reserved range ------------------------
# List VMs on the node, filter by range, pick the lowest integer not in use. # List VMs on the node, filter by range, pick the lowest integer not in use.
USED="$(api "$API/nodes/$NODE/qemu" | python3 -c ' USED="$(api "$API/nodes/$NODE/qemu" | python3 -c '