use PVE::HA::Tools;
-use PVE::QemuConfig;
-use PVE::QemuServer;
-use PVE::API2::Qemu;
+BEGIN {
+ if (!$ENV{PVE_GENERATING_DOCS}) {
+ require PVE::QemuConfig;
+ import PVE::QemuConfig;
+ require PVE::QemuServer;
+ import PVE::QemuServer;
+ require PVE::API2::Qemu;
+ import PVE::API2::Qemu;
+ }
+}
use base qw(PVE::HA::Resources);
my $nodename = $haenv->nodename();
- return PVE::QemuServer::check_running($vmid, 1, $nodename);
+ if (PVE::QemuServer::check_running($vmid, 1, $nodename)) {
+ # do not count VMs which are suspended for a backup job as running
+ my $conf = PVE::QemuConfig->load_config($vmid, $nodename);
+ if (defined($conf->{lock}) && $conf->{lock} eq 'backup') {
+ my $qmpstatus = eval {
+ PVE::QemuServer::vm_qmp_command($vmid, { execute => 'query-status' })
+ };
+ warn "$@\n" if $@;
+
+ return 0 if defined($qmpstatus) && $qmpstatus->{status} eq 'prelaunch';
+ }
+
+ return 1;
+ } else {
+ return 0;
+ }
}
sub remove_locks {