From 3e195ccccbdcd542ebf095a96971281285334944 Mon Sep 17 00:00:00 2001 From: Alexandre Derumier Date: Sun, 17 Jun 2012 08:15:45 +0200 Subject: [PATCH] rbd : rbd_ls: doesn't throw error if pool doesn't contain image Signed-off-by: Alexandre Derumier --- PVE/Storage/RBDPlugin.pm | 26 ++++++++++++++++++-------- 1 file changed, 18 insertions(+), 8 deletions(-) diff --git a/PVE/Storage/RBDPlugin.pm b/PVE/Storage/RBDPlugin.pm index 83c6774..2370fc7 100644 --- a/PVE/Storage/RBDPlugin.pm +++ b/PVE/Storage/RBDPlugin.pm @@ -19,19 +19,29 @@ sub rbd_ls{ my $cmd = ['/usr/bin/rbd', '-p', $rbdpool, '-m', $monhost, '-n', "client.".$scfg->{username} ,'--keyfile', '/etc/pve/priv/ceph/'.$storeid.'.'.$scfg->{username}.'.key', '--auth_supported',$scfg->{authsupported}, 'ls' ]; my $list = {}; - run_command($cmd, errfunc => sub {},outfunc => sub { + + my $errfunc = sub { my $line = shift; + die $line if $line; + }; - $line = trim($line); - my ($image) = $line; + eval { + run_command($cmd, errmsg => "rbd error", errfunc => $errfunc,outfunc => sub { + my $line = shift; + + $line = trim($line); + my ($image) = $line; - $list->{$rbdpool}->{$image} = { - name => $image, - size => "", - }; + $list->{$rbdpool}->{$image} = { + name => $image, + size => "", + }; - }); + }); + }; + my $err = $@; + die $err if $err && $err !~ m/doesn't contain rbd images/ ; return $list;