ceph nautilus changed the structure of 'pg dump osds'
they moved the data one level below

parse both new and old format, and bail if it returns anything else

Signed-off-by: Dominik Csapak <d.csa...@proxmox.com>
---
 PVE/API2/Ceph/OSD.pm | 11 ++++++++++-
 1 file changed, 10 insertions(+), 1 deletion(-)

diff --git a/PVE/API2/Ceph/OSD.pm b/PVE/API2/Ceph/OSD.pm
index 4b386ebe..9f1e6779 100644
--- a/PVE/API2/Ceph/OSD.pm
+++ b/PVE/API2/Ceph/OSD.pm
@@ -45,7 +45,16 @@ my $get_osd_status = sub {
 my $get_osd_usage = sub {
     my ($rados) = @_;
 
-    my $osdlist = $rados->mon_command({ prefix => 'pg dump', dumpcontents => [ 
'osds' ]}) || [];
+    my $res = $rados->mon_command({ prefix => 'pg dump', dumpcontents => [ 
'osds' ]}) || [];
+    my $osdlist;
+
+    if (ref($res) eq "HASH") { # since nautilus
+       $osdlist = $res->{osd_stats};
+    } elsif (ref($res) eq "ARRAY") { # until luminous
+       $osdlist = $res;
+    } else { # bail
+       die "unknown format of pg dump osds\n";
+    }
 
     my $osdstat;
     foreach my $d (@$osdlist) {
-- 
2.11.0


_______________________________________________
pve-devel mailing list
pve-devel@pve.proxmox.com
https://pve.proxmox.com/cgi-bin/mailman/listinfo/pve-devel

Reply via email to