Neustart: auf das Herunterfahren im Gast warten statt es zu erzwingen

ACPI klappt bei Linux, bei Windows haeufig nicht - dort blockiert gern eine
Anwendung den Vorgang oder der Shutdown Event Tracker fragt nach einem Grund.
Deshalb gibt es jetzt die Wahl:

    Ich fahre im Gast herunter - pvesnap wartet und startet dann
    Proxmox herunterfahren lassen (ACPI) - Windows blockt das oft
    Gar nicht - spaeter selbst

Der erste Weg ist der verlaessliche: pvesnap zeigt, was im Gast zu tun ist,
verfolgt den Zustand und startet die Maschine von selbst wieder, sobald sie
aus ist. Abbrechen geht jederzeit, dann laeuft sie einfach weiter und die
Aenderung greift beim naechsten Start.

Dieselbe Falle steckte in der Taste h: shutdown_guest lief mit force=True und
hat den Gast nach 180 Sekunden hart abgeschaltet - ein Stromausfall, still und
ohne Rueckfrage. Die Vorgabe ist jetzt force=False, und bei Widerstand kommt
dieselbe Wahl: warten, hart ausschalten (mit ausdruecklicher Bestaetigung) oder
abbrechen.

Geprueft: der Wartebildschirm erkennt das Herunterfahren und meldet es zurueck,
der Auswahldialog zeigt alle drei Wege.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This commit is contained in:
duffyduck
2026-08-09 11:01:47 +02:00
co-authored by Claude Opus 5
parent 8787304f0b
commit fb3be26c33
2 changed files with 118 additions and 15 deletions
+8 -2
View File
@@ -247,8 +247,14 @@ class Proxmox:
return self._guest_task(guest, "create", "status/start",
"Starten von %s" % guest.label)
def shutdown_guest(self, guest, timeout=180, force=True):
"""Sauberes Herunterfahren; `force` schaltet nach Ablauf hart ab."""
def shutdown_guest(self, guest, timeout=180, force=False):
"""Sauberes Herunterfahren.
`force` schaltet nach Ablauf hart ab - das ist ein Stromausfall und
bleibt deshalb ausdruecklich abzufragen. Windows ignoriert den
ACPI-Aus-Knopf gern, wenn eine Anwendung blockiert; dann ist Warten
auf ein Herunterfahren von innen der richtige Weg, nicht Gewalt.
"""
extra = ["--timeout", str(int(timeout))]
if force:
extra += ["--forceStop", "1"]