diff --git a/nova/db/sqlalchemy/api.py b/nova/db/sqlalchemy/api.py index 240e6deac51e..3bf45918819f 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 ff88eb2c5b54..070da73bff44 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 8acfbfb65eaa..a792a5ea6765 100644 --- a/nova/tests/unit/db/test_db_api.py +++ b/nova/tests/unit/db/test_db_api.py @@ -682,15 +682,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() @@ -699,15 +699,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')