Aktualiesen im VM Tab #65

Closed
opened 2026-06-02 15:36:05 +00:00 by chinux · 0 comments
Owner

Ziel

Der "Aktualisieren"-Button im VM-Tab loest einen On-Demand-QEMU-Scan aller laufenden VMs der Node aus und zeigt Live-Fortschritt + eine Summary im Modal: wie viele VMs, welches OS, welche IP gefunden wurde.

Bausteine (groesstenteils vorhanden — dank #67/#66)

  • vm.scan (commands_async.rs:225): per-VM On-Demand-Scan, ruft clear_vm_scan_cache(vmid) → erzwingt frischen Scan, ignoriert den Backoff (genau richtig fuer "jetzt aktualisieren").
  • clear_vm_scan_cache (data.rs:87): leert Flag-Cache + Dead-Agent-Backoff.
  • SCAN_CAP entfernt (#67) → alle laufenden VMs sind scanbar, kein 12er-Limit mehr.
  • identity_scan liefert pro VM os/os_pretty/ip_address/agent_available → die Modal-Daten.
  • SSE-Streaming-Pattern (Enrollment in admin_router.py) als Vorlage fuer Live-Progress.

Umsetzung

Backend — SSE-Endpoint POST /nodes/{node}/qemu-scan

  • Laufende VMs aus last_data["vms"] (status=running) holen.
  • Pro VM vm.scan an den Node-Agent senden (Cache-Clear ist im Command bereits drin) und das Ergebnis streamen: VM <id>: <os>, <ip> bzw. VM <id>: Agent aus/keine Antwort.
  • Per-VM-Timeout setzen (z. B. 10-15s), damit ein toter Agent das Modal nicht blockiert — bei Timeout uebersprungen/agent off ausgeben und weiter.
  • Am Ende Summary-Event: Gesamtzahl, Verteilung je OS, Liste der IPs.
  • Alternative: Node-weiter Agent-Command node.qemu_scan_all (loopt agentseitig, ein Round-Trip) — weniger granulares Streaming. Empfehlung: backend-seitiger Loop mit per-VM-SSE (bessere Live-UX, nutzt vorhandenes vm.scan).

Frontend — VM-Tab

  • "Aktualisieren"-Button → ruft den SSE-Endpoint, oeffnet Modal mit:
    • Progress-Liste (pro VM eine Zeile, OS + IP, bzw. "Agent aus").
    • Abschluss-Summary (X VMs gescannt; je OS; gefundene IPs).

Akzeptanz

  • Button scannt alle laufenden VMs der Node (kein Cap).
  • Modal zeigt pro VM OS + IP bzw. sauber "Agent aus/uebersprungen".
  • Ein toter Guest-Agent blockiert den Scan nicht (per-VM-Timeout).
  • Summary mit Anzahl + OS-Verteilung + IPs.

Bezug

  • #67 (SCAN_CAP entfernt, vm.scan/clear_vm_scan_cache-Primitive — Voraussetzung, bereits umgesetzt)
  • #66 (verlaessliche OS-Erkennung — Cache-first)
  • optional #64 (koennte im selben Lauf die /boot-Telemetrie mitrefreshen)

Branch

feat/vm-tab-manual-qemu-scan

## Ziel Der **"Aktualisieren"-Button im VM-Tab** loest einen On-Demand-QEMU-Scan **aller laufenden VMs** der Node aus und zeigt Live-Fortschritt + eine **Summary im Modal**: wie viele VMs, welches OS, welche IP gefunden wurde. ## Bausteine (groesstenteils vorhanden — dank #67/#66) - **`vm.scan`** (`commands_async.rs:225`): per-VM On-Demand-Scan, ruft `clear_vm_scan_cache(vmid)` → erzwingt frischen Scan, **ignoriert den Backoff** (genau richtig fuer "jetzt aktualisieren"). - **`clear_vm_scan_cache`** (`data.rs:87`): leert Flag-Cache + Dead-Agent-Backoff. - **SCAN_CAP entfernt** (#67) → alle laufenden VMs sind scanbar, kein 12er-Limit mehr. - **`identity_scan`** liefert pro VM `os`/`os_pretty`/`ip_address`/`agent_available` → die Modal-Daten. - **SSE-Streaming-Pattern** (Enrollment in `admin_router.py`) als Vorlage fuer Live-Progress. ## Umsetzung ### Backend — SSE-Endpoint `POST /nodes/{node}/qemu-scan` - Laufende VMs aus `last_data["vms"]` (status=running) holen. - Pro VM `vm.scan` an den Node-Agent senden (Cache-Clear ist im Command bereits drin) und das Ergebnis **streamen**: `VM <id>: <os>, <ip>` bzw. `VM <id>: Agent aus/keine Antwort`. - **Per-VM-Timeout** setzen (z. B. 10-15s), damit ein toter Agent das Modal nicht blockiert — bei Timeout `uebersprungen`/`agent off` ausgeben und weiter. - Am Ende **Summary**-Event: Gesamtzahl, Verteilung je OS, Liste der IPs. - Alternative: Node-weiter Agent-Command `node.qemu_scan_all` (loopt agentseitig, ein Round-Trip) — weniger granulares Streaming. **Empfehlung: backend-seitiger Loop mit per-VM-SSE** (bessere Live-UX, nutzt vorhandenes `vm.scan`). ### Frontend — VM-Tab - "Aktualisieren"-Button → ruft den SSE-Endpoint, oeffnet **Modal** mit: - Progress-Liste (pro VM eine Zeile, OS + IP, bzw. "Agent aus"). - Abschluss-Summary (X VMs gescannt; je OS; gefundene IPs). ## Akzeptanz - Button scannt **alle** laufenden VMs der Node (kein Cap). - Modal zeigt pro VM OS + IP bzw. sauber "Agent aus/uebersprungen". - Ein toter Guest-Agent blockiert den Scan nicht (per-VM-Timeout). - Summary mit Anzahl + OS-Verteilung + IPs. ## Bezug - **#67** (SCAN_CAP entfernt, `vm.scan`/`clear_vm_scan_cache`-Primitive — Voraussetzung, bereits umgesetzt) - **#66** (verlaessliche OS-Erkennung — Cache-first) - optional **#64** (koennte im selben Lauf die `/boot`-Telemetrie mitrefreshen) ## Branch `feat/vm-tab-manual-qemu-scan`
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
chinux/theProx#65
No description provided.