diff --git a/lib/App/Monitoring/Plugin/CheckRaid/Plugins/arcconf.pm b/lib/App/Monitoring/Plugin/CheckRaid/Plugins/arcconf.pm index 41ee74a8..ba2194d5 100644 --- a/lib/App/Monitoring/Plugin/CheckRaid/Plugins/arcconf.pm +++ b/lib/App/Monitoring/Plugin/CheckRaid/Plugins/arcconf.pm @@ -350,8 +350,14 @@ sub process_physical_device_information { my (@pd, $cs, $s); while (my($ch, $channel_data) = each %$data) { while (my($pd, $d) = each %$channel_data) { - # FIXME: fallback to 'Device Phy Information' due parser bug - $cs = $d->{_} || $d->{'Device Phy Information'}; + # Due to parser bugs not resetting the subsection, flatten all the + # subsections into a single Hash + $cs = {}; + foreach my $subsection (values %$d) { + foreach my $key (keys %$subsection) { + $cs->{$key} = $subsection->{$key}; + } + } # FIXME: this should be skipped in check process, not here if ($pd eq '') {