mirror of
https://github.com/ceph/ceph
synced 2025-02-24 11:37:37 +00:00
mgr/dashboard: Device health status is not getting listed under hosts section
Device health is shown as failed to retrieve data under Hosts > Device Health section. This PR intends to fix this issue. Fixes: https://tracker.ceph.com/issues/49354 Signed-off-by: Aashish Sharma <aasharma@redhat.com>
This commit is contained in:
parent
762b27af2c
commit
8f4574696c
@ -225,12 +225,20 @@ class CephService(object):
|
||||
|
||||
for daemon in daemons:
|
||||
svc_type, svc_id = daemon.split('.')
|
||||
try:
|
||||
dev_smart_data = CephService.send_command(
|
||||
svc_type, 'smart', svc_id, devid=device['devid'])
|
||||
except SendCommandError:
|
||||
# Try to retrieve SMART data from another daemon.
|
||||
continue
|
||||
if 'osd' in svc_type:
|
||||
try:
|
||||
dev_smart_data = CephService.send_command(
|
||||
svc_type, 'smart', svc_id, devid=device['devid'])
|
||||
except SendCommandError:
|
||||
# Try to retrieve SMART data from another daemon.
|
||||
continue
|
||||
else:
|
||||
try:
|
||||
dev_smart_data = CephService.send_command(
|
||||
svc_type, 'device get-health-metrics', svc_id, devid=device['devid'])
|
||||
except SendCommandError:
|
||||
# Try to retrieve SMART data from another daemon.
|
||||
continue
|
||||
for dev_id, dev_data in dev_smart_data.items():
|
||||
if 'error' in dev_data:
|
||||
logger.warning(
|
||||
|
@ -107,3 +107,23 @@ def test_get_smart_data(caplog, by, args, log):
|
||||
CephService._get_smart_data_by_device.assert_not_called()
|
||||
assert smart_data == {}
|
||||
assert log in caplog.text
|
||||
|
||||
|
||||
@mock.patch.object(CephService, 'send_command')
|
||||
def test_get_smart_data_from_appropriate_ceph_command(send_command):
|
||||
# pylint: disable=protected-access
|
||||
send_command.side_effect = [
|
||||
{'nodes': [{'name': 'osd.1', 'status': 'up'}, {'name': 'mon.1', 'status': 'down'}]},
|
||||
{'fake': {'device': {'name': '/dev/sda'}}}
|
||||
]
|
||||
CephService._get_smart_data_by_device({'devid': '1', 'daemons': ['osd.1', 'mon.1']})
|
||||
send_command.assert_has_calls([mock.call('mon', 'osd tree'),
|
||||
mock.call('osd', 'smart', '1', devid='1')])
|
||||
|
||||
send_command.side_effect = [
|
||||
{'nodes': [{'name': 'osd.1', 'status': 'down'}, {'name': 'mon.1', 'status': 'up'}]},
|
||||
{'fake': {'device': {'name': '/dev/sda'}}}
|
||||
]
|
||||
CephService._get_smart_data_by_device({'devid': '1', 'daemons': ['osd.1', 'mon.1']})
|
||||
send_command.assert_has_calls([mock.call('mon', 'osd tree'),
|
||||
mock.call('mon', 'device get-health-metrics', '1', devid='1')])
|
||||
|
Loading…
Reference in New Issue
Block a user