migrate: log which local resource causes error

Signed-off-by: Tim Marx <t.marx@proxmox.com>
This commit is contained in:
Tim Marx 2019-05-03 14:22:39 +02:00 committed by Thomas Lamprecht
parent 370b05e719
commit ca6abacf6b
2 changed files with 10 additions and 10 deletions

View File

@ -218,10 +218,10 @@ sub prepare {
$self->{forcemachine} = PVE::QemuServer::qemu_machine_pxe($vmid, $conf); $self->{forcemachine} = PVE::QemuServer::qemu_machine_pxe($vmid, $conf);
} }
my $loc_res = PVE::QemuServer::check_local_resources($conf, 1);
if (my $loc_res = PVE::QemuServer::check_local_resources($conf, 1)) { if (scalar @$loc_res) {
if ($self->{running} || !$self->{opts}->{force}) { if ($self->{running} || !$self->{opts}->{force}) {
die "can't migrate VM which uses local devices\n"; die "can't migrate VM which uses local devices: " . join(", ", @$loc_res) . "\n";
} else { } else {
$self->log('info', "migrating VM which uses local devices"); $self->log('info', "migrating VM which uses local devices");
} }

View File

@ -2846,23 +2846,23 @@ sub config_list {
sub check_local_resources { sub check_local_resources {
my ($conf, $noerr) = @_; my ($conf, $noerr) = @_;
my $loc_res = 0; my @loc_res = ();
$loc_res = 1 if $conf->{hostusb}; # old syntax push @loc_res, "hostusb" if $conf->{hostusb}; # old syntax
$loc_res = 1 if $conf->{hostpci}; # old syntax push @loc_res, "hostpci" if $conf->{hostpci}; # old syntax
$loc_res = 1 if $conf->{ivshmem}; push @loc_res, "ivshmem" if $conf->{ivshmem};
foreach my $k (keys %$conf) { foreach my $k (keys %$conf) {
next if $k =~ m/^usb/ && ($conf->{$k} eq 'spice'); next if $k =~ m/^usb/ && ($conf->{$k} eq 'spice');
# sockets are safe: they will recreated be on the target side post-migrate # sockets are safe: they will recreated be on the target side post-migrate
next if $k =~ m/^serial/ && ($conf->{$k} eq 'socket'); next if $k =~ m/^serial/ && ($conf->{$k} eq 'socket');
$loc_res = 1 if $k =~ m/^(usb|hostpci|serial|parallel)\d+$/; push @loc_res, $k if $k =~ m/^(usb|hostpci|serial|parallel)\d+$/;
} }
die "VM uses local resources\n" if $loc_res && !$noerr; die "VM uses local resources\n" if scalar @loc_res && !$noerr;
return $loc_res; return \@loc_res;
} }
# check if used storages are available on all nodes (use by migrate) # check if used storages are available on all nodes (use by migrate)