From: Florent Manens Date: Wed, 9 Dec 2015 21:37:56 +0000 (+0100) Subject: Implementation of rados_ioctx_snapshot_rollback X-Git-Tag: v10.0.2~66^2 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=2b50a7537537dcd03eda405a72b0e8d7cddd378f;p=ceph.git Implementation of rados_ioctx_snapshot_rollback Signed-off-by: Florent Manens --- diff --git a/src/pybind/rados.py b/src/pybind/rados.py index 4c7dabd3eb1..2d4022f96fe 100644 --- a/src/pybind/rados.py +++ b/src/pybind/rados.py @@ -1984,6 +1984,25 @@ returned %d, but should return zero on success." % (self.name, ret)) raise make_ex(ret, "Failed to lookup snap %s" % snap_name) return Snap(self, snap_name, snap_id) + @requires(('oid', str_type), ('snap_name', str_type)) + def snap_rollback(self, oid, snap_name): + """ + Rollback an object to a snapshot + + :param oid: the name of the object + :type oid: str + :param snap_name: the name of the snapshot + :type snap_name: str + + :raises: :class:`TypeError` + :raises: :class:`Error` + """ + self.require_ioctx_open() + ret = run_in_thread(self.librados.rados_ioctx_snap_rollback, + (self.io, cstr(oid), cstr(snap_name))) + if (ret != 0): + raise make_ex(ret, "Failed to rollback %s" % oid) + def get_last_version(self): """ Return the version of the last object read or written to. diff --git a/src/test/pybind/test_rados.py b/src/test/pybind/test_rados.py index 24ca2b46e9b..9c1d86fddf5 100644 --- a/src/test/pybind/test_rados.py +++ b/src/test/pybind/test_rados.py @@ -359,6 +359,15 @@ class TestIoctx(object): self.ioctx.remove_snap('foo') eq(list(self.ioctx.list_snaps()), []) + def test_snap_rollback(self): + self.ioctx.write("insnap", b"contents1") + self.ioctx.create_snap("snap1") + self.ioctx.remove_object("insnap") + self.ioctx.snap_rollback("insnap", "snap1") + eq(self.ioctx.read("insnap"), b"contents1") + self.ioctx.remove_snap("snap1") + self.ioctx.remove_object("insnap") + def test_set_omap(self): keys = ("1", "2", "3", "4") values = (b"aaa", b"bbb", b"ccc", b"\x04\x04\x04\x04")