]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
mgr/mgr_module: metadata is fetched async 37558/head
authorMichael Fritch <mfritch@suse.com>
Thu, 25 Jun 2020 20:36:22 +0000 (14:36 -0600)
committerNathan Cutler <ncutler@suse.com>
Mon, 5 Oct 2020 21:13:13 +0000 (23:13 +0200)
fetch metadata using a defaultdict

Signed-off-by: Michael Fritch <mfritch@suse.com>
(cherry picked from commit f06e60b591d7921b0afdd40219f3866773b00683)

Conflicts:
src/pybind/mgr/status/module.py

src/pybind/mgr/mgr_module.py
src/pybind/mgr/status/module.py

index ebec969eb432b3c1f97f0791b33e724a24c66e94..ac4fb49df07512ce8e58ddfe597eae3317d53595 100644 (file)
@@ -877,7 +877,7 @@ class MgrModule(ceph_module.BaseMgrModule):
         """
         return self._ceph_get_server(None)
 
-    def get_metadata(self, svc_type, svc_id):
+    def get_metadata(self, svc_type, svc_id, default=None):
         """
         Fetch the daemon metadata for a particular service.
 
@@ -890,7 +890,10 @@ class MgrModule(ceph_module.BaseMgrModule):
             calling this
         :rtype: dict, or None if no metadata found
         """
-        return self._ceph_get_metadata(svc_type, svc_id)
+        metadata = self._ceph_get_metadata(svc_type, svc_id)
+        if metadata is None:
+            return default
+        return metadata
 
     def get_daemon_status(self, svc_type, svc_id):
         """
index d3ff1fad35337807356728b5a549516c144e5f2a..f8509296b0c83042fbcded80c72806b92ff9de97 100644 (file)
@@ -107,9 +107,9 @@ class Module(MgrModule):
                             5
                         ) + "/s"
 
-                    metadata = self.get_metadata('mds', info['name'])
-                    version = metadata.get('ceph_version', 'unknown') if metadata else 'unknown'
-                    mds_versions[version].append(info['name'])
+                    defaults = defaultdict(lambda: None, {'version' : 'unknown'})
+                    metadata = self.get_metadata('mds', info['name'], default=defaults)
+                    mds_versions[metadata['ceph_version']].append(info['name'])
                     rank_table.add_row([
                         mgr_util.bold(rank.__str__()), c_state, info['name'],
                         activity,
@@ -135,9 +135,9 @@ class Module(MgrModule):
                     5
                 ) + "/s"
 
-                metadata = self.get_metadata('mds', daemon_info['name'])
-                version = metadata.get('ceph_version', 'unknown') if metadata else 'unknown'
-                mds_versions[version].append(daemon_info['name'])
+                defaults = defaultdict(lambda: None, {'version' : 'unknown'})
+                metadata = self.get_metadata('mds', daemon_info['name'], default=defaults)
+                mds_versions[metadata['ceph_version']].append(daemon_info['name'])
 
                 rank_table.add_row([
                     "{0}-s".format(daemon_info['rank']), "standby-replay",
@@ -174,9 +174,9 @@ class Module(MgrModule):
 
         standby_table = PrettyTable(["Standby MDS"])
         for standby in fsmap['standbys']:
-            metadata = self.get_metadata('mds', standby['name'])
-            version = metadata.get('ceph_version', 'unknown') if metadata else 'unknown'
-            mds_versions[version].append(standby['name'])
+            defaults = defaultdict(lambda: None, {'version' : 'unknown'})
+            metadata = self.get_metadata('mds', standby['name'], default=defaults)
+            mds_versions[metadata['ceph_version']].append(standby['name'])
 
             standby_table.add_row([standby['name']])
 
@@ -228,7 +228,8 @@ class Module(MgrModule):
             kb_avail = 0
 
             if osd_id in osd_stats:
-                metadata = self.get_metadata('osd', "%s" % osd_id)
+                defaults = defaultdict(lambda: None, {'hostname' : ''})
+                metadata = self.get_metadata('osd', str(osd_id), default=defaults)
                 stats = osd_stats[osd_id]
                 hostname = metadata['hostname']
                 kb_used = stats['kb_used'] * 1024