def test_iostat(self):
self._selftest_plugin("iostat")
+ def test_devicehealth(self):
+ self._selftest_plugin("devicehealth")
+
def test_selftest_run(self):
self._load_module("selftest")
self.mgr_cluster.mon_manager.raw_cluster_cmd("mgr", "self-test", "run")
"desc": "Show stored device metrics for the device",
"perm": "r"
},
+ {
+ "cmd": "devicehealth self-test",
+ "desc": "Run a self-test on the devicehealth module",
+ "perm": "rw",
+ },
]
def __init__(self, *args, **kwargs):
return self.scrape_all();
elif cmd['prefix'] == 'device show-health-metrics':
return self.show_device_metrics(cmd['devid'], cmd.get('sample'))
-
+ elif cmd['prefix'] == 'devicehealth self-test':
+ return self.self_test()
else:
# mgr should respect our self.COMMANDS and not call us for
# any prefix we don't advertise
raise NotImplementedError(cmd['prefix'])
+ def self_test(self):
+ self.refresh_config()
+ osdmap = self.get('osd_map')
+ osd_id = osdmap['osds'][0]['osd']
+ osdmeta = self.get('osd_metadata')
+ devs = osdmeta.get(str(osd_id), {}).get('device_ids')
+ if devs:
+ devid = devs.split()[0].split('=')[1]
+ (r, before, err) = self.show_device_metrics(devid, '')
+ assert r == 0
+ (r, out, err) = self.scrape_device(devid)
+ assert r == 0
+ (r, after, err) = self.show_device_metrics(devid, '')
+ assert r == 0
+ assert before != after
+ return (0, '', '')
+
def refresh_config(self):
self.enable_monitoring = self.get_config('enable_monitoring', '') is not '' or 'false'
for opt, value in DEFAULTS.iteritems():