From ea3f62a132d094ea7f71140e7dc22b5f4fb9964e Mon Sep 17 00:00:00 2001 From: Vladyslav Drok Date: Tue, 25 Jul 2017 15:06:08 +0300 Subject: [PATCH] Remove usage of some of the deprecated methods Switch to enginefacade.writer during migrations instead of using legacy facade, use inspect.signature instead of inspect.getargspec in python 3. Change-Id: I8ce536a5ce7e9f248d75fb9de8e7c1974a3423b3 --- ironic/db/sqlalchemy/alembic/env.py | 2 +- ironic/db/sqlalchemy/migration.py | 4 ++-- ironic/drivers/modules/redfish/utils.py | 1 + ironic/tests/unit/db/base.py | 2 +- ironic/tests/unit/db/sqlalchemy/test_migrations.py | 2 +- ironic/tests/unit/dhcp/test_factory.py | 7 +++++-- 6 files changed, 11 insertions(+), 7 deletions(-) diff --git a/ironic/db/sqlalchemy/alembic/env.py b/ironic/db/sqlalchemy/alembic/env.py index 5f793ff8b5..87d6a61be8 100644 --- a/ironic/db/sqlalchemy/alembic/env.py +++ b/ironic/db/sqlalchemy/alembic/env.py @@ -50,7 +50,7 @@ def run_migrations_online(): and associate a connection with the context. """ - engine = enginefacade.get_legacy_facade().get_engine() + engine = enginefacade.writer.get_engine() with engine.connect() as connection: context.configure(connection=connection, target_metadata=target_metadata) diff --git a/ironic/db/sqlalchemy/migration.py b/ironic/db/sqlalchemy/migration.py index 06316f3e4e..2dcfef95b5 100644 --- a/ironic/db/sqlalchemy/migration.py +++ b/ironic/db/sqlalchemy/migration.py @@ -38,7 +38,7 @@ def version(config=None, engine=None): :rtype: string """ if engine is None: - engine = enginefacade.get_legacy_facade().get_engine() + engine = enginefacade.writer.get_engine() with engine.connect() as conn: context = alembic_migration.MigrationContext.configure(conn) return context.get_current_revision() @@ -62,7 +62,7 @@ def create_schema(config=None, engine=None): Can be used for initial installation instead of upgrade('head'). """ if engine is None: - engine = enginefacade.get_legacy_facade().get_engine() + engine = enginefacade.writer.get_engine() # NOTE(viktors): If we will use metadata.create_all() for non empty db # schema, it will only add the new tables, but leave diff --git a/ironic/drivers/modules/redfish/utils.py b/ironic/drivers/modules/redfish/utils.py index 3e3cdf8867..108b585e8a 100644 --- a/ironic/drivers/modules/redfish/utils.py +++ b/ironic/drivers/modules/redfish/utils.py @@ -98,6 +98,7 @@ def parse_driver_info(node): if not parsed.scheme or not parsed.authority: address = 'https://%s' % address parsed = rfc3986.uri_reference(address) + # TODO(vdrok): Workaround this check, in py3 we need to use validator class if not parsed.is_valid(require_scheme=True, require_authority=True): raise exception.InvalidParameterValue( _('Invalid Redfish address %(address)s set in ' diff --git a/ironic/tests/unit/db/base.py b/ironic/tests/unit/db/base.py index dc2a575cc1..cf9028148e 100644 --- a/ironic/tests/unit/db/base.py +++ b/ironic/tests/unit/db/base.py @@ -70,7 +70,7 @@ class DbTestCase(base.TestCase): global _DB_CACHE if not _DB_CACHE: - engine = enginefacade.get_legacy_facade().get_engine() + engine = enginefacade.writer.get_engine() _DB_CACHE = Database(engine, migration, sql_connection=CONF.database.connection) self.useFixture(_DB_CACHE) diff --git a/ironic/tests/unit/db/sqlalchemy/test_migrations.py b/ironic/tests/unit/db/sqlalchemy/test_migrations.py index bc0e076365..a2bb0809e7 100644 --- a/ironic/tests/unit/db/sqlalchemy/test_migrations.py +++ b/ironic/tests/unit/db/sqlalchemy/test_migrations.py @@ -82,7 +82,7 @@ def _get_connect_string(backend, user, passwd, database): @contextlib.contextmanager def patch_with_engine(engine): - with mock.patch.object(enginefacade.get_legacy_facade(), + with mock.patch.object(enginefacade.writer, 'get_engine') as patch_engine: patch_engine.return_value = engine yield diff --git a/ironic/tests/unit/dhcp/test_factory.py b/ironic/tests/unit/dhcp/test_factory.py index b5c762848b..13c434b506 100644 --- a/ironic/tests/unit/dhcp/test_factory.py +++ b/ironic/tests/unit/dhcp/test_factory.py @@ -16,6 +16,7 @@ import inspect import mock +import six import stevedore from ironic.common import dhcp_factory @@ -84,6 +85,8 @@ class TestDHCPFactory(base.TestCase): class CompareBasetoModules(base.TestCase): def test_drivers_match_dhcp_base(self): + signature_method = inspect.getargspec if six.PY2 else inspect.signature + def _get_public_apis(inst): methods = {} for (name, value) in inspect.getmembers(inst, inspect.ismethod): @@ -98,8 +101,8 @@ class CompareBasetoModules(base.TestCase): implmethods = _get_public_apis(driverclass) for name in basemethods: - baseargs = inspect.getargspec(basemethods[name]) - implargs = inspect.getargspec(implmethods[name]) + baseargs = signature_method(basemethods[name]) + implargs = signature_method(implmethods[name]) self.assertEqual( baseargs, implargs,