From: Rishabh Dave Date: Wed, 16 Apr 2025 08:24:27 +0000 (+0530) Subject: mgr/vol: don't delete user-created pool in "volume create" command X-Git-Tag: testing/wip-rishabh-testing-20250422.155049-debug~2^2~1 X-Git-Url: http://git.apps.os.sepia.ceph.com/?a=commitdiff_plain;h=4299f660ba9c83ef9305b2834c195da9008810a9;p=ceph-ci.git mgr/vol: don't delete user-created pool in "volume create" command If one of the pool names passed to "ceph fs volume create" command (through --data-pool and --meta-pool name) is absent, don't delete the pool that is present and passed to this command during the cleanup code of this command. IOW, "volume create" command should continue deleting pool created by it but not delete pool created by the user. Fixes: https://tracker.ceph.com/issues/70945 Signed-off-by: Rishabh Dave --- diff --git a/src/pybind/mgr/volumes/fs/operations/volume.py b/src/pybind/mgr/volumes/fs/operations/volume.py index 8c031c498ff..dc06f3f7d4b 100644 --- a/src/pybind/mgr/volumes/fs/operations/volume.py +++ b/src/pybind/mgr/volumes/fs/operations/volume.py @@ -107,6 +107,8 @@ def create_volume(mgr, volname, placement, data_pool, metadata_pool): # are passed by user they must exist already), leave it here so that some # future readers know that this case is already considered and not missed # by chance. + data_pool_was_created = False + metadata_pool_was_created = False if data_pool and metadata_pool: pass elif not data_pool and metadata_pool: @@ -119,6 +121,8 @@ def create_volume(mgr, volname, placement, data_pool, metadata_pool): retval = create_fs_pools(mgr, volname, data_pool, metadata_pool) success = retval.pop(0) if success: + data_pool_was_created = True + metadata_pool_was_created = True data_pool, metadata_pool = retval else: return retval @@ -128,8 +132,10 @@ def create_volume(mgr, volname, placement, data_pool, metadata_pool): if r != 0: log.error("Filesystem creation error: {0} {1} {2}".format(r, outb, outs)) #cleanup - remove_pool(mgr, data_pool) - remove_pool(mgr, metadata_pool) + if data_pool_was_created: + remove_pool(mgr, data_pool) + if metadata_pool_was_created: + remove_pool(mgr, metadata_pool) return r, outb, outs return create_mds(mgr, volname, placement)