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.csapak@proxmox.com>
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) {