]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph-ci.git/commitdiff
mgr/vol: don't delete user-created pool in "volume create" command
authorRishabh Dave <ridave@redhat.com>
Wed, 16 Apr 2025 08:24:27 +0000 (13:54 +0530)
committerRishabh Dave <ridave@redhat.com>
Thu, 13 Nov 2025 05:30:19 +0000 (11:00 +0530)
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 <ridave@redhat.com>
(cherry picked from commit 4299f660ba9c83ef9305b2834c195da9008810a9)

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

index 19f0e2fa1d3be328a5e308812f447b4871cdd9f8..79b52b8c499fdf3e63b5069613775e48b3c4cfe7 100644 (file)
@@ -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)