Support customizing oslo.db options
Gnocchi uses oslo.db internally when mysql or PostgreSQL is used as the indexer backend. Expose oslo.db options so that users can customize some of these options for tunings. Change-Id: I248a7ab2287c8252478b25f020fc5e5f5e653813
This commit is contained in:
parent
7929bd422d
commit
67d29a9f29
@ -4,24 +4,92 @@
|
||||
#
|
||||
# === Parameters
|
||||
#
|
||||
# [*database_db_max_retries*]
|
||||
# (optional) Maximum retries in case of connection error or deadlock error
|
||||
# before error is raised. Set to -1 to specify an infinite retry count.
|
||||
# Defaults to $facts['os_service_default']
|
||||
#
|
||||
# [*database_connection*]
|
||||
# Url used to connect to database.
|
||||
# (Optional) Defaults to 'sqlite:////var/lib/gnocchi/gnocchi.sqlite'.
|
||||
#
|
||||
# [*slave_connection*]
|
||||
# (optional) Connection url to connect to aodh slave database (read-only).
|
||||
# Defaults to $facts['os_service_default'].
|
||||
#
|
||||
# [*database_connection_recycle_time*]
|
||||
# Timeout when db connections should be reaped.
|
||||
# (Optional) Defaults to $facts['os_service_default'].
|
||||
#
|
||||
# [*database_max_pool_size*]
|
||||
# Maximum number of SQL connections to keep open in a pool.
|
||||
# (Optional) Defaults to $facts['os_service_default'].
|
||||
#
|
||||
# [*database_max_retries*]
|
||||
# Maximum number of database connection retries during startup.
|
||||
# Setting -1 implies an infinite retry count.
|
||||
# (Optional) Defaults to $facts['os_service_default'].
|
||||
#
|
||||
# [*database_retry_interval*]
|
||||
# Interval between retries of opening a database connection.
|
||||
# (Optional) Defaults to $facts['os_service_default'].
|
||||
#
|
||||
# [*database_max_overflow*]
|
||||
# If set, use this value for max_overflow with sqlalchemy.
|
||||
# (Optional) Defaults to $facts['os_service_default'].
|
||||
#
|
||||
# [*database_pool_timeout*]
|
||||
# (Optional) If set, use this value for pool_timeout with SQLAlchemy.
|
||||
# Defaults to $facts['os_service_default']
|
||||
#
|
||||
# [*mysql_enable_ndb*]
|
||||
# (Optional) If True, transparently enables support for handling MySQL
|
||||
# Cluster (NDB).
|
||||
# Defaults to $facts['os_service_default']
|
||||
#
|
||||
# [*package_ensure*]
|
||||
# (optional) The state of gnocchi packages
|
||||
# Defaults to 'present'
|
||||
#
|
||||
class gnocchi::db (
|
||||
$database_db_max_retries = $facts['os_service_default'],
|
||||
Oslo::DBconn $database_connection = 'sqlite:////var/lib/gnocchi/gnocchi.sqlite',
|
||||
$slave_connection = $facts['os_service_default'],
|
||||
$database_connection_recycle_time = $facts['os_service_default'],
|
||||
$database_max_pool_size = $facts['os_service_default'],
|
||||
$database_max_retries = $facts['os_service_default'],
|
||||
$database_retry_interval = $facts['os_service_default'],
|
||||
$database_max_overflow = $facts['os_service_default'],
|
||||
$database_pool_timeout = $facts['os_service_default'],
|
||||
$mysql_enable_ndb = $facts['os_service_default'],
|
||||
$package_ensure = 'present',
|
||||
) inherits gnocchi::params {
|
||||
|
||||
include gnocchi::deps
|
||||
|
||||
oslo::db { 'gnocchi_config':
|
||||
db_max_retries => $database_db_max_retries,
|
||||
slave_connection => $slave_connection,
|
||||
connection_recycle_time => $database_connection_recycle_time,
|
||||
max_pool_size => $database_max_pool_size,
|
||||
max_retries => $database_max_retries,
|
||||
retry_interval => $database_retry_interval,
|
||||
max_overflow => $database_max_overflow,
|
||||
pool_timeout => $database_pool_timeout,
|
||||
mysql_enable_ndb => $mysql_enable_ndb,
|
||||
manage_backend_package => false,
|
||||
manage_config => true,
|
||||
}
|
||||
|
||||
# NOTE(tkajinam): Gnocchi does not use [database] connection but use
|
||||
# [indexer] url to obtain database connection url. So
|
||||
# database_connection is used separately only to determine
|
||||
# the required dependencies we should install.
|
||||
oslo::db { 'gnocchi_config_connection':
|
||||
config => 'gnocchi_config',
|
||||
connection => $database_connection,
|
||||
backend_package_ensure => $package_ensure,
|
||||
manage_backend_package => true,
|
||||
manage_config => false,
|
||||
}
|
||||
|
||||
@ -32,4 +100,5 @@ class gnocchi::db (
|
||||
# all db settings should be applied and all packages should be installed
|
||||
# before dbsync starts
|
||||
Oslo::Db['gnocchi_config'] -> Anchor['gnocchi::dbsync::begin']
|
||||
Oslo::Db['gnocchi_config_connection'] -> Anchor['gnocchi::dbsync::begin']
|
||||
}
|
||||
|
4
releasenotes/notes/oslo-db-options-1af29036e647d8c9.yaml
Normal file
4
releasenotes/notes/oslo-db-options-1af29036e647d8c9.yaml
Normal file
@ -0,0 +1,4 @@
|
||||
---
|
||||
features:
|
||||
- |
|
||||
The ``gnocchi::db`` class now supports customizing oslo.db options.
|
@ -6,9 +6,25 @@ describe 'gnocchi::db' do
|
||||
it { should contain_class('gnocchi::deps') }
|
||||
|
||||
it { should contain_oslo__db('gnocchi_config').with(
|
||||
:connection => 'sqlite:////var/lib/gnocchi/gnocchi.sqlite',
|
||||
:manage_config => false,
|
||||
:db_max_retries => '<SERVICE DEFAULT>',
|
||||
:connection_recycle_time => '<SERVICE DEFAULT>',
|
||||
:max_pool_size => '<SERVICE DEFAULT>',
|
||||
:max_retries => '<SERVICE DEFAULT>',
|
||||
:retry_interval => '<SERVICE DEFAULT>',
|
||||
:max_overflow => '<SERVICE DEFAULT>',
|
||||
:pool_timeout => '<SERVICE DEFAULT>',
|
||||
:mysql_enable_ndb => '<SERVICE DEFAULT>',
|
||||
:manage_backend_package => false,
|
||||
:manage_config => true,
|
||||
)}
|
||||
|
||||
it { should contain_oslo__db('gnocchi_config_connection').with(
|
||||
:config => 'gnocchi_config',
|
||||
:connection => 'sqlite:////var/lib/gnocchi/gnocchi.sqlite',
|
||||
:manage_backend_package => true,
|
||||
:manage_config => false,
|
||||
)}
|
||||
|
||||
it { should contain_gnocchi_config('indexer/url').with(
|
||||
:value => 'sqlite:////var/lib/gnocchi/gnocchi.sqlite',
|
||||
:secret => true,
|
||||
@ -18,15 +34,39 @@ describe 'gnocchi::db' do
|
||||
context 'with specific parameters' do
|
||||
let :params do
|
||||
{
|
||||
:database_connection => 'mysql+pymysql://gnocchi:gnocchi@localhost/gnocchi'
|
||||
:database_db_max_retries => '-1',
|
||||
:database_connection => 'mysql+pymysql://gnocchi:gnocchi@localhost/gnocchi',
|
||||
:slave_connection => 'mysql+pymysql://gnocchi:gnocchi@localhost2/gnocchi',
|
||||
:database_connection_recycle_time => '3601',
|
||||
:database_max_pool_size => '11',
|
||||
:database_max_retries => '11',
|
||||
:database_retry_interval => '11',
|
||||
:database_max_overflow => '21',
|
||||
:database_pool_timeout => '21',
|
||||
:mysql_enable_ndb => true,
|
||||
}
|
||||
end
|
||||
|
||||
it { should contain_class('gnocchi::deps') }
|
||||
|
||||
it { should contain_oslo__db('gnocchi_config').with(
|
||||
:connection => 'mysql+pymysql://gnocchi:gnocchi@localhost/gnocchi',
|
||||
:manage_config => false,
|
||||
:db_max_retries => '-1',
|
||||
:slave_connection => 'mysql+pymysql://gnocchi:gnocchi@localhost2/gnocchi',
|
||||
:connection_recycle_time => '3601',
|
||||
:max_pool_size => '11',
|
||||
:max_retries => '11',
|
||||
:retry_interval => '11',
|
||||
:max_overflow => '21',
|
||||
:pool_timeout => '21',
|
||||
:mysql_enable_ndb => true,
|
||||
:manage_backend_package => false,
|
||||
:manage_config => true,
|
||||
)}
|
||||
it { should contain_oslo__db('gnocchi_config_connection').with(
|
||||
:config => 'gnocchi_config',
|
||||
:connection => 'mysql+pymysql://gnocchi:gnocchi@localhost/gnocchi',
|
||||
:manage_backend_package => true,
|
||||
:manage_config => false,
|
||||
)}
|
||||
it { should contain_gnocchi_config('indexer/url').with(
|
||||
:value => 'mysql+pymysql://gnocchi:gnocchi@localhost/gnocchi',
|
||||
|
Loading…
x
Reference in New Issue
Block a user