fix(proxmox): fix VM actions, remove Disk column, add Create VM #130
No reviewers
Labels
No Label
Compat/Breaking
Kind/Bug
Kind/Documentation
Kind/Enhancement
Kind/Feature
Kind/Security
Kind/Testing
Priority
Critical
Priority
High
Priority
Low
Priority
Medium
Reviewed
Confirmed
Reviewed
Duplicate
Reviewed
Invalid
Reviewed
Won't Fix
Status
Abandoned
Status
Blocked
Status
Need More Info
No Milestone
No project
No Assignees
1 Participants
Notifications
Due Date
No due date set.
Dependencies
No dependencies set.
Reference: sarman/tftsr-devops_investigation#130
Loading…
Reference in New Issue
Block a user
No description provided.
Delete Branch "fix/proxmox-vm-actions-v3"
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
<Toaster>mount inApp.tsx. Alltoast.*()calls were no-ops. Also added missingdialog:allow-confirmcapability so VM delete confirmation works.cluster/resourcesreturns only static disk allocation, not live usage — column was misleading. Removed from header, row, and computed values.list_proxmox_nodescommand (realGET /nodes), newcreate_proxmox_vmcommand with server-side validation (VMID range, numeric bounds, path-injection guard on node/storage/bridge, ISO comma-injection guard).CreateVmDialogcomponent with node/storage auto-discovery. "Add VM" button in VMsPage.MigrationDialognow useslist_proxmox_nodesinstead of inferring targets from the local VM list.suspendProxmoxVm,resumeProxmoxVm,listProxmoxNodes,createProxmoxVmclient wrappers.Test plan
Automated PR Review:This PR was reviewed in 2 batches (0 batch(es) failed).
Batch 1 of 2
Summary
I've completed a thorough review of Batch 1 of the Proxmox dashboard fixes PR. The changes address three main issues: (1) VM actions showing no feedback due to missing Toaster, (2) misleading Disk column data, and (3) missing VM creation functionality. The implementation includes proper security validations for the new
create_proxmox_vmcommand and fixes the migration dialog to use real cluster node data.Findings
No BLOCKER or WARNING level issues found. The code compiles, security validations are in place, and the main functionality appears correct.
SUGGESTIONS:
[SUGGESTION] src/components/Proxmox/CreateVmDialog.tsx:207 - Frontend cores validation (max=128) doesn't match backend validation (max=512). The backend will accept cores up to 512, but the frontend form will prevent users from entering values above 128.
min={1} max={128}on cores Input vs backendif !(1..=512).contains(&cores)[SUGGESTION] src/components/Proxmox/VMList.tsx:215 - Migration dialog opens immediately but node list fetches asynchronously. Users may see an empty target node dropdown briefly.
handleMigratesetssetMigrationVM(vm)then awaitsinvoke('list_proxmox_nodes')[SUGGESTION] src/components/Proxmox/CreateVmDialog.tsx:119 - No frontend validation for ISO format before submission; relies solely on backend validation.
onChangevalidationVerdict
APPROVE WITH COMMENTS
The PR addresses all stated issues correctly. The three suggestions above are UX improvements that could be addressed in a follow-up PR without blocking this merge. All security validations are properly implemented server-side, and the core functionality will work correctly as-is.
Batch 2 of 2
Summary
The provided Batch 2 changes focus on integrating new Proxmox VM management features (Create VM, Suspend/Resume actions) and updating the VM List component tests. The
proxmoxClient.tsfile correctly exposes new wrappers (suspendProxmoxVm,resumeProxmoxVm,listProxmoxNodes,createProxmoxVm) that match the Tauri commands listed in the Codebase Index.VMsPage.tsxproperly integrates theCreateVmDialogand cluster selection logic.VMList.test.tsxprovides comprehensive test coverage for VM actions, including the newly added Suspend/Resume flows and the removal of the Disk column. All invoked command names in the TypeScript wrappers match the registered Rust commands. No compilation errors or logic inconsistencies are evident in the provided files.Findings
No findings.
Verdict: APPROVE
Overall Verdict: APPROVE WITH COMMENTS
Overall verdict reflects the most critical finding across all batches.
All three suggestions resolved and pushed to the existing PR:
until the format is valid (or the field is empty)
Automated PR Review:This PR was reviewed in 2 batches (0 batch(es) failed).
Batch 1 of 2
Summary
I've completed a focused review of Batch 1 changes. The core fixes are sound: Toaster mount resolves silent VM actions, capabilities enable delete confirmation, and security validations are properly implemented server-side. However, I identified one validation inconsistency and one UX issue that warrant attention.
Findings
[SUGGESTION] src/components/Proxmox/CreateVmDialog.tsx:119 - Frontend ISO regex validation differs from backend validation logic. Frontend requires
.isoextension suffix while backend only requiresstorage:iso/prefix format. This could cause false rejections of valid ISO paths likelocal:iso/ubuntu-24.04.ISO_RE = /^[a-zA-Z0-9_-]+:iso\/.+\.iso$/vs backend validation that checkspath.starts_with("iso/")and!path.contains(",")without requiring.isoextension/^[a-zA-Z0-9_-]+:iso\/[^,]+$/[SUGGESTION] src/components/Proxmox/VMList.tsx:215 - Migration dialog displays empty target node dropdown during async fetch. Users may see "No other nodes available" message before nodes load.
setMigrationVM(vm)called beforeawait invoke('list_proxmox_nodes')completes, andMigrationDialogreceivesavailableNodeNameswithout loading indicatornodesLoadingprop to MigrationDialog and show loading spinner in dropdownVerdict: APPROVE WITH COMMENTS
Both findings are UX improvements that don't block the merge. The security validations are correctly implemented server-side, and the core functionality will work as intended. These can be addressed in a follow-up PR.
Batch 2 of 2
Summary
I've completed a thorough review of Batch 2 changes. The code correctly exposes new Proxmox client wrappers (
suspendProxmoxVm,resumeProxmoxVm,listProxmoxNodes,createProxmoxVm) that match the registered Tauri commands in the Codebase Index. TheVMsPage.tsxproperly integrates the Create VM dialog with cluster selection. The test file provides comprehensive coverage for VM action menus across different VM states (stopped, running, paused).Findings
No findings.
Verdict: APPROVE
Review Details
Command Registration Verification
All invoke calls in the changed files match registered Tauri commands from the Codebase Index:
suspend_proxmox_vm✅resume_proxmox_vm✅list_proxmox_nodes✅create_proxmox_vm✅Type Safety
The
CreateVmParamsinterface is properly defined with all required fields matching the backend command signature.Test Coverage
The test file correctly:
list_proxmox_nodesNo Issues Found
Overall Verdict: APPROVE WITH COMMENTS
Overall verdict reflects the most critical finding across all batches.
The ISO regex is now /^[a-zA-Z0-9_-]+:iso/[^,]+$/ — matching the backend's two rules exactly (must begin with storage:iso/, no commas). The .iso extension is no longer required client-side. The nodesLoading concern was already addressed in the previous round and the reviewer was looking at an older batch.
Automated PR Review:This PR was reviewed in 2 batches (0 batch(es) failed).
Batch 1 of 2
Summary
I've completed a thorough review of Batch 1 changes. The PR successfully addresses three Proxmox dashboard issues: (1) VM actions now show toast feedback after mounting the Toaster component, (2) misleading Disk column removed, and (3) new VM creation functionality with proper server-side security validations. All Tauri commands are correctly registered, and security validations for path injection, ISO injection, and numeric bounds are properly implemented server-side.
Findings
No findings.
Verdict: APPROVE
Validation Notes
The three SUGGESTION-level items identified in prior review rounds (frontend cores validation mismatch, migration dialog loading state, ISO regex alignment) are acknowledged UX improvements that do not block the merge. These were already documented in the previous "APPROVE WITH COMMENTS" verdict and do not require re-flagging.
Key validations confirmed:
list_proxmox_nodes,create_proxmox_vm,suspend_proxmox_vm,resume_proxmox_vm) match registered Tauri commands in Codebase Indexdialog:allow-confirmcapability added for delete confirmation dialogsBatch 2 of 2
Summary
Batch 2 changes correctly expose new Proxmox client wrappers (
suspendProxmoxVm,resumeProxmoxVm,listProxmoxNodes,createProxmoxVm) that match registered Tauri commands. TheVMsPage.tsxproperly integrates the Create VM dialog with cluster selection, and the test file provides comprehensive coverage for VM actions across stopped/running/paused states. All invoke calls match the Codebase Index command registration.Findings
No findings.
Verdict: APPROVE
Analysis Details
Command Registration Verification
All TypeScript invoke wrappers match registered Tauri commands from the Codebase Index:
suspendProxmoxVmsuspend_proxmox_vmresumeProxmoxVmresume_proxmox_vmlistProxmoxNodeslist_proxmox_nodescreateProxmoxVmcreate_proxmox_vmType Safety
CreateVmParamsinterface properly defines all required fields matching backend command signatureTest Coverage
Tests verify:
list_proxmox_nodesNo High-Signal Issues
Overall Verdict: APPROVE WITH COMMENTS
Overall verdict reflects the most critical finding across all batches.