From e9fdb219c1b946dc2b346b11c5e5d4b04786345d Mon Sep 17 00:00:00 2001 From: Sage Weil Date: Tue, 9 Jul 2019 14:25:23 -0500 Subject: [PATCH] mgr/telemetry: accept channel list to 'telemetry show' Also include a 'channels_available' item so that a user can tell which channels are available. Signed-off-by: Sage Weil --- src/pybind/mgr/telemetry/module.py | 21 ++++++++++++++------- 1 file changed, 14 insertions(+), 7 deletions(-) diff --git a/src/pybind/mgr/telemetry/module.py b/src/pybind/mgr/telemetry/module.py index 4d34ceaf2443b..2b9f419f3e958 100644 --- a/src/pybind/mgr/telemetry/module.py +++ b/src/pybind/mgr/telemetry/module.py @@ -16,6 +16,7 @@ from collections import defaultdict from mgr_module import MgrModule +ALL_CHANNELS = ['basic', 'crash', 'device'] class Module(MgrModule): config = dict() @@ -105,7 +106,8 @@ class Module(MgrModule): "perm": "rw" }, { - "cmd": "telemetry show", + "cmd": "telemetry show " + "name=channels,type=CephString,n=N,req=False", "desc": "Show last report or report to be sent", "perm": "r" }, @@ -215,13 +217,16 @@ class Module(MgrModule): except: return None - def compile_report(self): + def compile_report(self, channels=[]): + if not channels: + channels = self.get_active_channels() report = { 'leaderboard': False, 'report_version': 1, 'report_timestamp': datetime.utcnow().isoformat(), 'report_id': self.report_id, - 'channels': self.get_active_channels(), + 'channels': channels, + 'channels_available': ALL_CHANNELS, } if self.leaderboard: @@ -230,7 +235,7 @@ class Module(MgrModule): for option in ['description', 'contact', 'organization']: report[option] = getattr(self, option) - if self.channel_basic: + if 'basic' in channels: mon_map = self.get('mon_map') osd_map = self.get('osd_map') service_map = self.get('service_map') @@ -286,10 +291,10 @@ class Module(MgrModule): for key, value in service_map['services'].items(): report['services'][key] += 1 - if self.channel_crash: + if 'crash' in channels: report['crashes'] = self.gather_crashinfo() - if self.channel_devices: + if 'device' in channels: report['devices'] = self.gather_device_report() return report @@ -333,7 +338,9 @@ class Module(MgrModule): ) elif command['prefix'] == 'telemetry show': - report = self.compile_report() + report = self.compile_report( + channels=command.get('channels', None) + ) return 0, json.dumps(report, indent=4), '' else: return (-errno.EINVAL, '', -- 2.39.5