da4a0dd2ae
In order to be able to take an action after all the packages of the module have been installed/updated or all the services have been started/restarted, we set a 'swift-package' and 'swift-service' tag for each package and service of this module. At the moment, there is a generic openstack tag that is not specific enough if one wants to take action upon a single module change. Use case : If an action needs to be taken after all the packages have been installed or updated : Package <| tag == 'swift-package' |> -> X Change-Id: I1632bc0cee2a1c4cd5cc5d270a6d22919377c36b
299 lines
9.9 KiB
Ruby
299 lines
9.9 KiB
Ruby
require 'spec_helper'
|
|
|
|
describe 'swift::proxy' do
|
|
|
|
describe 'without memcached being included' do
|
|
it 'should raise an error' do
|
|
expect { catalogue }.to raise_error(Puppet::Error)
|
|
end
|
|
end
|
|
|
|
# set os so memcache will not fail
|
|
let :facts do
|
|
{:operatingsystem => 'Ubuntu',
|
|
:osfamily => 'Debian',
|
|
:processorcount => 1
|
|
}
|
|
end
|
|
|
|
let :fragment_path do
|
|
"/var/lib/puppet/concat/_etc_swift_proxy-server.conf/fragments/00_swift_proxy"
|
|
end
|
|
|
|
describe 'with proper dependencies' do
|
|
|
|
let :pre_condition do
|
|
"class { memcached: max_memory => 1}
|
|
class { swift: swift_hash_suffix => string }"
|
|
end
|
|
|
|
describe 'without the proxy local network ip address being specified' do
|
|
it_raises 'a Puppet::Error', /Must pass proxy_local_net_ip/
|
|
end
|
|
|
|
describe 'when proxy_local_net_ip is set' do
|
|
|
|
let :params do
|
|
{:proxy_local_net_ip => '127.0.0.1'}
|
|
end
|
|
|
|
it { is_expected.to contain_service('swift-proxy').with(
|
|
{:ensure => 'running',
|
|
:provider => 'upstart',
|
|
:enable => true,
|
|
:hasstatus => true,
|
|
:subscribe => 'Concat[/etc/swift/proxy-server.conf]',
|
|
:tag => 'swift-service',
|
|
}
|
|
)}
|
|
it { is_expected.to contain_file('/etc/swift/proxy-server.conf').with(
|
|
{:ensure => 'present',
|
|
:owner => 'swift',
|
|
:group => 'swift',
|
|
:mode => '0660',
|
|
}
|
|
)}
|
|
|
|
it 'should build the header file with all of the default contents' do
|
|
verify_contents(catalogue, fragment_path,
|
|
[
|
|
'[DEFAULT]',
|
|
'bind_port = 8080',
|
|
"workers = #{facts[:processorcount]}",
|
|
'user = swift',
|
|
'log_name = proxy-server',
|
|
'log_level = INFO',
|
|
'log_headers = False',
|
|
'log_address = /dev/log',
|
|
'[pipeline:main]',
|
|
'pipeline = healthcheck cache tempauth proxy-server',
|
|
'[app:proxy-server]',
|
|
'use = egg:swift#proxy',
|
|
'set log_name = proxy-server',
|
|
'set log_facility = LOG_LOCAL1',
|
|
'set log_level = INFO',
|
|
'set log_address = /dev/log',
|
|
'log_handoffs = true',
|
|
'allow_account_management = true',
|
|
'account_autocreate = true'
|
|
]
|
|
)
|
|
end
|
|
it { is_expected.to contain_concat__fragment('swift_proxy').with_before(
|
|
[
|
|
'Class[Swift::Proxy::Healthcheck]',
|
|
'Class[Swift::Proxy::Cache]',
|
|
'Class[Swift::Proxy::Tempauth]'
|
|
]
|
|
)}
|
|
|
|
describe 'when more parameters are set' do
|
|
let :params do
|
|
{
|
|
:proxy_local_net_ip => '10.0.0.2',
|
|
:port => '80',
|
|
:workers => 3,
|
|
:pipeline => ['swauth', 'proxy-server'],
|
|
:allow_account_management => false,
|
|
:account_autocreate => false,
|
|
:log_level => 'DEBUG',
|
|
:log_name => 'swift-proxy-server',
|
|
:read_affinity => 'r1z1=100, r1=200',
|
|
:write_affinity => 'r1',
|
|
:write_affinity_node_count => '2 * replicas',
|
|
:node_timeout => '20',
|
|
}
|
|
end
|
|
it 'should build the header file with provided values' do
|
|
verify_contents(catalogue, fragment_path,
|
|
[
|
|
'[DEFAULT]',
|
|
'bind_port = 80',
|
|
"workers = 3",
|
|
'user = swift',
|
|
'log_level = DEBUG',
|
|
'[pipeline:main]',
|
|
'pipeline = swauth proxy-server',
|
|
'[app:proxy-server]',
|
|
'use = egg:swift#proxy',
|
|
'set log_name = swift-proxy-server',
|
|
'allow_account_management = false',
|
|
'account_autocreate = false',
|
|
'read_affinity = r1z1=100, r1=200',
|
|
'write_affinity = r1',
|
|
'write_affinity_node_count = 2 * replicas',
|
|
'node_timeout = 20'
|
|
]
|
|
)
|
|
end
|
|
if Puppet.version.to_f < 4.0
|
|
it { is_expected.to contain_concat__fragment('swift_proxy').with_before('Class[Swift::Proxy::Swauth]')}
|
|
else
|
|
it { is_expected.to contain_concat__fragment('swift_proxy').with_before(['Class[Swift::Proxy::Swauth]'])}
|
|
end
|
|
end
|
|
describe "when log udp port is set" do
|
|
context 'and log_udp_host is not set' do
|
|
let :params do
|
|
{
|
|
:proxy_local_net_ip => '10.0.0.2',
|
|
:port => '80',
|
|
:workers => 3,
|
|
:pipeline => ['swauth', 'proxy-server'],
|
|
:allow_account_management => false,
|
|
:account_autocreate => false,
|
|
:log_level => 'DEBUG',
|
|
:log_name => 'swift-proxy-server',
|
|
:log_udp_port => '514',
|
|
:read_affinity => 'r1z1=100, r1=200',
|
|
:write_affinity => 'r1',
|
|
:write_affinity_node_count => '2 * replicas',
|
|
:node_timeout => '20',
|
|
}
|
|
end
|
|
it_raises 'a Puppet::Error', /log_udp_port requires log_udp_host to be set/
|
|
end
|
|
context 'and log_udp_host is set' do
|
|
let :params do
|
|
{
|
|
:proxy_local_net_ip => '10.0.0.2',
|
|
:port => '80',
|
|
:workers => 3,
|
|
:pipeline => ['swauth', 'proxy-server'],
|
|
:allow_account_management => false,
|
|
:account_autocreate => false,
|
|
:log_level => 'DEBUG',
|
|
:log_name => 'swift-proxy-server',
|
|
:log_udp_host => '127.0.0.1',
|
|
:log_udp_port => '514',
|
|
:read_affinity => 'r1z1=100, r1=200',
|
|
:write_affinity => 'r1',
|
|
:write_affinity_node_count => '2 * replicas',
|
|
:node_timeout => '20',
|
|
}
|
|
end
|
|
it 'should build the header file with provided values' do
|
|
verify_contents(catalogue, fragment_path,
|
|
[
|
|
'[DEFAULT]',
|
|
'bind_port = 80',
|
|
"workers = 3",
|
|
'user = swift',
|
|
'log_level = DEBUG',
|
|
'log_udp_host = 127.0.0.1',
|
|
'log_udp_port = 514',
|
|
'[pipeline:main]',
|
|
'pipeline = swauth proxy-server',
|
|
'[app:proxy-server]',
|
|
'use = egg:swift#proxy',
|
|
'set log_name = swift-proxy-server',
|
|
'allow_account_management = false',
|
|
'account_autocreate = false',
|
|
'read_affinity = r1z1=100, r1=200',
|
|
'write_affinity = r1',
|
|
'write_affinity_node_count = 2 * replicas',
|
|
'node_timeout = 20'
|
|
]
|
|
)
|
|
end
|
|
end
|
|
end
|
|
|
|
describe 'when supplying bad values for parameters' do
|
|
[:account_autocreate, :allow_account_management].each do |param|
|
|
it "should fail when #{param} is not passed a boolean" do
|
|
params[param] = 'false'
|
|
expect { catalogue }.to raise_error(Puppet::Error, /is not a boolean/)
|
|
end
|
|
end
|
|
|
|
let :params do
|
|
{
|
|
:proxy_local_net_ip => '127.0.0.1',
|
|
:write_affinity_node_count => '2 * replicas'
|
|
}
|
|
end
|
|
|
|
it "should fail if write_affinity_node_count is used without write_affinity" do
|
|
expect { catalogue }.to raise_error(Puppet::Error, /write_affinity_node_count requires write_affinity/)
|
|
end
|
|
end
|
|
end
|
|
end
|
|
|
|
shared_examples_for 'swift-proxy' do
|
|
let :params do
|
|
{ :proxy_local_net_ip => '127.0.0.1' }
|
|
end
|
|
|
|
[{ :enabled => true, :manage_service => true },
|
|
{ :enabled => false, :manage_service => true }].each do |param_hash|
|
|
context "when service is_expected.to be #{param_hash[:enabled] ? 'enabled' : 'disabled'}" do
|
|
before do
|
|
params.merge!(param_hash)
|
|
end
|
|
|
|
it 'configures swift-proxy service' do
|
|
is_expected.to contain_service('swift-proxy').with(
|
|
:ensure => (param_hash[:manage_service] && param_hash[:enabled]) ? 'running' : 'stopped',
|
|
:name => platform_params[:service_name],
|
|
:provider => platform_params[:service_provider],
|
|
:enable => param_hash[:enabled],
|
|
:hasstatus => true,
|
|
:subscribe => 'Concat[/etc/swift/proxy-server.conf]'
|
|
)
|
|
end
|
|
end
|
|
end
|
|
|
|
context 'with disabled service managing' do
|
|
before do
|
|
params.merge!({
|
|
:manage_service => false,
|
|
:enabled => false })
|
|
end
|
|
|
|
it 'configures swift-proxy service' do
|
|
is_expected.to contain_service('swift-proxy').with(
|
|
:ensure => nil,
|
|
:name => platform_params[:service_name],
|
|
:provider => platform_params[:service_provider],
|
|
:enable => false,
|
|
:hasstatus => true,
|
|
:subscribe => 'Concat[/etc/swift/proxy-server.conf]'
|
|
)
|
|
end
|
|
end
|
|
end
|
|
|
|
context 'on Debian platforms' do
|
|
let :facts do
|
|
{ :operatingsystem => 'Ubuntu',
|
|
:osfamily => 'Debian',
|
|
:concat_basedir => '/var/lib/puppet/concat' }
|
|
end
|
|
|
|
let :platform_params do
|
|
{ :service_name => 'swift-proxy',
|
|
:service_provider => 'upstart' }
|
|
end
|
|
|
|
it_configures 'swift-proxy'
|
|
end
|
|
|
|
context 'on RedHat platforms' do
|
|
let :facts do
|
|
{ :osfamily => 'RedHat',
|
|
:operatingsystem => 'RedHat',
|
|
:concat_basedir => '/var/lib/puppet/concat' }
|
|
end
|
|
|
|
let :platform_params do
|
|
{ :service_name => 'openstack-swift-proxy',
|
|
:service_provider => nil }
|
|
end
|
|
|
|
it_configures 'swift-proxy'
|
|
end
|
|
end
|