fix #2244: Allow timeout for guest-agent shutdown

The "guest-shutdown" guest agent call is blocking for some reason, so if
it fails (e.g. agent not installed on guest) only the default timeout of
10 minutes (see QMPClient.pm, sub cmd) would apply.

With this change, if (and only if) a timeout is specified via CLI/API,
it is used instead. In case it is not specified, behaviour stays the
same (default 10 min timeout).

Signed-off-by: Stefan Reiter <s.reiter@proxmox.com>
(cherry picked from commit 0eb2169136)
Signed-off-by: Oguz Bektas <o.bektas@proxmox.com>
This commit is contained in:
Stefan Reiter 2019-11-18 15:41:10 +01:00 committed by Thomas Lamprecht
parent e95dda64bd
commit ea65ab8fe2

View File

@ -5621,12 +5621,13 @@ sub vm_stop {
PVE::GuestHelpers::exec_hookscript($conf, $vmid, 'pre-stop');
}
$timeout = 60 if !defined($timeout);
eval {
if ($shutdown) {
if (defined($conf) && parse_guest_agent($conf)->{enabled}) {
vm_qmp_command($vmid, { execute => "guest-shutdown" }, $nocheck);
vm_qmp_command($vmid, {
execute => "guest-shutdown",
arguments => { timeout => $timeout }
}, $nocheck);
} else {
vm_qmp_command($vmid, { execute => "system_powerdown" }, $nocheck);
}
@ -5637,6 +5638,8 @@ sub vm_stop {
my $err = $@;
if (!$err) {
$timeout = 60 if !defined($timeout);
my $count = 0;
while (($count < $timeout) && check_running($vmid, $nocheck)) {
$count++;