feat(proxmox): implement full feature parity with snapshot and network CRUD #131

Merged
sarman merged 4 commits from fix/proxmox-full-parity into beta 2026-06-22 02:52:06 +00:00

4 Commits

Author SHA1 Message Date
Shaun Arman
b1f9727e02 fix(proxmox): replace window.prompt with CloneDialog in VMList
Some checks failed
PR Review Automation / review (pull_request) Has been cancelled
Test / frontend-typecheck (pull_request) Has been cancelled
Test / frontend-tests (pull_request) Has been cancelled
Test / rust-fmt-check (pull_request) Has been cancelled
Test / rust-clippy (pull_request) Has been cancelled
Test / rust-tests (pull_request) Has been cancelled
Addresses PR review suggestion: window.prompt() blocks the UI thread and
doesn't match the app's dialog patterns. Replaced with a React Dialog
consistent with MigrationDialog and SnapshotDialog already in the same file.

CloneDialog takes pre-filled VMID (max+1) and name (source-clone), validates
both fields, and calls clone_vm via invoke with loading state on the button.
2026-06-21 21:50:59 -05:00
Shaun Arman
76d923a570 feat(proxmox): ISO upload, full CRUD validation, and security hardening
Some checks failed
Test / frontend-tests (pull_request) Successful in 1m40s
Test / frontend-typecheck (pull_request) Successful in 1m49s
PR Review Automation / review (pull_request) Successful in 6m0s
Test / rust-clippy (pull_request) Has been cancelled
Test / rust-tests (pull_request) Has been cancelled
Test / rust-fmt-check (pull_request) Has been cancelled
- Add ISO upload via OS file picker: multipart POST to nodes/{node}/storage/{storage}/upload,
  returns task UPID; Upload ISO button in CreateVmDialog triggers dialog filtered to .iso files
- Add cluster/datacenter selector to CreateVmDialog (shown when >1 cluster configured)
- Replace ISO text input with dropdown populated from listIsoImages; falls back to text input
  when storage has no ISOs
- Rewrite NetworkPage with full CRUD: add/edit/delete interfaces via dialog, Checkbox toggles
  for active/autostart, per-row Edit/Delete buttons
- Fix serde_bool_as_int deserializer to accept both bool and integer using visitor pattern
- Fix Content-Type conflict: remove pre-set header from build_headers(), let .json()/.form()
  manage it (root cause of 400 Bad Request on VM start/migrate)
- Fix migration: remove invalid targetcluster/targetstorage params, switch to JSON body
- Security: wire validate_pve_identifier() into all 9 path-interpolating commands
  (list/create/update/delete network interfaces, all 4 snapshot commands, list/upload ISO)
  — previously only create_proxmox_vm was guarded
- Add post_multipart() method to ProxmoxClient for multipart form-data requests
- Add uploadIsoImage TypeScript wrapper and update proxmoxClient exports
- Update IPC-Commands wiki with all new and previously undocumented commands
2026-06-21 21:41:57 -05:00
Shaun Arman
e6ec3a46e2 feat: integrate SnapshotDialog and remove duplicate NetworkInterfaceConfig
All checks were successful
Test / frontend-tests (pull_request) Successful in 1m38s
Test / frontend-typecheck (pull_request) Successful in 1m50s
PR Review Automation / review (pull_request) Successful in 5m41s
Test / rust-fmt-check (pull_request) Successful in 12m11s
Test / rust-clippy (pull_request) Successful in 13m35s
Test / rust-tests (pull_request) Successful in 15m39s
- Add React-based SnapshotDialog for create/list/rollback/delete operations
- Replace blocking window.prompt/confirm with proper React components
- Remove duplicate NetworkInterfaceConfig struct from proxmox.rs
- Import NetworkInterfaceConfig from crate::proxmox::network instead
- All 448 Rust tests passing, all 405 frontend tests passing
- Zero clippy warnings, zero TypeScript errors, zero ESLint issues
2026-06-21 20:54:31 -05:00
Shaun Arman
9808417b44 feat(proxmox): implement full feature parity with snapshot and network CRUD
All checks were successful
Test / frontend-tests (pull_request) Successful in 1m43s
Test / frontend-typecheck (pull_request) Successful in 1m54s
PR Review Automation / review (pull_request) Successful in 6m6s
Test / rust-fmt-check (pull_request) Successful in 13m13s
Test / rust-clippy (pull_request) Successful in 14m25s
Test / rust-tests (pull_request) Successful in 16m28s
- Fix compilation errors in create_vm and clone_vm functions
- Add snapshot operations (list, create, delete, rollback)
- Add network interface CRUD operations
- Update VMList to use actual snapshot functions
- Add TypeScript bindings for all new commands
- All 448 Rust tests and 405 frontend tests passing

Resolves all 6 Proxmox issues for full DCM parity
2026-06-21 20:04:28 -05:00