Skip to content

Commit

Permalink
pybind/rbd: fix python 3 str to bytes problems
Browse files Browse the repository at this point in the history
Fixes: http://tracker.ceph.com/issues/23609

Signed-off-by: Ricardo Dias <rdias@suse.com>
  • Loading branch information
rjfd committed Apr 9, 2018
1 parent 2791d15 commit 72dc17c
Showing 1 changed file with 7 additions and 1 deletion.
8 changes: 7 additions & 1 deletion src/pybind/rbd/rbd.pyx
Expand Up @@ -678,7 +678,9 @@ def cstr(val, name, encoding="utf-8", opt=False):
return None
if isinstance(val, bytes):
return val
elif isinstance(val, unicode):
elif isinstance(val, str):
return val.encode(encoding)
elif sys.version_info < (3, 0) and isinstance(val, unicode):
return val.encode(encoding)
else:
raise InvalidArgument('%s must be a string' % name)
Expand Down Expand Up @@ -863,6 +865,7 @@ class RBD(object):
:raises: :class:`FunctionNotSupported`
"""
name = cstr(name, 'name')
data_pool = cstr(data_pool, 'data_pool', opt=True)
cdef:
rados_ioctx_t _ioctx = convert_ioctx(ioctx)
char *_name = name
Expand Down Expand Up @@ -946,6 +949,7 @@ class RBD(object):
p_snapname = cstr(p_snapname, 'p_snapname')
p_name = cstr(p_name, 'p_name')
c_name = cstr(c_name, 'c_name')
data_pool = cstr(data_pool, 'data_pool', opt=True)
cdef:
rados_ioctx_t _p_ioctx = convert_ioctx(p_ioctx)
rados_ioctx_t _c_ioctx = convert_ioctx(c_ioctx)
Expand Down Expand Up @@ -2215,6 +2219,7 @@ cdef class Image(object):
:raises: :class:`ArgumentOutOfRange`
"""
dest_name = cstr(dest_name, 'dest_name')
data_pool = cstr(data_pool, 'data_pool', opt=True)
cdef:
rados_ioctx_t _dest_ioctx = convert_ioctx(dest_ioctx)
char *_dest_name = dest_name
Expand Down Expand Up @@ -2270,6 +2275,7 @@ cdef class Image(object):
:raises: :class:`ArgumentOutOfRange`
"""
dest_name = cstr(dest_name, 'dest_name')
data_pool = cstr(data_pool, 'data_pool', opt=True)
cdef:
rados_ioctx_t _dest_ioctx = convert_ioctx(dest_ioctx)
char *_dest_name = dest_name
Expand Down

0 comments on commit 72dc17c

Please sign in to comment.