]> git.apps.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>
Wed, 16 Apr 2025 08:57:19 +0000 (14:27 +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>
src/pybind/mgr/volumes/fs/operations/volume.py

index 8c031c498ff33def8107cfbf7c6c59e0dec68a06..dc06f3f7d4bf5fde3f884396036c3915e8f35af8 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)