Merge "Update nova::db class to match other module pattern"

This commit is contained in:
Jenkins
2015-10-20 00:08:59 +00:00
committed by Gerrit Code Review
4 changed files with 126 additions and 33 deletions

View File

@@ -16,47 +16,106 @@
# under the License.
#
# == Class: nova::db
# Configures the nova database.
#
# Configures the Nova database.
#
# == Parameters
#
# [*database_connection*]
# (optional) Connection url to connect to nova database.
# Defaults to undef
# Defaults to false.
#
# [*slave_connection*]
# (optional) Connection url to connect to nova slave database (read-only).
# Defaults to undef
# Defaults to false.
#
# [*database_idle_timeout*]
# (optional) Timeout before idle db connections are reaped.
# Defaults to undef
# Timeout when db connections should be reaped.
# (Optional) Defaults to 3600.
#
# [*database_min_pool_size*]
# Minimum number of SQL connections to keep open in a pool.
# (Optional) Defaults to 1.
#
# [*database_max_pool_size*]
# Maximum number of SQL connections to keep open in a pool.
# (Optional) Defaults to 10.
#
# [*database_max_retries*]
# Maximum db connection retries during startup.
# Setting -1 implies an infinite retry count.
# (Optional) Defaults to 10.
#
# [*database_retry_interval*]
# Interval between retries of opening a sql connection.
# (Optional) Defaults to 10.
#
# [*database_max_overflow*]
# If set, use this value for max_overflow with sqlalchemy.
# (Optional) Defaults to 20.
#
class nova::db (
$database_connection = undef,
$slave_connection = undef,
$database_idle_timeout = undef,
$database_connection = false,
$slave_connection = false,
$database_idle_timeout = 3600,
$database_min_pool_size = 1,
$database_max_pool_size = 10,
$database_max_retries = 10,
$database_retry_interval = 10,
$database_max_overflow = 20,
) {
$database_connection_real = pick($database_connection, $::nova::database_connection, false)
$slave_connection_real = pick($slave_connection, $::nova::slave_connection, false)
$database_idle_timeout_real = pick($database_idle_timeout, $::nova::database_idle_timeout, false)
# NOTE(spredzy): In order to keep backward compatibility we rely on the pick function
# to use nova::<myparam> first the nova::db::<myparam>
$database_connection_real = pick($::nova::database_connection, $database_connection)
$slave_connection_real = pick($::nova::slave_connection, $slave_connection)
$database_idle_timeout_real = pick($::nova::database_idle_timeout, $database_idle_timeout)
$database_min_pool_size_real = pick($::nova::database_min_pool_size, $database_min_pool_size)
$database_max_pool_size_real = pick($::nova::database_max_pool_size, $database_max_pool_size)
$database_max_retries_real = pick($::nova::database_max_retries, $database_max_retries)
$database_retry_interval_real = pick($::nova::database_retry_interval, $database_retry_interval)
$database_max_overflow_real = pick($::nova::database_max_overflow, $database_max_overflow)
if $database_connection_real {
if($database_connection_real =~ /mysql:\/\/\S+:\S+@\S+\/\S+/) {
require 'mysql::bindings'
require 'mysql::bindings::python'
} elsif($database_connection_real =~ /postgresql:\/\/\S+:\S+@\S+\/\S+/) {
} elsif($database_connection_real =~ /sqlite:\/\//) {
validate_re($database_connection_real,
'(sqlite|mysql|postgresql):\/\/(\S+:\S+@\S+\/\S+)?')
} else {
fail("Invalid db connection ${database_connection_real}")
case $database_connection_real {
/^mysql:\/\//: {
$backend_package = false
require 'mysql::bindings'
require 'mysql::bindings::python'
}
/^postgresql:\/\//: {
$backend_package = $::neutron::params::psycopg_package_name
}
/^sqlite:\/\//: {
$backend_package = $::neutron::params::sqlite_package_name
}
default: {
fail('Unsupported backend configured')
}
}
if $backend_package and !defined(Package[$backend_package]) {
package {'nova-backend-package':
ensure => present,
name => $backend_package,
tag => 'openstack',
}
}
nova_config {
'database/connection': value => $database_connection_real, secret => true;
'database/idle_timeout': value => $database_idle_timeout_real;
'database/connection': value => $database_connection_real, secret => true;
'database/idle_timeout': value => $database_idle_timeout_real;
'database/min_pool_size': value => $database_min_pool_size_real;
'database/max_retries': value => $database_max_retries_real;
'database/retry_interval': value => $database_retry_interval_real;
'database/max_pool_size': value => $database_max_pool_size_real;
'database/max_overflow': value => $database_max_overflow_real;
}
if $slave_connection_real {
nova_config {
'database/slave_connection': value => $slave_connection_real, secret => true;

View File

@@ -10,16 +10,36 @@
# Defaults to 'present'
#
# [*database_connection*]
# (optional) Connection url to connect to nova database.
# Defaults to false
# (optional) Connection url for the heat database.
# Defaults to undef.
#
# [*slave_connection*]
# (optional) Connection url to connect to nova slave database (read-only).
# Defaults to false
# Defaults to undef.
#
# [*database_max_retries*]
# (optional) Maximum database connection retries during startup.
# Defaults to undef.
#
# [*database_idle_timeout*]
# (optional) Timeout before idle db connections are reaped.
# Defaults to 3600
# (optional) Timeout before idle database connections are reaped.
# Defaults to undef.
#
# [*database_retry_interval*]
# (optional) Interval between retries of opening a database connection.
# Defaults to undef.
#
# [*database_min_pool_size*]
# (optional) Minimum number of SQL connections to keep open in a pool.
# Defaults to undef.
#
# [*database_max_pool_size*]
# (optional) Maximum number of SQL connections to keep open in a pool.
# Defaults to undef.
#
# [*database_max_overflow*]
# (optional) If set, use this value for max_overflow with sqlalchemy.
# Defaults to: undef.
#
# [*rpc_backend*]
# (optional) The rpc backend implementation to use, can be:
@@ -271,9 +291,14 @@
#
class nova(
$ensure_package = 'present',
$database_connection = false,
$slave_connection = false,
$database_idle_timeout = 3600,
$database_connection = undef,
$slave_connection = undef,
$database_idle_timeout = undef,
$database_min_pool_size = undef,
$database_max_pool_size = undef,
$database_max_retries = undef,
$database_retry_interval = undef,
$database_max_overflow = undef,
$rpc_backend = 'rabbit',
$image_service = 'nova.image.glance.GlanceImageService',
# these glance params should be optional

View File

@@ -26,6 +26,8 @@ class nova::params {
$vncproxy_package_name = 'openstack-nova-novncproxy'
$serialproxy_package_name = 'openstack-nova-serialproxy'
$spicehtml5proxy_package_name = 'openstack-nova-console'
$psycopg_package_name = 'python-psycopg2'
$sqlite_package_name = undef
# service names
$api_service_name = 'openstack-nova-api'
$cells_service_name = 'openstack-nova-cells'
@@ -80,6 +82,8 @@ class nova::params {
$scheduler_package_name = 'nova-scheduler'
$tgt_package_name = 'tgt'
$serialproxy_package_name = 'nova-serialproxy'
$psycopg_package_name = 'python-psycopg2'
$sqlite_package_name = 'python-pysqlite2'
# service names
$api_service_name = 'nova-api'
$cells_service_name = 'nova-cells'

View File

@@ -6,12 +6,15 @@ describe 'nova::db' do
{}
end
shared_examples 'nova-db' do
shared_examples 'nova::db' do
context 'with default parameters' do
it { is_expected.to_not contain_nova_config('database/connection') }
it { is_expected.to_not contain_nova_config('database/slave_connection') }
it { is_expected.to_not contain_nova_config('database/idle_timeout') }
it { is_expected.to_not contain_nova_config('database/min_pool_size') }
it { is_expected.to_not contain_nova_config('database/max_retries') }
it { is_expected.to_not contain_nova_config('database/retry_interval') }
end
context 'with overriden parameters' do
@@ -19,13 +22,15 @@ describe 'nova::db' do
params.merge!(
:database_connection => 'mysql://user:pass@db/db',
:slave_connection => 'mysql://user:pass@slave/db',
:database_idle_timeout => '30',
)
end
it { is_expected.to contain_nova_config('database/connection').with_value('mysql://user:pass@db/db').with_secret(true) }
it { is_expected.to contain_nova_config('database/slave_connection').with_value('mysql://user:pass@slave/db').with_secret(true) }
it { is_expected.to contain_nova_config('database/idle_timeout').with_value('30') }
it { is_expected.to contain_nova_config('database/idle_timeout').with_value('3600') }
it { is_expected.to contain_nova_config('database/min_pool_size').with_value('1') }
it { is_expected.to contain_nova_config('database/max_retries').with_value('10') }
it { is_expected.to contain_nova_config('database/retry_interval').with_value('10') }
end
end
@@ -35,7 +40,7 @@ describe 'nova::db' do
{ :osfamily => 'Debian' }
end
it_configures 'nova-db'
it_configures 'nova::db'
end
context 'on Redhat platforms' do
@@ -43,7 +48,7 @@ describe 'nova::db' do
{ :osfamily => 'RedHat' }
end
it_configures 'nova-db'
it_configures 'nova::db'
end
end