VM-Enrollment: OS-Erkennung Cache-first (vm_qemu_scans/ostype), kein Linux-Default, UI-OS-Auswahl bei Unbekannt #66
Loading…
Add table
Add a link
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
Beim VM-Enrollment wird das Gast-OS per redundantem Live-Call
qm.agent.osinfobestimmt (admin_router.py:363-373). Wenn der scheitert (Guest-Agent langsam/tot, oder Node-Agent-Session flappt), greift ein gefaehrlicher Default:is_windowsbleibtFalse→ "Linux/sh wird angenommen" (:385) → es wirdcurl ... | shan den Gast geschickt (:408-413).Real beobachtet: eine Windows-VM (106) bekam dadurch
curl ... | shund anschliessendapt-get -s upgrade || dnf check-update || pkg upgrade— beides laeuft auf Windows ins Leere/Timeout.Kern des Bugs: Die korrekten OS-Daten liegen bereits in der DB. Der periodische
identity_scanlegt das komplette get-osinfo ab:Node-Agent/src/vm_scan.rs:48→scan.insert("os", osinfo.clone())(inkl.id="mswindows"bei Windows,pretty-name)Node-Agent/src/data.rs:118/133→last_data.vm_qemu_scans[vmid]Die Enrollment-Logik ignoriert diese gecachte, verlaessliche Quelle und fragt stattdessen live nach — genau der Call, der timeoutet.
Fix — OS-Erkennung mit klarer Prioritaet (
admin_router.py:360-385umbauen)node.last_data["vm_qemu_scans"][str(vmid)]lesen →os.id/os.name/os_pretty→ Windows beimswindows/windows. Kein Live-Call, kein Timeout.ostypeausvm.config(host-seitig, billig) als Quervergleich / wenn kein Scan-Eintrag vorhanden.ostype.startswith("w")→ Windows.qm.agent.osinfonur noch als letzter Ausweg (VM nie gescannt, kein ostype).:385). Wenn OS danach immer noch unbekannt → kein Befehl senden.Unbekanntes OS → manuelle Auswahl im UI (statt Default/Abbruch)
Wenn 1-3 kein eindeutiges OS liefern:
os_unknown-Signal aus und pausiert (keinsh/curlblind senden).os_override=windows|linux|freebsderneut auf → fuehrt den passenden Pfad aus.Befehle OS-spezifisch verzweigen
vm-install-windows+ PowerShell (existiert,:397-404); Linux/FreeBSD →vm-install+ sh.apt-get/dnf/pkg-Probe NIE an Windows. Windows-Update-Pfad ueber den Windows-VM-Guest-Agent (#27) / PowerShell. (Der Update-Befehl verzweigt aktuell gar nicht nach OS — mit fixen.)Akzeptanz
sh/curl/aptmehr an Windows; bei unbekanntem OS erscheint der UI-Picker.Bezug
Branch
fix/vm-os-detection-cache-first-no-linux-default