diff --git a/glance/cmd/cache_manage.py b/glance/cmd/cache_manage.py index 207d4ddf35..bd0920f7e5 100755 --- a/glance/cmd/cache_manage.py +++ b/glance/cmd/cache_manage.py @@ -29,6 +29,7 @@ import time from oslo_utils import timeutils from glance.common import utils +from six.moves import input # If ../glance/__init__.py exists, add ../ to Python search path, so that # it will override what happens to be installed in /usr/(local/)lib/python... @@ -467,7 +468,7 @@ def user_confirm(prompt, default=False): else: prompt_default = "[y/N]" - answer = raw_input("%s %s " % (prompt, prompt_default)) + answer = input("%s %s " % (prompt, prompt_default)) if answer == "": return default diff --git a/glance/common/utils.py b/glance/common/utils.py index 851615d22a..5fcb30b645 100644 --- a/glance/common/utils.py +++ b/glance/common/utils.py @@ -586,7 +586,8 @@ def get_test_suite_socket(): if GLANCE_TEST_SOCKET_FD_STR in os.environ: fd = int(os.environ[GLANCE_TEST_SOCKET_FD_STR]) sock = socket.fromfd(fd, socket.AF_INET, socket.SOCK_STREAM) - sock = socket.SocketType(_sock=sock) + if six.PY2: + sock = socket.SocketType(_sock=sock) sock.listen(CONF.backlog) del os.environ[GLANCE_TEST_SOCKET_FD_STR] os.close(fd) @@ -682,12 +683,12 @@ def no_4byte_params(f): def wrapper(*args, **kwargs): def _is_match(some_str): - return (isinstance(some_str, unicode) and + return (isinstance(some_str, six.text_type) and REGEX_4BYTE_UNICODE.findall(some_str) != []) def _check_dict(data_dict): # a dict of dicts has to be checked recursively - for key, value in data_dict.iteritems(): + for key, value in six.iteritems(data_dict): if isinstance(value, dict): _check_dict(value) else: diff --git a/glance/common/wsgi.py b/glance/common/wsgi.py index 3730cae1e1..d3d755d3e3 100644 --- a/glance/common/wsgi.py +++ b/glance/common/wsgi.py @@ -873,7 +873,7 @@ class Resource(object): request, **action_args) except webob.exc.WSGIHTTPException as e: exc_info = sys.exc_info() - raise translate_exception(request, e), None, exc_info[2] + six.reraise(translate_exception(request, e), None, exc_info[2]) try: response = webob.Response(request=request) diff --git a/glance/contrib/plugins/artifacts_sample/__init__.py b/glance/contrib/plugins/artifacts_sample/__init__.py index f730c43933..7406b2d20e 100644 --- a/glance/contrib/plugins/artifacts_sample/__init__.py +++ b/glance/contrib/plugins/artifacts_sample/__init__.py @@ -1,5 +1,5 @@ -from v1 import artifact as art1 -from v2 import artifact as art2 +from glance.contrib.plugins.artifacts_sample.v1 import artifact as art1 +from glance.contrib.plugins.artifacts_sample.v2 import artifact as art2 MY_ARTIFACT = [art1.MyArtifact, art2.MyArtifact] diff --git a/glance/contrib/plugins/image_artifact/version_selector.py b/glance/contrib/plugins/image_artifact/version_selector.py index afbe303457..0b1fd7e215 100644 --- a/glance/contrib/plugins/image_artifact/version_selector.py +++ b/glance/contrib/plugins/image_artifact/version_selector.py @@ -12,8 +12,8 @@ # License for the specific language governing permissions and limitations # under the License. -from v1 import image as v1 -from v1_1 import image as v1_1 -from v2 import image as v2 +from glance.contrib.plugins.image_artifact.v1 import image as v1 +from glance.contrib.plugins.image_artifact.v1_1 import image as v1_1 +from glance.contrib.plugins.image_artifact.v2 import image as v2 versions = [v1.ImageAsAnArtifact, v1_1.ImageAsAnArtifact, v2.ImageAsAnArtifact] diff --git a/glance/db/sqlalchemy/migrate_repo/schema.py b/glance/db/sqlalchemy/migrate_repo/schema.py index 1613388897..c364a214d1 100644 --- a/glance/db/sqlalchemy/migrate_repo/schema.py +++ b/glance/db/sqlalchemy/migrate_repo/schema.py @@ -92,7 +92,7 @@ def from_migration_import(module_name, fromlist): # Refer to images table """ module_path = 'glance.db.sqlalchemy.migrate_repo.versions.%s' % module_name - module = __import__(module_path, globals(), locals(), fromlist, -1) + module = __import__(module_path, globals(), locals(), fromlist, 0) return [getattr(module, item) for item in fromlist] diff --git a/glance/tests/functional/__init__.py b/glance/tests/functional/__init__.py index c7699baac4..0a98321422 100644 --- a/glance/tests/functional/__init__.py +++ b/glance/tests/functional/__init__.py @@ -115,7 +115,7 @@ class Server(object): utils.safe_mkdirs(conf_dir) def override_conf(filepath, overridden): - with open(filepath, 'wb') as conf_file: + with open(filepath, 'w') as conf_file: conf_file.write(overridden) conf_file.flush() return conf_file.name @@ -207,7 +207,7 @@ class Server(object): utils.safe_mkdirs(conf_dir) conf_filepath = os.path.join(conf_dir, 'glance-manage.conf') - with open(conf_filepath, 'wb') as conf_file: + with open(conf_filepath, 'w') as conf_file: conf_file.write('[DEFAULT]\n') conf_file.write('sql_connection = %s' % self.sql_connection) conf_file.flush() diff --git a/glance/tests/functional/db/base_artifacts.py b/glance/tests/functional/db/base_artifacts.py index 8f140624c0..6413da9592 100644 --- a/glance/tests/functional/db/base_artifacts.py +++ b/glance/tests/functional/db/base_artifacts.py @@ -14,6 +14,8 @@ import uuid +import six + import glance.artifacts as ga from glance.common import exception as exc from glance import context @@ -513,7 +515,7 @@ class ArtifactTests(object): self.assertIsNotNone(res['published_at']) published_at = res['published_at'] expected['published_at'] = published_at - for key, value in expected.iteritems(): + for key, value in six.iteritems(expected): self.assertEqual(expected[key], res[key]) def test_artifact_get_all(self): diff --git a/glance/tests/unit/async/flows/test_convert.py b/glance/tests/unit/async/flows/test_convert.py index 07cb30c80b..ae10ab7143 100644 --- a/glance/tests/unit/async/flows/test_convert.py +++ b/glance/tests/unit/async/flows/test_convert.py @@ -16,11 +16,11 @@ import json import mock import os -import StringIO import glance_store from oslo_concurrency import processutils from oslo_config import cfg +import six from glance.async.flows import convert from glance.async import taskflow_executor @@ -147,7 +147,7 @@ class TestImportTask(test_utils.BaseTestCase): return ("", None) with mock.patch.object(script_utils, 'get_image_data_iter') as dmock: - dmock.return_value = StringIO.StringIO("TEST_IMAGE") + dmock.return_value = six.BytesIO("TEST_IMAGE") with mock.patch.object(processutils, 'execute') as exc_mock: exc_mock.side_effect = fake_execute diff --git a/glance/tests/unit/common/test_wsgi.py b/glance/tests/unit/common/test_wsgi.py index 1ea73e3f63..86bea9fccb 100644 --- a/glance/tests/unit/common/test_wsgi.py +++ b/glance/tests/unit/common/test_wsgi.py @@ -529,7 +529,7 @@ class TestHelpers(test_utils.BaseTestCase): 'properties': {'distro': 'Ubuntu 10.04 LTS'}} headers = utils.image_meta_to_http_headers(fixture) for k, v in six.iteritems(headers): - self.assertIsInstance(v, unicode) + self.assertIsInstance(v, six.text_type) def test_data_passed_properly_through_headers(self): """ diff --git a/glance/tests/unit/test_glance_replicator.py b/glance/tests/unit/test_glance_replicator.py index 4f09002dfc..fb59472c0e 100644 --- a/glance/tests/unit/test_glance_replicator.py +++ b/glance/tests/unit/test_glance_replicator.py @@ -108,7 +108,8 @@ class FakeHTTPConnection(object): def getresponse(self): class FakeResponse(object): - def __init__(self, (code, body, headers)): + def __init__(self, args): + (code, body, headers) = args self.body = six.StringIO(body) self.headers = headers self.status = code diff --git a/glance/tests/unit/test_migrations.py b/glance/tests/unit/test_migrations.py index a1cfe84547..623b37a67b 100644 --- a/glance/tests/unit/test_migrations.py +++ b/glance/tests/unit/test_migrations.py @@ -26,7 +26,6 @@ if possible. from __future__ import print_function import datetime -import exceptions import os import pickle import uuid @@ -420,7 +419,7 @@ class MigrationsMixin(test_migrations.WalkVersionsMixin): invalid_scheme_uri = ('http://acct:usr:pass@example.com' '/container/obj-id') - self.assertRaises(exceptions.AssertionError, + self.assertRaises(AssertionError, legacy_parse_uri_fn, invalid_scheme_uri, True) diff --git a/glance/tests/unit/v1/test_api.py b/glance/tests/unit/v1/test_api.py index 8437924246..5bafa5e7ce 100644 --- a/glance/tests/unit/v1/test_api.py +++ b/glance/tests/unit/v1/test_api.py @@ -1101,7 +1101,7 @@ class TestGlanceAPI(base.IsolatedUnitTest): req = webob.Request.blank("/images") req.headers['Content-Type'] = 'application/octet-stream' req.method = 'POST' - for k, v in fixture_headers.iteritems(): + for k, v in six.iteritems(fixture_headers): req.headers[k] = v res = req.get_response(self.api) self.assertEqual(400, res.status_int) @@ -1117,7 +1117,7 @@ class TestGlanceAPI(base.IsolatedUnitTest): req = webob.Request.blank("/images") req.headers['Content-Type'] = 'application/octet-stream' req.method = 'POST' - for k, v in fixture_headers.iteritems(): + for k, v in six.iteritems(fixture_headers): req.headers[k] = v res = req.get_response(self.api) self.assertEqual(400, res.status_int) @@ -1131,7 +1131,7 @@ class TestGlanceAPI(base.IsolatedUnitTest): req = webob.Request.blank("/images") req.headers['Content-Type'] = 'application/octet-stream' req.method = 'POST' - for k, v in fixture_headers.iteritems(): + for k, v in six.iteritems(fixture_headers): req.headers[k] = v res = req.get_response(self.api) self.assertEqual(400, res.status_int) @@ -1751,7 +1751,7 @@ class TestGlanceAPI(base.IsolatedUnitTest): req = webob.Request.blank("/images") req.method = 'POST' - for k, v in fixture_headers.iteritems(): + for k, v in six.iteritems(fixture_headers): req.headers[k] = v res = req.get_response(self.api)