From: zhangjiao Date: Sat, 23 Nov 2019 09:27:41 +0000 (+0800) Subject: pybind/rados: add WriteOp::set_xattr() X-Git-Tag: v15.1.0~360^2~1 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=372bb6e2d34d38084e4370b49137454a4848a577;p=ceph-ci.git pybind/rados: add WriteOp::set_xattr() Signed-off-by: Zhang Jiao --- diff --git a/src/pybind/rados/rados.pyx b/src/pybind/rados/rados.pyx index 4ad8152d1ba..36f41aaf6cb 100644 --- a/src/pybind/rados/rados.pyx +++ b/src/pybind/rados/rados.pyx @@ -294,7 +294,8 @@ cdef extern from "rados/librados.h" nogil: void rados_write_op_omap_rm_keys(rados_write_op_t write_op, const char * const* keys, size_t keys_len) void rados_write_op_omap_clear(rados_write_op_t write_op) void rados_write_op_set_flags(rados_write_op_t write_op, int flags) - + void rados_write_op_setxattr(rados_write_op_t write_op, const char *name, const char *value, size_t value_len) + void rados_write_op_create(rados_write_op_t write_op, int exclusive, const char *category) void rados_write_op_append(rados_write_op_t write_op, const char *buffer, size_t len) void rados_write_op_write_full(rados_write_op_t write_op, const char *buffer, size_t len) @@ -2046,6 +2047,23 @@ cdef class WriteOp(object): with nogil: rados_write_op_set_flags(self.write_op, _flags) + @requires(('xattr_name', str_type), ('xattr_value', bytes)) + def set_xattr(self, xattr_name, xattr_value): + """ + Set an extended attribute on an object. + :param xattr_name: name of the xattr + :type xattr_name: str + :param xattr_value: buffer to set xattr to + :type xattr_value: bytes + """ + xattr_name = cstr(xattr_name, 'xattr_name') + cdef: + char *_xattr_name = xattr_name + char *_xattr_value = xattr_value + size_t _xattr_value_len = len(xattr_value) + with nogil: + rados_write_op_setxattr(self.write_op, _xattr_name, _xattr_value, _xattr_value_len) + @requires(('to_write', bytes)) def append(self, to_write): """