Commit Graph

3 Commits

Author SHA1 Message Date
Stefan Hacker a08efb3795 Chunked upload for large OVAs
The Convert tab now slices the OVA into 16 MiB chunks and PUTs them
with an offset parameter instead of one multipart POST. Avoids the
temp-file double-copy and tmpfs exhaustion that broke uploads of very
large (>50 GiB) appliances.

- POST /api/uploads creates an upload session, GET/PUT/DELETE manage
  a partial file written directly in upload_dir (seek+write, no copy)
- POST /api/jobs now accepts JSON {upload_id, vmid, storage} to
  finalize the chunked upload; multipart form path kept for CLI/curl
- Client: File.slice() loop with per-chunk XHR, progress bar driven by
  bytes sent / total, partial files resumable via upload_id

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-21 13:27:57 +02:00
Stefan Hacker dcbc957334 Add ova2vzdump: OVA -> Proxmox vzdump (.vma.zst) converter
Dockerized converter that turns VirtualBox/VMware OVA appliances into
native Proxmox vzdump backups restorable via qmrestore, without needing
a PVE host.

- OVF parser (CPU/RAM/disks/NICs, SCSI/SATA/IDE controllers)
- Streaming OVA extractor
- qemu-server.conf generator with required #qmdump#map lines
- Orchestrator: qemu-img convert -> vma create -> zstd
- Click CLI: convert, create-test-ova, gui subcommands
- Flask web UI with Convert + Create-test-OVA tabs, SSE progress
- Dockerfile: Debian bookworm + pve-no-subscription for vma/qemu-img,
  pre-caches Alpine tiny raw image (sha512-verified) for bootable
  test-OVA generation
- End-to-end verified: generated OVA imports into VirtualBox, converted
  vzdump restores on Proxmox and the VM boots

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-21 12:50:04 +02:00
Stefan Hacker 5fe65d6b44 first commit 2026-04-21 12:49:04 +02:00