diff --git a/manifests/params.pp b/manifests/params.pp index b026d4b29..e193b3c15 100644 --- a/manifests/params.pp +++ b/manifests/params.pp @@ -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' diff --git a/manifests/placement.pp b/manifests/placement.pp index a9f8c0aec..0ad8c6a33 100644 --- a/manifests/placement.pp +++ b/manifests/placement.pp @@ -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; diff --git a/spec/classes/nova_placement_spec.rb b/spec/classes/nova_placement_spec.rb index 88b211670..1cd91fb9b 100644 --- a/spec/classes/nova_placement_spec.rb +++ b/spec/classes/nova_placement_spec.rb @@ -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