]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
pybind/mgr/volumes: fix volume search for pools
authorPatrick Donnelly <pdonnell@redhat.com>
Tue, 30 Jun 2020 15:33:59 +0000 (08:33 -0700)
committerRamana Raja <rraja@redhat.com>
Mon, 27 Jul 2020 12:35:47 +0000 (18:05 +0530)
Loop logic would bail out if it first sees any file system that does not
match the volume it's looking for.

Fixes: https://tracker.ceph.com/issues/46277
Signed-off-by: Patrick Donnelly <pdonnell@redhat.com>
(cherry picked from commit be74a81e19ef3b5e8204d52e6a3f7f0c57d49854)

src/pybind/mgr/volumes/fs/operations/volume.py

index fd7fc4f62a4492d85b1202f04f2d6168b6456732..a4d28ffc1b7282c4658a26fd0c5d107a86386e7c 100644 (file)
@@ -3,6 +3,8 @@ import errno
 import logging
 import sys
 
+from typing import List
+
 from contextlib import contextmanager
 from threading import Lock, Condition
 
@@ -201,12 +203,15 @@ def get_pool_names(mgr, volname):
     return metadata and data pools (list) names of volume as a tuple
     """
     fs_map = mgr.get("fs_map")
+    metadata_pool_id = None
+    data_pool_ids = [] # type: List[int]
     for f in fs_map['filesystems']:
         if volname == f['mdsmap']['fs_name']:
             metadata_pool_id = f['mdsmap']['metadata_pool']
             data_pool_ids = f['mdsmap']['data_pools']
-        else:
-            return None, None
+            break
+    if metadata_pool_id is None:
+        return None, None
 
     osdmap = mgr.get("osd_map")
     pools = dict([(p['pool'], p['pool_name']) for p in osdmap['pools']])