Generalize DB conf group copying

The direct access of conf.* names in _get_db_conf() method
is an inappropriate usage of oslo.config [1].   Hardcoding
these names prevents oslo.db from being able to easily
rename or deprecate options, as well as to be able to
add new database options, such as those which apply
to new performance tuning or monitoring techniques.
Retrieve values from the config object generically so
that these names remain local to oslo.db. This usage has
been supported in oslo.db enginefacade from its inception [2]
as multiple projects were already doing it for LegacyEngineFacade.

For the keys __autocommit, sqlite_fk, and expire_on_commit,
enginefacade already defaults these to the same values
as were hardcoded here and these are unnecessary to be
hardcoded.  __autocommit in particular is not public.

[1] http://lists.openstack.org/pipermail/openstack-dev/2017-July/119846.html
[2] https://github.com/openstack/oslo.db/blob/master/oslo_db/tests/sqlalchemy/test_enginefacade.py#L2140

Change-Id: I22f8a19009408fb1f1587bf399e6aee3467c8bc6
This commit is contained in:
Mike Bayer 2017-07-18 14:31:44 -04:00
parent b0d912d164
commit 6453bd2f5a

View File

@ -83,22 +83,9 @@ api_context_manager = enginefacade.transaction_context()
def _get_db_conf(conf_group, connection=None):
kw = dict(
connection=connection or conf_group.connection,
slave_connection=conf_group.slave_connection,
sqlite_fk=False,
__autocommit=True,
expire_on_commit=False,
mysql_sql_mode=conf_group.mysql_sql_mode,
connection_recycle_time=conf_group.connection_recycle_time,
connection_debug=conf_group.connection_debug,
max_pool_size=conf_group.max_pool_size,
max_overflow=conf_group.max_overflow,
pool_timeout=conf_group.pool_timeout,
sqlite_synchronous=conf_group.sqlite_synchronous,
connection_trace=conf_group.connection_trace,
max_retries=conf_group.max_retries,
retry_interval=conf_group.retry_interval)
kw = dict(conf_group.items())
if connection is not None:
kw['connection'] = connection
return kw