Skip to content

Commit

Permalink
Merge pull request #33346 from yaarith/backport-nautilus-pr-32903
Browse files Browse the repository at this point in the history
nautilus: mgr/devicehealth: fix telemetry stops sending device reports after 48 hours

Reviewed-by: Sage Weil <sage@redhat.com>
  • Loading branch information
yuriw committed Feb 25, 2020
2 parents 2b1d255 + 21d78c0 commit d7e0d07
Showing 1 changed file with 14 additions and 9 deletions.
23 changes: 14 additions & 9 deletions src/pybind/mgr/devicehealth/module.py
Expand Up @@ -422,26 +422,23 @@ def put_device_metrics(self, ioctx, devid, data):
ioctx.remove_omap_keys(op, tuple(erase))
ioctx.operate_write_op(op, devid)

def show_device_metrics(self, devid, sample):
# verify device exists
r = self.get("device " + devid)
if not r or 'device' not in r.keys():
return -errno.ENOENT, '', 'device ' + devid + ' not found'
# fetch metrics
def _get_device_metrics(self, devid, sample=None, min_sample=None):
res = {}
ioctx = self.open_connection(create_if_missing=False)
if not ioctx:
return 0, json.dumps(res, indent=4), ''
return {}
with ioctx:
with rados.ReadOpCtx() as op:
omap_iter, ret = ioctx.get_omap_vals(op, "", sample or '',
omap_iter, ret = ioctx.get_omap_vals(op, min_sample or '', sample or '',
MAX_SAMPLES) # fixme
assert ret == 0
try:
ioctx.operate_read_op(op, devid)
for key, value in list(omap_iter):
if sample and key != sample:
break
if min_sample and key < min_sample:
break
try:
v = json.loads(value)
except (ValueError, IndexError):
Expand All @@ -454,8 +451,16 @@ def show_device_metrics(self, devid, sample):
except rados.Error as e:
self.log.exception("RADOS error reading omap: {0}".format(e))
raise
return res

return 0, json.dumps(res, indent=4), ''
def show_device_metrics(self, devid, sample):
# verify device exists
r = self.get("device " + devid)
if not r or 'device' not in r.keys():
return -errno.ENOENT, '', 'device ' + devid + ' not found'
# fetch metrics
res = self._get_device_metrics(devid, sample=sample)
return 0, json.dumps(res, indent=4, sort_keys=True), ''

def check_health(self):
self.log.info('Check health')
Expand Down

0 comments on commit d7e0d07

Please sign in to comment.