From: Kefu Chai Date: Sat, 23 Feb 2019 14:19:11 +0000 (+0800) Subject: pybind: extract flatten_dict() out X-Git-Tag: v14.2.22~26^2~5^2~2 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=7db0f6f717b9ee7e0eab03a25665b3b36c8ffdc5;p=ceph.git pybind: extract flatten_dict() out Signed-off-by: Kefu Chai (cherry picked from commit 31ea5a7e930978151265678aedf4e37ae9e97776) --- diff --git a/src/pybind/rados/rados.pyx b/src/pybind/rados/rados.pyx index c8e20b7c8e0f..dbd150540b67 100644 --- a/src/pybind/rados/rados.pyx +++ b/src/pybind/rados/rados.pyx @@ -557,6 +557,11 @@ def decode_cstr(val, encoding="utf-8"): return val.decode(encoding) +def flatten_dict(d): + items = chain.from_iterable(d.items()) + return ''.join(i + '\0' for i in items) + + cdef char* opt_str(s) except? NULL: if s is None: return NULL @@ -1537,8 +1542,7 @@ Rados object in state %s." % self.state) """ service = cstr(service, 'service') daemon = cstr(daemon, 'daemon') - metadata_dict = '\0'.join(chain.from_iterable(metadata.items())) - metadata_dict += '\0' + metadata_dict = flatten_dict(metadata) cdef: char *_service = service char *_daemon = daemon @@ -1551,8 +1555,7 @@ Rados object in state %s." % self.state) @requires(('metadata', dict)) def service_daemon_update(self, status): - status_dict = '\0'.join(chain.from_iterable(status.items())) - status_dict += '\0' + status_dict = flatten_dict(status) cdef: char *_status = status_dict