]> git.apps.os.sepia.ceph.com Git - ceph-ci.git/commitdiff
pybind/rbd: provide snap remove flags
authorMykola Golub <mgolub@suse.com>
Thu, 14 Nov 2019 09:11:55 +0000 (09:11 +0000)
committerMykola Golub <mgolub@suse.com>
Thu, 14 Nov 2019 09:11:55 +0000 (09:11 +0000)
Signed-off-by: Mykola Golub <mgolub@suse.com>
src/pybind/rbd/rbd.pyx
src/test/pybind/test_rbd.py

index 3286ca2e6aa36c0b345463e7afb657e3cd5772a1..a3355b8dcf6142493e6d49cb9e73e5542c74b1b8 100644 (file)
@@ -97,6 +97,10 @@ cdef extern from "rbd/librbd.h" nogil:
         RBD_MAX_BLOCK_NAME_SIZE
         RBD_MAX_IMAGE_NAME_SIZE
 
+        _RBD_SNAP_REMOVE_UNPROTECT "RBD_SNAP_REMOVE_UNPROTECT"
+        _RBD_SNAP_REMOVE_FLATTEN "RBD_SNAP_REMOVE_FLATTEN"
+        _RBD_SNAP_REMOVE_FORCE "RBD_SNAP_REMOVE_FORCE"
+
     ctypedef void* rados_t
     ctypedef void* rados_ioctx_t
     ctypedef void* rbd_image_t
@@ -738,6 +742,9 @@ RBD_POOL_STAT_OPTION_TRASH_PROVISIONED_BYTES = _RBD_POOL_STAT_OPTION_TRASH_PROVI
 RBD_POOL_STAT_OPTION_TRASH_MAX_PROVISIONED_BYTES = _RBD_POOL_STAT_OPTION_TRASH_MAX_PROVISIONED_BYTES
 RBD_POOL_STAT_OPTION_TRASH_SNAPSHOTS = _RBD_POOL_STAT_OPTION_TRASH_SNAPSHOTS
 
+RBD_SNAP_REMOVE_UNPROTECT = _RBD_SNAP_REMOVE_UNPROTECT
+RBD_SNAP_REMOVE_FLATTEN = _RBD_SNAP_REMOVE_FLATTEN
+RBD_SNAP_REMOVE_FORCE = _RBD_SNAP_REMOVE_FORCE
 
 class Error(Exception):
     pass
index 9199369c350732607f1189f2191a8454df59cb62..52b8635c562abf098810d17fd725e9e0e900be57 100644 (file)
@@ -34,7 +34,8 @@ from rbd import (RBD, Group, Image, ImageNotFound, InvalidArgument, ImageExists,
                  RBD_CONFIG_SOURCE_POOL, RBD_CONFIG_SOURCE_IMAGE,
                  RBD_MIRROR_PEER_ATTRIBUTE_NAME_MON_HOST,
                  RBD_MIRROR_PEER_ATTRIBUTE_NAME_KEY,
-                 RBD_MIRROR_PEER_DIRECTION_RX, RBD_MIRROR_PEER_DIRECTION_RX_TX)
+                 RBD_MIRROR_PEER_DIRECTION_RX, RBD_MIRROR_PEER_DIRECTION_RX_TX,
+                 RBD_SNAP_REMOVE_UNPROTECT)
 
 rados = None
 ioctx = None
@@ -801,11 +802,12 @@ class TestImage(object):
     def test_remove_snap_not_found(self):
         assert_raises(ImageNotFound, self.image.remove_snap, 'snap1')
 
+    @require_features([RBD_FEATURE_LAYERING])
     def test_remove_snap2(self):
         self.image.create_snap('snap1')
         self.image.protect_snap('snap1')
         assert(self.image.is_protected_snap('snap1'))
-        self.image.remove_snap2('snap1',1)
+        self.image.remove_snap2('snap1', RBD_SNAP_REMOVE_UNPROTECT)
         eq([], list(self.image.list_snaps()))
 
     def test_remove_snap_by_id(self):