From: Patrick Donnelly Date: Tue, 30 Jun 2020 15:33:59 +0000 (-0700) Subject: pybind/mgr/volumes: fix volume search for pools X-Git-Tag: v14.2.11~17^2~3 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=707f48380cedf2d4ef523c25eee0d3c8c1dff7e7;p=ceph.git pybind/mgr/volumes: fix volume search for pools 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 (cherry picked from commit be74a81e19ef3b5e8204d52e6a3f7f0c57d49854) --- diff --git a/src/pybind/mgr/volumes/fs/operations/volume.py b/src/pybind/mgr/volumes/fs/operations/volume.py index fd7fc4f62a44..a4d28ffc1b72 100644 --- a/src/pybind/mgr/volumes/fs/operations/volume.py +++ b/src/pybind/mgr/volumes/fs/operations/volume.py @@ -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']])