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
This commit is contained in:
parent
a36332da0d
commit
fd49af3de8
@ -34,7 +34,7 @@ Puppet::Type.type(:vs_port).provide(:ovs_redhat, :parent => :ovs) do
|
|||||||
if link?
|
if link?
|
||||||
extras = dynamic_default if dynamic?
|
extras = dynamic_default if dynamic?
|
||||||
if File.exist?(BASE + @resource[:interface])
|
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
|
||||||
end
|
end
|
||||||
|
|
||||||
@ -42,6 +42,13 @@ Puppet::Type.type(:vs_port).provide(:ovs_redhat, :parent => :ovs) do
|
|||||||
if vlan?
|
if vlan?
|
||||||
port.set('VLAN' => 'yes')
|
port.set('VLAN' => 'yes')
|
||||||
end
|
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])
|
port.save(BASE + @resource[:interface])
|
||||||
|
|
||||||
bridge = IFCFG::Bridge.new(@resource[:bridge], template)
|
bridge = IFCFG::Bridge.new(@resource[:bridge], template)
|
||||||
@ -77,6 +84,17 @@ Puppet::Type.type(:vs_port).provide(:ovs_redhat, :parent => :ovs) do
|
|||||||
|
|
||||||
private
|
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?
|
def dynamic?
|
||||||
device = ''
|
device = ''
|
||||||
device = ip('addr', 'show', @resource[:interface])
|
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)
|
def from_str(data)
|
||||||
items = {}
|
items = {}
|
||||||
data.each_line do |line|
|
data.each_line do |line|
|
||||||
if m = line.match(/^(.*)=(.*)$/)
|
if m = line.match(/^([A-Za-z_]*)=(.*)$/)
|
||||||
items.merge!(m[1] => m[2])
|
items.merge!(m[1] => m[2])
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
items.delete('VLAN') if items.has_key?('VLAN')
|
|
||||||
items
|
items
|
||||||
end
|
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?
|
def vlan?
|
||||||
if File.read('/proc/net/vlan/config') =~ /#{@resource[:interface]}/
|
if File.read('/proc/net/vlan/config') =~ /#{@resource[:interface]}/
|
||||||
return true
|
return true
|
||||||
|
Loading…
Reference in New Issue
Block a user