[pve-devel] [PATCH manager v6 2/5] bulk migrate: improve precondition checks
Fiona Ebner
f.ebner at proxmox.com
Fri Mar 7 14:19:18 CET 2025
Am 13.02.25 um 14:17 schrieb Dominik Csapak:
> this now takes into account the 'not_allowed_nodes' hash we get from the
> api call. With that, we can now limit the 'local_resources' check for
> online vms only, as for offline guests, the 'unavailable-resources' hash
> already includes mapped devices that don't exist on the target node.
>
> This now also includes unavailable storages on target nodes.
>
> Signed-off-by: Dominik Csapak <d.csapak at proxmox.com>
> ---
> changes in v6:
> * added missing colon in log output
> PVE/API2/Nodes.pm | 14 +++++++++++++-
> 1 file changed, 13 insertions(+), 1 deletion(-)
>
> diff --git a/PVE/API2/Nodes.pm b/PVE/API2/Nodes.pm
> index 9cdf19db..f504e1b1 100644
> --- a/PVE/API2/Nodes.pm
> +++ b/PVE/API2/Nodes.pm
> @@ -2331,11 +2331,23 @@ my $create_migrate_worker = sub {
> $invalidConditions .= join(', ', map { $_->{volid} } @{$preconditions->{local_disks}});
> }
>
> - if (@{$preconditions->{local_resources}}) {
> + if ($online && scalar($preconditions->{local_resources}->@*)) {
Hmm, what about non-usb/pci local devices that are not covered by the
'unavailable-resources' below? I.e. ivshmem/serial/parallel. You break
the check for offline migration against those.
> $invalidConditions .= "\n Has local resources: ";
> $invalidConditions .= join(', ', @{$preconditions->{local_resources}});
> }
>
> + if (my $not_allowed_nodes = $preconditions->{not_allowed_nodes}) {
> + if (my $unavail_storages = $not_allowed_nodes->{$target}->{unavailable_storages}) {
> + $invalidConditions .= "\n Has unavailable storages: ";
> + $invalidConditions .= join(', ', $unavail_storages->@*);
> + }
> +
> + if (my $unavail_resources = $not_allowed_nodes->{$target}->{'unavailable-resources'}) {
> + $invalidConditions .= "\n Has unavailable resources: ";
> + $invalidConditions .= join(', ', $unavail_resources->@*);
> + }
> + }
> +
> if ($invalidConditions && $invalidConditions ne '') {
> print STDERR "skip VM $vmid - precondition check failed:";
> die "$invalidConditions\n";
More information about the pve-devel
mailing list