diff options
author | Zuul <zuul@review.opendev.org> | 2019-05-15 19:49:20 +0000 |
---|---|---|
committer | Gerrit Code Review <review@openstack.org> | 2019-05-15 19:49:20 +0000 |
commit | b9c51e295b81cedbc747e662628bc69d1f60e6db (patch) | |
tree | bebd87143da6a09b3243b057b630cdb991de8bf7 | |
parent | 925bb81c7f79f71050461e06b8cd3d9f0eb47042 (diff) | |
parent | 7c164cf9388340735c8615bd85412e4b3efd7334 (diff) | |
download | oslo-db-b9c51e295b81cedbc747e662628bc69d1f60e6db.tar.gz |
Merge "Support context function argument as keyword"
-rw-r--r-- | oslo_db/sqlalchemy/enginefacade.py | 5 | ||||
-rw-r--r-- | oslo_db/tests/sqlalchemy/test_enginefacade.py | 13 |
2 files changed, 17 insertions, 1 deletions
diff --git a/oslo_db/sqlalchemy/enginefacade.py b/oslo_db/sqlalchemy/enginefacade.py index 39fd25d..efe947e 100644 --- a/oslo_db/sqlalchemy/enginefacade.py +++ b/oslo_db/sqlalchemy/enginefacade.py @@ -1003,10 +1003,13 @@ class _TransactionContextManager(object): context_index = 1 else: context_index = 0 + context_kw = argspec.args[context_index] @functools.wraps(fn) def wrapper(*args, **kwargs): - context = args[context_index] + context = kwargs.get(context_kw, None) + if not context: + context = args[context_index] with self._transaction_scope(context): return fn(*args, **kwargs) diff --git a/oslo_db/tests/sqlalchemy/test_enginefacade.py b/oslo_db/tests/sqlalchemy/test_enginefacade.py index 12ccba6..5788fb3 100644 --- a/oslo_db/tests/sqlalchemy/test_enginefacade.py +++ b/oslo_db/tests/sqlalchemy/test_enginefacade.py @@ -519,6 +519,19 @@ class MockFacadeTest(oslo_test_base.BaseTestCase): with self._assert_reader_session(makers) as session: session.execute("test") + def test_session_reader_decorator_kwarg_call(self): + context = oslo_context.RequestContext() + + @enginefacade.reader + def go(context): + context.session.execute("test") + go(context=context) + + with self._assert_engines() as engines: + with self._assert_makers(engines) as makers: + with self._assert_reader_session(makers) as session: + session.execute("test") + def test_connection_reader_decorator(self): context = oslo_context.RequestContext() |