From: Dominik Csapak Date: Wed, 11 Sep 2019 12:07:43 +0000 (+0200) Subject: qm: cleanup: detect and handle reboot trigger X-Git-Url: https://git.proxmox.com/?p=qemu-server.git;a=commitdiff_plain;h=64457ed4aa1d141c97dae2d329c86db4bb0b0427 qm: cleanup: detect and handle reboot trigger if the reboot trigger file was set, start the vm again also cleanup the reboot trigger on vm startup, to prevent leftover files to trigger a reboot at the next shutdown Signed-off-by: Dominik Csapak --- diff --git a/PVE/CLI/qm.pm b/PVE/CLI/qm.pm index 3aae23c..74905b2 100755 --- a/PVE/CLI/qm.pm +++ b/PVE/CLI/qm.pm @@ -763,6 +763,7 @@ __PACKAGE__->register_method({ my $vmid = $param->{vmid}; my $clean = $param->{'clean-shutdown'}; my $guest = $param->{'guest-requested'}; + my $restart = 0; # return if we do not have the config anymore return if !-f PVE::QemuConfig->config_file($vmid); @@ -790,10 +791,21 @@ __PACKAGE__->register_method({ PVE::QemuServer::vm_stop_cleanup($storecfg, $vmid, $conf, 0, 0); } PVE::GuestHelpers::exec_hookscript($conf, $vmid, 'post-stop'); + + $restart = eval { PVE::QemuServer::clear_reboot_request($vmid) }; + warn $@ if $@; }); warn "Finished cleanup for $vmid\n"; + if ($restart) { + warn "Restarting VM $vmid\n"; + PVE::API2::Qemu->vm_start({ + vmid => $vmid, + node => $nodename, + }); + } + return undef; }}); diff --git a/PVE/QemuServer.pm b/PVE/QemuServer.pm index 367d080..b420ffb 100644 --- a/PVE/QemuServer.pm +++ b/PVE/QemuServer.pm @@ -5340,6 +5340,10 @@ sub vm_start { die "VM $vmid already running\n" if check_running($vmid, undef, $migratedfrom); + # clean up leftover reboot request files + eval { clear_reboot_request($vmid); }; + warn $@ if $@; + if (!$statefile && scalar(keys %{$conf->{pending}})) { vmconfig_apply_pending($vmid, $conf, $storecfg); $conf = PVE::QemuConfig->load_config($vmid); # update/reload