diff --git a/manifests/agents/ml2/mlnx.pp b/manifests/agents/ml2/mlnx.pp index 8c70ec40e..5d654ce41 100644 --- a/manifests/agents/ml2/mlnx.pp +++ b/manifests/agents/ml2/mlnx.pp @@ -79,6 +79,7 @@ class neutron::agents::ml2::mlnx ( $mlnx_agent_package = $::neutron::params::mlnx_agent_package $mlnx_agent_service = $::neutron::params::mlnx_agent_service + $eswitchd_package = $::neutron::params::eswitchd_package $eswitchd_service = $::neutron::params::eswitchd_service neutron_mlnx_agent_config { @@ -117,6 +118,15 @@ class neutron::agents::ml2::mlnx ( # plugin. This is required to avoid conflict with # neutron::plugins::ml2::mellanox Package<| title == $mlnx_agent_package |> { tag +> 'neutron-package' } + + # NOTE(tkajinam): Ubuntu/Debuan requires a separate package for eswitchd + # service. + if $eswitchd_package { + ensure_packages($eswitchd_package, { + ensure => $package_ensure, + tag => ['openstack', 'neutron-package'], + }) + } } if $manage_service { diff --git a/manifests/params.pp b/manifests/params.pp index 4abad1f0e..5ed128200 100644 --- a/manifests/params.pp +++ b/manifests/params.pp @@ -30,9 +30,6 @@ class neutron::params { $sfc_package = 'python3-networking-sfc' $user = 'neutron' $group = 'neutron' - $mlnx_agent_package = 'python3-networking-mlnx' - $mlnx_plugin_package = 'python3-networking-mlnx' - $eswitchd_service = 'eswitchd' if($::osfamily == 'Redhat') { $package_name = 'openstack-neutron' @@ -73,7 +70,11 @@ class neutron::params { $networking_baremetal_agent_package = 'python3-ironic-neutron-agent' $networking_baremetal_agent_service = 'ironic-neutron-agent' $networking_ansible_package = 'python3-networking-ansible' + $mlnx_agent_package = 'python3-networking-mlnx' + $mlnx_plugin_package = 'python3-networking-mlnx' + $eswitchd_package = false $mlnx_agent_service = 'neutron-mlnx-agent' + $eswitchd_service = 'eswitchd' } elsif($::osfamily == 'Debian') { $package_name = 'neutron-common' if $::operatingsystem == 'Debian' { @@ -119,7 +120,11 @@ class neutron::params { $networking_baremetal_package = 'python3-ironic-neutron-agent' $networking_baremetal_agent_package = 'ironic-neutron-agent' $networking_baremetal_agent_service = 'ironic-neutron-agent' - $mlnx_agent_service = 'neutron-plugin-mlnx-agent' + $mlnx_agent_package = 'neutron-mlnx-agent' + $mlnx_plugin_package = 'python3-networking-mlnx' + $eswitchd_package = 'networking-mlnx-eswitchd' + $mlnx_agent_service = 'neutron-mlnx-agent' + $eswitchd_service = 'networking-mlnx-eswitchd' } else { fail("Unsupported osfamily ${::osfamily}") } diff --git a/manifests/plugins/ml2/mellanox.pp b/manifests/plugins/ml2/mellanox.pp index 66e77a6e8..1905828be 100644 --- a/manifests/plugins/ml2/mellanox.pp +++ b/manifests/plugins/ml2/mellanox.pp @@ -19,11 +19,6 @@ class neutron::plugins::ml2::mellanox ( include neutron::params require neutron::plugins::ml2 - if($::osfamily != 'RedHat') { - # Drivers are only packaged for RedHat at this time - fail("Unsupported osfamily ${::osfamily}") - } - $mlnx_plugin_package = $::neutron::params::mlnx_plugin_package ensure_packages($mlnx_plugin_package, { diff --git a/releasenotes/notes/mlnx-debian-family-474388ea22030cf9.yaml b/releasenotes/notes/mlnx-debian-family-474388ea22030cf9.yaml new file mode 100644 index 000000000..df3b2bed8 --- /dev/null +++ b/releasenotes/notes/mlnx-debian-family-474388ea22030cf9.yaml @@ -0,0 +1,5 @@ +--- +features: + - | + Now this module supports configuring the ``networking-mlnx`` plugin in + Debian and Ubuntu. diff --git a/spec/classes/neutron_agents_ml2_mlnx_spec.rb b/spec/classes/neutron_agents_ml2_mlnx_spec.rb index ad8561a7c..6d1de73ec 100644 --- a/spec/classes/neutron_agents_ml2_mlnx_spec.rb +++ b/spec/classes/neutron_agents_ml2_mlnx_spec.rb @@ -24,8 +24,14 @@ describe 'neutron::agents::ml2::mlnx' do :ensure => 'installed', :tag => ['openstack', 'neutron-package'], ) - should contain_package(platform_params[:mlnx_agent_package]).that_requires('Anchor[neutron::install::begin]') - should contain_package(platform_params[:mlnx_agent_package]).that_notifies('Anchor[neutron::install::end]') + + if platform_params[:eswitchd_package] + should contain_package(platform_params[:eswitchd_package]).with( + :name => platform_params[:eswitchd_package], + :ensure => 'installed', + :tag => ['openstack', 'neutron-package'], + ) + end end it 'configures neutron mlnx agent service' do @@ -35,10 +41,12 @@ describe 'neutron::agents::ml2::mlnx' do :ensure => 'running', :tag => 'neutron-service', ) - should contain_service(platform_params[:mlnx_agent_service]).that_subscribes_to('Anchor[neutron::service::begin]') - should contain_service(platform_params[:mlnx_agent_service]).that_notifies('Anchor[neutron::service::end]') - should contain_service('eswitchd').that_subscribes_to('Anchor[neutron::service::begin]') - should contain_service('eswitchd').that_notifies('Anchor[neutron::service::end]') + should contain_service(platform_params[:eswitchd_service]).with( + :name => platform_params[:eswitchd_service], + :enable => true, + :ensure => 'running', + :tag => 'neutron-service', + ) end context 'with manage_service as false' do @@ -47,7 +55,7 @@ describe 'neutron::agents::ml2::mlnx' do end it 'should not manage the services' do should_not contain_service(platform_params[:mlnx_agent_service]) - should_not contain_service('eswitchd') + should_not contain_service(platform_params[:eswitchd_service]) end end @@ -101,13 +109,17 @@ describe 'neutron::agents::ml2::mlnx' do case facts[:osfamily] when 'Debian' { - :mlnx_agent_package => 'python3-networking-mlnx', - :mlnx_agent_service => 'neutron-plugin-mlnx-agent' + :mlnx_agent_package => 'neutron-mlnx-agent', + :mlnx_agent_service => 'neutron-mlnx-agent', + :eswitchd_package => 'networking-mlnx-eswitchd', + :eswitchd_service => 'networking-mlnx-eswitchd', } when 'RedHat' { :mlnx_agent_package => 'python3-networking-mlnx', - :mlnx_agent_service => 'neutron-mlnx-agent' + :mlnx_agent_service => 'neutron-mlnx-agent', + :eswitchd_package => false, + :eswitchd_service => 'eswitchd', } end end diff --git a/spec/classes/neutron_plugins_ml2_mellanox_spec.rb b/spec/classes/neutron_plugins_ml2_mellanox_spec.rb index c84c5bfa4..559437241 100644 --- a/spec/classes/neutron_plugins_ml2_mellanox_spec.rb +++ b/spec/classes/neutron_plugins_ml2_mellanox_spec.rb @@ -47,9 +47,7 @@ describe 'neutron::plugins::ml2::mellanox' do end end - if facts[:osfamily] == 'RedHat' - it_behaves_like 'neutron plugin mellanox ml2' - end + it_behaves_like 'neutron plugin mellanox ml2' end end end