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:
@@ -7,6 +7,12 @@
|
|||||||
#
|
#
|
||||||
# === Parameters:
|
# === 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*]
|
# [*sqlite_synchronous*]
|
||||||
# (Optional) If True, SQLite uses synchronous mode (boolean value).
|
# (Optional) If True, SQLite uses synchronous mode (boolean value).
|
||||||
# Defaults to $::os_service_default
|
# Defaults to $::os_service_default
|
||||||
@@ -101,6 +107,7 @@
|
|||||||
# Defaults to $::os_service_default
|
# Defaults to $::os_service_default
|
||||||
#
|
#
|
||||||
define oslo::db(
|
define oslo::db(
|
||||||
|
$config_group = 'database',
|
||||||
$sqlite_synchronous = $::os_service_default,
|
$sqlite_synchronous = $::os_service_default,
|
||||||
$backend = $::os_service_default,
|
$backend = $::os_service_default,
|
||||||
$manage_backend_package = true,
|
$manage_backend_package = true,
|
||||||
@@ -169,26 +176,26 @@ define oslo::db(
|
|||||||
}
|
}
|
||||||
|
|
||||||
$database_options = {
|
$database_options = {
|
||||||
'database/sqlite_synchronous' => { value => $sqlite_synchronous },
|
"${config_group}/sqlite_synchronous" => { value => $sqlite_synchronous },
|
||||||
'database/backend' => { value => $backend },
|
"${config_group}/backend" => { value => $backend },
|
||||||
'database/connection' => { value => $connection, secret => true },
|
"${config_group}/connection" => { value => $connection, secret => true },
|
||||||
'database/slave_connection' => { value => $slave_connection, secret => true },
|
"${config_group}/slave_connection" => { value => $slave_connection, secret => true },
|
||||||
'database/mysql_sql_mode' => { value => $mysql_sql_mode },
|
"${config_group}/mysql_sql_mode" => { value => $mysql_sql_mode },
|
||||||
'database/idle_timeout' => { value => $idle_timeout },
|
"${config_group}/idle_timeout" => { value => $idle_timeout },
|
||||||
'database/min_pool_size' => { value => $min_pool_size },
|
"${config_group}/min_pool_size" => { value => $min_pool_size },
|
||||||
'database/max_pool_size' => { value => $max_pool_size },
|
"${config_group}/max_pool_size" => { value => $max_pool_size },
|
||||||
'database/max_retries' => { value => $max_retries },
|
"${config_group}/max_retries" => { value => $max_retries },
|
||||||
'database/retry_interval' => { value => $retry_interval },
|
"${config_group}/retry_interval" => { value => $retry_interval },
|
||||||
'database/max_overflow' => { value => $max_overflow },
|
"${config_group}/max_overflow" => { value => $max_overflow },
|
||||||
'database/connection_debug' => { value => $connection_debug },
|
"${config_group}/connection_debug" => { value => $connection_debug },
|
||||||
'database/connection_trace' => { value => $connection_trace },
|
"${config_group}/connection_trace" => { value => $connection_trace },
|
||||||
'database/pool_timeout' => { value => $pool_timeout },
|
"${config_group}/pool_timeout" => { value => $pool_timeout },
|
||||||
'database/use_db_reconnect' => { value => $use_db_reconnect },
|
"${config_group}/use_db_reconnect" => { value => $use_db_reconnect },
|
||||||
'database/db_retry_interval' => { value => $db_retry_interval },
|
"${config_group}/db_retry_interval" => { value => $db_retry_interval },
|
||||||
'database/db_inc_retry_interval' => { value => $db_inc_retry_interval },
|
"${config_group}/db_inc_retry_interval" => { value => $db_inc_retry_interval },
|
||||||
'database/db_max_retry_interval' => { value => $db_max_retry_interval },
|
"${config_group}/db_max_retry_interval" => { value => $db_max_retry_interval },
|
||||||
'database/db_max_retries' => { value => $db_max_retries },
|
"${config_group}/db_max_retries" => { value => $db_max_retries },
|
||||||
'database/use_tpool' => { value => $use_tpool },
|
"${config_group}/use_tpool" => { value => $use_tpool },
|
||||||
}
|
}
|
||||||
|
|
||||||
create_resources($name, $database_options)
|
create_resources($name, $database_options)
|
||||||
|
@@ -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.
|
@@ -34,6 +34,7 @@ describe 'oslo::db' do
|
|||||||
context 'with overridden parameters' do
|
context 'with overridden parameters' do
|
||||||
let :params do
|
let :params do
|
||||||
{
|
{
|
||||||
|
:config_group => 'custom_group',
|
||||||
:backend => 'sqlalchemy',
|
:backend => 'sqlalchemy',
|
||||||
:connection => 'mysql+pymysql://db:db@localhost/db',
|
:connection => 'mysql+pymysql://db:db@localhost/db',
|
||||||
:mysql_sql_mode => 'TRADITIONAL',
|
:mysql_sql_mode => 'TRADITIONAL',
|
||||||
@@ -56,24 +57,24 @@ describe 'oslo::db' do
|
|||||||
end
|
end
|
||||||
|
|
||||||
it 'configures database parameters' do
|
it 'configures database parameters' do
|
||||||
is_expected.to contain_keystone_config('database/backend').with_value('sqlalchemy')
|
is_expected.to contain_keystone_config('custom_group/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('custom_group/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('custom_group/mysql_sql_mode').with_value('TRADITIONAL')
|
||||||
is_expected.to contain_keystone_config('database/idle_timeout').with_value('3601')
|
is_expected.to contain_keystone_config('custom_group/idle_timeout').with_value('3601')
|
||||||
is_expected.to contain_keystone_config('database/min_pool_size').with_value('2')
|
is_expected.to contain_keystone_config('custom_group/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('custom_group/max_pool_size').with_value('100')
|
||||||
is_expected.to contain_keystone_config('database/max_retries').with_value('10')
|
is_expected.to contain_keystone_config('custom_group/max_retries').with_value('10')
|
||||||
is_expected.to contain_keystone_config('database/retry_interval').with_value('10')
|
is_expected.to contain_keystone_config('custom_group/retry_interval').with_value('10')
|
||||||
is_expected.to contain_keystone_config('database/max_overflow').with_value('50')
|
is_expected.to contain_keystone_config('custom_group/max_overflow').with_value('50')
|
||||||
is_expected.to contain_keystone_config('database/connection_debug').with_value('0')
|
is_expected.to contain_keystone_config('custom_group/connection_debug').with_value('0')
|
||||||
is_expected.to contain_keystone_config('database/connection_trace').with_value(true)
|
is_expected.to contain_keystone_config('custom_group/connection_trace').with_value(true)
|
||||||
is_expected.to contain_keystone_config('database/pool_timeout').with_value('10')
|
is_expected.to contain_keystone_config('custom_group/pool_timeout').with_value('10')
|
||||||
is_expected.to contain_keystone_config('database/use_db_reconnect').with_value(true)
|
is_expected.to contain_keystone_config('custom_group/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('custom_group/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('custom_group/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('custom_group/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('custom_group/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/use_tpool').with_value(true)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user