From: Mykola Golub Date: Wed, 11 Mar 2020 11:28:26 +0000 (+0000) Subject: pybind/rados: add Ioctx dup method X-Git-Tag: v15.2.10~36^2~10 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=7fb0dee6c467bcccb714cc79fa7c378d2e198bf7;p=ceph.git pybind/rados: add Ioctx dup method Signed-off-by: Mykola Golub (cherry picked from commit 0ec9cfcf13a1346a628962d315ed19a37e398eba) --- diff --git a/src/pybind/rados/rados.pxd b/src/pybind/rados/rados.pxd index d4dddb38a17b..14f6b503d1c7 100644 --- a/src/pybind/rados/rados.pxd +++ b/src/pybind/rados/rados.pxd @@ -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 diff --git a/src/pybind/rados/rados.pyx b/src/pybind/rados/rados.pyx index 19e1088d1df3..bb07ad1855c3 100644 --- a/src/pybind/rados/rados.pyx +++ b/src/pybind/rados/rados.pyx @@ -1308,7 +1308,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 @@ -1334,7 +1334,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 @@ -2291,7 +2291,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" @@ -2353,6 +2354,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): """