mirror of
https://git.proxmox.com/git/qemu-server
synced 2025-10-04 17:01:46 +00:00
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 <a.lauterer@proxmox.com>
This commit is contained in:
parent
56d28037b5
commit
e3aad44126
@ -149,6 +149,22 @@ sub lock_vm {
|
|||||||
return PVE::QemuConfig->lock_config($vmid, $code, @param);
|
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 {
|
sub prepare {
|
||||||
my ($self, $vmid) = @_;
|
my ($self, $vmid) = @_;
|
||||||
|
|
||||||
@ -236,18 +252,7 @@ sub prepare {
|
|||||||
|
|
||||||
$storages->{$targetsid} = 1;
|
$storages->{$targetsid} = 1;
|
||||||
|
|
||||||
if (!$self->{opts}->{remote}) {
|
$self->target_storage_check_available($storecfg, $targetsid, $volid);
|
||||||
# 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};
|
|
||||||
}
|
|
||||||
|
|
||||||
if ($scfg->{shared}) {
|
if ($scfg->{shared}) {
|
||||||
# PVE::Storage::activate_storage checks this for non-shared storages
|
# 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);
|
$targetsid = PVE::JSONSchema::map_id($self->{opts}->{storagemap}, $sid);
|
||||||
}
|
}
|
||||||
|
|
||||||
# check target storage on target node if intra-cluster migration
|
$self->target_storage_check_available($storecfg, $targetsid, $volid);
|
||||||
if (!$self->{opts}->{remote}) {
|
return if $scfg->{shared} && !$self->{opts}->{remote};
|
||||||
PVE::Storage::storage_check_enabled($storecfg, $targetsid, $self->{node});
|
|
||||||
|
|
||||||
return if $scfg->{shared};
|
|
||||||
}
|
|
||||||
|
|
||||||
$local_volumes->{$volid}->{ref} = $attr->{referenced_in_config} ? 'config' : 'snapshot';
|
$local_volumes->{$volid}->{ref} = $attr->{referenced_in_config} ? 'config' : 'snapshot';
|
||||||
$local_volumes->{$volid}->{ref} = 'storage' if $attr->{is_unused};
|
$local_volumes->{$volid}->{ref} = 'storage' if $attr->{is_unused};
|
||||||
|
Loading…
Reference in New Issue
Block a user