From: songweibin Date: Fri, 1 Sep 2017 07:59:09 +0000 (+0800) Subject: rados: support python API of "set_osdmap_full_try" X-Git-Tag: v13.0.1~888^2 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=905e622ab25b3f7e547db2e63ed086c7d5909f79;p=ceph.git rados: support python API of "set_osdmap_full_try" Signed-off-by: songweibin --- diff --git a/src/include/rados/librados.h b/src/include/rados/librados.h index 20af80d68a1f..44831cb5f3b8 100644 --- a/src/include/rados/librados.h +++ b/src/include/rados/librados.h @@ -3509,6 +3509,10 @@ CEPH_RADOS_API int rados_blacklist_add(rados_t cluster, char *client_address, uint32_t expire_seconds); +CEPH_RADOS_API void rados_set_osdmap_full_try(rados_ioctx_t io); + +CEPH_RADOS_API void rados_unset_osdmap_full_try(rados_ioctx_t io); + /** * Enable an application on a pool * diff --git a/src/librados/librados.cc b/src/librados/librados.cc index f7683cdc1930..e9157abcf91e 100644 --- a/src/librados/librados.cc +++ b/src/librados/librados.cc @@ -3087,6 +3087,18 @@ extern "C" int rados_blacklist_add(rados_t cluster, char *client_address, return radosp->blacklist_add(client_address, expire_seconds); } +extern "C" void rados_set_osdmap_full_try(rados_ioctx_t io) +{ + librados::IoCtxImpl *ctx = (librados::IoCtxImpl *)io; + ctx->objecter->set_osdmap_full_try(); +} + +extern "C" void rados_unset_osdmap_full_try(rados_ioctx_t io) +{ + librados::IoCtxImpl *ctx = (librados::IoCtxImpl *)io; + ctx->objecter->unset_osdmap_full_try(); +} + extern "C" int rados_application_enable(rados_ioctx_t io, const char *app_name, int force) { diff --git a/src/pybind/rados/rados.pyx b/src/pybind/rados/rados.pyx index d6a55e5fc32b..dde4eb238a13 100644 --- a/src/pybind/rados/rados.pyx +++ b/src/pybind/rados/rados.pyx @@ -153,6 +153,8 @@ cdef extern from "rados/librados.h" nogil: int rados_blacklist_add(rados_t cluster, char *client_address, uint32_t expire_seconds) int rados_application_enable(rados_ioctx_t io, const char *app_name, int force) + void rados_set_osdmap_full_try(rados_ioctx_t io) + void rados_unset_osdmap_full_try(rados_ioctx_t io) int rados_application_list(rados_ioctx_t io, char *values, size_t *values_len) int rados_application_metadata_get(rados_ioctx_t io, const char *app_name, @@ -3576,6 +3578,20 @@ returned %d, but should return zero on success." % (self.name, ret)) if ret < 0: raise make_ex(ret, "Ioctx.rados_lock_exclusive(%s): failed to set lock %s on %s" % (self.name, name, key)) + def set_osdmap_full_try(self): + """ + Set global osdmap_full_try label to true + """ + with nogil: + rados_set_osdmap_full_try(self.io) + + def unset_osdmap_full_try(self): + """ + Unset + """ + with nogil: + rados_unset_osdmap_full_try(self.io) + def application_enable(self, app_name, force=False): """ Enable an application on an OSD pool