Implement init.pp class
Deploy basic bits to deploy Octavia. Change-Id: I279ff6bf63b8754332d34861f54183935bc914b5
This commit is contained in:
parent
f48a1a1171
commit
8b378a881c
@ -49,25 +49,17 @@ class octavia::db (
|
||||
$database_db_max_retries = $::os_service_default,
|
||||
) {
|
||||
|
||||
$database_connection_real = pick($::octavia::database_connection, $database_connection)
|
||||
$database_idle_timeout_real = pick($::octavia::database_idle_timeout, $database_idle_timeout)
|
||||
$database_min_pool_size_real = pick($::octavia::database_min_pool_size, $database_min_pool_size)
|
||||
$database_max_pool_size_real = pick($::octavia::database_max_pool_size, $database_max_pool_size)
|
||||
$database_max_retries_real = pick($::octavia::database_max_retries, $database_max_retries)
|
||||
$database_retry_interval_real = pick($::octavia::database_retry_interval, $database_retry_interval)
|
||||
$database_max_overflow_real = pick($::octavia::database_max_overflow, $database_max_overflow)
|
||||
|
||||
validate_re($database_connection_real,
|
||||
validate_re($database_connection,
|
||||
'^(sqlite|mysql(\+pymysql)?|postgresql):\/\/(\S+:\S+@\S+\/\S+)?')
|
||||
|
||||
oslo::db { 'octavia_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,
|
||||
connection => $database_connection,
|
||||
idle_timeout => $database_idle_timeout,
|
||||
min_pool_size => $database_min_pool_size,
|
||||
max_pool_size => $database_max_pool_size,
|
||||
max_retries => $database_max_retries,
|
||||
retry_interval => $database_retry_interval,
|
||||
max_overflow => $database_max_overflow,
|
||||
db_max_retries => $database_db_max_retries,
|
||||
}
|
||||
|
||||
|
@ -4,11 +4,283 @@
|
||||
#
|
||||
# === Parameters
|
||||
#
|
||||
# [*sample_parameter*]
|
||||
# Explanation of what this parameter affects and what it defaults to.
|
||||
# [*ensure_package*]
|
||||
# (optional) The state of aodh packages
|
||||
# Defaults to 'present'
|
||||
#
|
||||
class octavia {
|
||||
# [*default_transport_url*]
|
||||
# (optional) A URL representing the messaging driver to use and its full
|
||||
# configuration. Transport URLs take the form:
|
||||
# transport://user:pass@host1:port[,hostN:portN]/virtual_host
|
||||
# Defaults to $::os_service_default
|
||||
#
|
||||
# [*rpc_backend*]
|
||||
# (optional) The rpc backend implementation to use, can be:
|
||||
# amqp (for AMQP 1.0 protocol)
|
||||
# rabbit (for rabbitmq)
|
||||
# zmq (for zeromq)
|
||||
# Defaults to 'rabbit'
|
||||
#
|
||||
# [*rabbit_host*]
|
||||
# (optional) Location of rabbitmq installation.
|
||||
# Defaults to $::os_service_default
|
||||
#
|
||||
# [*rabbit_hosts*]
|
||||
# (optional) List of clustered rabbit servers.
|
||||
# Defaults to $::os_service_default
|
||||
#
|
||||
# [*rabbit_port*]
|
||||
# (optional) Port for rabbitmq instance.
|
||||
# Defaults to $::os_service_default
|
||||
#
|
||||
# [*rabbit_password*]
|
||||
# (optional) Password used to connect to rabbitmq.
|
||||
# Defaults to $::os_service_default
|
||||
#
|
||||
# [*rabbit_userid*]
|
||||
# (optional) User used to connect to rabbitmq.
|
||||
# Defaults to $::os_service_default
|
||||
#
|
||||
# [*rabbit_virtual_host*]
|
||||
# (optional) The RabbitMQ virtual host.
|
||||
# Defaults to $::os_service_default
|
||||
#
|
||||
# [*rabbit_use_ssl*]
|
||||
# (optional) Connect over SSL for RabbitMQ
|
||||
# Defaults to $::os_service_default
|
||||
#
|
||||
# [*rabbit_ha_queues*]
|
||||
# (optional) Use HA queues in RabbitMQ.
|
||||
# Defaults to $::os_service_default
|
||||
#
|
||||
# [*rabbit_heartbeat_timeout_threshold*]
|
||||
# (optional) Number of seconds after which the RabbitMQ broker is considered
|
||||
# down if the heartbeat keepalive fails. Any value >0 enables heartbeats.
|
||||
# Heartbeating helps to ensure the TCP connection to RabbitMQ isn't silently
|
||||
# closed, resulting in missed or lost messages from the queue.
|
||||
# (Requires kombu >= 3.0.7 and amqp >= 1.4.0)
|
||||
# Defaults to $::os_service_default
|
||||
#
|
||||
# [*rabbit_heartbeat_rate*]
|
||||
# (optional) How often during the rabbit_heartbeat_timeout_threshold period to
|
||||
# check the heartbeat on RabbitMQ connection. (i.e. rabbit_heartbeat_rate=2
|
||||
# when rabbit_heartbeat_timeout_threshold=60, the heartbeat will be checked
|
||||
# every 30 seconds.
|
||||
# Defaults to $::os_service_default
|
||||
#
|
||||
# [*kombu_ssl_ca_certs*]
|
||||
# (optional) SSL certification authority file (valid only if SSL enabled).
|
||||
# Defaults to $::os_service_default
|
||||
#
|
||||
# [*kombu_ssl_certfile*]
|
||||
# (optional) SSL cert file (valid only if SSL enabled).
|
||||
# Defaults to $::os_service_default
|
||||
#
|
||||
# [*kombu_ssl_keyfile*]
|
||||
# (optional) SSL key file (valid only if SSL enabled).
|
||||
# Defaults to $::os_service_default
|
||||
#
|
||||
# [*kombu_ssl_version*]
|
||||
# (optional) SSL version to use (valid only if SSL enabled).
|
||||
# Valid values are TLSv1, SSLv23 and SSLv3. SSLv2 may be
|
||||
# available on some distributions.
|
||||
# Defaults to $::os_service_default
|
||||
#
|
||||
# [*kombu_reconnect_delay*]
|
||||
# (optional) How long to wait before reconnecting in response to an AMQP
|
||||
# consumer cancel notification.
|
||||
# Defaults to '$::os_service_default
|
||||
#
|
||||
# [*kombu_compression*]
|
||||
# (optional) Possible values are: gzip, bz2. If not set compression will not
|
||||
# be used. This option may notbe available in future versions. EXPERIMENTAL.
|
||||
# (string value)
|
||||
# Defaults to $::os_service_default
|
||||
#
|
||||
# [*amqp_durable_queues*]
|
||||
# (optional) Define queues as "durable" to rabbitmq.
|
||||
# Defaults to $::os_service_default
|
||||
#
|
||||
# [*amqp_server_request_prefix*]
|
||||
# (Optional) Address prefix used when sending to a specific server
|
||||
# Defaults to $::os_service_default.
|
||||
#
|
||||
# [*amqp_broadcast_prefix*]
|
||||
# (Optional) address prefix used when broadcasting to all servers
|
||||
# Defaults to $::os_service_default.
|
||||
#
|
||||
# [*amqp_group_request_prefix*]
|
||||
# (Optional) address prefix when sending to any server in group
|
||||
# Defaults to $::os_service_default.
|
||||
#
|
||||
# [*amqp_container_name*]
|
||||
# (Optional) Name for the AMQP container
|
||||
# Defaults to $::os_service_default.
|
||||
#
|
||||
# [*amqp_idle_timeout*]
|
||||
# (Optional) Timeout for inactive connections
|
||||
# Defaults to $::os_service_default.
|
||||
#
|
||||
# [*amqp_trace*]
|
||||
# (Optional) Debug: dump AMQP frames to stdout
|
||||
# Defaults to $::os_service_default.
|
||||
#
|
||||
# [*amqp_ssl_ca_file*]
|
||||
# (Optional) CA certificate PEM file to verify server certificate
|
||||
# Defaults to $::os_service_default.
|
||||
#
|
||||
# [*amqp_ssl_cert_file*]
|
||||
# (Optional) Identifying certificate PEM file to present to clients
|
||||
# Defaults to $::os_service_default.
|
||||
#
|
||||
# [*amqp_ssl_key_file*]
|
||||
# (Optional) Private key PEM file used to sign cert_file certificate
|
||||
# Defaults to $::os_service_default.
|
||||
#
|
||||
# [*amqp_ssl_key_password*]
|
||||
# (Optional) Password for decrypting ssl_key_file (if encrypted)
|
||||
# Defaults to $::os_service_default.
|
||||
#
|
||||
# [*amqp_allow_insecure_clients*]
|
||||
# (Optional) Accept clients using either SSL or plain TCP
|
||||
# Defaults to $::os_service_default.
|
||||
#
|
||||
# [*amqp_sasl_mechanisms*]
|
||||
# (Optional) Space separated list of acceptable SASL mechanisms
|
||||
# Defaults to $::os_service_default.
|
||||
#
|
||||
# [*amqp_sasl_config_dir*]
|
||||
# (Optional) Path to directory that contains the SASL configuration
|
||||
# Defaults to $::os_service_default.
|
||||
#
|
||||
# [*amqp_sasl_config_name*]
|
||||
# (Optional) Name of configuration file (without .conf suffix)
|
||||
# Defaults to $::os_service_default.
|
||||
#
|
||||
# [*amqp_username*]
|
||||
# (Optional) User name for message broker authentication
|
||||
# Defaults to $::os_service_default.
|
||||
#
|
||||
# [*amqp_password*]
|
||||
# (Optional) Password for message broker authentication
|
||||
# Defaults to $::os_service_default.
|
||||
#
|
||||
# [*notification_transport_url*]
|
||||
# (optional) A URL representing the messaging driver to use for notifications
|
||||
# and its full configuration. Transport URLs take the form:
|
||||
# transport://user:pass@host1:port[,hostN:portN]/virtual_host
|
||||
# Defaults to $::os_service_default
|
||||
#
|
||||
# [*notification_driver*]
|
||||
# (optional) Driver or drivers to handle sending notifications.
|
||||
# Value can be a string or a list.
|
||||
# Defaults to $::os_service_default
|
||||
#
|
||||
# [*notification_topics*]
|
||||
# (optional) AMQP topic used for OpenStack notifications
|
||||
# Defaults to $::os_service_default
|
||||
#
|
||||
class octavia (
|
||||
$ensure_package = 'present',
|
||||
$default_transport_url = $::os_service_default,
|
||||
$rpc_backend = 'rabbit',
|
||||
$rabbit_host = $::os_service_default,
|
||||
$rabbit_hosts = $::os_service_default,
|
||||
$rabbit_password = $::os_service_default,
|
||||
$rabbit_port = $::os_service_default,
|
||||
$rabbit_userid = $::os_service_default,
|
||||
$rabbit_virtual_host = $::os_service_default,
|
||||
$rabbit_use_ssl = $::os_service_default,
|
||||
$rabbit_heartbeat_timeout_threshold = $::os_service_default,
|
||||
$rabbit_heartbeat_rate = $::os_service_default,
|
||||
$rabbit_ha_queues = $::os_service_default,
|
||||
$kombu_ssl_ca_certs = $::os_service_default,
|
||||
$kombu_ssl_certfile = $::os_service_default,
|
||||
$kombu_ssl_keyfile = $::os_service_default,
|
||||
$kombu_ssl_version = $::os_service_default,
|
||||
$kombu_reconnect_delay = $::os_service_default,
|
||||
$kombu_compression = $::os_service_default,
|
||||
$amqp_durable_queues = $::os_service_default,
|
||||
$amqp_server_request_prefix = $::os_service_default,
|
||||
$amqp_broadcast_prefix = $::os_service_default,
|
||||
$amqp_group_request_prefix = $::os_service_default,
|
||||
$amqp_container_name = $::os_service_default,
|
||||
$amqp_idle_timeout = $::os_service_default,
|
||||
$amqp_trace = $::os_service_default,
|
||||
$amqp_ssl_ca_file = $::os_service_default,
|
||||
$amqp_ssl_cert_file = $::os_service_default,
|
||||
$amqp_ssl_key_file = $::os_service_default,
|
||||
$amqp_ssl_key_password = $::os_service_default,
|
||||
$amqp_allow_insecure_clients = $::os_service_default,
|
||||
$amqp_sasl_mechanisms = $::os_service_default,
|
||||
$amqp_sasl_config_dir = $::os_service_default,
|
||||
$amqp_sasl_config_name = $::os_service_default,
|
||||
$amqp_username = $::os_service_default,
|
||||
$amqp_password = $::os_service_default,
|
||||
$notification_transport_url = $::os_service_default,
|
||||
$notification_driver = $::os_service_default,
|
||||
$notification_topics = $::os_service_default,
|
||||
) inherits octavia::params {
|
||||
|
||||
include ::octavia::params
|
||||
include ::octavia::logging
|
||||
include ::octavia::db
|
||||
|
||||
package { 'octavia':
|
||||
ensure => $ensure_package,
|
||||
name => $::octavia::params::common_package_name,
|
||||
tag => ['openstack', 'octavia-package'],
|
||||
}
|
||||
|
||||
if $rpc_backend == 'rabbit' {
|
||||
oslo::messaging::rabbit { 'octavia_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,
|
||||
heartbeat_timeout_threshold => $rabbit_heartbeat_timeout_threshold,
|
||||
heartbeat_rate => $rabbit_heartbeat_rate,
|
||||
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,
|
||||
kombu_compression => $kombu_compression,
|
||||
amqp_durable_queues => $amqp_durable_queues,
|
||||
}
|
||||
}
|
||||
elsif $rpc_backend == 'amqp' {
|
||||
oslo::messaging::amqp { 'octavia_config':
|
||||
server_request_prefix => $amqp_server_request_prefix,
|
||||
broadcast_prefix => $amqp_broadcast_prefix,
|
||||
group_request_prefix => $amqp_group_request_prefix,
|
||||
container_name => $amqp_container_name,
|
||||
idle_timeout => $amqp_idle_timeout,
|
||||
trace => $amqp_trace,
|
||||
ssl_ca_file => $amqp_ssl_ca_file,
|
||||
ssl_cert_file => $amqp_ssl_cert_file,
|
||||
ssl_key_file => $amqp_ssl_key_file,
|
||||
ssl_key_password => $amqp_ssl_key_password,
|
||||
allow_insecure_clients => $amqp_allow_insecure_clients,
|
||||
sasl_mechanisms => $amqp_sasl_mechanisms,
|
||||
sasl_config_dir => $amqp_sasl_config_dir,
|
||||
sasl_config_name => $amqp_sasl_config_name,
|
||||
username => $amqp_username,
|
||||
password => $amqp_password,
|
||||
}
|
||||
}
|
||||
|
||||
oslo::messaging::default { 'octavia_config':
|
||||
transport_url => $default_transport_url,
|
||||
}
|
||||
|
||||
oslo::messaging::notifications { 'octavia_config':
|
||||
transport_url => $notification_transport_url,
|
||||
driver => $notification_driver,
|
||||
topics => $notification_topics,
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -4,8 +4,10 @@ class octavia::params {
|
||||
|
||||
case $::osfamily {
|
||||
'RedHat': {
|
||||
$common_package_name = 'openstack-octavia-common'
|
||||
}
|
||||
'Debian': {
|
||||
$common_package_name = 'octavia-common'
|
||||
}
|
||||
default: {
|
||||
fail("Unsupported osfamily: ${::osfamily} operatingsystem")
|
||||
|
59
spec/acceptance/octavia_spec.rb
Normal file
59
spec/acceptance/octavia_spec.rb
Normal file
@ -0,0 +1,59 @@
|
||||
require 'spec_helper_acceptance'
|
||||
|
||||
describe 'basic octavia' do
|
||||
|
||||
context 'default parameters' do
|
||||
|
||||
it 'should work with no errors' do
|
||||
pp= <<-EOS
|
||||
include ::openstack_integration
|
||||
include ::openstack_integration::repos
|
||||
include ::openstack_integration::rabbitmq
|
||||
include ::openstack_integration::mysql
|
||||
include ::openstack_integration::keystone
|
||||
|
||||
rabbitmq_user { 'octavia':
|
||||
admin => true,
|
||||
password => 'an_even_bigger_secret',
|
||||
provider => 'rabbitmqctl',
|
||||
require => Class['rabbitmq'],
|
||||
}
|
||||
|
||||
rabbitmq_user_permissions { 'octavia@/':
|
||||
configure_permission => '.*',
|
||||
write_permission => '.*',
|
||||
read_permission => '.*',
|
||||
provider => 'rabbitmqctl',
|
||||
require => Class['rabbitmq'],
|
||||
}
|
||||
|
||||
class { '::octavia::db::mysql':
|
||||
password => 'a_big_secret',
|
||||
}
|
||||
class { '::octavia::keystone::auth':
|
||||
password => 'a_big_secret',
|
||||
}
|
||||
|
||||
# Octavia is not packaged on Ubuntu platform.
|
||||
if $::osfamily == 'RedHat' {
|
||||
class { '::octavia::db':
|
||||
database_connection => 'mysql+pymysql://octavia:a_big_secret@127.0.0.1/octavia?charset=utf8',
|
||||
}
|
||||
class { '::octavia::logging':
|
||||
debug => true,
|
||||
}
|
||||
class { '::octavia':
|
||||
rabbit_userid => 'octavia',
|
||||
rabbit_password => 'an_even_bigger_secret',
|
||||
rabbit_host => '127.0.0.1',
|
||||
}
|
||||
}
|
||||
EOS
|
||||
|
||||
# Run it twice and test for idempotency
|
||||
apply_manifest(pp, :catch_failures => true)
|
||||
apply_manifest(pp, :catch_changes => true)
|
||||
end
|
||||
end
|
||||
|
||||
end
|
278
spec/classes/octavia_init_spec.rb
Normal file
278
spec/classes/octavia_init_spec.rb
Normal file
@ -0,0 +1,278 @@
|
||||
require 'spec_helper'
|
||||
|
||||
describe 'octavia' do
|
||||
|
||||
shared_examples 'octavia' do
|
||||
|
||||
context 'with default parameters' do
|
||||
it 'contains the logging class' do
|
||||
is_expected.to contain_class('octavia::logging')
|
||||
end
|
||||
|
||||
it 'contains the db class' do
|
||||
is_expected.to contain_class('octavia::db')
|
||||
end
|
||||
|
||||
it 'installs packages' do
|
||||
is_expected.to contain_package('octavia').with(
|
||||
:name => platform_params[:octavia_common_package],
|
||||
:ensure => 'present',
|
||||
:tag => ['openstack', 'octavia-package']
|
||||
)
|
||||
end
|
||||
|
||||
it 'configures rabbit' do
|
||||
is_expected.to contain_octavia_config('DEFAULT/rpc_backend').with_value('rabbit')
|
||||
is_expected.to contain_octavia_config('DEFAULT/transport_url').with_value('<SERVICE DEFAULT>')
|
||||
is_expected.to contain_octavia_config('oslo_messaging_rabbit/rabbit_host').with_value('<SERVICE DEFAULT>')
|
||||
is_expected.to contain_octavia_config('oslo_messaging_rabbit/rabbit_password').with_value('<SERVICE DEFAULT>').with_secret(true)
|
||||
is_expected.to contain_octavia_config('oslo_messaging_rabbit/rabbit_port').with_value('<SERVICE DEFAULT>')
|
||||
is_expected.to contain_octavia_config('oslo_messaging_rabbit/rabbit_userid').with_value('<SERVICE DEFAULT>')
|
||||
is_expected.to contain_octavia_config('oslo_messaging_rabbit/rabbit_virtual_host').with_value('<SERVICE DEFAULT>')
|
||||
is_expected.to contain_octavia_config('oslo_messaging_rabbit/heartbeat_timeout_threshold').with_value('<SERVICE DEFAULT>')
|
||||
is_expected.to contain_octavia_config('oslo_messaging_rabbit/heartbeat_rate').with_value('<SERVICE DEFAULT>')
|
||||
is_expected.to contain_octavia_config('oslo_messaging_rabbit/kombu_compression').with_value('<SERVICE DEFAULT>')
|
||||
is_expected.to contain_octavia_config('oslo_messaging_notifications/transport_url').with_value('<SERVICE DEFAULT>')
|
||||
is_expected.to contain_octavia_config('oslo_messaging_notifications/driver').with_value('<SERVICE DEFAULT>')
|
||||
end
|
||||
end
|
||||
|
||||
context 'with overridden parameters' do
|
||||
let :params do
|
||||
{
|
||||
:default_transport_url => 'rabbit://rabbit_user:password@localhost:5673',
|
||||
:rabbit_host => 'rabbit',
|
||||
:rabbit_userid => 'rabbit_user',
|
||||
:rabbit_port => '5673',
|
||||
:rabbit_password => 'password',
|
||||
:rabbit_ha_queues => 'undef',
|
||||
:rabbit_heartbeat_timeout_threshold => '60',
|
||||
:rabbit_heartbeat_rate => '10',
|
||||
:kombu_compression => 'gzip',
|
||||
:ensure_package => '2012.1.1-15.el6',
|
||||
:notification_transport_url => 'rabbit://rabbit_user:password@localhost:5673',
|
||||
:notification_driver => 'ceilometer.compute.octavia_notifier',
|
||||
:notification_topics => 'openstack',
|
||||
}
|
||||
end
|
||||
|
||||
it 'configures rabbit' do
|
||||
is_expected.to contain_octavia_config('DEFAULT/rpc_backend').with_value('rabbit')
|
||||
is_expected.to contain_octavia_config('DEFAULT/transport_url').with_value('rabbit://rabbit_user:password@localhost:5673')
|
||||
is_expected.to contain_octavia_config('oslo_messaging_rabbit/rabbit_host').with_value('rabbit')
|
||||
is_expected.to contain_octavia_config('oslo_messaging_rabbit/rabbit_password').with_value('password').with_secret(true)
|
||||
is_expected.to contain_octavia_config('oslo_messaging_rabbit/rabbit_port').with_value('5673')
|
||||
is_expected.to contain_octavia_config('oslo_messaging_rabbit/rabbit_userid').with_value('rabbit_user')
|
||||
is_expected.to contain_octavia_config('oslo_messaging_rabbit/rabbit_virtual_host').with_value('<SERVICE DEFAULT>')
|
||||
is_expected.to contain_octavia_config('oslo_messaging_rabbit/heartbeat_timeout_threshold').with_value('60')
|
||||
is_expected.to contain_octavia_config('oslo_messaging_rabbit/heartbeat_rate').with_value('10')
|
||||
is_expected.to contain_octavia_config('oslo_messaging_rabbit/kombu_compression').with_value('gzip')
|
||||
end
|
||||
|
||||
it 'configures various things' do
|
||||
is_expected.to contain_octavia_config('oslo_messaging_notifications/transport_url').with_value('rabbit://rabbit_user:password@localhost:5673')
|
||||
is_expected.to contain_octavia_config('oslo_messaging_notifications/driver').with_value('ceilometer.compute.octavia_notifier')
|
||||
is_expected.to contain_octavia_config('oslo_messaging_notifications/topics').with_value('openstack')
|
||||
end
|
||||
|
||||
context 'with multiple notification_driver' do
|
||||
before { params.merge!( :notification_driver => ['ceilometer.compute.octavia_notifier', 'octavia.openstack.common.notifier.rpc_notifier']) }
|
||||
|
||||
it { is_expected.to contain_octavia_config('oslo_messaging_notifications/driver').with_value(
|
||||
'ceilometer.compute.octavia_notifier,octavia.openstack.common.notifier.rpc_notifier'
|
||||
) }
|
||||
end
|
||||
|
||||
end
|
||||
|
||||
context 'with rabbit_hosts parameter' do
|
||||
let :params do
|
||||
{ :rabbit_hosts => ['rabbit:5673', 'rabbit2:5674'] }
|
||||
end
|
||||
|
||||
it 'configures rabbit' do
|
||||
is_expected.to contain_octavia_config('oslo_messaging_rabbit/rabbit_host').with_value('<SERVICE DEFAULT>')
|
||||
is_expected.to contain_octavia_config('oslo_messaging_rabbit/rabbit_port').with_value('<SERVICE DEFAULT>')
|
||||
is_expected.to contain_octavia_config('oslo_messaging_rabbit/rabbit_hosts').with_value('rabbit:5673,rabbit2:5674')
|
||||
is_expected.to contain_octavia_config('oslo_messaging_rabbit/rabbit_ha_queues').with_value(true)
|
||||
is_expected.to contain_octavia_config('oslo_messaging_rabbit/rabbit_use_ssl').with_value('<SERVICE DEFAULT>')
|
||||
is_expected.to contain_octavia_config('oslo_messaging_rabbit/kombu_reconnect_delay').with_value('<SERVICE DEFAULT>')
|
||||
is_expected.to contain_octavia_config('oslo_messaging_rabbit/amqp_durable_queues').with_value('<SERVICE DEFAULT>')
|
||||
end
|
||||
end
|
||||
|
||||
context 'with rabbit_hosts parameter (one server)' do
|
||||
let :params do
|
||||
{ :rabbit_hosts => ['rabbit:5673'] }
|
||||
end
|
||||
|
||||
it 'configures rabbit' do
|
||||
is_expected.to contain_octavia_config('oslo_messaging_rabbit/rabbit_host').with_value('<SERVICE DEFAULT>')
|
||||
is_expected.to contain_octavia_config('oslo_messaging_rabbit/rabbit_port').with_value('<SERVICE DEFAULT>')
|
||||
is_expected.to contain_octavia_config('oslo_messaging_rabbit/rabbit_hosts').with_value('rabbit:5673')
|
||||
is_expected.to contain_octavia_config('oslo_messaging_rabbit/rabbit_ha_queues').with_value('<SERVICE DEFAULT>')
|
||||
is_expected.to contain_octavia_config('oslo_messaging_rabbit/rabbit_use_ssl').with_value('<SERVICE DEFAULT>')
|
||||
is_expected.to contain_octavia_config('oslo_messaging_rabbit/kombu_reconnect_delay').with_value('<SERVICE DEFAULT>')
|
||||
is_expected.to contain_octavia_config('oslo_messaging_rabbit/amqp_durable_queues').with_value('<SERVICE DEFAULT>')
|
||||
end
|
||||
end
|
||||
|
||||
context 'with kombu_reconnect_delay set to 5.0' do
|
||||
let :params do
|
||||
{ :kombu_reconnect_delay => '5.0' }
|
||||
end
|
||||
|
||||
it 'configures rabbit' do
|
||||
is_expected.to contain_octavia_config('oslo_messaging_rabbit/kombu_reconnect_delay').with_value('5.0')
|
||||
end
|
||||
end
|
||||
|
||||
context 'with rabbit_ha_queues set to true' do
|
||||
let :params do
|
||||
{ :rabbit_ha_queues => 'true' }
|
||||
end
|
||||
|
||||
it 'configures rabbit' do
|
||||
is_expected.to contain_octavia_config('oslo_messaging_rabbit/rabbit_ha_queues').with_value(true)
|
||||
end
|
||||
end
|
||||
|
||||
context 'with rabbit_ha_queues set to false and with rabbit_hosts' do
|
||||
let :params do
|
||||
{ :rabbit_ha_queues => 'false',
|
||||
:rabbit_hosts => ['rabbit:5673'] }
|
||||
end
|
||||
|
||||
it 'configures rabbit' do
|
||||
is_expected.to contain_octavia_config('oslo_messaging_rabbit/rabbit_ha_queues').with_value(false)
|
||||
end
|
||||
end
|
||||
|
||||
context 'with amqp_durable_queues parameter' do
|
||||
let :params do
|
||||
{ :rabbit_hosts => ['rabbit:5673'],
|
||||
:amqp_durable_queues => 'true' }
|
||||
end
|
||||
|
||||
it 'configures rabbit' do
|
||||
is_expected.to contain_octavia_config('oslo_messaging_rabbit/rabbit_host').with_value('<SERVICE DEFAULT>')
|
||||
is_expected.to contain_octavia_config('oslo_messaging_rabbit/rabbit_port').with_value('<SERVICE DEFAULT>')
|
||||
is_expected.to contain_octavia_config('oslo_messaging_rabbit/rabbit_hosts').with_value('rabbit:5673')
|
||||
is_expected.to contain_octavia_config('oslo_messaging_rabbit/rabbit_ha_queues').with_value('<SERVICE DEFAULT>')
|
||||
is_expected.to contain_octavia_config('oslo_messaging_rabbit/rabbit_use_ssl').with_value('<SERVICE DEFAULT>')
|
||||
is_expected.to contain_octavia_config('oslo_messaging_rabbit/amqp_durable_queues').with_value(true)
|
||||
end
|
||||
end
|
||||
|
||||
context 'with rabbit ssl enabled with kombu' do
|
||||
let :params do
|
||||
{ :rabbit_hosts => ['rabbit:5673'],
|
||||
:rabbit_use_ssl => true,
|
||||
:kombu_ssl_ca_certs => '/etc/ca.cert',
|
||||
:kombu_ssl_certfile => '/etc/certfile',
|
||||
:kombu_ssl_keyfile => '/etc/key',
|
||||
:kombu_ssl_version => 'TLSv1', }
|
||||
end
|
||||
|
||||
it 'configures rabbit' do
|
||||
is_expected.to contain_octavia_config('oslo_messaging_rabbit/rabbit_use_ssl').with_value(true)
|
||||
is_expected.to contain_octavia_config('oslo_messaging_rabbit/kombu_ssl_ca_certs').with_value('/etc/ca.cert')
|
||||
is_expected.to contain_octavia_config('oslo_messaging_rabbit/kombu_ssl_certfile').with_value('/etc/certfile')
|
||||
is_expected.to contain_octavia_config('oslo_messaging_rabbit/kombu_ssl_keyfile').with_value('/etc/key')
|
||||
is_expected.to contain_octavia_config('oslo_messaging_rabbit/kombu_ssl_version').with_value('TLSv1')
|
||||
end
|
||||
end
|
||||
|
||||
context 'with rabbit ssl enabled without kombu' do
|
||||
let :params do
|
||||
{ :rabbit_hosts => ['rabbit:5673'],
|
||||
:rabbit_use_ssl => true, }
|
||||
end
|
||||
|
||||
it 'configures rabbit' do
|
||||
is_expected.to contain_octavia_config('oslo_messaging_rabbit/rabbit_use_ssl').with_value(true)
|
||||
is_expected.to contain_octavia_config('oslo_messaging_rabbit/kombu_ssl_ca_certs').with_value('<SERVICE DEFAULT>')
|
||||
is_expected.to contain_octavia_config('oslo_messaging_rabbit/kombu_ssl_certfile').with_value('<SERVICE DEFAULT>')
|
||||
is_expected.to contain_octavia_config('oslo_messaging_rabbit/kombu_ssl_keyfile').with_value('<SERVICE DEFAULT>')
|
||||
is_expected.to contain_octavia_config('oslo_messaging_rabbit/kombu_ssl_version').with_value('<SERVICE DEFAULT>')
|
||||
end
|
||||
end
|
||||
|
||||
context 'with amqp rpc_backend' do
|
||||
let :params do
|
||||
{ :rpc_backend => 'amqp' }
|
||||
end
|
||||
|
||||
context 'with default parameters' do
|
||||
it 'configures amqp' do
|
||||
is_expected.to contain_octavia_config('DEFAULT/rpc_backend').with_value('amqp')
|
||||
is_expected.to contain_octavia_config('oslo_messaging_amqp/server_request_prefix').with_value('<SERVICE DEFAULT>')
|
||||
is_expected.to contain_octavia_config('oslo_messaging_amqp/broadcast_prefix').with_value('<SERVICE DEFAULT>')
|
||||
is_expected.to contain_octavia_config('oslo_messaging_amqp/group_request_prefix').with_value('<SERVICE DEFAULT>')
|
||||
is_expected.to contain_octavia_config('oslo_messaging_amqp/container_name').with_value('<SERVICE DEFAULT>')
|
||||
is_expected.to contain_octavia_config('oslo_messaging_amqp/idle_timeout').with_value('<SERVICE DEFAULT>')
|
||||
is_expected.to contain_octavia_config('oslo_messaging_amqp/trace').with_value('<SERVICE DEFAULT>')
|
||||
is_expected.to contain_octavia_config('oslo_messaging_amqp/ssl_ca_file').with_value('<SERVICE DEFAULT>')
|
||||
is_expected.to contain_octavia_config('oslo_messaging_amqp/ssl_cert_file').with_value('<SERVICE DEFAULT>')
|
||||
is_expected.to contain_octavia_config('oslo_messaging_amqp/ssl_key_file').with_value('<SERVICE DEFAULT>')
|
||||
is_expected.to contain_octavia_config('oslo_messaging_amqp/ssl_key_password').with_value('<SERVICE DEFAULT>')
|
||||
is_expected.to contain_octavia_config('oslo_messaging_amqp/allow_insecure_clients').with_value('<SERVICE DEFAULT>')
|
||||
is_expected.to contain_octavia_config('oslo_messaging_amqp/sasl_mechanisms').with_value('<SERVICE DEFAULT>')
|
||||
is_expected.to contain_octavia_config('oslo_messaging_amqp/sasl_config_dir').with_value('<SERVICE DEFAULT>')
|
||||
is_expected.to contain_octavia_config('oslo_messaging_amqp/sasl_config_name').with_value('<SERVICE DEFAULT>')
|
||||
is_expected.to contain_octavia_config('oslo_messaging_amqp/username').with_value('<SERVICE DEFAULT>')
|
||||
is_expected.to contain_octavia_config('oslo_messaging_amqp/password').with_value('<SERVICE DEFAULT>')
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
context 'with overriden amqp parameters' do
|
||||
let :params do
|
||||
{ :rpc_backend => 'amqp',
|
||||
:default_transport_url => 'amqp://amqp_user:password@localhost:5672',
|
||||
:amqp_idle_timeout => '60',
|
||||
:amqp_trace => true,
|
||||
:amqp_ssl_ca_file => '/etc/ca.cert',
|
||||
:amqp_ssl_cert_file => '/etc/certfile',
|
||||
:amqp_ssl_key_file => '/etc/key',
|
||||
:amqp_username => 'amqp_user',
|
||||
:amqp_password => 'password',
|
||||
}
|
||||
end
|
||||
|
||||
it 'configures amqp' do
|
||||
is_expected.to contain_octavia_config('DEFAULT/rpc_backend').with_value('amqp')
|
||||
is_expected.to contain_octavia_config('DEFAULT/transport_url').with_value('amqp://amqp_user:password@localhost:5672')
|
||||
is_expected.to contain_octavia_config('oslo_messaging_amqp/idle_timeout').with_value('60')
|
||||
is_expected.to contain_octavia_config('oslo_messaging_amqp/trace').with_value('true')
|
||||
is_expected.to contain_octavia_config('oslo_messaging_amqp/ssl_ca_file').with_value('/etc/ca.cert')
|
||||
is_expected.to contain_octavia_config('oslo_messaging_amqp/ssl_cert_file').with_value('/etc/certfile')
|
||||
is_expected.to contain_octavia_config('oslo_messaging_amqp/ssl_key_file').with_value('/etc/key')
|
||||
is_expected.to contain_octavia_config('oslo_messaging_amqp/username').with_value('amqp_user')
|
||||
is_expected.to contain_octavia_config('oslo_messaging_amqp/password').with_value('password')
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
on_supported_os({
|
||||
:supported_os => OSDefaults.get_supported_os
|
||||
}).each do |os,facts|
|
||||
context "on #{os}" do
|
||||
let (:facts) do
|
||||
facts.merge!(OSDefaults.get_facts())
|
||||
end
|
||||
|
||||
let(:platform_params) do
|
||||
case facts[:osfamily]
|
||||
when 'Debian'
|
||||
{ :octavia_common_package => 'octavia-common' }
|
||||
when 'RedHat'
|
||||
{ :octavia_common_package => 'openstack-octavia-common' }
|
||||
end
|
||||
end
|
||||
it_behaves_like 'octavia'
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
end
|
Loading…
x
Reference in New Issue
Block a user