Revert "Fix problem with bonds configuration"
This reverts commit e84fb82f37.
Change-Id: I36f9832e30ced0046d6341d2036f0f3b341602da
Сloses-Bug: #1492781
This commit is contained in:
@@ -628,27 +628,6 @@ class Puppet::Provider::L2_base < Puppet::Provider
|
||||
|
||||
# ---------------------------------------------------------------------------
|
||||
|
||||
def self.set_sys_class(property, value)
|
||||
begin
|
||||
property_file = File.open(property, 'a')
|
||||
property_file.write("#{value.to_s}")
|
||||
property_file.close
|
||||
rescue Exception => e
|
||||
raise(Puppet::ExecutionFailure, "Can't set property '#{property}' to '#{value}': #{e.message}")
|
||||
end
|
||||
end
|
||||
|
||||
def self.get_sys_class(property, array=false)
|
||||
begin
|
||||
rv = File.open(property).read.split(/\s+/)
|
||||
rescue Exception => e
|
||||
raise(Puppet::ExecutionFailure, "Can't get property '#{property}': #{e.message}")
|
||||
end
|
||||
(array ? rv : rv[0])
|
||||
end
|
||||
|
||||
# ---------------------------------------------------------------------------
|
||||
|
||||
def self.set_mtu(iface, mtu=1500)
|
||||
if File.symlink?("/sys/class/net/#{iface}")
|
||||
debug("Set MTU to '#{mtu}' for interface '#{iface}'")
|
||||
|
||||
@@ -96,49 +96,33 @@ Puppet::Type.type(:l2_bond).provide(:lnx, :parent => Puppet::Provider::Lnx_base)
|
||||
end
|
||||
if @property_flush.has_key? :bond_properties
|
||||
# change bond_properties
|
||||
bond_prop_dir = "/sys/class/net/#{@resource[:bond]}"
|
||||
need_reassemble = [:mode, :lacp_rate]
|
||||
#todo(sv): inplement re-assembling only if it need
|
||||
#todo(sv): re-set only delta between reality and requested
|
||||
runtime_bond_state = !self.class.get_iface_state(@resource[:bond]).nil?
|
||||
runtime_slave_ports = self.class.get_sys_class("#{bond_prop_dir}/bonding/slaves", true)
|
||||
runtime_slave_ports = File.open("/sys/class/net/#{@resource[:bond]}/bonding/slaves", "r").read.split(/\s+/)
|
||||
runtime_slave_ports.each do |eth|
|
||||
# for most bond options we should disassemble bond before re-configuration. In the kernel module documentation
|
||||
# says, that bond interface should be downed, but it's not enouth.
|
||||
self.class.set_sys_class("#{bond_prop_dir}/bonding/slaves", "-#{eth}")
|
||||
File.open("/sys/class/net/#{@resource[:bond]}/bonding/slaves", "a") {|f| f << "-#{eth}"}
|
||||
end
|
||||
iproute('link', 'set', 'down', 'dev', @resource[:bond])
|
||||
# setup primary bond_properties
|
||||
primary_bond_properties = [:mode, :xmit_hash_policy]
|
||||
curr_mode = self.class.get_sys_class("#{bond_prop_dir}/bonding/mode")
|
||||
if curr_mode != @property_flush[:bond_properties][:mode]
|
||||
debug("Setting mode '#{@property_flush[:bond_properties][:mode]}' for bond '#{@resource[:bond]}'")
|
||||
self.class.set_sys_class("#{bond_prop_dir}/bonding/mode", @property_flush[:bond_properties][:mode])
|
||||
sleep(1)
|
||||
end
|
||||
curr_xhp = self.class.get_sys_class("#{bond_prop_dir}/bonding/xmit_hash_policy")
|
||||
if @property_flush[:bond_properties].has_key?(:xmit_hash_policy) && curr_mode != @property_flush[:bond_properties][:xmit_hash_policy]
|
||||
debug("Setting xmit_hash_policy '#{@property_flush[:bond_properties][:xmit_hash_policy]}' for bond '#{@resource[:bond]}'")
|
||||
self.class.set_sys_class("#{bond_prop_dir}/bonding/xmit_hash_policy", @property_flush[:bond_properties][:xmit_hash_policy])
|
||||
sleep(1)
|
||||
end
|
||||
# setup another bond_properties
|
||||
@property_flush[:bond_properties].reject{|k,v| primary_bond_properties.include? k}.each_pair do |prop, val|
|
||||
@property_flush[:bond_properties].each_pair do |prop, val|
|
||||
if self.class.lnx_bond_allowed_properties_list.include? prop.to_sym
|
||||
val_should_be = val.to_s
|
||||
val_actual = self.class.get_sys_class("#{bond_prop_dir}/bonding/#{prop}")
|
||||
if val_actual != val_should_be
|
||||
debug("Setting property '#{prop}' to '#{val_should_be}' for bond '#{@resource[:bond]}'")
|
||||
self.class.set_sys_class("#{bond_prop_dir}/bonding/#{prop}", val_should_be)
|
||||
end
|
||||
act_val = val.to_s
|
||||
else
|
||||
debug("Unsupported property '#{prop}' for bond '#{@resource[:bond]}'")
|
||||
act_val = nil
|
||||
end
|
||||
if act_val
|
||||
debug("Set property '#{prop}' to '#{act_val}' for bond '#{@resource[:bond]}'")
|
||||
File.open("/sys/class/net/#{@resource[:bond]}/bonding/#{prop}", 'a') {|f| f << "#{act_val.to_s}"}
|
||||
end
|
||||
end
|
||||
# re-assemble bond after configuration
|
||||
iproute('link', 'set', 'up', 'dev', @resource[:bond]) if runtime_bond_state
|
||||
runtime_slave_ports.each do |eth|
|
||||
self.class.set_sys_class("#{bond_prop_dir}/bonding/slaves", "+#{eth}")
|
||||
File.open("/sys/class/net/#{@resource[:bond]}/bonding/slaves", "a") {|f| f << "+#{eth}"}
|
||||
end
|
||||
end
|
||||
if @property_flush.has_key? :bridge
|
||||
|
||||
@@ -25,7 +25,7 @@ Puppet::Type.newtype(:l2_bond) do
|
||||
Regexp.new(/^en[ospx]\h+/),
|
||||
Regexp.new(/^em\d*/),
|
||||
Regexp.new(/^p\d+p\d+/),
|
||||
Regexp.new(/^ib[\h\.]*/),
|
||||
Regexp.new(/^ib[\h\.]+/),
|
||||
].select{|x| x.match(val)}.empty?
|
||||
fail("#{err} '#{val}'")
|
||||
end
|
||||
@@ -228,4 +228,4 @@ Puppet::Type.newtype(:l2_bond) do
|
||||
# end
|
||||
# end
|
||||
end
|
||||
# vim: set ts=2 sw=2 et :
|
||||
# vim: set ts=2 sw=2 et :
|
||||
@@ -26,7 +26,7 @@ Puppet::Type.newtype(:l2_bridge) do
|
||||
Regexp.new(/^en[ospx]\h+/),
|
||||
Regexp.new(/^em\d*/),
|
||||
Regexp.new(/^p\d+p\d+/),
|
||||
Regexp.new(/^ib[\h\.]*/),
|
||||
Regexp.new(/^ib[\h\.]+/),
|
||||
].select{|x| x.match(val)}.empty?
|
||||
fail("#{err} '#{val}'")
|
||||
end
|
||||
@@ -127,4 +127,4 @@ Puppet::Type.newtype(:l2_bridge) do
|
||||
end
|
||||
|
||||
end
|
||||
# vim: set ts=2 sw=2 et :
|
||||
# vim: set ts=2 sw=2 et :
|
||||
@@ -23,11 +23,10 @@ describe Puppet::Type.type(:l2_bond) do
|
||||
it "should be failed for name #{iname}" do
|
||||
expect { described_class.new({
|
||||
:name => "#{iname}",
|
||||
})}.to raise_error(Puppet::ResourceError, %r{Wrong\s+bond\s+name})
|
||||
})}.to raise_error(Puppet::ResourceError, /Wrong\s+bond\s+name/)
|
||||
end
|
||||
|
||||
end
|
||||
|
||||
end
|
||||
end
|
||||
# vim: set ts=2 sw=2 et
|
||||
# vim: set ts=2 sw=2 et
|
||||
Reference in New Issue
Block a user