diff options
author | Mike Bayer <mike_mp@zzzcomputing.com> | 2015-06-29 18:02:24 -0400 |
---|---|---|
committer | Mike Bayer <mike_mp@zzzcomputing.com> | 2015-06-29 18:02:24 -0400 |
commit | e8c4a03c8783b5911e84088027e50689c892f6db (patch) | |
tree | ed1a076b05f93b5356030ecd2480703adde483cf | |
parent | 239c4719726694793beda82f77d709e3d878216a (diff) | |
download | oslo-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.py | 12 | ||||
-rw-r--r-- | oslo_db/tests/sqlalchemy/test_enginefacade.py | 7 |
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.""" |