From be74a81e19ef3b5e8204d52e6a3f7f0c57d49854 Mon Sep 17 00:00:00 2001 From: Patrick Donnelly Date: Tue, 30 Jun 2020 08:33:59 -0700 Subject: [PATCH] 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 --- src/pybind/mgr/volumes/fs/operations/volume.py | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/src/pybind/mgr/volumes/fs/operations/volume.py b/src/pybind/mgr/volumes/fs/operations/volume.py index 946d51f6979..64859a44e27 100644 --- a/src/pybind/mgr/volumes/fs/operations/volume.py +++ b/src/pybind/mgr/volumes/fs/operations/volume.py @@ -2,6 +2,8 @@ import errno import logging import sys +from typing import List + from contextlib import contextmanager import orchestrator @@ -26,12 +28,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']])