api: ceph-mds: get mds state when multple ceph filesystems exist

by iterating over all of them and saving the name to the active ones
this fixes the issue that an mds that is assigned to not the first
fs in the list gets wrongly shown as offline

Signed-off-by: Dominik Csapak <d.csapak@proxmox.com>
This commit is contained in:
Dominik Csapak 2021-10-25 16:01:28 +02:00 committed by Thomas Lamprecht
parent 82536c370d
commit c51db18c42

View File

@ -185,13 +185,14 @@ sub get_cluster_mds_state {
}
my $add_state = sub {
my ($mds) = @_;
my ($mds, $fsname) = @_;
my $state = {};
$state->{addr} = $mds->{addr};
$state->{rank} = $mds->{rank};
$state->{standby_replay} = $mds->{standby_replay} ? 1 : 0;
$state->{state} = $mds->{state};
$state->{fs_name} = $fsname;
$mds_state->{$mds->{name}} = $state;
};
@ -204,13 +205,14 @@ sub get_cluster_mds_state {
$add_state->($mds);
}
my $fs_info = $fsmap->{filesystems}->[0];
my $active_mds = $fs_info->{mdsmap}->{info};
for my $fs_info (@{$fsmap->{filesystems}}) {
my $active_mds = $fs_info->{mdsmap}->{info};
# normally there's only one active MDS, but we can have multiple active for
# different ranks (e.g., different cephs path hierarchy). So just add all.
foreach my $mds (values %$active_mds) {
$add_state->($mds);
# normally there's only one active MDS, but we can have multiple active for
# different ranks (e.g., different cephs path hierarchy). So just add all.
foreach my $mds (values %$active_mds) {
$add_state->($mds, $fs_info->{mdsmap}->{fs_name});
}
}
return $mds_state;