int rados_wait_for_latest_osdmap(rados_t cluster)
+ int rados_service_register(rados_t cluster, const char *service, const char *daemon, const char *metadata_dict)
+ int rados_service_update_status(rados_t cluster, const char *status_dict)
+
int rados_ioctx_create(rados_t cluster, const char *pool_name, rados_ioctx_t *ioctx)
int rados_ioctx_create2(rados_t cluster, int64_t pool_id, rados_ioctx_t *ioctx)
void rados_ioctx_destroy(rados_ioctx_t io)
self.monitor_callback = None
self.monitor_callback2 = cb
+ @requires(('service', str_type), ('daemon', str_type), ('metadata', dict))
+ def service_daemon_register(self, service, daemon, metadata):
+ """
+ :param str service: service name (e.g. "rgw")
+ :param str daemon: daemon name (e.g. "gwfoo")
+ :param dict metadata: static metadata about the register daemon
+ (e.g., the version of Ceph, the kernel version.)
+ """
+ service = cstr(service, 'service')
+ daemon = cstr(daemon, 'daemon')
+ metadata_dict = '\0'.join(chain.from_iterable(metadata.items()))
+ metadata_dict += '\0'
+ cdef:
+ char *_service = service
+ char *_daemon = daemon
+ char *_metadata = metadata_dict
+
+ with nogil:
+ ret = rados_service_register(self.cluster, _service, _daemon, _metadata)
+ if ret != 0:
+ raise make_ex(ret, "error calling service_register()")
+
+ @requires(('metadata', dict))
+ def service_daemon_update(self, status):
+ status_dict = '\0'.join(chain.from_iterable(status.items()))
+ status_dict += '\0'
+ cdef:
+ char *_status = status_dict
+
+ with nogil:
+ ret = rados_service_update_status(self.cluster, _status)
+ if ret != 0:
+ raise make_ex(ret, "error calling service_daemon_update()")
+
cdef class OmapIterator(object):
"""Omap iterator"""
import threading
import json
import errno
+import os
import sys
# Are we running Python 2.x
self.ioctx.application_metadata_remove("app1", "key1")
eq([("key2", "val2")], self.ioctx.application_metadata_list("app1"))
+ def test_service_daemon(self):
+ name = "pid-" + str(os.getpid())
+ metadata = {'version': '3.14', 'memory': '42'}
+ self.rados.service_daemon_register("laundry", name, metadata)
+ status = {'result': 'unknown', 'test': 'running'}
+ self.rados.service_daemon_update(status)
class TestIoctx2(object):