From 7db0f6f717b9ee7e0eab03a25665b3b36c8ffdc5 Mon Sep 17 00:00:00 2001 From: Kefu Chai Date: Sat, 23 Feb 2019 22:19:11 +0800 Subject: [PATCH] pybind: extract flatten_dict() out Signed-off-by: Kefu Chai (cherry picked from commit 31ea5a7e930978151265678aedf4e37ae9e97776) --- src/pybind/rados/rados.pyx | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/src/pybind/rados/rados.pyx b/src/pybind/rados/rados.pyx index c8e20b7c8e0fb..dbd150540b67d 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 -- 2.39.5