From 3bf2193b4487bc64d22161b10795dbb0ed028c16 Mon Sep 17 00:00:00 2001 From: Fiona Ebner Date: Thu, 19 Dec 2024 11:43:07 +0100 Subject: [PATCH] rbd plugin: factor out helper to check if volume already exists Signed-off-by: Fiona Ebner --- src/PVE/Storage/RBDPlugin.pm | 17 ++++++++++++----- 1 file changed, 12 insertions(+), 5 deletions(-) diff --git a/src/PVE/Storage/RBDPlugin.pm b/src/PVE/Storage/RBDPlugin.pm index 680e922..301918c 100644 --- a/src/PVE/Storage/RBDPlugin.pm +++ b/src/PVE/Storage/RBDPlugin.pm @@ -348,6 +348,16 @@ sub rbd_volume_du { die "got no matching image from rbd du\n"; } +my sub rbd_volume_exists { + my ($scfg, $storeid, $volname) = @_; + + eval { + my $cmd = $rbd_cmd->($scfg, $storeid, 'info', $volname); + run_rbd_command($cmd, errmsg => "exist check", quiet => 1); + }; + return $@ ? undef : 1; +} + # Configuration sub type { @@ -869,11 +879,8 @@ sub rename_volume { $target_volname = $class->find_free_diskname($storeid, $scfg, $target_vmid, $format) if !$target_volname; - eval { - my $cmd = $rbd_cmd->($scfg, $storeid, 'info', $target_volname); - run_rbd_command($cmd, errmsg => "exist check", quiet => 1); - }; - die "target volume '${target_volname}' already exists\n" if !$@; + die "target volume '${target_volname}' already exists\n" + if rbd_volume_exists($scfg, $storeid, $target_volname); my $cmd = $rbd_cmd->($scfg, $storeid, 'rename', $source_image, $target_volname);