]> git.proxmox.com Git - pve-storage.git/blobdiff - PVE/Storage/RBDPlugin.pm
rbd : rbd_ls: doesn't throw error if pool doesn't contain image
[pve-storage.git] / PVE / Storage / RBDPlugin.pm
index 83c67749651514b9e3ba5148326480934ac7f81f..2370fc7700ebbdf5020ec7e5487680b84526be4a 100644 (file)
@@ -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;