summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMike Bayer <mike_mp@zzzcomputing.com>2015-06-29 18:02:24 -0400
committerMike Bayer <mike_mp@zzzcomputing.com>2015-06-29 18:02:24 -0400
commite8c4a03c8783b5911e84088027e50689c892f6db (patch)
treeed1a076b05f93b5356030ecd2480703adde483cf
parent239c4719726694793beda82f77d709e3d878216a (diff)
downloadoslo-db-e8c4a03c8783b5911e84088027e50689c892f6db.tar.gz
Add legacy get_sessionmaker() method
Some projects are calling EngineFacade._session_maker for some use cases. To suit these cases more cleanly on the legacy API, add a public get_sessionmaker() method. Change-Id: Ica9574d70a6b8be80bd1a5e7cf250828455c5ade
-rw-r--r--oslo_db/sqlalchemy/enginefacade.py12
-rw-r--r--oslo_db/tests/sqlalchemy/test_enginefacade.py7
2 files changed, 19 insertions, 0 deletions
diff --git a/oslo_db/sqlalchemy/enginefacade.py b/oslo_db/sqlalchemy/enginefacade.py
index 056dd31..4497a50 100644
--- a/oslo_db/sqlalchemy/enginefacade.py
+++ b/oslo_db/sqlalchemy/enginefacade.py
@@ -964,6 +964,18 @@ class LegacyEngineFacade(object):
else:
return self._factory._writer_maker(**kwargs)
+ def get_sessionmaker(self, use_slave=False):
+ """Get the sessionmaker instance used to create a Session.
+
+ This can be called for those cases where the sessionmaker() is to
+ be temporarily injected with some state such as a specific connection.
+
+ """
+ if use_slave:
+ return self._factory._reader_maker
+ else:
+ return self._factory._writer_maker
+
@classmethod
def from_config(cls, conf,
sqlite_fk=False, autocommit=True, expire_on_commit=False):
diff --git a/oslo_db/tests/sqlalchemy/test_enginefacade.py b/oslo_db/tests/sqlalchemy/test_enginefacade.py
index a463c7b..fe8030c 100644
--- a/oslo_db/tests/sqlalchemy/test_enginefacade.py
+++ b/oslo_db/tests/sqlalchemy/test_enginefacade.py
@@ -947,6 +947,13 @@ class LegacyIntegrationtest(test_base.DbTestCase):
enginefacade.get_legacy_facade() is legacy_facade
)
+ def test_get_sessionmaker(self):
+ legacy_facade = enginefacade.get_legacy_facade()
+ self.assertTrue(
+ legacy_facade.get_sessionmaker() is
+ enginefacade._context_manager._factory._writer_maker
+ )
+
class ThreadingTest(test_base.DbTestCase):
"""Test copying on new threads using real connections and sessions."""