Update Sahara for using puppet-oslo

This commit switches using of oslo options to a puppet-oslo module:
* oslo messaging notifications;
* oslo messaging rabbitmq;
* oslo log;
* oslo db;
* oslo policy;

Change-Id: I63754d63f00c01737031b2fc713563681c269a60
This commit is contained in:
Denis Egorenko 2016-04-13 12:58:47 +03:00
parent 095c88aa79
commit 0008bc5f89
12 changed files with 84 additions and 120 deletions

View File

@ -43,8 +43,6 @@ class sahara::db (
$database_max_overflow = $::os_service_default,
) {
include ::sahara::params
# NOTE(degorenko): In order to keep backward compatibility we rely on the pick function
# to use sahara::<myparam> if sahara::db::<myparam> isn't specified.
$database_connection_real = pick($::sahara::database_connection, $database_connection)
@ -58,41 +56,13 @@ class sahara::db (
validate_re($database_connection_real,
'^(mysql(\+pymysql)?|postgresql):\/\/(\S+:\S+@\S+\/\S+)?')
case $database_connection_real {
/^mysql(\+pymysql)?:\/\//: {
require mysql::bindings
require mysql::bindings::python
if $database_connection_real =~ /^mysql\+pymysql/ {
$backend_package = $::sahara::params::pymysql_package_name
} else {
$backend_package = false
}
}
/^postgresql:\/\//: {
$backend_package = false
require postgresql::lib::python
}
default: {
fail('Unsupported db backend configured')
}
oslo::db { 'sahara_config':
connection => $database_connection_real,
idle_timeout => $database_idle_timeout_real,
min_pool_size => $database_min_pool_size_real,
max_pool_size => $database_max_pool_size_real,
max_retries => $database_max_retries_real,
retry_interval => $database_retry_interval_real,
max_overflow => $database_max_overflow_real,
}
if $backend_package and !defined(Package[$backend_package]) {
package {'sahara-backend-package':
ensure => present,
name => $backend_package,
tag => 'openstack',
}
}
sahara_config {
'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;
}
}

View File

