Fix bug in placement and add tests

Fix a bug that was introduced in [1] because there
was no testing. This also adds the test specs, although
more thorough, that was added in PS 14 in [1].

[1] https://review.openstack.org/#/c/561362/

Change-Id: I8a09087eaa58a62333b8051042eba2852f02bcc6
This commit is contained in:
Tobias Urdin 2018-05-01 16:43:47 +02:00
parent c691207480
commit 4c5a623a51
3 changed files with 55 additions and 10 deletions

View File

@ -112,11 +112,6 @@ class nova::params {
$scheduler_service_name = 'nova-scheduler'
$vncproxy_service_name = 'nova-novncproxy'
$serialproxy_service_name = 'nova-serialproxy'
if ($::os_package_type == 'debian') {
$placement_service_name = 'nova-placement-api'
} else {
$placement_service_name = 'httpd'
}
$tgt_service_name = 'tgt'
$nova_log_group = 'adm'
$nova_wsgi_script_path = '/usr/lib/cgi-bin/nova'
@ -135,6 +130,7 @@ class nova::params {
$special_service_provider = undef
$virtlock_service_name = undef
$virtlog_service_name = undef
$placement_service_name = 'nova-placement-api'
}
default: {
$spicehtml5proxy_package_name = 'nova-spiceproxy'
@ -144,6 +140,7 @@ class nova::params {
$special_service_provider = undef
$virtlock_service_name = 'virtlockd'
$virtlog_service_name = 'virtlogd'
$placement_service_name = 'httpd'
}
}
$libvirt_service_name = 'libvirtd'

View File

@ -10,16 +10,20 @@
#
# [*manage_service*]
# (optional) Whether to start/stop the service
# Only useful if ::nova::params::service_name is set to
# Only useful if $::nova::params::service_name is set to
# nova-placement-api.
# Defaults to true
#
# [*package_name*]
# (optional) The package name for nova placement.
# Defaults to $::nova::params::placement_package_name
#
# [*service_name*]
# (optional) The service name for the placement service.
# Defaults to $::nova::params::placement_service_name
#
# [*ensure_package*]
# (optional) The state of the nova conductor package
# (optional) The state of the nova placement package
# Defaults to 'present'
#
# [*password*]
@ -76,6 +80,7 @@
class nova::placement(
$enabled = true,
$manage_service = true,
$package_name = $::nova::params::placement_package_name,
$service_name = $::nova::params::placement_service_name,
$ensure_package = 'present',
$password = false,
@ -89,7 +94,7 @@ class nova::placement(
$username = 'placement',
# DEPRECATED PARAMETERS
$os_region_name = undef,
) {
) inherits nova::params {
include ::nova::deps
@ -105,7 +110,7 @@ in a future release. Please use region_name instead.')
nova::generic_service { 'nova-placement-api':
enabled => $enabled,
manage_service => $manage_service,
package_name => $::nova::params::placement_package_name,
package_name => $package_name,
service_name => $service_name,
ensure_package => $ensure_package,
}
@ -116,7 +121,6 @@ in a future release. Please use region_name instead.')
}
}
nova_config {
'placement/auth_type': value => $auth_type;
'placement/auth_url': value => $auth_url;

View File

@ -60,6 +60,46 @@ describe 'nova::placement' do
end
end
context 'when settings service_name to httpd' do
before do
params.merge!(
:service_name => 'httpd',
)
end
it 'should not contain placement generic service' do
is_expected.to_not contain_nova__generic_service('nova-placement-api')
end
end
end
shared_examples 'nova::placement on Ubuntu' do
context 'with required parameters' do
it 'should not contain placement generic service' do
is_expected.to_not contain_nova__generic_service('nova-placement-api')
end
end
end
shared_examples 'nova::placement on Debian' do
before do
facts.merge!(
:os_package_type => 'debian',
)
end
context 'with required parameters' do
it 'should contain placement generic service' do
is_expected.to contain_nova__generic_service('nova-placement-api').with(
:enabled => true,
:manage_service => true,
:package_name => 'nova-placement-api',
:service_name => 'nova-placement-api',
:ensure_package => 'present'
)
end
end
end
on_supported_os({
@ -71,6 +111,10 @@ describe 'nova::placement' do
end
it_behaves_like 'nova::placement'
if facts[:osfamily] == 'Debian'
it_behaves_like "nova::placement on #{facts[:operatingsystem]}"
end
end
end
end