Port remotefs driver to Python 3

* When parsing share configuration: replace "\040" with a space
  explicitly instead of using the Python unicode_escape encoding:
  see the bug #1180984.
* Encode Unicode to UTF-8 before hash it with MD5.
* tox.ini: add cinder.tests.unit.test_glusterfs to Python 3.4

Blueprint cinder-python3
Change-Id: Iea943a1f2dfb050fe43ff41411e258adb3f3b6d0
This commit is contained in:
Victor Stinner 2015-06-29 22:15:18 +02:00
parent c2dd9655e5
commit ba1ae4ada0
2 changed files with 7 additions and 1 deletions

View File

@ -25,6 +25,7 @@ import time
from oslo_config import cfg
from oslo_log import log as logging
from oslo_utils import units
import six
from cinder import compute
from cinder import db
@ -452,7 +453,9 @@ class RemoteFSDriver(driver.LocalVD, driver.TransferVD, driver.BaseVD):
# results in share_info =
# [ 'address:/vol', '-o options=123,rw --other' ]
share_address = share_info[0].strip().decode('unicode_escape')
share_address = share_info[0].strip()
# Replace \040 with a space, to support paths with spaces
share_address = share_address.replace("\\040", " ")
share_opts = None
if len(share_info) > 1:
share_opts = share_info[1].strip()
@ -749,6 +752,8 @@ class RemoteFSSnapDriver(RemoteFSDriver, driver.SnapshotVD):
"""Return a string that represents hash of base_str
(in a hex format).
"""
if isinstance(base_str, six.text_type):
base_str = base_str.encode('utf-8')
return hashlib.md5(base_str).hexdigest()
def _get_mount_point_for_share(self, share):

View File

@ -60,6 +60,7 @@ commands =
cinder.tests.unit.test_eqlx \
cinder.tests.unit.test_evaluator \
cinder.tests.unit.test_exception \
cinder.tests.unit.test_glusterfs \
cinder.tests.unit.test_gpfs \
cinder.tests.unit.test_hitachi_hbsd_horcm_fc \
cinder.tests.unit.test_hitachi_hbsd_snm2_fc \