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
This commit is contained in:
melanie witt 2018-09-28 22:07:42 +00:00
parent 99bf62e427
commit 020651ad3d
3 changed files with 19 additions and 23 deletions

View File

@ -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_'

View File

@ -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':

View File

@ -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')