}
-my $nodename = PVE::INotify::nodename();
+my $nodename_cache;
+sub nodename {
+ $nodename_cache //= PVE::INotify::nodename();
+ return $nodename_cache;
+}
my $cpu_vendor_list = {
# Intel CPUs
my $res = {};
return $res if !$vmlist || !$vmlist->{ids};
my $ids = $vmlist->{ids};
+ my $nodename = nodename();
foreach my $vmid (keys %$ids) {
my $d = $ids->{$vmid};
my $nodelist = PVE::Cluster::get_nodelist();
my $nodehash = { map { $_ => 1 } @$nodelist };
- my $nodename = PVE::INotify::nodename();
+ my $nodename = nodename();
foreach_drive($conf, sub {
my ($ds, $drive) = @_;
my $ostype = $conf->{ostype};
my $winversion = windows_version($ostype);
my $kvm = $conf->{kvm};
+ my $nodename = nodename();
my $arch = get_vm_arch($conf);
my $kvm_binary = get_command_for_arch($arch);
my $pciaddr = print_pci_addr("spice", $bridges, $arch, $machine_type);
- my $nodename = PVE::INotify::nodename();
my $pfamily = PVE::Tools::get_host_address_family($nodename);
my @nodeaddrs = PVE::Tools::getaddrinfo_all('localhost', family => $pfamily);
die "failed to get an ip address of type $pfamily for 'localhost'\n" if !@nodeaddrs;
if ($statefile eq 'tcp') {
my $localip = "localhost";
my $datacenterconf = PVE::Cluster::cfs_read_file('datacenter.cfg');
- my $nodename = PVE::INotify::nodename();
+ my $nodename = nodename();
if (!defined($migration_type)) {
if (defined($datacenterconf->{migration}->{type})) {
#start nbd server for storage migration
if ($targetstorage) {
- my $nodename = PVE::INotify::nodename();
+ my $nodename = nodename();
my $localip = $get_migration_ip->($migration_network, $nodename);
my $pfamily = PVE::Tools::get_host_address_family($nodename);
my $storage_migrate_port = PVE::Tools::next_migrate_port($pfamily);
use Test::More;
use Test::MockModule;
+use Socket qw(AF_INET AF_INET6);
use PVE::Tools qw(file_get_contents file_set_contents run_command);
+use PVE::INotify;
+use PVE::SysFSTools;
+
use PVE::QemuConfig;
use PVE::QemuServer;
use PVE::QemuServer::Monitor;
return '61000';
},
+ getaddrinfo_all => sub {
+ my ($hostname, @opts) = @_;
+ die "need stable hostname" if $hostname ne 'localhost';
+ return (
+ {
+ addr => Socket::pack_sockaddr_in(0, Socket::INADDR_LOOPBACK),
+ family => AF_INET, # IPv4
+ protocol => 6,
+ socktype => 1,
+ },
+ );
+ },
+);
+
+my $pve_common_inotify;
+$pve_common_inotify = Test::MockModule->new('PVE::INotify');
+$pve_common_inotify->mock(
+ nodename => sub {
+ return 'localhost';
+ },
);
my $pve_common_sysfstools;