From 6599f5a9dab0aa6b827e0d4b932ea1c1e84a6a1b Mon Sep 17 00:00:00 2001 From: Yaarit Hatuka Date: Mon, 3 Feb 2020 14:19:39 -0500 Subject: [PATCH] mgr/telemetry: check get_metadata return val get_metada() returns 'None' when requesting a missing service, hence trying to access its content fails. Added a check for osd and mgr get_metadata() calls. Fixes: https://tracker.ceph.com/issues/43642 Signed-off-by: Yaarit Hatuka (cherry picked from commit 9e7a0cbb6f12840217b8f854ed516e44ca8c831e) --- src/pybind/mgr/telemetry/module.py | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/src/pybind/mgr/telemetry/module.py b/src/pybind/mgr/telemetry/module.py index 384422903103..4f871dc8e6c6 100644 --- a/src/pybind/mgr/telemetry/module.py +++ b/src/pybind/mgr/telemetry/module.py @@ -231,7 +231,11 @@ class Module(MgrModule): metadata[key] = defaultdict(int) for osd in osd_map['osds']: - for k, v in self.get_metadata('osd', str(osd['osd'])).items(): + res = self.get_metadata('osd', str(osd['osd'])).items() + if res is None: + self.log.debug('Could not get metadata for osd.%s' % str(osd['osd'])) + continue + for k, v in res: if k not in keys: continue @@ -248,7 +252,11 @@ class Module(MgrModule): metadata[key] = defaultdict(int) for mon in mon_map['mons']: - for k, v in self.get_metadata('mon', mon['name']).items(): + res = self.get_metadata('mon', mon['name']).items() + if res is None: + self.log.debug('Could not get metadata for mon.%s' % (mon['name'])) + continue + for k, v in res: if k not in keys: continue -- 2.47.3