Files
puppet-octavia/spec/classes/octavia_init_spec.rb
ZhongShengping 925794a2c9 Add hooks for external install & svc management
This adds defined anchor points for external modules to hook into the
software install, config and service dependency chain.  This allows
external modules to manage software installation (virtualenv,
containers, etc) and service management (pacemaker) without needing rely
on resources that may change or be renamed.

Change-Id: I281a300df5abfa927b8b6de54f1755ad89ccf563
2016-12-07 11:48:51 +08:00

245 lines
11 KiB
Ruby

require 'spec_helper'
describe 'octavia' do
shared_examples 'octavia' do
context 'with default parameters' do
let :params do
{ :purge_config => false }
end
it 'contains the deps class' do
is_expected.to contain_class('octavia::deps')
end
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 'passes purge to resource' do
is_expected.to contain_resources('octavia_config').with({
:purge => false
})
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/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
it 'has default RPC topic' do
is_expected.to contain_octavia_config('oslo_messaging/topic').with_value('octavia-rpc')
end
context 'with overridden parameters' do
let :params do
{
:default_transport_url => 'rabbit://rabbit_user:password@localhost:5673',
: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',
:topic => 'oct-rpc',
}
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/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')
is_expected.to contain_octavia_config('oslo_messaging/topic').with_value('oct-rpc')
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 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' }
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
{ :amqp_durable_queues => 'true' }
end
it 'configures rabbit' do
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
{ :default_transport_url => 'rabbit://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_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