diff --git a/manifests/params.pp b/manifests/params.pp index 94ace33db..b51e8e032 100644 --- a/manifests/params.pp +++ b/manifests/params.pp @@ -41,42 +41,43 @@ class neutron::params { $group = 'neutron' if($::osfamily == 'Redhat') { - $nobody_user_group = 'nobody' - $package_name = 'openstack-neutron' - $server_package = false - $ml2_server_package = 'openstack-neutron-ml2' - $ovs_agent_package = false - $ovs_server_package = 'openstack-neutron-openvswitch' - $ovs_cleanup_service = 'neutron-ovs-cleanup' - $libnl_package = 'libnl' - $package_provider = 'rpm' - $linuxbridge_agent_package = false - $linuxbridge_server_package = 'openstack-neutron-linuxbridge' - $sriov_nic_agent_service = 'neutron-sriov-nic-agent' - $sriov_nic_agent_package = 'openstack-neutron-sriov-nic-agent' - $bigswitch_lldp_package = 'openstack-neutron-bigswitch-lldp' - $bigswitch_agent_package = 'openstack-neutron-bigswitch-agent' - $bigswitch_lldp_service = 'neutron-bsn-lldp' - $bigswitch_agent_service = 'neutron-bsn-agent' - $cisco_server_package = 'openstack-neutron-cisco' - $nvp_server_package = 'openstack-neutron-nicira' - $dhcp_agent_package = false - $lbaasv2_agent_package = 'openstack-neutron-lbaas' - $metering_agent_package = 'openstack-neutron-metering-agent' - $vpnaas_agent_package = 'openstack-neutron-vpnaas' - $l2gw_agent_package = 'openstack-neutron-l2gw-agent' - $l2gw_package = 'python2-networking-l2gw' - $ovn_metadata_agent_package = 'networking-ovn-metadata-agent' + $nobody_user_group = 'nobody' + $package_name = 'openstack-neutron' + $server_package = false + $ml2_server_package = 'openstack-neutron-ml2' + $ovs_agent_package = false + $ovs_server_package = 'openstack-neutron-openvswitch' + $ovs_cleanup_service = 'neutron-ovs-cleanup' + $libnl_package = 'libnl' + $package_provider = 'rpm' + $linuxbridge_agent_package = false + $linuxbridge_server_package = 'openstack-neutron-linuxbridge' + $sriov_nic_agent_service = 'neutron-sriov-nic-agent' + $sriov_nic_agent_package = 'openstack-neutron-sriov-nic-agent' + $bigswitch_lldp_package = 'openstack-neutron-bigswitch-lldp' + $bigswitch_agent_package = 'openstack-neutron-bigswitch-agent' + $bigswitch_lldp_service = 'neutron-bsn-lldp' + $bigswitch_agent_service = 'neutron-bsn-agent' + $cisco_server_package = 'openstack-neutron-cisco' + $nvp_server_package = 'openstack-neutron-nicira' + $dhcp_agent_package = false + $lbaasv2_agent_package = 'openstack-neutron-lbaas' + $metering_agent_package = 'openstack-neutron-metering-agent' + $vpnaas_agent_package = 'openstack-neutron-vpnaas' + $l2gw_agent_package = 'openstack-neutron-l2gw-agent' + $l2gw_package = 'python2-networking-l2gw' + $ovn_metadata_agent_package = 'networking-ovn-metadata-agent' if $::operatingsystemrelease =~ /^7.*/ or $::operatingsystem == 'Fedora' { $openswan_package = 'libreswan' } else { $openswan_package = 'openswan' } - $libreswan_package = 'libreswan' - $l3_agent_package = false - $fwaas_package = 'openstack-neutron-fwaas' - $neutron_wsgi_script_path = '/var/www/cgi-bin/neutron' - $neutron_wsgi_script_source = '/usr/bin/neutron-api' + $libreswan_package = 'libreswan' + $l3_agent_package = false + $fwaas_package = 'openstack-neutron-fwaas' + $neutron_wsgi_script_path = '/var/www/cgi-bin/neutron' + $neutron_wsgi_script_source = '/usr/bin/neutron-api' + $networking_baremetal_package = 'python2-networking-baremetal' } elsif($::osfamily == 'Debian') { $nobody_user_group = 'nogroup' $package_name = 'neutron-common' diff --git a/manifests/plugins/ml2/networking_baremetal.pp b/manifests/plugins/ml2/networking_baremetal.pp new file mode 100644 index 000000000..779167e77 --- /dev/null +++ b/manifests/plugins/ml2/networking_baremetal.pp @@ -0,0 +1,31 @@ +# This class installs and configures the networking-baremetal Neutron plugin +# +# == Class: neutron::plugins::ml2::networking_baremetal +# +# === Parameters +# +# [*package_ensure*] +# (optional) The intended state of the python-networking-baremetal +# package, i.e. any of the possible values of the 'ensure' +# property for a package resource type. +# Defaults to 'present' +# +class neutron::plugins::ml2::networking_baremetal( + $package_ensure = 'present', + ) { + + include ::neutron::deps + include ::neutron::params + require ::neutron::plugins::ml2 + + if($::osfamily != 'RedHat') { + # Drivers are only packaged for RedHat at this time + fail("Unsupported osfamily ${::osfamily}") + } else { + package { 'python2-networking-baremetal': + ensure => $package_ensure, + name => $::neutron::params::networking_baremetal_package, + tag => ['openstack', 'neutron-package'], + } + } +} diff --git a/releasenotes/notes/networking-baremetal-ml2-plugin-eb9839c2117beab3.yaml b/releasenotes/notes/networking-baremetal-ml2-plugin-eb9839c2117beab3.yaml new file mode 100644 index 000000000..ddc080f5d --- /dev/null +++ b/releasenotes/notes/networking-baremetal-ml2-plugin-eb9839c2117beab3.yaml @@ -0,0 +1,4 @@ +--- +features: + - Additional support for baremetal. Added support for installation of + networking-baremetal neutron ML2 mechanism driver. diff --git a/spec/classes/neutron_plugins_ml2_networking_baremetal_spec.rb b/spec/classes/neutron_plugins_ml2_networking_baremetal_spec.rb new file mode 100644 index 000000000..995bd760b --- /dev/null +++ b/spec/classes/neutron_plugins_ml2_networking_baremetal_spec.rb @@ -0,0 +1,61 @@ +require 'spec_helper' + +describe 'neutron::plugins::ml2::networking_baremetal' do + let :default_params do + { :package_ensure => 'present', + } + end + + let :test_facts do + { :operatingsystem => 'default', + :operatingsystemrelease => 'default' + } + end + + let :params do + {} + end + + shared_examples_for 'networking-baremetal ml2 plugin' do + let :p do + default_params.merge(params) + end + + it { is_expected.to contain_class('neutron::params') } + + it 'installs networking-baremetal python2-networking-baremetal package' do + is_expected.to contain_package('python2-networking-baremetal').with( + :name => platform_params[:networking_baremetal_package], + :ensure => p[:package_ensure], + :tag => ['openstack', 'neutron-package'], + ) + is_expected.to contain_package('python2-networking-baremetal').that_requires('Anchor[neutron::install::begin]') + is_expected.to contain_package('python2-networking-baremetal').that_notifies('Anchor[neutron::install::end]') + end + end + + on_supported_os({ + :supported_os => OSDefaults.get_supported_os + }).each do |os,facts| + context "on #{os}" do + let (:facts) do + facts.merge!(OSDefaults.get_facts()) + end + let (:platform_params) do + case facts[:osfamily] + when 'RedHat' + { :networking_baremetal_package => 'python2-networking-baremetal'} + end + end + case facts[:osfamily] + when 'RedHat' + it_behaves_like 'networking-baremetal ml2 plugin' + when facts[:osfamily] != 'RedHat' + it 'fails with unsupported osfamily' do + is_expected.to raise_error(Puppet::Error, /Unsupported osfamily.*/) + end + end + end + end + +end