rados client only support string argument, therefore we have to
convert argument to string first.
closes-Bug: #
1672792
Change-Id: I007c15dc61db9dbf7df7b8bea7c3dce49f0396f5
(cherry picked from commit
2f5ebdba5f9c5c1485d143c9ec5989c8fbe1e859)
mock_rados.Rados.open_ioctx.assert_called_once_with(self.rbd_pool)
mock_rados.Rados.shutdown.assert_called_once_with()
+ @mock.patch.object(rbd_utils, 'rados')
+ def test_connect_to_rados_unicode_arg(self, mock_rados):
+ self.driver._connect_to_rados(u'unicode_pool')
+ self.mock_rados.Rados.open_ioctx.assert_called_with(
+ test.MatchType(str))
+
def test_ceph_args_none(self):
self.driver.rbd_user = None
self.driver.ceph_conf = None
try:
client.connect()
pool_to_open = pool or self.pool
- ioctx = client.open_ioctx(pool_to_open)
+ # NOTE(luogangyi): open_ioctx >= 10.1.0 could handle unicode
+ # arguments perfectly as part of Python 3 support.
+ # Therefore, when we turn to Python 3, it's safe to remove
+ # str() conversion.
+ ioctx = client.open_ioctx(str(pool_to_open))
return client, ioctx
except rados.Error:
# shutdown cannot raise an exception