From a382db46e9efcaccce6b6ffbc2ef6da00b32936f Mon Sep 17 00:00:00 2001 From: Slawek Kaplonski Date: Wed, 7 Oct 2020 14:41:40 +0000 Subject: [PATCH] Add new classes ovs_driver and sriov_driver Those classes handles ML2 plugin's configuration related to the OVS and SR-IOV mechanism drivers. Previously there was neutron::plugins::ml2::mech_driver function which was used by neutron::plugins::ml2 class but it isn't used at all currently and probably it will need to be deprecated and removed in follow up patch(es). Change-Id: I2a321fb780e789b7556d557e2170a3267049c432 (cherry picked from commit 0b8a90ec5c4cdac145672150ee4d58f7959cf6bb) --- manifests/plugins/ml2/ovs_driver.pp | 31 +++++++++++++++++ manifests/plugins/ml2/sriov_driver.pp | 31 +++++++++++++++++ .../ml2-driver-classes-e9de9a5e58c855fb.yaml | 8 +++++ .../classes/neutron_plugins_ml2_ovs_driver.rb | 34 +++++++++++++++++++ .../neutron_plugins_ml2_sriov_driver.rb | 34 +++++++++++++++++++ 5 files changed, 138 insertions(+) create mode 100644 manifests/plugins/ml2/ovs_driver.pp create mode 100644 manifests/plugins/ml2/sriov_driver.pp create mode 100644 releasenotes/notes/ml2-driver-classes-e9de9a5e58c855fb.yaml create mode 100644 spec/classes/neutron_plugins_ml2_ovs_driver.rb create mode 100644 spec/classes/neutron_plugins_ml2_sriov_driver.rb diff --git a/manifests/plugins/ml2/ovs_driver.pp b/manifests/plugins/ml2/ovs_driver.pp new file mode 100644 index 000000000..fa27fafb2 --- /dev/null +++ b/manifests/plugins/ml2/ovs_driver.pp @@ -0,0 +1,31 @@ +# Licensed under the Apache License, Version 2.0 (the "License"); you may +# not use this file except in compliance with the License. You may obtain +# a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT +# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the +# License for the specific language governing permissions and limitations +# under the License. +# +# neutron::plugins::ml2::ovs_driver +# +# === Parameters: +# +# [*vnic_type_blacklist*] +# (optional) list of VNIC types for which support in Neutron is +# administratively prohibited by the OVS mechanism driver +# Defaults to [] +# +class neutron::plugins::ml2::ovs_driver ( + $vnic_type_blacklist = [], +){ + + if !empty($vnic_type_blacklist) { + neutron_plugin_ml2 { + 'ovs_driver/vnic_type_blacklist': value => join(any2array($vnic_type_blacklist), ','); + } + } +} diff --git a/manifests/plugins/ml2/sriov_driver.pp b/manifests/plugins/ml2/sriov_driver.pp new file mode 100644 index 000000000..1a46e9dbe --- /dev/null +++ b/manifests/plugins/ml2/sriov_driver.pp @@ -0,0 +1,31 @@ +# Licensed under the Apache License, Version 2.0 (the "License"); you may +# not use this file except in compliance with the License. You may obtain +# a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT +# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the +# License for the specific language governing permissions and limitations +# under the License. +# +# neutron::plugins::ml2::ovs_driver +# +# === Parameters: +# +# [*vnic_type_blacklist*] +# (optional) list of VNIC types for which support in Neutron is +# administratively prohibited by the OVS mechanism driver +# Defaults to [] +# +class neutron::plugins::ml2::sriov_driver ( + $vnic_type_blacklist= [], +){ + + if !empty($vnic_type_blacklist) { + neutron_plugin_ml2 { + 'sriov_driver/vnic_type_blacklist': value => join(any2array($vnic_type_blacklist), ','); + } + } +} diff --git a/releasenotes/notes/ml2-driver-classes-e9de9a5e58c855fb.yaml b/releasenotes/notes/ml2-driver-classes-e9de9a5e58c855fb.yaml new file mode 100644 index 000000000..ca013ac89 --- /dev/null +++ b/releasenotes/notes/ml2-driver-classes-e9de9a5e58c855fb.yaml @@ -0,0 +1,8 @@ +--- +features: + - | + The following two new classes have been added, to set up parameters in + ovs_driver and sriov_driver section. + + - ``neutron::plugins::ml2::ovs_driver`` + - ``neutron::plugins::ml2::sriov_driver`` diff --git a/spec/classes/neutron_plugins_ml2_ovs_driver.rb b/spec/classes/neutron_plugins_ml2_ovs_driver.rb new file mode 100644 index 000000000..51a1f7fd3 --- /dev/null +++ b/spec/classes/neutron_plugins_ml2_ovs_driver.rb @@ -0,0 +1,34 @@ +# Licensed under the Apache License, Version 2.0 (the "License"); you may +# not use this file except in compliance with the License. You may obtain +# a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT +# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the +# License for the specific language governing permissions and limitations +# under the License. +# +# Unit tests for neutron::plugins::ml2::ovs_driver class + +required 'spec_helper' + +describe 'neutron::plugins::ml2::ovs_driver' do + + let :default_params do + { + :vnic_type_blacklist => [] + } + end + + context 'when vnic_type_blacklist is not empty list' do + before :each do + params.merge!(:vnic_type_blacklist => ['direct']) + end + + it 'should configure direct in vnic_type_blacklist' do + shoud contain_neutron_plugin_ml2('ovs_driver/vnic_type_blacklist').with_value("direct") + end + end +end diff --git a/spec/classes/neutron_plugins_ml2_sriov_driver.rb b/spec/classes/neutron_plugins_ml2_sriov_driver.rb new file mode 100644 index 000000000..60a48b75d --- /dev/null +++ b/spec/classes/neutron_plugins_ml2_sriov_driver.rb @@ -0,0 +1,34 @@ +# Licensed under the Apache License, Version 2.0 (the "License"); you may +# not use this file except in compliance with the License. You may obtain +# a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT +# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the +# License for the specific language governing permissions and limitations +# under the License. +# +# Unit tests for neutron::plugins::ml2::sriov_driver class + +required 'spec_helper' + +describe 'neutron::plugins::ml2::sriov_driver' do + + let :default_params do + { + :vnic_type_blacklist => [] + } + end + + context 'when vnic_type_blacklist is not empty list' do + before :each do + params.merge!(:vnic_type_blacklist => ['direct']) + end + + it 'should configure direct in vnic_type_blacklist' do + shoud contain_neutron_plugin_ml2('sriov_driver/vnic_type_blacklist').with_value("direct") + end + end +end