]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
mgr/rbd_support: avoid using list of different type of elements
authorKefu Chai <kchai@redhat.com>
Thu, 18 Feb 2021 07:18:01 +0000 (15:18 +0800)
committerKefu Chai <kchai@redhat.com>
Thu, 18 Feb 2021 14:46:51 +0000 (22:46 +0800)
refactor Schedules.find() to avoid using list composed of different
types of elements. this annoys mypy.

also take this opportunity to avoid looking up in the dict twice.

Signed-off-by: Kefu Chai <kchai@redhat.com>
src/pybind/mgr/rbd_support/schedule.py

index eaee182cb04e5f645448c138299b770ceeb04614..50e0f6cdc4481e26e3a5258cc85944ef98978f8e 100644 (file)
@@ -473,15 +473,17 @@ class Schedules:
         self.save(level_spec, schedule)
 
     def find(self, pool_id, namespace, image_id=None):
-        levels = [None, pool_id, namespace]
+        levels = [pool_id, namespace]
         if image_id:
             levels.append(image_id)
-
-        while levels:
-            level_spec_id = "/".join(levels[1:])
-            if level_spec_id in self.schedules:
-                return self.schedules[level_spec_id]
-            del levels[-1]
+        nr_levels = len(levels)
+        while nr_levels >= 0:
+            # an empty spec id implies global schedule
+            level_spec_id = "/".join(levels[:nr_levels])
+            found = self.schedules.get(level_spec_id)
+            if found is not None:
+                return found
+            nr_levels -= 1
         return None
 
     def intersects(self, level_spec):