Port test_pipelib and test_policy to Python 3

* policy_fixture: replace jsonutils.load() with jsonutils.loads() to
  support bytes and Unicode. Use also a context manager to open the
  file to fix a ResourceWarning on Python 3.
* pipelib: replace str.encode("base64") with base64.b64encode(str)
* cmd/manager.py: replace urllib.unquote() with urlparse.unquote(),
  urlparse comes from "import six.moves.urllib.parse as urlparse"
* enable tests on Python 3

  - test_pipelib
  - test_policy

* enable also tests which already passed on Python 3:

  - test_quota
  - test_test_utils

This change is partially based on the work of dims,
change Ibb4fa47cd71d697a4996425b1797ac2f8cc363cd.

Co-Authored-By: Davanum Srinivas <davanum@gmail.com>
Partially-Implements: blueprint nova-python3-newton
Change-Id: I726d867fafa2d21312e3f2542af9d9ee5e08d897
This commit is contained in:
Victor Stinner 2016-05-27 11:16:33 +02:00
parent baaeec1b63
commit 3542060740
3 changed files with 7 additions and 7 deletions

View File

@ -20,6 +20,7 @@ an instance with it.
"""
import base64
import os
import string
import zipfile
@ -78,12 +79,13 @@ class CloudPipe(object):
'server.crt')
z.write(server_crt, 'server.crt')
z.close()
with open(zippath, "r") as zippy:
with open(zippath, "rb") as zippy:
# NOTE(vish): run instances expects encoded userdata,
# it is decoded in the get_metadata_call.
# autorun.sh also decodes the zip file,
# hence the double encoding.
encoded = zippy.read().encode("base64").encode("base64")
encoded = base64.b64encode(zippy.read())
encoded = base64.b64encode(encoded)
return encoded

View File

@ -100,7 +100,9 @@ class RoleBasedPolicyFixture(RealPolicyFixture):
self.role = role
def _prepare_policy(self):
policy = jsonutils.load(open(CONF.oslo_policy.policy_file))
with open(CONF.oslo_policy.policy_file) as fp:
policy = fp.read()
policy = jsonutils.loads(policy)
# Convert all actions to require specified role
for action, rule in six.iteritems(policy):

View File

@ -68,10 +68,6 @@ nova.tests.unit.test_metadata.MetadataHandlerTestCase
nova.tests.unit.test_metadata.MetadataPasswordTestCase
nova.tests.unit.test_metadata.MetadataTestCase
nova.tests.unit.test_metadata.OpenStackMetadataTestCase
nova.tests.unit.test_pipelib.PipelibTest
nova.tests.unit.test_policy.AdminRolePolicyTestCase
nova.tests.unit.test_quota.QuotaIntegrationTestCase
nova.tests.unit.test_test_utils.TestUtilsTestCase
nova.tests.unit.test_wsgi.TestWSGIServerWithSSL
nova.tests.unit.virt.disk.mount.test_nbd.NbdTestCase
nova.tests.unit.virt.ironic.test_driver.IronicDriverTestCase