[pve-devel] [PATCH manager 2/3] api: add migrate precondition checks to bulk migrate api
Tim Marx
t.marx at proxmox.com
Fri Nov 29 15:10:15 CET 2019
Signed-off-by: Tim Marx <t.marx at proxmox.com>
---
PVE/API2/Nodes.pm | 19 +++++++++++++++++++
1 file changed, 19 insertions(+)
diff --git a/PVE/API2/Nodes.pm b/PVE/API2/Nodes.pm
index 6224cb71..a1f62f36 100644
--- a/PVE/API2/Nodes.pm
+++ b/PVE/API2/Nodes.pm
@@ -1928,6 +1928,25 @@ my $create_migrate_worker = sub {
restart => $online });
} elsif ($type eq 'qemu') {
my $online = PVE::QemuServer::check_running($vmid, 1) ? 1 : 0;
+ my $preconditions = PVE::API2::Qemu->migrate_vm_precondition({node => $nodename, vmid => $vmid, target => $target});
+ my $invalidConditions = 0;
+ print STDERR "Check VM $vmid:\n";
+ if ($online && !$with_local_disks && @{$preconditions->{local_disks}}) {
+ $invalidConditions = 1;
+ my $local_disks = [];
+ foreach my $disk (@{$preconditions->{local_disks}}) {
+ push @$local_disks, $disk->{volid};
+ }
+ print STDERR "Has local disks -> ". join(",",@$local_disks) . "\n";
+ }
+
+ if (@{$preconditions->{local_resources}}) {
+ $invalidConditions = 1;
+ print STDERR "Has local resources -> " . join(',',@{$preconditions->{local_resources}}) . "\n";
+ }
+
+ die "Skip VM $vmid: Precondition check failed\n" if $invalidConditions;
+ print STDERR "Precondition check passed\n";
print STDERR "Migrating VM $vmid\n";
$upid = PVE::API2::Qemu->migrate_vm({node => $nodename, vmid => $vmid, target => $target,
online => $online, 'with-local-disks' => $with_local_disks});
--
2.20.1
More information about the pve-devel
mailing list