return FilterSpec(mds_ranks, client_id, client_ip)
def get_perf_data(self, cmd):
- try:
- filter_spec = self.extract_query_filters(cmd)
- except ValueError as e:
- return -errno.EINVAL, "", str(e)
+ filter_spec = self.extract_query_filters(cmd)
counters = {}
with self.lock:
"""
import json
+import errno
from typing import List, Dict
from xml.dom.minidom import parseString
prefix = cmd['prefix']
# only supported command is `fs perf stats` right now
if prefix.startswith('fs perf stats'):
- result = self.fs_perf_stats.get_perf_data(cmd)
+ try:
+ result = self.fs_perf_stats.get_perf_data(cmd)
+ except ValueError as e:
+ return -errno.EINVAL, "", str(e)
+
if 'format' in cmd:
if cmd['format'] == 'json-pretty':
return 0, json.dumps(result, indent=2), ""
if dicttoxml is None:
raise ImportError("dicttoxml package required for xml")
result = json.loads(json.dumps(result, default=str))
- return dicttoxml(result)
+ return 0, dicttoxml(result).decode('utf-8'), ""
elif cmd['format'] == 'xml-pretty':
if dicttoxml is None:
raise ImportError("dicttoxml package required for xml")
res_xml = parseString(dicttoxml(result))
- return res_xml.toprettyxml()
+ return 0, res_xml.toprettyxml(), ""
return 0, json.dumps(result), ""
raise NotImplementedError(cmd['prefix'])