From: Aaron Lauterer Date: Fri, 16 Jun 2023 09:57:01 +0000 (+0200) Subject: migration: add target_storage_check_available X-Git-Url: https://git.proxmox.com/?p=qemu-server.git;a=commitdiff_plain;h=e3aad441262b9b33ba7397ba6720235780382c78 migration: add target_storage_check_available We use this in a few places. By factoring it into its own function, we can avoid running slightly different checks in various places. Signed-off-by: Aaron Lauterer --- diff --git a/PVE/QemuMigrate.pm b/PVE/QemuMigrate.pm index 09cc1d8..b10a515 100644 --- a/PVE/QemuMigrate.pm +++ b/PVE/QemuMigrate.pm @@ -149,6 +149,22 @@ sub lock_vm { return PVE::QemuConfig->lock_config($vmid, $code, @param); } +sub target_storage_check_available { + my ($self, $storecfg, $targetsid, $volid) = @_; + + if (!$self->{opts}->{remote}) { + # check if storage is available on target node + my $target_scfg = PVE::Storage::storage_check_enabled( + $storecfg, + $targetsid, + $self->{node}, + ); + my ($vtype) = PVE::Storage::parse_volname($storecfg, $volid); + die "$volid: content type '$vtype' is not available on storage '$targetsid'\n" + if !$target_scfg->{content}->{$vtype}; + } +} + sub prepare { my ($self, $vmid) = @_; @@ -236,18 +252,7 @@ sub prepare { $storages->{$targetsid} = 1; - if (!$self->{opts}->{remote}) { - # check if storage is available on target node - my $target_scfg = PVE::Storage::storage_check_enabled( - $storecfg, - $targetsid, - $self->{node}, - ); - my ($vtype) = PVE::Storage::parse_volname($storecfg, $volid); - - die "$volid: content type '$vtype' is not available on storage '$targetsid'\n" - if !$target_scfg->{content}->{$vtype}; - } + $self->target_storage_check_available($storecfg, $targetsid, $volid); if ($scfg->{shared}) { # PVE::Storage::activate_storage checks this for non-shared storages @@ -396,12 +401,8 @@ sub scan_local_volumes { $targetsid = PVE::JSONSchema::map_id($self->{opts}->{storagemap}, $sid); } - # check target storage on target node if intra-cluster migration - if (!$self->{opts}->{remote}) { - PVE::Storage::storage_check_enabled($storecfg, $targetsid, $self->{node}); - - return if $scfg->{shared}; - } + $self->target_storage_check_available($storecfg, $targetsid, $volid); + return if $scfg->{shared} && !$self->{opts}->{remote}; $local_volumes->{$volid}->{ref} = $attr->{referenced_in_config} ? 'config' : 'snapshot'; $local_volumes->{$volid}->{ref} = 'storage' if $attr->{is_unused};