self.log.debug('put_device_metrics device %s prune %s' %
(devid, prune))
erase = []
- with rados.ReadOpCtx() as op:
- iter, ret = ioctx.get_omap_keys(op, "", 500) # fixme
- assert ret == 0
- ioctx.operate_read_op(op, devid)
- for key, _ in list(iter):
- if key >= prune:
- break
- erase.append(key)
+ try:
+ with rados.ReadOpCtx() as op:
+ iter, ret = ioctx.get_omap_keys(op, "", 500) # fixme
+ assert ret == 0
+ ioctx.operate_read_op(op, devid)
+ for key, _ in list(iter):
+ if key >= prune:
+ break
+ erase.append(key)
+ except:
+ pass
key = datetime.now().strftime(TIME_FORMAT)
self.log.debug('put_device_metrics device %s key %s = %s, erase %s' %
(devid, key, data, 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
ioctx = self.open_connection()
res = {}
with rados.ReadOpCtx() as op:
iter, ret = ioctx.get_omap_vals(op, "", sample or '', 500) # fixme
assert ret == 0
- ioctx.operate_read_op(op, devid)
- for key, value in list(iter):
- if sample and key != sample:
- break
- try:
- v = json.loads(value)
- except:
- self.log.debug('unable to parse value for %s: "%s"' %
- (key, value))
- pass
- res[key] = v
+ try:
+ ioctx.operate_read_op(op, devid)
+ for key, value in list(iter):
+ if sample and key != sample:
+ break
+ try:
+ v = json.loads(value)
+ except:
+ self.log.debug('unable to parse value for %s: "%s"' %
+ (key, value))
+ pass
+ res[key] = v
+ except:
+ pass
return (0, json.dumps(res, indent=4), '')
def extract_smart_features(self, raw):