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' $scheduler_service_name = 'nova-scheduler'
$vncproxy_service_name = 'nova-novncproxy' $vncproxy_service_name = 'nova-novncproxy'
$serialproxy_service_name = 'nova-serialproxy' $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' $tgt_service_name = 'tgt'
$nova_log_group = 'adm' $nova_log_group = 'adm'
$nova_wsgi_script_path = '/usr/lib/cgi-bin/nova' $nova_wsgi_script_path = '/usr/lib/cgi-bin/nova'
@ -135,6 +130,7 @@ class nova::params {
$special_service_provider = undef $special_service_provider = undef
$virtlock_service_name = undef $virtlock_service_name = undef
$virtlog_service_name = undef $virtlog_service_name = undef
$placement_service_name = 'nova-placement-api'
} }
default: { default: {
$spicehtml5proxy_package_name = 'nova-spiceproxy' $spicehtml5proxy_package_name = 'nova-spiceproxy'
@ -144,6 +140,7 @@ class nova::params {
$special_service_provider = undef $special_service_provider = undef
$virtlock_service_name = 'virtlockd' $virtlock_service_name = 'virtlockd'
$virtlog_service_name = 'virtlogd' $virtlog_service_name = 'virtlogd'
$placement_service_name = 'httpd'
} }
} }
$libvirt_service_name = 'libvirtd' $libvirt_service_name = 'libvirtd'

View File

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

View File

@ -60,6 +60,46 @@ describe 'nova::placement' do
end end
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 end
on_supported_os({ on_supported_os({
@ -71,6 +111,10 @@ describe 'nova::placement' do
end end
it_behaves_like 'nova::placement' it_behaves_like 'nova::placement'
if facts[:osfamily] == 'Debian'
it_behaves_like "nova::placement on #{facts[:operatingsystem]}"
end
end end
end end
end end