On October 28, 2019 12:59 pm, Stefan Reiter wrote: > Also move check_cmdline, since check_running is its only user. Changes > all uses of check_running in QemuServer, including mocking in snapshot > tests. > > Signed-off-by: Stefan Reiter <s.rei...@proxmox.com> > --- > PVE/API2/Qemu.pm | 32 +++++++------- > PVE/CLI/qm.pm | 13 +++--- > PVE/QemuConfig.pm | 65 ++++++++++++++++++++++++++- > PVE/QemuMigrate.pm | 3 +- > PVE/QemuServer.pm | 85 ++++++------------------------------ > PVE/QemuServer/Agent.pm | 3 +- > PVE/QemuServer/ImportDisk.pm | 3 +- > PVE/QemuServer/Memory.pm | 3 +- > PVE/VZDump/QemuServer.pm | 7 +-- > test/snapshot-test.pm | 7 +-- > 10 files changed, 116 insertions(+), 105 deletions(-) > > diff --git a/PVE/API2/Qemu.pm b/PVE/API2/Qemu.pm > index b2c0b0d..9912e4d 100644 > --- a/PVE/API2/Qemu.pm > +++ b/PVE/API2/Qemu.pm > @@ -556,7 +556,7 @@ __PACKAGE__->register_method({ > > PVE::QemuConfig->check_protection($conf, $emsg); > > - die "$emsg vm is running\n" if > PVE::QemuServer::check_running($vmid); > + die "$emsg vm is running\n" if > PVE::QemuConfig::check_running($vmid); > > my $realcmd = sub { > PVE::QemuServer::restore_archive($archive, $vmid, $authuser, { > @@ -1220,7 +1220,7 @@ my $update_vm_api = sub { > > return if !scalar(keys %{$conf->{pending}}); > > - my $running = PVE::QemuServer::check_running($vmid); > + my $running = PVE::QemuConfig::check_running($vmid); > > # apply pending changes > > @@ -1439,7 +1439,7 @@ __PACKAGE__->register_method({ > > # early tests (repeat after locking) > die "VM $vmid is running - destroy failed\n" > - if PVE::QemuServer::check_running($vmid); > + if PVE::QemuConfig::check_running($vmid); > > my $realcmd = sub { > my $upid = shift; > @@ -1447,7 +1447,7 @@ __PACKAGE__->register_method({ > syslog('info', "destroy VM $vmid: $upid\n"); > PVE::QemuConfig->lock_config($vmid, sub { > die "VM $vmid is running - destroy failed\n" > - if (PVE::QemuServer::check_running($vmid)); > + if (PVE::QemuConfig::check_running($vmid)); > > PVE::QemuServer::destroy_vm($storecfg, $vmid, 1, $skiplock); > > @@ -2179,7 +2179,7 @@ __PACKAGE__->register_method({ > raise_param_exc({ skiplock => "Only root may use this option." }) > if $skiplock && $authuser ne 'root@pam'; > > - die "VM $vmid not running\n" if !PVE::QemuServer::check_running($vmid); > + die "VM $vmid not running\n" if !PVE::QemuConfig::check_running($vmid); > > my $realcmd = sub { > my $upid = shift; > @@ -2349,7 +2349,7 @@ __PACKAGE__->register_method({ > die "VM is paused - cannot shutdown\n"; > } > > - die "VM $vmid not running\n" if !PVE::QemuServer::check_running($vmid); > + die "VM $vmid not running\n" if !PVE::QemuConfig::check_running($vmid); > > my $realcmd = sub { > my $upid = shift; > @@ -2413,7 +2413,7 @@ __PACKAGE__->register_method({ > raise_param_exc({ skiplock => "Only root may use this option." }) > if $skiplock && $authuser ne 'root@pam'; > > - die "VM $vmid not running\n" if !PVE::QemuServer::check_running($vmid); > + die "VM $vmid not running\n" if !PVE::QemuConfig::check_running($vmid); > > die "Cannot suspend HA managed VM to disk\n" > if $todisk && PVE::HA::Config::vm_is_ha_managed($vmid); > @@ -2482,7 +2482,7 @@ __PACKAGE__->register_method({ > }; > > die "VM $vmid not running\n" > - if !$to_disk_suspended && !PVE::QemuServer::check_running($vmid, > $nocheck); > + if !$to_disk_suspended && !PVE::QemuConfig::check_running($vmid, > $nocheck); > > my $realcmd = sub { > my $upid = shift; > @@ -2592,7 +2592,7 @@ __PACKAGE__->register_method({ > > my $feature = extract_param($param, 'feature'); > > - my $running = PVE::QemuServer::check_running($vmid); > + my $running = PVE::QemuConfig::check_running($vmid); > > my $conf = PVE::QemuConfig->load_config($vmid); > > @@ -2739,7 +2739,7 @@ __PACKAGE__->register_method({ > > PVE::Cluster::check_cfs_quorum(); > > - my $running = PVE::QemuServer::check_running($vmid) || 0; > + my $running = PVE::QemuConfig::check_running($vmid) || 0; > > # exclusive lock if VM is running - else shared lock is enough; > my $shared_lock = $running ? 0 : 1; > @@ -2753,7 +2753,7 @@ __PACKAGE__->register_method({ > > PVE::QemuConfig->check_lock($conf); > > - my $verify_running = PVE::QemuServer::check_running($vmid) || 0; > + my $verify_running = PVE::QemuConfig::check_running($vmid) || 0; > > die "unexpected state change\n" if $verify_running != $running; > > @@ -3059,7 +3059,7 @@ __PACKAGE__->register_method({ > > PVE::Cluster::log_msg('info', $authuser, "move disk VM $vmid: move > --disk $disk --storage $storeid"); > > - my $running = PVE::QemuServer::check_running($vmid); > + my $running = PVE::QemuConfig::check_running($vmid); > > PVE::Storage::activate_volumes($storecfg, [ $drive->{file} ]); > > @@ -3228,7 +3228,7 @@ __PACKAGE__->register_method({ > # try to detect errors early > PVE::QemuConfig->check_lock($vmconf); > > - $res->{running} = PVE::QemuServer::check_running($vmid) ? 1:0; > + $res->{running} = PVE::QemuConfig::check_running($vmid) ? 1:0; > > # if vm is not running, return target nodes where local storage is > available > # for offline migration > @@ -3358,7 +3358,7 @@ __PACKAGE__->register_method({ > > PVE::QemuConfig->check_lock($conf); > > - if (PVE::QemuServer::check_running($vmid)) { > + if (PVE::QemuConfig::check_running($vmid)) { > die "can't migrate running VM without --online\n" if > !$param->{online}; > } else { > warn "VM isn't running. Doing offline migration instead\n." if > $param->{online}; > @@ -3654,7 +3654,7 @@ __PACKAGE__->register_method({ > push @$res, $item; > } > > - my $running = PVE::QemuServer::check_running($vmid, 1) ? 1 : 0; > + my $running = PVE::QemuConfig::check_running($vmid, 1) ? 1 : 0; > my $current = { > name => 'current', > digest => $conf->{digest}, > @@ -4003,7 +4003,7 @@ __PACKAGE__->register_method({ > if PVE::QemuConfig->is_template($conf) && !$disk; > > die "you can't convert a VM to template if VM is running\n" > - if PVE::QemuServer::check_running($vmid); > + if PVE::QemuConfig::check_running($vmid); > > my $realcmd = sub { > PVE::QemuServer::template_create($vmid, $conf, $disk); > diff --git a/PVE/CLI/qm.pm b/PVE/CLI/qm.pm > index 44beac9..4de0ae2 100755 > --- a/PVE/CLI/qm.pm > +++ b/PVE/CLI/qm.pm > @@ -21,6 +21,7 @@ use PVE::RPCEnvironment; > use PVE::Exception qw(raise_param_exc); > use PVE::Network; > use PVE::GuestHelpers; > +use PVE::QemuConfig; > use PVE::QemuSchema; > use PVE::QemuServer; > use PVE::QemuServer::ImportDisk; > @@ -310,7 +311,7 @@ __PACKAGE__->register_method ({ > last; > } elsif ($line =~ /^resume (\d+)$/) { > my $vmid = $1; > - if (PVE::QemuServer::check_running($vmid, 1)) { > + if (PVE::QemuConfig::check_running($vmid, 1)) { > eval { PVE::QemuServer::vm_resume($vmid, 1, 1); }; > if ($@) { > $tunnel_write->("ERR: resume failed - $@"); > @@ -350,18 +351,18 @@ __PACKAGE__->register_method ({ > my $vmid = $param->{vmid}; > my $timeout = $param->{timeout}; > > - my $pid = PVE::QemuServer::check_running ($vmid); > + my $pid = PVE::QemuConfig::check_running ($vmid); > return if !$pid; > > print "waiting until VM $vmid stopps (PID $pid)\n"; > > my $count = 0; > - while ((!$timeout || ($count < $timeout)) && > PVE::QemuServer::check_running ($vmid)) { > + while ((!$timeout || ($count < $timeout)) && > PVE::QemuConfig::check_running ($vmid)) { > $count++; > sleep 1; > } > > - die "wait failed - got timeout\n" if PVE::QemuServer::check_running > ($vmid); > + die "wait failed - got timeout\n" if PVE::QemuConfig::check_running > ($vmid); > > return undef; > }}); > @@ -558,7 +559,7 @@ __PACKAGE__->register_method ({ > die "unable to find a serial interface\n" if !$iface; > } > > - die "VM $vmid not running\n" if !PVE::QemuServer::check_running($vmid); > + die "VM $vmid not running\n" if !PVE::QemuConfig::check_running($vmid); > > my $socket = "/var/run/qemu-server/${vmid}.$iface"; > > @@ -774,7 +775,7 @@ __PACKAGE__->register_method({ > > PVE::QemuConfig->lock_config($vmid, sub { > my $conf = PVE::QemuConfig->load_config ($vmid); > - my $pid = PVE::QemuServer::check_running ($vmid); > + my $pid = PVE::QemuConfig::check_running ($vmid); > die "vm still running\n" if $pid; > > if (!$clean) { > diff --git a/PVE/QemuConfig.pm b/PVE/QemuConfig.pm > index b63e57c..08cac38 100644 > --- a/PVE/QemuConfig.pm > +++ b/PVE/QemuConfig.pm > @@ -3,8 +3,12 @@ package PVE::QemuConfig; > use strict; > use warnings; > > +use File::stat; > +use IO::File; > + > use PVE::AbstractConfig; > use PVE::INotify; > +use PVE::ProcFSTools; > use PVE::QemuSchema; > use PVE::QemuServer; > use PVE::Storage; > @@ -161,7 +165,7 @@ sub __snapshot_save_vmstate { > > sub __snapshot_check_running { > my ($class, $vmid) = @_; > - return PVE::QemuServer::check_running($vmid); > + return check_running($vmid); > } > > sub __snapshot_check_freeze_needed { > @@ -392,4 +396,63 @@ sub __snapshot_foreach_volume { > } > # END implemented abstract methods from PVE::AbstractConfig > > +sub check_cmdline { > + my ($pidfile, $pid) = @_; > + > + my $fh = IO::File->new("/proc/$pid/cmdline", "r"); > + if (defined($fh)) { > + my $line = <$fh>; > + $fh->close; > + return undef if !$line; > + my @param = split(/\0/, $line); > + > + my $cmd = $param[0]; > + return if !$cmd || ($cmd !~ m|kvm$| && $cmd !~ > m@(?:^|/)qemu-system-[^/]+$@); > + > + for (my $i = 0; $i < scalar (@param); $i++) { > + my $p = $param[$i]; > + next if !$p; > + if (($p eq '-pidfile') || ($p eq '--pidfile')) { > + my $p = $param[$i+1]; > + return 1 if $p && ($p eq $pidfile); > + return undef; > + } > + } > + } > + return undef; > +} > + > +sub check_running { > + my ($vmid, $nocheck, $node) = @_; > + > + my $filename = PVE::QemuConfig->config_file($vmid, $node); > + > + die "unable to find configuration file for VM $vmid - no such machine\n" > + if !$nocheck && ! -f $filename; > + > + my $pidfile = PVE::QemuSchema::pidfile_name($vmid);
maybe it would make more sense to keep a short version of check_running in QemuServer (it's not really config related), and merge everything after this point into check_cmdline (maybe with a better name), which could then be put into the same file as the stuff from patch #4? this would avoid a lot of churn, and check_running is more a method operating on a (running) VM instance (which, for better or worse, is basically what QemuServer.pm represents) than on its config.. also see comment on patch #5 > + > + if (my $fd = IO::File->new("<$pidfile")) { > + my $st = stat($fd); > + my $line = <$fd>; > + close($fd); > + > + my $mtime = $st->mtime; > + if ($mtime > time()) { > + warn "file '$filename' modified in future\n"; > + } > + > + if ($line =~ m/^(\d+)$/) { > + my $pid = $1; > + if (check_cmdline($pidfile, $pid)) { > + if (my $pinfo = PVE::ProcFSTools::check_process_running($pid)) { > + return $pid; > + } > + } > + } > + } > + > + return undef; > +} > + > 1; > diff --git a/PVE/QemuMigrate.pm b/PVE/QemuMigrate.pm > index 65f39b6..e6993d4 100644 > --- a/PVE/QemuMigrate.pm > +++ b/PVE/QemuMigrate.pm > @@ -10,6 +10,7 @@ use PVE::INotify; > use PVE::Tools; > use PVE::Cluster; > use PVE::Storage; > +use PVE::QemuConfig; > use PVE::QemuServer; > use Time::HiRes qw( usleep ); > use PVE::RPCEnvironment; > @@ -211,7 +212,7 @@ sub prepare { > PVE::QemuConfig->check_lock($conf); > > my $running = 0; > - if (my $pid = PVE::QemuServer::check_running($vmid)) { > + if (my $pid = PVE::QemuConfig::check_running($vmid)) { > die "can't migrate running VM without --online\n" if !$online; > $running = $pid; > > diff --git a/PVE/QemuServer.pm b/PVE/QemuServer.pm > index 817394e..d5eba39 100644 > --- a/PVE/QemuServer.pm > +++ b/PVE/QemuServer.pm > @@ -2952,65 +2952,6 @@ sub check_local_storage_availability { > return $nodehash > } > > -sub check_cmdline { > - my ($pidfile, $pid) = @_; > - > - my $fh = IO::File->new("/proc/$pid/cmdline", "r"); > - if (defined($fh)) { > - my $line = <$fh>; > - $fh->close; > - return undef if !$line; > - my @param = split(/\0/, $line); > - > - my $cmd = $param[0]; > - return if !$cmd || ($cmd !~ m|kvm$| && $cmd !~ > m@(?:^|/)qemu-system-[^/]+$@); > - > - for (my $i = 0; $i < scalar (@param); $i++) { > - my $p = $param[$i]; > - next if !$p; > - if (($p eq '-pidfile') || ($p eq '--pidfile')) { > - my $p = $param[$i+1]; > - return 1 if $p && ($p eq $pidfile); > - return undef; > - } > - } > - } > - return undef; > -} > - > -sub check_running { > - my ($vmid, $nocheck, $node) = @_; > - > - my $filename = PVE::QemuConfig->config_file($vmid, $node); > - > - die "unable to find configuration file for VM $vmid - no such machine\n" > - if !$nocheck && ! -f $filename; > - > - my $pidfile = PVE::QemuSchema::pidfile_name($vmid); > - > - if (my $fd = IO::File->new("<$pidfile")) { > - my $st = stat($fd); > - my $line = <$fd>; > - close($fd); > - > - my $mtime = $st->mtime; > - if ($mtime > time()) { > - warn "file '$filename' modified in future\n"; > - } > - > - if ($line =~ m/^(\d+)$/) { > - my $pid = $1; > - if (check_cmdline($pidfile, $pid)) { > - if (my $pinfo = PVE::ProcFSTools::check_process_running($pid)) { > - return $pid; > - } > - } > - } > - } > - > - return undef; > -} > - > sub vzlist { > > my $vzlist = config_list(); > @@ -3021,7 +2962,7 @@ sub vzlist { > next if $de !~ m/^(\d+)\.pid$/; > my $vmid = $1; > next if !defined($vzlist->{$vmid}); > - if (my $pid = check_running($vmid)) { > + if (my $pid = PVE::QemuConfig::check_running($vmid)) { > $vzlist->{$vmid}->{pid} = $pid; > } > } > @@ -4640,7 +4581,7 @@ sub qemu_block_set_io_throttle { > $bps_max_length, $bps_rd_max_length, $bps_wr_max_length, > $iops_max_length, $iops_rd_max_length, $iops_wr_max_length) = @_; > > - return if !check_running($vmid) ; > + return if !PVE::QemuConfig::check_running($vmid) ; > > vm_mon_cmd($vmid, "block_set_io_throttle", device => $deviceid, > bps => int($bps), > @@ -4701,7 +4642,7 @@ sub __read_avail { > sub qemu_block_resize { > my ($vmid, $deviceid, $storecfg, $volid, $size) = @_; > > - my $running = check_running($vmid); > + my $running = PVE::QemuConfig::check_running($vmid); > > $size = 0 if !PVE::Storage::volume_resize($storecfg, $volid, $size, > $running); > > @@ -4714,7 +4655,7 @@ sub qemu_block_resize { > sub qemu_volume_snapshot { > my ($vmid, $deviceid, $storecfg, $volid, $snap) = @_; > > - my $running = check_running($vmid); > + my $running = PVE::QemuConfig::check_running($vmid); > > if ($running && do_snapshots_with_qemu($storecfg, $volid)){ > vm_mon_cmd($vmid, 'blockdev-snapshot-internal-sync', device => > $deviceid, name => $snap); > @@ -4726,7 +4667,7 @@ sub qemu_volume_snapshot { > sub qemu_volume_snapshot_delete { > my ($vmid, $deviceid, $storecfg, $volid, $snap) = @_; > > - my $running = check_running($vmid); > + my $running = PVE::QemuConfig::check_running($vmid); > > if($running) { > > @@ -5243,7 +5184,7 @@ sub vm_start { > PVE::QemuConfig->check_lock($conf) > if !($skiplock || $is_suspended); > > - die "VM $vmid already running\n" if check_running($vmid, undef, > $migratedfrom); > + die "VM $vmid already running\n" if > PVE::QemuConfig::check_running($vmid, undef, $migratedfrom); > > # clean up leftover reboot request files > eval { clear_reboot_request($vmid); }; > @@ -5555,7 +5496,7 @@ sub vm_qmp_command { > } > > eval { > - die "VM $vmid not running\n" if !check_running($vmid, $nocheck); > + die "VM $vmid not running\n" if !PVE::QemuConfig::check_running($vmid, > $nocheck); > my $sname = PVE::QemuSchema::qmp_socket($vmid); > if (-e $sname) { # test if VM is reasonambe new and supports qmp/qga > my $qmpclient = PVE::QMPClient->new(); > @@ -5680,7 +5621,7 @@ sub vm_stop_cleanup { > sub _do_vm_stop { > my ($storecfg, $vmid, $skiplock, $nocheck, $timeout, $shutdown, $force, > $keepActive) = @_; > > - my $pid = check_running($vmid, $nocheck); > + my $pid = PVE::QemuConfig::check_running($vmid, $nocheck); > return if !$pid; > > my $conf; > @@ -5714,7 +5655,7 @@ sub _do_vm_stop { > $timeout = 60 if !defined($timeout); > > my $count = 0; > - while (($count < $timeout) && check_running($vmid, $nocheck)) { > + while (($count < $timeout) && PVE::QemuConfig::check_running($vmid, > $nocheck)) { > $count++; > sleep 1; > } > @@ -5743,7 +5684,7 @@ sub _do_vm_stop { > $timeout = 10; > > my $count = 0; > - while (($count < $timeout) && check_running($vmid, $nocheck)) { > + while (($count < $timeout) && PVE::QemuConfig::check_running($vmid, > $nocheck)) { > $count++; > sleep 1; > } > @@ -5766,7 +5707,7 @@ sub vm_stop { > $force = 1 if !defined($force) && !$shutdown; > > if ($migratedfrom){ > - my $pid = check_running($vmid, $nocheck, $migratedfrom); > + my $pid = PVE::QemuConfig::check_running($vmid, $nocheck, > $migratedfrom); > kill 15, $pid if $pid; > my $conf = PVE::QemuConfig->load_config($vmid, $migratedfrom); > vm_stop_cleanup($storecfg, $vmid, $conf, $keepActive, 0); > @@ -5784,7 +5725,7 @@ sub vm_reboot { > PVE::QemuConfig->lock_config($vmid, sub { > > # only reboot if running, as qmeventd starts it again on a stop event > - return if !check_running($vmid); > + return if !PVE::QemuConfig::check_running($vmid); > > create_reboot_request($vmid); > > @@ -5919,7 +5860,7 @@ sub vm_destroy { > > my $conf = PVE::QemuConfig->load_config($vmid); > > - if (!check_running($vmid)) { > + if (!PVE::QemuConfig::check_running($vmid)) { > destroy_vm($storecfg, $vmid, undef, $skiplock); > } else { > die "VM $vmid is running - destroy failed\n"; > diff --git a/PVE/QemuServer/Agent.pm b/PVE/QemuServer/Agent.pm > index 586ac3a..8ffe3bc 100644 > --- a/PVE/QemuServer/Agent.pm > +++ b/PVE/QemuServer/Agent.pm > @@ -3,6 +3,7 @@ package PVE::QemuServer::Agent; > use strict; > use warnings; > > +use PVE::QemuConfig; > use PVE::QemuServer; > use MIME::Base64 qw(decode_base64); > use JSON; > @@ -40,7 +41,7 @@ sub agent_available { > > eval { > die "No QEMU guest agent configured\n" if !defined($conf->{agent}); > - die "VM $vmid is not running\n" if > !PVE::QemuServer::check_running($vmid); > + die "VM $vmid is not running\n" if > !PVE::QemuConfig::check_running($vmid); > die "QEMU guest agent is not running\n" if > !PVE::QemuServer::qga_check_running($vmid, 1); > }; > > diff --git a/PVE/QemuServer/ImportDisk.pm b/PVE/QemuServer/ImportDisk.pm > index 5d391e6..fc2110f 100755 > --- a/PVE/QemuServer/ImportDisk.pm > +++ b/PVE/QemuServer/ImportDisk.pm > @@ -4,6 +4,7 @@ use strict; > use warnings; > > use PVE::Storage; > +use PVE::QemuConfig; > use PVE::QemuServer; > use PVE::Tools qw(run_command extract_param); > > @@ -52,7 +53,7 @@ sub do_import { > $vm_conf->{pending}->{$drive_name} = $dst_volid; > PVE::QemuConfig->write_config($vmid, $vm_conf); > > - my $running = PVE::QemuServer::check_running($vmid); > + my $running = PVE::QemuConfig::check_running($vmid); > if ($running) { > my $errors = {}; > PVE::QemuServer::vmconfig_hotplug_pending($vmid, $vm_conf, > $storecfg, $modified, $errors); > diff --git a/PVE/QemuServer/Memory.pm b/PVE/QemuServer/Memory.pm > index 5aceabf..3f4088b 100644 > --- a/PVE/QemuServer/Memory.pm > +++ b/PVE/QemuServer/Memory.pm > @@ -2,6 +2,7 @@ package PVE::QemuServer::Memory; > > use strict; > use warnings; > +use PVE::QemuConfig; > use PVE::QemuServer; > use PVE::Tools qw(run_command lock_file lock_file_full file_read_firstline > dir_glob_foreach); > use PVE::Exception qw(raise raise_param_exc); > @@ -104,7 +105,7 @@ sub foreach_reverse_dimm { > sub qemu_memory_hotplug { > my ($vmid, $conf, $defaults, $opt, $value) = @_; > > - return $value if !PVE::QemuServer::check_running($vmid); > + return $value if !PVE::QemuConfig::check_running($vmid); > > my $sockets = 1; > $sockets = $conf->{sockets} if $conf->{sockets}; > diff --git a/PVE/VZDump/QemuServer.pm b/PVE/VZDump/QemuServer.pm > index e02a069..91768de 100644 > --- a/PVE/VZDump/QemuServer.pm > +++ b/PVE/VZDump/QemuServer.pm > @@ -17,6 +17,7 @@ use PVE::Storage; > use PVE::Tools; > use PVE::VZDump; > > +use PVE::QemuConfig; > use PVE::QemuServer; > > use base qw (PVE::VZDump::Plugin); > @@ -56,7 +57,7 @@ sub prepare { > if defined($conf->{name}); > > $self->{vm_was_running} = 1; > - if (!PVE::QemuServer::check_running($vmid)) { > + if (!PVE::QemuConfig::check_running($vmid)) { > $self->{vm_was_running} = 0; > } > > @@ -137,7 +138,7 @@ sub prepare { > sub vm_status { > my ($self, $vmid) = @_; > > - my $running = PVE::QemuServer::check_running($vmid) ? 1 : 0; > + my $running = PVE::QemuConfig::check_running($vmid) ? 1 : 0; > > return wantarray ? ($running, $running ? 'running' : 'stopped') : > $running; > } > @@ -312,7 +313,7 @@ sub archive { > my $resume_on_backup; > > my $skiplock = 1; > - my $vm_is_running = PVE::QemuServer::check_running($vmid); > + my $vm_is_running = PVE::QemuConfig::check_running($vmid); > if (!$vm_is_running) { > eval { > $self->loginfo("starting kvm to execute backup task"); > diff --git a/test/snapshot-test.pm b/test/snapshot-test.pm > index c95e7f3..53d08e6 100644 > --- a/test/snapshot-test.pm > +++ b/test/snapshot-test.pm > @@ -297,14 +297,14 @@ sub __snapshot_save_vmstate { > $snap->{vmstate} = "somestorage:state-volume"; > $snap->{runningmachine} = "somemachine" > } > -# END mocked PVE::QemuConfig methods > - > -# BEGIN redefine PVE::QemuServer methods > > sub check_running { > return $running; > } > > +# END mocked PVE::QemuConfig methods > + > +# BEGIN redefine PVE::QemuServer methods > > sub do_snapshots_with_qemu { > return 0; > @@ -376,6 +376,7 @@ $qemu_config_module->mock('load_config', \&load_config); > $qemu_config_module->mock('write_config', \&write_config); > $qemu_config_module->mock('has_feature', \&has_feature); > $qemu_config_module->mock('__snapshot_save_vmstate', > \&__snapshot_save_vmstate); > +$qemu_config_module->mock('check_running', \&check_running); > > # ignore existing replication config > my $repl_config_module = new Test::MockModule('PVE::ReplicationConfig'); > -- > 2.20.1 > > > _______________________________________________ > pve-devel mailing list > pve-devel@pve.proxmox.com > https://pve.proxmox.com/cgi-bin/mailman/listinfo/pve-devel > > _______________________________________________ pve-devel mailing list pve-devel@pve.proxmox.com https://pve.proxmox.com/cgi-bin/mailman/listinfo/pve-devel