Add config group support to oslo::db

We must support setting the oslo.db config
options in another section since services
like placement doesn't use the database section
but it's own placement_database section to
have backward compatibility from the split out
from nova.

[1] https://github.com/openstack/placement/blob/master/placement/conf/database.py#L50

Change-Id: I9f556c7839b3ea455d556d67d4ae2598a524b595
This commit is contained in:
Tobias Urdin 2019-01-18 11:22:56 +01:00
parent 82dd41d9ae
commit 2db95e6243
3 changed files with 55 additions and 38 deletions

View File

@ -7,6 +7,12 @@
#
# === Parameters:
#
# [*config_group*]
# (Optional) The configuration group to set the database configuration in.
# Some OpenStack services might implement the oslo database options in another
# configuration group, this makes it available to set which one to use.
# Defaults to 'database'
#
# [*sqlite_synchronous*]
# (Optional) If True, SQLite uses synchronous mode (boolean value).
# Defaults to $::os_service_default
@ -101,6 +107,7 @@
# Defaults to $::os_service_default
#
define oslo::db(
$config_group = 'database',
$sqlite_synchronous = $::os_service_default,
$backend = $::os_service_default,
$manage_backend_package = true,
@ -169,26 +176,26 @@ define oslo::db(
}
$database_options = {
'database/sqlite_synchronous' => { value => $sqlite_synchronous },
'database/backend' => { value => $backend },
'database/connection' => { value => $connection, secret => true },
'database/slave_connection' => { value => $slave_connection, secret => true },
'database/mysql_sql_mode' => { value => $mysql_sql_mode },
'database/idle_timeout' => { value => $idle_timeout },
'database/min_pool_size' => { value => $min_pool_size },
'database/max_pool_size' => { value => $max_pool_size },
'database/max_retries' => { value => $max_retries },
'database/retry_interval' => { value => $retry_interval },
'database/max_overflow' => { value => $max_overflow },
'database/connection_debug' => { value => $connection_debug },
'database/connection_trace' => { value => $connection_trace },
'database/pool_timeout' => { value => $pool_timeout },
'database/use_db_reconnect' => { value => $use_db_reconnect },
'database/db_retry_interval' => { value => $db_retry_interval },
'database/db_inc_retry_interval' => { value => $db_inc_retry_interval },
'database/db_max_retry_interval' => { value => $db_max_retry_interval },
'database/db_max_retries' => { value => $db_max_retries },
'database/use_tpool' => { value => $use_tpool },
"${config_group}/sqlite_synchronous" => { value => $sqlite_synchronous },
"${config_group}/backend" => { value => $backend },
"${config_group}/connection" => { value => $connection, secret => true },
"${config_group}/slave_connection" => { value => $slave_connection, secret => true },
"${config_group}/mysql_sql_mode" => { value => $mysql_sql_mode },
"${config_group}/idle_timeout" => { value => $idle_timeout },
"${config_group}/min_pool_size" => { value => $min_pool_size },
"${config_group}/max_pool_size" => { value => $max_pool_size },
"${config_group}/max_retries" => { value => $max_retries },
"${config_group}/retry_interval" => { value => $retry_interval },
"${config_group}/max_overflow" => { value => $max_overflow },
"${config_group}/connection_debug" => { value => $connection_debug },
"${config_group}/connection_trace" => { value => $connection_trace },
"${config_group}/pool_timeout" => { value => $pool_timeout },
"${config_group}/use_db_reconnect" => { value => $use_db_reconnect },
"${config_group}/db_retry_interval" => { value => $db_retry_interval },
"${config_group}/db_inc_retry_interval" => { value => $db_inc_retry_interval },
"${config_group}/db_max_retry_interval" => { value => $db_max_retry_interval },
"${config_group}/db_max_retries" => { value => $db_max_retries },
"${config_group}/use_tpool" => { value => $use_tpool },
}
create_resources($name, $database_options)

View File

@ -0,0 +1,9 @@
---
features:
- |
Added new parameter oslo::db::config_group that can be used to tell the
oslo::db resource in which config section in the configuration file it
should set the oslo.db specific database options. This doesn't change any
existing behavior and the default value is ``database``, this is to support
services like Placement that reads database config from ``placement_database``
group.

View File

@ -34,6 +34,7 @@ describe 'oslo::db' do
context 'with overridden parameters' do
let :params do
{
:config_group => 'custom_group',
:backend => 'sqlalchemy',
:connection => 'mysql+pymysql://db:db@localhost/db',
:mysql_sql_mode => 'TRADITIONAL',
@ -56,24 +57,24 @@ describe 'oslo::db' do
end
it 'configures database parameters' do
is_expected.to contain_keystone_config('database/backend').with_value('sqlalchemy')
is_expected.to contain_keystone_config('database/connection').with_value('mysql+pymysql://db:db@localhost/db').with_secret(true)
is_expected.to contain_keystone_config('database/mysql_sql_mode').with_value('TRADITIONAL')
is_expected.to contain_keystone_config('database/idle_timeout').with_value('3601')
is_expected.to contain_keystone_config('database/min_pool_size').with_value('2')
is_expected.to contain_keystone_config('database/max_pool_size').with_value('100')
is_expected.to contain_keystone_config('database/max_retries').with_value('10')
is_expected.to contain_keystone_config('database/retry_interval').with_value('10')
is_expected.to contain_keystone_config('database/max_overflow').with_value('50')
is_expected.to contain_keystone_config('database/connection_debug').with_value('0')
is_expected.to contain_keystone_config('database/connection_trace').with_value(true)
is_expected.to contain_keystone_config('database/pool_timeout').with_value('10')
is_expected.to contain_keystone_config('database/use_db_reconnect').with_value(true)
is_expected.to contain_keystone_config('database/db_retry_interval').with_value('1')
is_expected.to contain_keystone_config('database/db_inc_retry_interval').with_value(true)
is_expected.to contain_keystone_config('database/db_max_retry_interval').with_value('10')
is_expected.to contain_keystone_config('database/db_max_retries').with_value('20')
is_expected.to contain_keystone_config('database/use_tpool').with_value(true)
is_expected.to contain_keystone_config('custom_group/backend').with_value('sqlalchemy')
is_expected.to contain_keystone_config('custom_group/connection').with_value('mysql+pymysql://db:db@localhost/db').with_secret(true)
is_expected.to contain_keystone_config('custom_group/mysql_sql_mode').with_value('TRADITIONAL')
is_expected.to contain_keystone_config('custom_group/idle_timeout').with_value('3601')
is_expected.to contain_keystone_config('custom_group/min_pool_size').with_value('2')
is_expected.to contain_keystone_config('custom_group/max_pool_size').with_value('100')
is_expected.to contain_keystone_config('custom_group/max_retries').with_value('10')
is_expected.to contain_keystone_config('custom_group/retry_interval').with_value('10')
is_expected.to contain_keystone_config('custom_group/max_overflow').with_value('50')
is_expected.to contain_keystone_config('custom_group/connection_debug').with_value('0')
is_expected.to contain_keystone_config('custom_group/connection_trace').with_value(true)
is_expected.to contain_keystone_config('custom_group/pool_timeout').with_value('10')
is_expected.to contain_keystone_config('custom_group/use_db_reconnect').with_value(true)
is_expected.to contain_keystone_config('custom_group/db_retry_interval').with_value('1')
is_expected.to contain_keystone_config('custom_group/db_inc_retry_interval').with_value(true)
is_expected.to contain_keystone_config('custom_group/db_max_retry_interval').with_value('10')
is_expected.to contain_keystone_config('custom_group/db_max_retries').with_value('20')
is_expected.to contain_keystone_config('custom_group/use_tpool').with_value(true)
end
end