Handle vlan_id in dpdk/vxlan mode
On provision stage apply vlan_id from ovs bridge to lnx port to pass connectivity check. Change-Id: Id453f45773905f923c3d8e37650b21a0fb8be26b Closes-Bug: #1673767
This commit is contained in:
parent
ccdab4a8d5
commit
c83d8a06fe
|
@ -1,42 +1,29 @@
|
||||||
require 'yaml'
|
require 'yaml'
|
||||||
|
|
||||||
Puppet::Parser::Functions::newfunction( :remove_ovs_usage,
|
Puppet::Parser::Functions::newfunction( :remove_ovs_usage,
|
||||||
:type => :rvalue, :doc => <<-EOS
|
:type => :rvalue, :arity => 1, :doc => <<-EOS
|
||||||
This function get network_scheme and returns mangled
|
This function get network_scheme and returns mangled
|
||||||
network scheme without ovs-based elements.
|
network scheme without ovs-based elements.
|
||||||
EOS
|
EOS
|
||||||
) do |argv|
|
) do |argv|
|
||||||
|
|
||||||
def bridge_name_max_len
|
raise(
|
||||||
15
|
Puppet::ParseError,
|
||||||
end
|
"remove_ovs_usage(): Wrong network_scheme. Should be non-empty Hash."
|
||||||
|
) unless argv[0].is_a?(Hash)
|
||||||
|
|
||||||
if argv.size != 1
|
raise(
|
||||||
raise(
|
Puppet::ParseError,
|
||||||
Puppet::ParseError,
|
"remove_ovs_usage(): You network_scheme hash has wrong format.\nThis parser can work with v1.1 format, please convert you config."
|
||||||
"remove_ovs_usage(): Wrong number of arguments. Should be two."
|
) if argv[0]['version'].to_s.to_f < 1.1
|
||||||
)
|
|
||||||
end
|
|
||||||
if !argv[0].is_a?(Hash)
|
|
||||||
raise(
|
|
||||||
Puppet::ParseError,
|
|
||||||
"remove_ovs_usage(): Wrong network_scheme. Should be non-empty Hash."
|
|
||||||
)
|
|
||||||
end
|
|
||||||
if argv[0]['version'].to_s.to_f < 1.1
|
|
||||||
raise(
|
|
||||||
Puppet::ParseError,
|
|
||||||
"remove_ovs_usage(): You network_scheme hash has wrong format.\nThis parser can work with v1.1 format, please convert you config."
|
|
||||||
)
|
|
||||||
end
|
|
||||||
|
|
||||||
network_scheme = argv[0]
|
transformations = argv[0]['transformations']
|
||||||
rv = {
|
rv = {
|
||||||
'use_ovs' => false
|
'use_ovs' => false
|
||||||
}
|
}
|
||||||
overrides = []
|
overrides = []
|
||||||
|
|
||||||
network_scheme['transformations'].each do |tr|
|
transformations.each do |tr|
|
||||||
# get all dependent ovs providers
|
# get all dependent ovs providers
|
||||||
if tr['provider'] =~ /ovs/
|
if tr['provider'] =~ /ovs/
|
||||||
if tr['action'] == 'add-patch'
|
if tr['action'] == 'add-patch'
|
||||||
|
@ -46,16 +33,25 @@ Puppet::Parser::Functions::newfunction( :remove_ovs_usage,
|
||||||
'provider' => 'lnx'
|
'provider' => 'lnx'
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
overrides << {
|
override_lnx = {
|
||||||
'action' => 'override',
|
'action' => 'override',
|
||||||
'override' => tr['name'],
|
'override' => tr['name'],
|
||||||
'provider' => 'lnx'
|
'provider' => 'lnx'
|
||||||
}
|
}
|
||||||
|
|
||||||
|
# handle vxlan mode
|
||||||
|
if tr['provider'] == 'dpdkovs'
|
||||||
|
bridge = transformations.select { |t| tr['bridge'] == t['name'] }
|
||||||
|
bridge_vlan_id = bridge[0]['vendor_specific']['vlan_id']
|
||||||
|
override_lnx.merge!({'name' => "#{tr['name']}.#{bridge_vlan_id}"}) if bridge_vlan_id
|
||||||
|
end
|
||||||
|
|
||||||
|
overrides << override_lnx
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
if ! overrides.empty?
|
unless overrides.empty?
|
||||||
rv['network_scheme'] = {
|
rv['network_scheme'] = {
|
||||||
'transformations' => overrides
|
'transformations' => overrides
|
||||||
}
|
}
|
||||||
|
|
|
@ -29,6 +29,15 @@ describe 'remove_ovs_usage' do
|
||||||
'bridge' => 'bridge-0',
|
'bridge' => 'bridge-0',
|
||||||
'action' => 'add-port',
|
'action' => 'add-port',
|
||||||
'name' => 'ethx',
|
'name' => 'ethx',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
'provider' => 'ovs',
|
||||||
|
'action' => 'add-br',
|
||||||
|
'name' => 'bridge-0',
|
||||||
|
'vendor_specific' => {
|
||||||
|
'datapath_type' => 'netdev',
|
||||||
|
'vlan_id' => 909,
|
||||||
|
},
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
}
|
}
|
||||||
|
@ -48,6 +57,12 @@ describe 'remove_ovs_usage' do
|
||||||
'action' => 'override',
|
'action' => 'override',
|
||||||
'override' => 'ethx',
|
'override' => 'ethx',
|
||||||
'provider' => 'lnx',
|
'provider' => 'lnx',
|
||||||
|
'name' => 'ethx.909',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
'action' => 'override',
|
||||||
|
'override' => 'bridge-0',
|
||||||
|
'provider' => 'lnx',
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
|
@ -91,8 +106,8 @@ describe 'remove_ovs_usage' do
|
||||||
end
|
end
|
||||||
|
|
||||||
it 'should expect 1 argument' do
|
it 'should expect 1 argument' do
|
||||||
is_expected.to run.with_params().and_raise_error(Puppet::ParseError)
|
is_expected.to run.with_params().and_raise_error(ArgumentError)
|
||||||
is_expected.to run.with_params(1, 2).and_raise_error(Puppet::ParseError)
|
is_expected.to run.with_params(1, 2).and_raise_error(ArgumentError)
|
||||||
end
|
end
|
||||||
|
|
||||||
it 'should expect a hash as given argument' do
|
it 'should expect a hash as given argument' do
|
||||||
|
|
Loading…
Reference in New Issue