Neuer Menüpunkt „Snapshots“: alle Snapshots aller Server anzeigen und per Masse löschen #15
Loading…
Reference in a new issue
No description provided.
Delete branch "%!s()"
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?
Problem
Snapshots lassen sich im Moment nur pro Server verwalten, über
SnapshotBadgebzw. den Snapshot-Dialog des jeweiligen Servers. Wer nach einer Update-Runde auf vielen VMs/LXCs aufräumen will, muss jeden Server einzeln öffnen, dort die Snapshots auswählen und löschen, und das dann beim nächsten Server wiederholen. Das kostet viel Zeit, und man übersieht leicht, wo noch alte Snapshots liegen und Speicher belegen.Ziel
Ein neuer Menüpunkt „Snapshots“ mit einer zentralen Liste aller Snapshots aller verbundenen Server, also aller Server mit Proxmox-Verknüpfung (
proxmox_server_id,proxmox_node,proxmox_vmid):Stand im Code
backend/routers/servers.py:GET /api/servers/{id}/snapshotslistet die Snapshots eines Servers (überproxmox_utils.list_snapshots()).POST /api/servers/{id}/snapshots/deletestartet einen Lösch-Batch im Hintergrund (_run_delete_batch) und liefert einebatch_idzurück.GET /api/servers/{id}/snapshots/delete/{batch_id}liefert den Fortschritt.backend/proxmox_utils.py:list_snapshots()/delete_snapshot()/_proxmox_session()lassen sich wiederverwenden.components/SnapshotBadge.tsxund ist an einen Server gebunden.Lösungsvorschlag
Backend:
GET /api/snapshots: sammelt die Snapshots aller Server mit Proxmox-Verknüpfung und gibt sie flach zurück (server_id,server_name,vm_type,name,description,snaptime).errors: [{server_id, server_name, message}], der im Frontend als Hinweis erscheint.ProxmoxServersollte nur einmal erfolgen und für alle Server dahinter wiederverwendet werden.POST /api/snapshots/deletemititems: [{server_id, name}, …]startet einen serverübergreifenden Lösch-Batch im Hintergrund. Er arbeitet die Liste strikt nacheinander ab, wie_run_delete_batch, und liefert einebatch_idzurück.GET /api/snapshots/delete/{batch_id}: Fortschritt und Ergebnisse, jeweils mitserver_id+name.servers.py(_delete_batches,_run_delete_batch) sollte in eine gemeinsame Funktion wandern, damit Einzelserver-Dialog und neue Seite denselben Code nutzen.Frontend:
Snapshots.tsx+ Menüpunkt „Snapshots“.n / total) und ein Ergebnis pro Zeile. Danach wird die Liste neu geladen.Offene Punkte
Akzeptanzkriterien