]> review.fuel-infra Code Review - openstack-build/cinder-build.git/commit
Fix Python 3 issues in the swift backup driver
authorVictor Stinner <vstinner@redhat.com>
Tue, 23 Jun 2015 11:37:42 +0000 (13:37 +0200)
committerVictor Stinner <vstinner@redhat.com>
Wed, 24 Jun 2015 15:23:46 +0000 (17:23 +0200)
commit72b7a18583767b9f8449345312ad2ecddd93fc00
tree2e767bc87420c4a30fb52c462193915eb7b09f2f
parentc967b44110e1338449f07663fb3e4b0fc6ff5913
Fix Python 3 issues in the swift backup driver

* On Python 3, encode/decode JSON to/from UTF-8
* Use byte strings for volume content
* Replace dict.keys()[0] and dict.value()[0] with list(dict.items())[0].
  Get the key and the value at once to ensure that they are consistent.
  On Python 3, items() returns an iterator: create a list to use the [0]
  operator.
* SwiftBackupDriver: use a bytearray instead of a string because
  bytes += bytes is inefficient on Python 3, whereas str += str is
  optimized on Python 2. Replace also StringIO with BytesIO.
* BytesIO has no more len attribute on Python 3: get the length of the
  content instead.
* Replace buffer(bytearray(128)) with b'\0' * 128 to create a string of
  128 zeroed bytes
* Replace "rw" file mode with "w+" ("rw" raises an exception
  on Python 3).
* tox.ini: add the following tests to Python 3.4

  - cinder.tests.unit.test_backup_swift
  - cinder.tests.unit.test_backup_tsm

Blueprint cinder-python3
Change-Id: I62d7ef8041847f31b5d06a92fa2edb65c6780497
cinder/backup/chunkeddriver.py
cinder/backup/drivers/swift.py
cinder/tests/unit/backup/fake_swift_client.py
cinder/tests/unit/test_backup_swift.py
cinder/tests/unit/test_backup_tsm.py
tox.ini