From: Joao Eduardo Luis Date: Tue, 15 Oct 2013 16:49:57 +0000 (+0100) Subject: pybind: rados: ping a monitor via librados X-Git-Tag: v0.72-rc1~22^2~1 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=400cb18bbc4202168286f3c5347ad51471eebf0d;p=ceph.git pybind: rados: ping a monitor via librados Signed-off-by: Joao Eduardo Luis --- diff --git a/src/pybind/rados.py b/src/pybind/rados.py index 0977bd08bce8..fecf4bb16d00 100644 --- a/src/pybind/rados.py +++ b/src/pybind/rados.py @@ -366,6 +366,37 @@ Rados object in state %s." % (self.state)) if (ret != 0): raise make_ex(ret, "error calling conf_set") + + def ping_monitor(self, mon_id): + """ + Ping a monitor to assess liveness + + May be used as a simply way to assess liveness, or to obtain + informations about the monitor in a simple way even in the + absence of quorum. + + :param mon_id: the ID portion of the monitor's name (i.e., mon.) + :type mon_id: str + :returns: the string reply from the monitor + """ + + self.require_state("configuring", "connected") + + outstrp = pointer(pointer(c_char())) + outstrlen = c_long() + + ret = run_in_thread(self.librados.rados_ping_monitor, + (self.cluster, c_char_p(mon_id), + outstrp, byref(outstrlen))) + + my_outstr = outstrp.contents[:(outstrlen.value)] + if outstrlen.value: + run_in_thread(self.librados.rados_buffer_free, (outstrp.contents,)) + + if ret != 0: + raise make_ex(ret, "error calling ping_monitor") + return my_outstr + def connect(self, timeout=0): """ Connect to the cluster.