puppet-octavia/spec/classes/octavia_worker_spec.rb
Mohammed Naser 1e8980f28b
Add amp_secgroup_list configuration parameter
In order for Octavia to setup the correct security groups for new
amphorae, it needs to know which security groups to attach.

This patch adds the option of allowing to setup those security
groups if they need to be customized.

Change-Id: I765740583dda2b54d930825f2f10f8130b5f4e9d
2017-07-26 08:48:44 -04:00

133 lines
4.3 KiB
Ruby

require 'spec_helper'
describe 'octavia::worker' do
let :pre_condition do
'include nova'
end
let :params do
{ :enabled => true,
:manage_service => true,
:package_ensure => 'latest',
}
end
shared_examples_for 'octavia-worker' do
context 'with invalid lb topology' do
before do
params.merge!({
:loadbalancer_topology => 'foo'
})
end
it { is_expected.to raise_error(Puppet::Error) }
end
context 'configured with specific parameters' do
before do
params.merge!({
:amp_flavor_id => '42',
:amp_image_tag => 'amphorae1',
:amp_secgroup_list => ['lb-mgmt-sec-grp'],
:amp_boot_network_list => ['lbnet1', 'lbnet2'],
:loadbalancer_topology => 'SINGLE',
})
end
it { is_expected.to contain_octavia_config('controller_worker/amp_flavor_id').with_value('42') }
it { is_expected.to contain_octavia_config('controller_worker/amp_image_tag').with_value('amphorae1') }
it { is_expected.to contain_octavia_config('controller_worker/amp_secgroup_list').with_value(['lb-mgmt-sec-grp']) }
it { is_expected.to contain_octavia_config('controller_worker/amp_boot_network_list').with_value(['lbnet1', 'lbnet2']) }
it { is_expected.to contain_octavia_config('controller_worker/loadbalancer_topology').with_value('SINGLE') }
end
it 'configures worker parameters' do
is_expected.to contain_octavia_config('controller_worker/amp_flavor_id').with_value('65')
is_expected.to contain_octavia_config('controller_worker/amphora_driver').with_value('amphora_haproxy_rest_driver')
is_expected.to contain_octavia_config('controller_worker/compute_driver').with_value('compute_nova_driver')
is_expected.to contain_octavia_config('controller_worker/network_driver').with_value('allowed_address_pairs_driver')
end
it 'deploys nova flavor for octavia worker' do
is_expected.to contain_nova_flavor('octavia_65').with(
:ensure => 'present',
:id => '65',
:ram => '1024',
:disk => '2',
:vcpus => '1',
:tag => ['octavia'],
)
end
it 'installs octavia-worker package' do
is_expected.to contain_package('octavia-worker').with(
:ensure => 'latest',
:name => platform_params[:worker_package_name],
:tag => ['openstack', 'octavia-package'],
)
end
[{:enabled => true}, {:enabled => false}].each do |param_hash|
context "when service should be #{param_hash[:enabled] ? 'enabled' : 'disabled'}" do
before do
params.merge!(param_hash)
end
it 'configures octavia-worker service' do
is_expected.to contain_service('octavia-worker').with(
:ensure => (params[:manage_service] && params[:enabled]) ? 'running' : 'stopped',
:name => platform_params[:worker_service_name],
:enable => params[:enabled],
:hasstatus => true,
:hasrestart => true,
:tag => ['octavia-service'],
)
end
end
end
context 'with disabled service managing' do
before do
params.merge!({
:manage_service => false,
:enabled => false })
end
it 'configures octavia-worker service' do
is_expected.to contain_service('octavia-worker').with(
:ensure => nil,
:name => platform_params[:worker_service_name],
:enable => false,
:hasstatus => true,
:hasrestart => true,
:tag => ['octavia-service'],
)
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'
{ :worker_package_name => 'octavia-worker',
:worker_service_name => 'octavia-worker' }
when 'RedHat'
{ :worker_package_name => 'openstack-octavia-worker',
:worker_service_name => 'octavia-worker' }
end
end
it_behaves_like 'octavia-worker'
end
end
end