Merge "CentOS/RHEL: Fix missing external_ids"
This commit is contained in:
@@ -44,10 +44,10 @@ Puppet::Type.type(:vs_port).provide(
|
|||||||
|
|
||||||
if interface_physical?
|
if interface_physical?
|
||||||
template = DEFAULT
|
template = DEFAULT
|
||||||
extras = { 'OVS_EXTRA' => "\"set bridge #{@resource[:bridge]} fail_mode=#{@resource[:fail_mode]}\"" }
|
ovs_extra = get_ovs_extra(["set bridge #{@resource[:bridge]} fail_mode=#{@resource[:fail_mode]}"])
|
||||||
|
|
||||||
if link?
|
if link?
|
||||||
extras = dynamic_default if dynamic?
|
ovs_extra = dynamic_default if dynamic?
|
||||||
if File.exist?(BASE + @resource[:port])
|
if File.exist?(BASE + @resource[:port])
|
||||||
template = cleared(from_str(File.read(BASE + @resource[:port])))
|
template = cleared(from_str(File.read(BASE + @resource[:port])))
|
||||||
end
|
end
|
||||||
@@ -67,7 +67,7 @@ Puppet::Type.type(:vs_port).provide(
|
|||||||
port.save(BASE + @resource[:port])
|
port.save(BASE + @resource[:port])
|
||||||
|
|
||||||
bridge = IFCFG::Bridge.new(@resource[:bridge], template)
|
bridge = IFCFG::Bridge.new(@resource[:bridge], template)
|
||||||
bridge.set(extras) if extras
|
bridge.set(ovs_extra) if ovs_extra
|
||||||
bridge.save(BASE + @resource[:bridge])
|
bridge.save(BASE + @resource[:bridge])
|
||||||
|
|
||||||
ifdown(@resource[:bridge])
|
ifdown(@resource[:bridge])
|
||||||
@@ -99,6 +99,30 @@ Puppet::Type.type(:vs_port).provide(
|
|||||||
|
|
||||||
private
|
private
|
||||||
|
|
||||||
|
def get_bridge_external_ids(br)
|
||||||
|
external_ids_raw = vsctl('br-get-external-id', br).split("\n")
|
||||||
|
external_ids_raw.delete('')
|
||||||
|
if external_ids_raw
|
||||||
|
return Hash[external_ids_raw.map{|i| i.split('=')}]
|
||||||
|
else
|
||||||
|
return {}
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
def get_ovs_extra(opts=[])
|
||||||
|
external_ids = get_bridge_external_ids(@resource[:bridge])
|
||||||
|
# Add commands to set external-id
|
||||||
|
external_ids.each do |k, v|
|
||||||
|
opts += ["br-set-external-id #{resource[:bridge]} #{k} #{v}"]
|
||||||
|
end
|
||||||
|
|
||||||
|
if opts.empty?
|
||||||
|
return {}
|
||||||
|
else
|
||||||
|
return { 'OVS_EXTRA' => "\"#{opts.join(' -- ')}\"" }
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
def bonding?
|
def bonding?
|
||||||
# To do: replace with iproute2 commands
|
# To do: replace with iproute2 commands
|
||||||
if File.exists?("/proc/net/bonding/#{@resource[:port]}")
|
if File.exists?("/proc/net/bonding/#{@resource[:port]}")
|
||||||
@@ -131,8 +155,9 @@ Puppet::Type.type(:vs_port).provide(
|
|||||||
# Persistent MAC address taken from interface
|
# Persistent MAC address taken from interface
|
||||||
bridge_mac_address = File.read("/sys/class/net/#{@resource[:port]}/address").chomp
|
bridge_mac_address = File.read("/sys/class/net/#{@resource[:port]}/address").chomp
|
||||||
if bridge_mac_address != ''
|
if bridge_mac_address != ''
|
||||||
list.merge!({ 'OVS_EXTRA' =>
|
list.merge!(get_ovs_extra(["set bridge #{@resource[:bridge]} other-config:hwaddr=#{bridge_mac_address} fail_mode=#{@resource[:fail_mode]}"]))
|
||||||
"\"set bridge #{@resource[:bridge]} other-config:hwaddr=#{bridge_mac_address} fail_mode=#{@resource[:fail_mode]}\"" })
|
else
|
||||||
|
list.merge!(get_ovs_extra())
|
||||||
end
|
end
|
||||||
list
|
list
|
||||||
end
|
end
|
||||||
|
|||||||
@@ -20,6 +20,22 @@ describe 'basic vswitch' do
|
|||||||
external_ids => 'bridge-id=br-ci2'
|
external_ids => 'bridge-id=br-ci2'
|
||||||
}
|
}
|
||||||
|
|
||||||
|
vs_bridge { 'br-ci3':
|
||||||
|
ensure => present,
|
||||||
|
external_ids => 'bridge-id=br-ci3'
|
||||||
|
}
|
||||||
|
~> exec { 'create_loop1_port':
|
||||||
|
path => '/usr/bin:/bin:/usr/sbin:/sbin',
|
||||||
|
provider => shell,
|
||||||
|
command => 'ip link add name loop1 type dummy && ip addr add 127.2.0.1/24 dev loop1',
|
||||||
|
before => Vs_port['loop1'],
|
||||||
|
refreshonly => true,
|
||||||
|
}
|
||||||
|
-> vs_port { 'loop1':
|
||||||
|
ensure => present,
|
||||||
|
bridge => 'br-ci3',
|
||||||
|
}
|
||||||
|
|
||||||
vs_config { 'external_ids:ovn-remote':
|
vs_config { 'external_ids:ovn-remote':
|
||||||
ensure => present,
|
ensure => present,
|
||||||
value => 'tcp:127.0.0.1:2300',
|
value => 'tcp:127.0.0.1:2300',
|
||||||
@@ -50,6 +66,18 @@ describe 'basic vswitch' do
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
it 'should have br-ci3 bridge' do
|
||||||
|
command('ovs-vsctl show') do |r|
|
||||||
|
expect(r.stdout).to match(/br-ci3/)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
it 'should have external_ids on br-ci3 bridge' do
|
||||||
|
command('ovs-vsctl br-get-external-id br-ci3') do |r|
|
||||||
|
expect(r.stdout).to match(/bridge-id=br-ci3/)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
it 'should get remote addr' do
|
it 'should get remote addr' do
|
||||||
command('ovs-vsctl get Open_vSwitch . external_ids:ovn-remote') do |r|
|
command('ovs-vsctl get Open_vSwitch . external_ids:ovn-remote') do |r|
|
||||||
expect(r.stdout).to match(/\"tcp:127.0.0.1:2300\"/)
|
expect(r.stdout).to match(/\"tcp:127.0.0.1:2300\"/)
|
||||||
|
|||||||
Reference in New Issue
Block a user