From cf7a52621310142c02a41f124fe0ad0d37d873e6 Mon Sep 17 00:00:00 2001 From: Mykola Golub Date: Thu, 14 Nov 2019 09:11:55 +0000 Subject: [PATCH] pybind/rbd: provide snap remove flags Signed-off-by: Mykola Golub --- src/pybind/rbd/rbd.pyx | 7 +++++++ src/test/pybind/test_rbd.py | 6 ++++-- 2 files changed, 11 insertions(+), 2 deletions(-) diff --git a/src/pybind/rbd/rbd.pyx b/src/pybind/rbd/rbd.pyx index 3286ca2e6aa..a3355b8dcf6 100644 --- a/src/pybind/rbd/rbd.pyx +++ b/src/pybind/rbd/rbd.pyx @@ -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 diff --git a/src/test/pybind/test_rbd.py b/src/test/pybind/test_rbd.py index 9199369c350..52b8635c562 100644 --- a/src/test/pybind/test_rbd.py +++ b/src/test/pybind/test_rbd.py @@ -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): -- 2.39.5