py3: port versioned_writes
Change-Id: I1095262563eff92d6d0a399eb0d5f9d3045becf3
This commit is contained in:
@@ -222,6 +222,7 @@ Disable versioning from a container (x is any value except empty)::
|
|||||||
|
|
||||||
import calendar
|
import calendar
|
||||||
import json
|
import json
|
||||||
|
import six
|
||||||
from six.moves.urllib.parse import quote, unquote
|
from six.moves.urllib.parse import quote, unquote
|
||||||
import time
|
import time
|
||||||
|
|
||||||
@@ -596,10 +597,12 @@ class VersionedWritesContext(WSGIContext):
|
|||||||
DELETE_MARKER_CONTENT_TYPE:
|
DELETE_MARKER_CONTENT_TYPE:
|
||||||
# Nothing to restore
|
# Nothing to restore
|
||||||
break
|
break
|
||||||
prev_obj_name = version_to_restore['name'].encode('utf-8')
|
obj_to_restore = version_to_restore['name']
|
||||||
|
if six.PY2:
|
||||||
|
obj_to_restore = obj_to_restore.encode('utf-8')
|
||||||
restored_path = self._restore_data(
|
restored_path = self._restore_data(
|
||||||
req, versions_cont, api_version, account_name,
|
req, versions_cont, api_version, account_name,
|
||||||
container_name, object_name, prev_obj_name)
|
container_name, object_name, obj_to_restore)
|
||||||
if not restored_path:
|
if not restored_path:
|
||||||
continue
|
continue
|
||||||
|
|
||||||
@@ -614,9 +617,12 @@ class VersionedWritesContext(WSGIContext):
|
|||||||
# else, well, it existed long enough to do the
|
# else, well, it existed long enough to do the
|
||||||
# copy; we won't worry too much
|
# copy; we won't worry too much
|
||||||
break
|
break
|
||||||
|
prev_obj_name = previous_version['name']
|
||||||
|
if six.PY2:
|
||||||
|
prev_obj_name = prev_obj_name.encode('utf-8')
|
||||||
marker_path = "/%s/%s/%s/%s" % (
|
marker_path = "/%s/%s/%s/%s" % (
|
||||||
api_version, account_name, versions_cont,
|
api_version, account_name, versions_cont,
|
||||||
previous_version['name'].encode('utf-8'))
|
prev_obj_name)
|
||||||
# done restoring, redirect the delete to the marker
|
# done restoring, redirect the delete to the marker
|
||||||
req = make_pre_authed_request(
|
req = make_pre_authed_request(
|
||||||
req.environ, path=quote(marker_path), method='DELETE',
|
req.environ, path=quote(marker_path), method='DELETE',
|
||||||
@@ -624,7 +630,9 @@ class VersionedWritesContext(WSGIContext):
|
|||||||
else:
|
else:
|
||||||
# there are older versions so copy the previous version to the
|
# there are older versions so copy the previous version to the
|
||||||
# current object and delete the previous version
|
# current object and delete the previous version
|
||||||
prev_obj_name = previous_version['name'].encode('utf-8')
|
prev_obj_name = previous_version['name']
|
||||||
|
if six.PY2:
|
||||||
|
prev_obj_name = prev_obj_name.encode('utf-8')
|
||||||
restored_path = self._restore_data(
|
restored_path = self._restore_data(
|
||||||
req, versions_cont, api_version, account_name,
|
req, versions_cont, api_version, account_name,
|
||||||
container_name, object_name, prev_obj_name)
|
container_name, object_name, prev_obj_name)
|
||||||
|
@@ -891,7 +891,7 @@ class VersionedWritesTestCase(VersionedWritesBaseTestCase):
|
|||||||
'CONTENT_LENGTH': '0'})
|
'CONTENT_LENGTH': '0'})
|
||||||
status, headers, body = self.call_vw(req)
|
status, headers, body = self.call_vw(req)
|
||||||
self.assertEqual(status, '204 No Content')
|
self.assertEqual(status, '204 No Content')
|
||||||
self.assertEqual('', body)
|
self.assertEqual(b'', body)
|
||||||
self.assertEqual(len(self.authorized), 2)
|
self.assertEqual(len(self.authorized), 2)
|
||||||
|
|
||||||
req.environ['REQUEST_METHOD'] = 'PUT'
|
req.environ['REQUEST_METHOD'] = 'PUT'
|
||||||
|
1
tox.ini
1
tox.ini
@@ -61,6 +61,7 @@ commands =
|
|||||||
test/unit/common/middleware/test_proxy_logging.py \
|
test/unit/common/middleware/test_proxy_logging.py \
|
||||||
test/unit/common/middleware/test_subrequest_logging.py \
|
test/unit/common/middleware/test_subrequest_logging.py \
|
||||||
test/unit/common/middleware/test_tempauth.py \
|
test/unit/common/middleware/test_tempauth.py \
|
||||||
|
test/unit/common/middleware/test_versioned_writes.py \
|
||||||
test/unit/common/middleware/test_xprofile.py \
|
test/unit/common/middleware/test_xprofile.py \
|
||||||
test/unit/common/ring \
|
test/unit/common/ring \
|
||||||
test/unit/common/test_base_storage_server.py \
|
test/unit/common/test_base_storage_server.py \
|
||||||
|
Reference in New Issue
Block a user