From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from firstgate.proxmox.com (firstgate.proxmox.com [212.224.123.68]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits)) (No client certificate requested) by lists.proxmox.com (Postfix) with ESMTPS id C4EB6A1D45 for ; Fri, 16 Jun 2023 11:57:13 +0200 (CEST) Received: from firstgate.proxmox.com (localhost [127.0.0.1]) by firstgate.proxmox.com (Proxmox) with ESMTP id BEF9030AE9 for ; Fri, 16 Jun 2023 11:57:12 +0200 (CEST) Received: from proxmox-new.maurer-it.com (proxmox-new.maurer-it.com [94.136.29.106]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits)) (No client certificate requested) by firstgate.proxmox.com (Proxmox) with ESMTPS for ; Fri, 16 Jun 2023 11:57:10 +0200 (CEST) Received: from proxmox-new.maurer-it.com (localhost.localdomain [127.0.0.1]) by proxmox-new.maurer-it.com (Proxmox) with ESMTP id 6B00145BD6 for ; Fri, 16 Jun 2023 11:57:10 +0200 (CEST) From: Aaron Lauterer To: pve-devel@lists.proxmox.com Date: Fri, 16 Jun 2023 11:57:01 +0200 Message-Id: <20230616095708.1323621-6-a.lauterer@proxmox.com> X-Mailer: git-send-email 2.39.2 In-Reply-To: <20230616095708.1323621-1-a.lauterer@proxmox.com> References: <20230616095708.1323621-1-a.lauterer@proxmox.com> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-SPAM-LEVEL: Spam detection results: 0 AWL -0.088 Adjusted score from AWL reputation of From: address BAYES_00 -1.9 Bayes spam probability is 0 to 1% DMARC_MISSING 0.1 Missing DMARC policy KAM_DMARC_STATUS 0.01 Test Rule for DKIM or SPF Failure with Strict Alignment SPF_HELO_NONE 0.001 SPF: HELO does not publish an SPF Record SPF_PASS -0.001 SPF: sender matches SPF record T_SCC_BODY_TEXT_LINE -0.01 - Subject: [pve-devel] [PATCH v4 qemu-server 5/12] migration: add target_storage_check_available X-BeenThere: pve-devel@lists.proxmox.com X-Mailman-Version: 2.1.29 Precedence: list List-Id: Proxmox VE development discussion List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 16 Jun 2023 09:57:13 -0000 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 --- changes since v3: added as its own dedicated patch for a better git history PVE/QemuMigrate.pm | 37 +++++++++++++++++++------------------ 1 file changed, 19 insertions(+), 18 deletions(-) diff --git a/PVE/QemuMigrate.pm b/PVE/QemuMigrate.pm index 5f4f402..5f61bcd 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 @@ -353,12 +358,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}; -- 2.39.2