diff --git a/manifests/server.pp b/manifests/server.pp index 90ef3a6bf..0d9986044 100644 --- a/manifests/server.pp +++ b/manifests/server.pp @@ -202,6 +202,11 @@ # Set to true to ensure installation of the package that is required to start neutron service if service_plugin is enabled. # Defaults to false. # +# [*ensure_dr_package*] +# (Optional) Ensures installation of Neutron Dynamic Routing package before starting API service. +# Set to true to ensure installation of the package that is required to start neutron service if bgp service_plugin is enabled. +# Defaults to false. +# # [*vpnaas_agent_package*] # (Optional) Use VPNaaS agent package instead of L3 agent package on debian platforms # RedHat platforms won't take care of this parameter @@ -273,6 +278,7 @@ class neutron::server ( $network_auto_schedule = $::os_service_default, $ensure_vpnaas_package = false, $ensure_fwaas_package = false, + $ensure_dr_package = false, $vpnaas_agent_package = false, $service_providers = $::os_service_default, $auth_strategy = 'keystone', @@ -334,6 +340,25 @@ class neutron::server ( }) } + if $ensure_dr_package { + if $::neutron::params::dynamic_routing_package { + ensure_packages('neutron-dynamic-routing', { + ensure => $package_ensure, + name => $::neutron::params::dynamic_routing_package, + tag => ['openstack', 'neutron-package'], + }) + } elsif $::neutron::params::bgp_dragent_package { + # RedHat package doesn't ship dynamic-routing package separately + # so we install the agent, it's fine because RedHat based doesn't + # start services automatically like Debian based. + ensure_packages('neutron-bgp-dragent', { + ensure => $package_ensure, + name => $::neutron::params::bgp_dragent_package, + tag => ['openstack', 'neutron-package'], + }) + } + } + if $sync_db { include ::neutron::db::sync } diff --git a/spec/classes/neutron_server_spec.rb b/spec/classes/neutron_server_spec.rb index 7c7800730..1c422dfc7 100644 --- a/spec/classes/neutron_server_spec.rb +++ b/spec/classes/neutron_server_spec.rb @@ -273,6 +273,28 @@ describe 'neutron::server' do end end + shared_examples_for 'neutron server dynamic routing debian' do + before do + params.merge!( :ensure_dr_package => true ) + end + + it 'should install dynamic routing package' do + is_expected.to contain_package('neutron-dynamic-routing') + is_expected.not_to contain_package('neutron-bgp-dragent') + end + end + + shared_examples_for 'neutron server dynamic routing redhat' do + before do + params.merge!( :ensure_dr_package => true ) + end + + it 'should install bgp dragent package' do + is_expected.not_to contain_package('neutron-dynamic-routing') + is_expected.to contain_package('neutron-bgp-dragent') + end + end + shared_examples_for 'a neutron server without database synchronization' do before do params.merge!( @@ -298,6 +320,7 @@ describe 'neutron::server' do it_configures 'a neutron server' it_configures 'a neutron server without database synchronization' + it_configures 'neutron server dynamic routing debian' end context 'on RedHat platforms' do @@ -314,5 +337,6 @@ describe 'neutron::server' do it_configures 'a neutron server' it_configures 'a neutron server without database synchronization' + it_configures 'neutron server dynamic routing redhat' end end