]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph-ci.git/commitdiff
pybind/rados: add Ioctx dup method
authorMykola Golub <mgolub@suse.com>
Wed, 11 Mar 2020 11:28:26 +0000 (11:28 +0000)
committerMykola Golub <mgolub@suse.com>
Wed, 11 Mar 2020 14:39:11 +0000 (14:39 +0000)
Signed-off-by: Mykola Golub <mgolub@suse.com>
src/pybind/rados/rados.pxd
src/pybind/rados/rados.pyx

index d4dddb38a17b448cb26f2d6d7ec5b00856db685c..14f6b503d1c7882fd98914a7e70f8674b7508eb4 100644 (file)
@@ -25,6 +25,7 @@ cdef class Rados(object):
 
 cdef class Ioctx(object):
     cdef:
+        object rados
         rados_ioctx_t io
         public object name
         public object state
index 790168937311b690bcda219f0fdf218892e2fe56..0a24315390c9e29a38ba998809bb72e36b503a74 100644 (file)
@@ -1302,7 +1302,7 @@ Rados object in state %s." % self.state)
             ret = rados_ioctx_create(self.cluster, _ioctx_name, &ioctx)
         if ret < 0:
             raise make_ex(ret, "error opening pool '%s'" % ioctx_name)
-        io = Ioctx(ioctx_name)
+        io = Ioctx(self, ioctx_name)
         io.io = ioctx
         return io
 
@@ -1328,7 +1328,7 @@ Rados object in state %s." % self.state)
             ret = rados_ioctx_create2(self.cluster, _pool_id, &ioctx)
         if ret < 0:
             raise make_ex(ret, "error opening pool id '%s'" % pool_id)
-        io = Ioctx(str(pool_id))
+        io = Ioctx(self, str(pool_id))
         io.io = ioctx
         return io
 
@@ -2285,7 +2285,8 @@ cdef class Ioctx(object):
     """rados.Ioctx object"""
     # NOTE(sileht): attributes declared in .pyd
 
-    def __init__(self, name):
+    def __init__(self, rados, name):
+        self.rados = rados
         self.name = name
         self.state = "open"
 
@@ -2347,6 +2348,15 @@ cdef class Ioctx(object):
         completion_obj.rados_comp = completion
         return completion_obj
 
+    def dup(self):
+        """
+        Duplicate IoCtx
+        """
+
+        ioctx = self.rados.open_ioctx2(self.get_pool_id())
+        ioctx.set_namespace(self.get_namespace())
+        return ioctx
+
     @requires(('object_name', str_type), ('oncomplete', opt(Callable)))
     def aio_stat(self, object_name, oncomplete):
         """