]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
mgr/devicehealth: only fetch osdmap once from check_health
authorSage Weil <sage@redhat.com>
Mon, 25 Jun 2018 18:25:18 +0000 (13:25 -0500)
committerSage Weil <sage@redhat.com>
Tue, 31 Jul 2018 19:08:53 +0000 (14:08 -0500)
Signed-off-by: Sage Weil <sage@redhat.com>
src/pybind/mgr/devicehealth/module.py

index 920403ae104c25f2caf7e8140d5ccef9fdd005a0..ab621e3183aa075c16c7ae88db230174a8e2b15e 100644 (file)
@@ -328,6 +328,9 @@ class Module(MgrModule):
             'DEVICE_HEALTH_IN_USE': [],
             }
         devs = self.get("devices")
+        now = datetime.now()
+        osdmap = self.get("osd_map")
+        assert osdmap is not None
         for dev in devs['devices']:
             devid = dev['devid']
             if 'life_expectancy_min' not in dev:
@@ -340,7 +343,6 @@ class Module(MgrModule):
                 '%Y-%m-%d %H:%M:%S.%f')
             self.log.debug('device %s expectancy min %s', dev,
                            life_expectancy_min)
-            now = datetime.now()
 
             if life_expectancy_min - now <= mark_out_threshold_td:
                 if self.self_heal:
@@ -352,7 +354,7 @@ class Module(MgrModule):
                         osds_in = []
                         osds_out = []
                         for _id in osd_ids:
-                            if self.is_osd_in(_id):
+                            if self.is_osd_in(osdmap, _id):
                                 osds_in.append(_id)
                             else:
                                 osds_out.append(_id)
@@ -397,9 +399,7 @@ class Module(MgrModule):
         self.set_health_checks(checks)
         return (0,"","")
 
-    def is_osd_in(self, osd_id):
-        osdmap = self.get("osd_map")
-        assert osdmap is not None
+    def is_osd_in(self, osdmap, osd_id):
         for osd in osdmap['osds']:
             if str(osd_id) == str(osd['osd']):
                 return bool(osd['in'])