From fe9193073c3ada3637d02bf12aeff7ca28fb0b96 Mon Sep 17 00:00:00 2001 From: Lukas Bezdicka Date: Dec 12 2014 12:04:51 +0000 Subject: Adds filtering for BONDING Changelog: - Adds filtering for BONDING (LACP) - Fixed issue with vlan on redhat provider --- diff --git a/0010-Fixed-issue-with-vlan-on-redhat-provider.patch b/0010-Fixed-issue-with-vlan-on-redhat-provider.patch new file mode 100644 index 0000000..844b497 --- /dev/null +++ b/0010-Fixed-issue-with-vlan-on-redhat-provider.patch @@ -0,0 +1,47 @@ +From d7158dcf0086572992fab02fbd50b286506f2de0 Mon Sep 17 00:00:00 2001 +From: Gilles Dubreuil +Date: Tue, 18 Nov 2014 17:01:40 +1100 +Subject: [PATCH] Fixed issue with vlan on redhat provider + +When interface is a vlan, the VLAN=yes stanza must stick to interface +configuration file and shouldn't be present on bridge ifcfg file either + +RHBZ#1160418 + +Change-Id: If1c40927f7e1b26b2ae6a7eb33f6d76d41983fc3 +--- + vswitch/lib/puppet/provider/vs_port/ovs_redhat.rb | 14 ++++++++++++++ + 1 file changed, 14 insertions(+) + +diff --git a/vswitch/lib/puppet/provider/vs_port/ovs_redhat.rb b/vswitch/lib/puppet/provider/vs_port/ovs_redhat.rb +index f2cf88d..2bc4374 100644 +--- a/vswitch/lib/puppet/provider/vs_port/ovs_redhat.rb ++++ b/vswitch/lib/puppet/provider/vs_port/ovs_redhat.rb +@@ -39,6 +39,9 @@ Puppet::Type.type(:vs_port).provide(:ovs_redhat, :parent => :ovs) do + end + + port = IFCFG::Port.new(@resource[:interface], @resource[:bridge]) ++ if vlan? ++ port.set('VLAN' => 'yes') ++ end + port.save(BASE + @resource[:interface]) + + bridge = IFCFG::Bridge.new(@resource[:bridge], template) +@@ -115,6 +118,17 @@ Puppet::Type.type(:vs_port).provide(:ovs_redhat, :parent => :ovs) do + items.merge!(m[1] => m[2]) + end + end ++ items.delete('VLAN') if items.has_key?('VLAN') + items + end ++ ++ def vlan? ++ if File.read('/proc/net/vlan/config') =~ /#{@resource[:interface]}/ ++ return true ++ else ++ return false ++ end ++ rescue Errno::ENOENT ++ return false ++ end + end diff --git a/0011-Adds-filtering-for-BONDING-LACP.patch b/0011-Adds-filtering-for-BONDING-LACP.patch new file mode 100644 index 0000000..7f801f0 --- /dev/null +++ b/0011-Adds-filtering-for-BONDING-LACP.patch @@ -0,0 +1,87 @@ +From 02f23fdc6b32d3fc229a815023645595791b72d6 Mon Sep 17 00:00:00 2001 +From: Gilles Dubreuil +Date: Mon, 8 Dec 2014 15:39:04 +1100 +Subject: [PATCH] Adds filtering for BONDING (LACP) + +- Separated ifcfg file capture from cleaning filter +- Fixed REGEX when ifcfg file used as template + +RHBZ#1165185 + +Change-Id: I26d53c832e651668b40a70010bb994e5d2ec10da +--- + vswitch/lib/puppet/provider/vs_port/ovs_redhat.rb | 34 +++++++++++++++++++++-- + 1 file changed, 31 insertions(+), 3 deletions(-) + +diff --git a/vswitch/lib/puppet/provider/vs_port/ovs_redhat.rb b/vswitch/lib/puppet/provider/vs_port/ovs_redhat.rb +index 2bc4374..41f6445 100644 +--- a/vswitch/lib/puppet/provider/vs_port/ovs_redhat.rb ++++ b/vswitch/lib/puppet/provider/vs_port/ovs_redhat.rb +@@ -34,7 +34,7 @@ Puppet::Type.type(:vs_port).provide(:ovs_redhat, :parent => :ovs) do + if link? + extras = dynamic_default if dynamic? + if File.exist?(BASE + @resource[:interface]) +- template = from_str(File.read(BASE + @resource[:interface])) ++ template = cleared(from_str(File.read(BASE + @resource[:interface]))) + end + end + +@@ -42,6 +42,13 @@ Puppet::Type.type(:vs_port).provide(:ovs_redhat, :parent => :ovs) do + if vlan? + port.set('VLAN' => 'yes') + end ++ ++ if bonding? ++ port.set('BONDING_MASTER' => 'yes') ++ config = from_str(File.read(BASE + @resource[:interface])) ++ port.set('BONDING_OPTS' => config['BONDING_OPTS']) if config.has_key?('BONDING_OPTS') ++ end ++ + port.save(BASE + @resource[:interface]) + + bridge = IFCFG::Bridge.new(@resource[:bridge], template) +@@ -77,6 +84,17 @@ Puppet::Type.type(:vs_port).provide(:ovs_redhat, :parent => :ovs) do + + private + ++ def bonding? ++ # To do: replace with iproute2 commands ++ if File.exists?("/proc/net/bonding/#{@resource[:interface]}") ++ return true ++ else ++ return false ++ end ++ rescue Errno::ENOENT ++ return false ++ end ++ + def dynamic? + device = '' + device = ip('addr', 'show', @resource[:interface]) +@@ -114,14 +132,24 @@ Puppet::Type.type(:vs_port).provide(:ovs_redhat, :parent => :ovs) do + def from_str(data) + items = {} + data.each_line do |line| +- if m = line.match(/^(.*)=(.*)$/) ++ if m = line.match(/^([A-Za-z_]*)=(.*)$/) + items.merge!(m[1] => m[2]) + end + end +- items.delete('VLAN') if items.has_key?('VLAN') + items + end + ++ def cleared(data) ++ data.each do |key, value| ++ case key ++ when /vlan/i ++ data.delete(key) ++ when /bonding/i ++ data.delete(key) ++ end ++ end ++ end ++ + def vlan? + if File.read('/proc/net/vlan/config') =~ /#{@resource[:interface]}/ + return true diff --git a/openstack-puppet-modules.spec b/openstack-puppet-modules.spec index 101c367..ef3db52 100644 --- a/openstack-puppet-modules.spec +++ b/openstack-puppet-modules.spec @@ -1,7 +1,7 @@ Name: openstack-puppet-modules Version: 2014.2.7 -Release: 1%{?dist} +Release: 2%{?dist} Summary: Collection of Puppet modules for OpenStack deployment License: ASL 2.0 and GPLv2 and GPLv3 @@ -18,6 +18,8 @@ Patch0006: 0006-Configure-OVS-mechanism-agent-configs-in-its-config-.patch Patch0007: 0007-Add-manage_service-feature.patch Patch0008: 0008-Fix-against-mongodb-2.6.5-from-epel.patch Patch0009: 0009-Fix-support-for-Fedora-Rawhide.patch +Patch0010: 0010-Fixed-issue-with-vlan-on-redhat-provider.patch +Patch0011: 0011-Adds-filtering-for-BONDING-LACP.patch BuildArch: noarch Requires: rubygem-json @@ -39,6 +41,8 @@ OpenStack via installers using Puppet configuration tool. %patch0007 -p1 %patch0008 -p1 %patch0009 -p1 +%patch0010 -p1 +%patch0011 -p1 find %{_builddir}/%{name}-%{version}/ -type f -name ".*" -exec rm {} + find %{_builddir}/%{name}-%{version}/ -size 0 -exec rm {} + @@ -110,6 +114,10 @@ rm -f %{buildroot}/%{_datadir}/openstack-puppet/modules/nova/files/nova-novncpro %changelog +* Fri Dec 12 2014 Lukas Bezdicka 2014.2.7-2 +- Adds filtering for BONDING (LACP) +- Fixed issue with vlan on redhat provider + * Thu Dec 11 2014 Lukas Bezdicka - 2014.2.7-1 - Fix support for Fedora Rawhide (rhbz#1170646) - Updated to release 2014.2.7