@ -390,37 +390,25 @@ class sahara(
}
if $rpc_backend == 'rabbit' or is_service_default($rpc_backend) {
if ! is_service_default($rabbit_hosts) and $rabbit_hosts {
sahara_config {
'oslo_messaging_rabbit/rabbit_hosts': value => join(any2array($rabbit_hosts), ',');
'oslo_messaging_rabbit/rabbit_ha_queues': value => true;
}
} else {
sahara_config {
'oslo_messaging_rabbit/rabbit_host': value => $rabbit_host;
'oslo_messaging_rabbit/rabbit_port': value => $rabbit_port;
'oslo_messaging_rabbit/rabbit_ha_queues': value => $rabbit_ha_queues;
'oslo_messaging_rabbit/rabbit_hosts': ensure => absent;
}
}
sahara_config {
'DEFAULT/rpc_backend': value => 'rabbit';
'oslo_messaging_rabbit/amqp_durable_queues': value => $amqp_durable_queues;
'oslo_messaging_rabbit/rabbit_use_ssl': value => $rabbit_use_ssl;
'oslo_messaging_rabbit/rabbit_userid': value => $rabbit_userid;
'oslo_messaging_rabbit/rabbit_password':
value => $rabbit_password,
secret => true;
'oslo_messaging_rabbit/rabbit_login_method': value => $rabbit_login_method;
'oslo_messaging_rabbit/rabbit_virtual_host': value => $rabbit_virtual_host;
'oslo_messaging_rabbit/rabbit_retry_interval': value => $rabbit_retry_interval;
'oslo_messaging_rabbit/rabbit_retry_backoff': value => $rabbit_retry_backoff;
'oslo_messaging_rabbit/rabbit_max_retries': value => $rabbit_max_retries;
'oslo_messaging_rabbit/kombu_ssl_ca_certs': value => $kombu_ssl_ca_certs;
'oslo_messaging_rabbit/kombu_ssl_certfile': value => $kombu_ssl_certfile;
'oslo_messaging_rabbit/kombu_ssl_keyfile': value => $kombu_ssl_keyfile;
'oslo_messaging_rabbit/kombu_ssl_version': value => $kombu_ssl_version;
'oslo_messaging_rabbit/kombu_reconnect_delay': value => $kombu_reconnect_delay;
oslo::messaging::rabbit { 'sahara_config':
rabbit_userid => $rabbit_userid,
rabbit_password => $rabbit_password,
rabbit_virtual_host => $rabbit_virtual_host,
rabbit_host => $rabbit_host,
rabbit_port => $rabbit_port,
rabbit_hosts => $rabbit_hosts,
rabbit_ha_queues => $rabbit_ha_queues,
rabbit_use_ssl => $rabbit_use_ssl,
kombu_reconnect_delay => $kombu_reconnect_delay,
kombu_ssl_version => $kombu_ssl_version,
kombu_ssl_keyfile => $kombu_ssl_keyfile,
kombu_ssl_certfile => $kombu_ssl_certfile,
kombu_ssl_ca_certs => $kombu_ssl_ca_certs,
amqp_durable_queues => $amqp_durable_queues,
rabbit_login_method => $rabbit_login_method,
rabbit_retry_interval => $rabbit_retry_interval,
rabbit_retry_backoff => $rabbit_retry_backoff,
rabbit_max_retries => $rabbit_max_retries,
}
}

View File

@ -119,29 +119,23 @@ class sahara::logging(
$verbose_real = pick($::sahara::verbose, $verbose)
$debug_real = pick($::sahara::debug, $debug)
if is_service_default($default_log_levels) {
$default_log_levels_real = $default_log_levels
} else {
$default_log_levels_real = join(sort(join_keys_to_values($default_log_levels, '=')), ',')
}
sahara_config {
'DEFAULT/debug': value => $debug_real;
'DEFAULT/verbose': value => $verbose_real;
'DEFAULT/use_stderr': value => $use_stderr_real;
'DEFAULT/use_syslog': value => $use_syslog_real;
'DEFAULT/log_dir': value => $log_dir_real;
'DEFAULT/syslog_log_facility': value => $log_facility_real;
'DEFAULT/logging_context_format_string': value => $logging_context_format_string;
'DEFAULT/logging_default_format_string': value => $logging_default_format_string;
'DEFAULT/logging_debug_format_suffix': value => $logging_debug_format_suffix;
'DEFAULT/logging_exception_prefix': value => $logging_exception_prefix;
'DEFAULT/log_config_append': value => $log_config_append;
'DEFAULT/default_log_levels': value => $default_log_levels_real;
'DEFAULT/publish_errors': value => $publish_errors;
'DEFAULT/fatal_deprecations': value => $fatal_deprecations;
'DEFAULT/instance_format': value => $instance_format;
'DEFAULT/instance_uuid_format': value => $instance_uuid_format;
'DEFAULT/log_date_format': value => $log_date_format;
oslo::log { 'sahara_config':
debug => $debug_real,
verbose => $verbose_real,
use_syslog => $use_syslog_real,
use_stderr => $use_stderr_real,
log_dir => $log_dir_real,
syslog_log_facility => $log_facility_real,
logging_context_format_string => $logging_context_format_string,
logging_default_format_string => $logging_default_format_string,
logging_debug_format_suffix => $logging_debug_format_suffix,
logging_exception_prefix => $logging_exception_prefix,
log_config_append => $log_config_append,
default_log_levels => $default_log_levels,
publish_errors => $publish_errors,
fatal_deprecations => $fatal_deprecations,
log_date_format => $log_date_format,
instance_format => $instance_format,
instance_uuid_format => $instance_uuid_format,
}
}

View File

@ -33,12 +33,18 @@ class sahara::notify (
$notification_level = $::os_service_default,
) {
oslo::messaging::notifications { 'sahara_config':
driver => $notification_driver,
topics => $notification_topics,
}
oslo::messaging::default { 'sahara_config':
control_exchange => $control_exchange
}
sahara_config {
'DEFAULT/control_exchange': value => $control_exchange;
'DEFAULT/enable_notifications': value => $enable_notifications;
'DEFAULT/notification_driver': value => $notification_driver;
'DEFAULT/notification_topics': value => $notification_topics;
'DEFAULT/notification_level': value => $notification_level;
'oslo_messaging_notifications/enable': value => $enable_notifications;
'oslo_messaging_notifications/level': value => $notification_level;
}
}

View File

@ -14,7 +14,6 @@ class sahara::params {
$all_service_name = 'openstack-sahara-all'
$api_service_name = 'openstack-sahara-api'
$engine_service_name = 'openstack-sahara-engine'
$pymysql_package_name = undef
}
'Debian': {
$common_package_name = 'sahara-common'
@ -24,7 +23,6 @@ class sahara::params {
$all_service_name = 'sahara'
$api_service_name = 'sahara-api'
$engine_service_name = 'sahara-engine'
$pymysql_package_name = 'python-pymysql'
}
default: {
fail("Unsupported osfamily: ${::osfamily} operatingsystem: ${::operatingsystem}")

View File

@ -36,4 +36,6 @@ class sahara::policy (
create_resources('openstacklib::policy::base', $policies)
oslo::policy { 'sahara_config': policy_file => $policy_path }
}

View File

@ -32,6 +32,7 @@
{ "name": "puppetlabs/inifile", "version_requirement": ">=1.0.0 <2.0.0" },
{ "name": "puppetlabs/stdlib", "version_requirement": ">=4.0.0 <5.0.0" },
{ "name": "puppetlabs/postgresql", "version_requirement": ">=3.0.0" },
{ "name": "openstack/openstacklib", "version_requirement": ">=8.0.0 <9.0.0" }
{ "name": "openstack/openstacklib", "version_requirement": ">=8.0.0 <9.0.0" },
{ "name": "openstack/oslo", "version_requirement": "<9.0.0" }
]
}

View File

@ -0,0 +1,4 @@
---
features:
- Switch to puppet-oslo resource usage (instead of
manual configuration file editing).

View File

@ -85,7 +85,7 @@ describe 'sahara::db' do
{ :database_connection => 'mysql+pymysql://sahara:sahara@localhost/sahara' }
end
it { is_expected.to contain_package('sahara-backend-package').with({ :ensure => 'present', :name => 'python-pymysql' }) }
it { is_expected.to contain_package('db_backend_package').with({ :ensure => 'present', :name => 'python-pymysql' }) }
end
end
@ -104,7 +104,7 @@ describe 'sahara::db' do
{ :database_connection => 'mysql+pymysql://sahara:sahara@localhost/sahara' }
end
it { is_expected.not_to contain_package('sahara-backend-package') }
it { is_expected.not_to contain_package('db_backend_package') }
end
end

View File

@ -76,7 +76,7 @@ describe 'sahara' do
it { is_expected.to contain_sahara_config('oslo_messaging_rabbit/rabbit_ha_queues').with_value('<SERVICE DEFAULT>') }
it { is_expected.to contain_sahara_config('oslo_messaging_rabbit/rabbit_virtual_host').with_value('<SERVICE DEFAULT>') }
it { is_expected.to contain_sahara_config('oslo_messaging_rabbit/amqp_durable_queues').with_value('<SERVICE DEFAULT>') }
it { is_expected.to contain_sahara_config('oslo_messaging_rabbit/rabbit_hosts').with_ensure('absent') }
it { is_expected.to contain_sahara_config('oslo_messaging_rabbit/rabbit_hosts').with_value('<SERVICE DEFAULT>') }
end
context 'when passing params' do
@ -97,14 +97,14 @@ describe 'sahara' do
it { is_expected.to contain_sahara_config('oslo_messaging_rabbit/rabbit_port').with_value('5673') }
it { is_expected.to contain_sahara_config('oslo_messaging_rabbit/rabbit_ha_queues').with_value('true') }
it { is_expected.to contain_sahara_config('oslo_messaging_rabbit/amqp_durable_queues').with_value('true') }
it { is_expected.to contain_sahara_config('oslo_messaging_rabbit/rabbit_hosts').with_ensure('absent') }
it { is_expected.to contain_sahara_config('oslo_messaging_rabbit/rabbit_hosts').with_value('<SERVICE DEFAULT>') }
end
context 'with rabbit ssl cert parameters' do
before do
params.merge!({
:rabbit_password => 'pass',
:rabbit_use_ssl => 'true',
:rabbit_use_ssl => true,
:kombu_ssl_ca_certs => '/etc/ca.cert',
:kombu_ssl_certfile => '/etc/certfile',
:kombu_ssl_keyfile => '/etc/key',
@ -149,7 +149,7 @@ describe 'sahara' do
it { is_expected.to contain_sahara_config('oslo_messaging_rabbit/rabbit_host').with_value('localhost2') }
it { is_expected.to contain_sahara_config('oslo_messaging_rabbit/rabbit_port').with_value('5673') }
it { is_expected.to contain_sahara_config('oslo_messaging_rabbit/rabbit_ha_queues').with_value('true') }
it { is_expected.to contain_sahara_config('oslo_messaging_rabbit/rabbit_hosts').with_ensure('absent') }
it { is_expected.to contain_sahara_config('oslo_messaging_rabbit/rabbit_hosts').with_value('<SERVICE DEFAULT>') }
end
context 'when passing params for multiple rabbit hosts' do
@ -164,8 +164,8 @@ describe 'sahara' do
it { is_expected.to contain_sahara_config('oslo_messaging_rabbit/rabbit_userid').with_value('guest3') }
it { is_expected.to contain_sahara_config('oslo_messaging_rabbit/rabbit_hosts').with_value('nonlocalhost3:5673,nonlocalhost4:5673') }
it { is_expected.to contain_sahara_config('oslo_messaging_rabbit/rabbit_ha_queues').with_value('true') }
it { is_expected.to_not contain_sahara_config('oslo_messaging_rabbit/rabbit_port') }
it { is_expected.to_not contain_sahara_config('oslo_messaging_rabbit/rabbit_host') }
it { is_expected.to contain_sahara_config('oslo_messaging_rabbit/rabbit_port').with_value('<SERVICE DEFAULT>') }
it { is_expected.to contain_sahara_config('oslo_messaging_rabbit/rabbit_host').with_value('<SERVICE DEFAULT>') }
end
end
@ -212,7 +212,7 @@ describe 'sahara' do
context 'with ssl' do
let :params do
{
:use_ssl => 'true',
:use_ssl => true,
:ca_file => '/tmp/ca_file',
:cert_file => '/tmp/cert_file',
:key_file => '/tmp/key_file',
@ -226,7 +226,7 @@ describe 'sahara' do
context 'with ssl but without cert_file' do
let :params do
{
:use_ssl => 'true',
:use_ssl => true,
}
end
it_raises 'a Puppet::Error', /The cert_file parameter is required when use_ssl is set to true/
@ -235,7 +235,7 @@ describe 'sahara' do
context 'with ssl but without key_file' do
let :params do
{
:use_ssl => 'true',
:use_ssl => true,
:cert_file => '/tmp/cert_file',
}
end

View File

@ -8,10 +8,10 @@ describe 'sahara::notify' do
describe 'when defaults with notify enabled' do
it { is_expected.to contain_sahara_config('DEFAULT/control_exchange').with_value('<SERVICE DEFAULT>') }
it { is_expected.to contain_sahara_config('DEFAULT/enable_notifications').with_value('<SERVICE DEFAULT>') }
it { is_expected.to contain_sahara_config('DEFAULT/notification_driver').with_value('<SERVICE DEFAULT>') }
it { is_expected.to contain_sahara_config('DEFAULT/notification_topics').with_value('<SERVICE DEFAULT>') }
it { is_expected.to contain_sahara_config('DEFAULT/notification_level').with_value('<SERVICE DEFAULT>') }
it { is_expected.to contain_sahara_config('oslo_messaging_notifications/enable').with_value('<SERVICE DEFAULT>') }
it { is_expected.to contain_sahara_config('oslo_messaging_notifications/driver').with_value('<SERVICE DEFAULT>') }
it { is_expected.to contain_sahara_config('oslo_messaging_notifications/topics').with_value('<SERVICE DEFAULT>') }
it { is_expected.to contain_sahara_config('oslo_messaging_notifications/level').with_value('<SERVICE DEFAULT>') }
end
describe 'when passing params' do
@ -24,10 +24,10 @@ describe 'sahara::notify' do
:notification_level => 'INFO',
}
it { is_expected.to contain_sahara_config('DEFAULT/control_exchange').with_value('openstack') }
it { is_expected.to contain_sahara_config('DEFAULT/notification_driver').with_value('messaging') }
it { is_expected.to contain_sahara_config('DEFAULT/enable_notifications').with_value('true') }
it { is_expected.to contain_sahara_config('DEFAULT/notification_topics').with_value('notifications') }
it { is_expected.to contain_sahara_config('DEFAULT/notification_level').with_value('INFO') }
it { is_expected.to contain_sahara_config('oslo_messaging_notifications/driver').with_value('messaging') }
it { is_expected.to contain_sahara_config('oslo_messaging_notifications/enable').with_value('true') }
it { is_expected.to contain_sahara_config('oslo_messaging_notifications/topics').with_value('notifications') }
it { is_expected.to contain_sahara_config('oslo_messaging_notifications/level').with_value('INFO') }
end
end

View File

@ -20,6 +20,7 @@ describe 'sahara::policy' do
:key => 'context_is_admin',
:value => 'foo:bar'
})
is_expected.to contain_sahara_config('oslo_policy/policy_file').with_value('/etc/sahara/policy.json')
end
end