From 1722e9f94a31abf6f7c48e3944532d9b9653134b Mon Sep 17 00:00:00 2001 From: melanie witt Date: Fri, 28 Sep 2018 22:07:42 +0000 Subject: [PATCH] Replace usage of get_legacy_facade() with get_engine() We've been seeing warnings emitted to the python 3 unit tests: OsloDBDeprecationWarning: EngineFacade is deprecated; please use oslo_db.sqlalchemy.enginefacade which stem from our use of the get_legacy_facade() oslo.db method. This replaces the get_legacy_facade() usage with the get_engine() method from the transaction context manager. Closes-Bug: #1795078 Change-Id: If1e355d6174f15a1880e97115a2cf3f9f4be837e (cherry picked from commit 020651ad3d14066af34dc5d1d96cec7c6ffe5cd9) --- nova/db/sqlalchemy/api.py | 6 ++++-- nova/tests/fixtures.py | 9 ++++----- nova/tests/unit/db/test_db_api.py | 27 +++++++++++---------------- 3 files changed, 19 insertions(+), 23 deletions(-) diff --git a/nova/db/sqlalchemy/api.py b/nova/db/sqlalchemy/api.py index 5273045f82f8..37d1beed29a7 100644 --- a/nova/db/sqlalchemy/api.py +++ b/nova/db/sqlalchemy/api.py @@ -134,11 +134,13 @@ def get_engine(use_slave=False, context=None): :param context: The request context that can contain a context manager """ ctxt_mgr = get_context_manager(context) - return ctxt_mgr.get_legacy_facade().get_engine(use_slave=use_slave) + if use_slave: + return ctxt_mgr.reader.get_engine() + return ctxt_mgr.writer.get_engine() def get_api_engine(): - return api_context_manager.get_legacy_facade().get_engine() + return api_context_manager.writer.get_engine() _SHADOW_TABLE_PREFIX = 'shadow_' diff --git a/nova/tests/fixtures.py b/nova/tests/fixtures.py index df8858918950..f081628edf69 100644 --- a/nova/tests/fixtures.py +++ b/nova/tests/fixtures.py @@ -426,7 +426,7 @@ class CellDatabases(fixtures.Fixture): global DB_SCHEMA if not DB_SCHEMA['main']: ctxt_mgr = self._ctxt_mgrs[connection_str] - engine = ctxt_mgr.get_legacy_facade().get_engine() + engine = ctxt_mgr.writer.get_engine() conn = engine.connect() migration.db_sync(database='main') DB_SCHEMA['main'] = "".join(line for line @@ -535,7 +535,7 @@ class CellDatabases(fixtures.Fixture): 'nova.db.sqlalchemy.api.get_context_manager', get_context_manager): self._cache_schema(connection_str) - engine = ctxt_mgr.get_legacy_facade().get_engine() + engine = ctxt_mgr.writer.get_engine() engine.dispose() conn = engine.connect() conn.connection.executescript(DB_SCHEMA['main']) @@ -567,7 +567,7 @@ class CellDatabases(fixtures.Fixture): def cleanup(self): for ctxt_mgr in self._ctxt_mgrs.values(): - engine = ctxt_mgr.get_legacy_facade().get_engine() + engine = ctxt_mgr.writer.get_engine() engine.dispose() @@ -591,8 +591,7 @@ class Database(fixtures.Fixture): if connection is not None: ctxt_mgr = session.create_context_manager( connection=connection) - facade = ctxt_mgr.get_legacy_facade() - self.get_engine = facade.get_engine + self.get_engine = ctxt_mgr.writer.get_engine else: self.get_engine = session.get_engine elif database == 'api': diff --git a/nova/tests/unit/db/test_db_api.py b/nova/tests/unit/db/test_db_api.py index 5c180ff74b6a..0433f126b1ba 100644 --- a/nova/tests/unit/db/test_db_api.py +++ b/nova/tests/unit/db/test_db_api.py @@ -681,15 +681,15 @@ class SqlAlchemyDbApiNoDbTestCase(test.NoDBTestCase): self.assertEqual('|', filter('|')) self.assertEqual('LIKE', op) - @mock.patch.object(sqlalchemy_api.main_context_manager._factory, - 'get_legacy_facade') - def test_get_engine(self, mock_create_facade): - mock_facade = mock.MagicMock() - mock_create_facade.return_value = mock_facade - + @mock.patch.object(sqlalchemy_api, 'main_context_manager') + def test_get_engine(self, mock_ctxt_mgr): sqlalchemy_api.get_engine() - mock_create_facade.assert_called_once_with() - mock_facade.get_engine.assert_called_once_with(use_slave=False) + mock_ctxt_mgr.writer.get_engine.assert_called_once_with() + + @mock.patch.object(sqlalchemy_api, 'main_context_manager') + def test_get_engine_use_slave(self, mock_ctxt_mgr): + sqlalchemy_api.get_engine(use_slave=True) + mock_ctxt_mgr.reader.get_engine.assert_called_once_with() def test_get_db_conf_with_connection(self): mock_conf_group = mock.MagicMock() @@ -698,15 +698,10 @@ class SqlAlchemyDbApiNoDbTestCase(test.NoDBTestCase): connection='fake://') self.assertEqual('fake://', db_conf['connection']) - @mock.patch.object(sqlalchemy_api.api_context_manager._factory, - 'get_legacy_facade') - def test_get_api_engine(self, mock_create_facade): - mock_facade = mock.MagicMock() - mock_create_facade.return_value = mock_facade - + @mock.patch.object(sqlalchemy_api, 'api_context_manager') + def test_get_api_engine(self, mock_ctxt_mgr): sqlalchemy_api.get_api_engine() - mock_create_facade.assert_called_once_with() - mock_facade.get_engine.assert_called_once_with() + mock_ctxt_mgr.writer.get_engine.assert_called_once_with() @mock.patch.object(sqlalchemy_api, '_instance_get_by_uuid') @mock.patch.object(sqlalchemy_api, '_instances_fill_metadata')