""" performance stats for ceph filesystem (for now...) """ import json from typing import List, Dict from mgr_module import MgrModule, Option, NotifyType from .fs.perf_stats import FSPerfStats class Module(MgrModule): COMMANDS = [ { "cmd": "fs perf stats " "name=mds_rank,type=CephString,req=false " "name=client_id,type=CephString,req=false " "name=client_ip,type=CephString,req=false ", "desc": "retrieve ceph fs performance stats", "perm": "r" }, ] MODULE_OPTIONS: List[Option] = [] NOTIFY_TYPES = [NotifyType.command, NotifyType.fs_map] def __init__(self, *args, **kwargs): super(Module, self).__init__(*args, **kwargs) self.fs_perf_stats = FSPerfStats(self) def notify(self, notify_type: NotifyType, notify_id): if notify_type == NotifyType.command: self.fs_perf_stats.notify_cmd(notify_id) elif notify_type == NotifyType.fs_map: self.fs_perf_stats.notify_fsmap() def handle_command(self, inbuf, cmd): prefix = cmd['prefix'] # only supported command is `fs perf stats` right now if prefix.startswith('fs perf stats'): return self.fs_perf_stats.get_perf_data(cmd) raise NotImplementedError(cmd['prefix'])