Added geneve type_driver config options
Geneve type driver uses the vni_ranges and a new parameter called max_header_size. Change-Id: I968762e6078ab8ee4e073ac99527ddde6cc96bdc
This commit is contained in:
parent
4cbf6d1cba
commit
4731f243ea
@ -27,7 +27,7 @@
|
|||||||
# from the neutron.ml2.type_drivers namespace.
|
# from the neutron.ml2.type_drivers namespace.
|
||||||
# Could be an array that can have these elements:
|
# Could be an array that can have these elements:
|
||||||
# local, flat, vlan, gre, vxlan
|
# local, flat, vlan, gre, vxlan
|
||||||
# Defaults to ['local', 'flat', 'vlan', 'gre', 'vxlan'].
|
# Defaults to ['local', 'flat', 'vlan', 'gre', 'vxlan', 'geneve'].
|
||||||
#
|
#
|
||||||
# [*extension_drivers*]
|
# [*extension_drivers*]
|
||||||
# (optional) Ordered list of extension driver entrypoints to be loaded
|
# (optional) Ordered list of extension driver entrypoints to be loaded
|
||||||
@ -129,6 +129,11 @@
|
|||||||
# in the ml2 config.
|
# in the ml2 config.
|
||||||
# Defaults to false.
|
# Defaults to false.
|
||||||
#
|
#
|
||||||
|
# [*max_header_size*]
|
||||||
|
# (optional) Geneve encapsulation header size is dynamic, this value is used to calculate
|
||||||
|
# the maximum MTU for the driver.
|
||||||
|
# Defaults to $::os_service_default
|
||||||
|
#
|
||||||
|
|
||||||
class neutron::plugins::ml2 (
|
class neutron::plugins::ml2 (
|
||||||
$type_drivers = ['local', 'flat', 'vlan', 'gre', 'vxlan'],
|
$type_drivers = ['local', 'flat', 'vlan', 'gre', 'vxlan'],
|
||||||
@ -148,6 +153,7 @@ class neutron::plugins::ml2 (
|
|||||||
$physical_network_mtus = $::os_service_default,
|
$physical_network_mtus = $::os_service_default,
|
||||||
$path_mtu = 0,
|
$path_mtu = 0,
|
||||||
$purge_config = false,
|
$purge_config = false,
|
||||||
|
$max_header_size = $::os_service_default
|
||||||
) {
|
) {
|
||||||
|
|
||||||
include ::neutron::deps
|
include ::neutron::deps
|
||||||
@ -204,6 +210,7 @@ class neutron::plugins::ml2 (
|
|||||||
network_vlan_ranges => $network_vlan_ranges,
|
network_vlan_ranges => $network_vlan_ranges,
|
||||||
vni_ranges => $vni_ranges,
|
vni_ranges => $vni_ranges,
|
||||||
vxlan_group => $vxlan_group,
|
vxlan_group => $vxlan_group,
|
||||||
|
max_header_size => $max_header_size
|
||||||
}
|
}
|
||||||
|
|
||||||
neutron::plugins::ml2::mech_driver { $mechanism_drivers:
|
neutron::plugins::ml2::mech_driver { $mechanism_drivers:
|
||||||
|
@ -39,12 +39,17 @@
|
|||||||
# [*vxlan_group*]
|
# [*vxlan_group*]
|
||||||
# (required) Multicast group for VXLAN. If unset, disables VXLAN multicast mode.
|
# (required) Multicast group for VXLAN. If unset, disables VXLAN multicast mode.
|
||||||
#
|
#
|
||||||
|
# [*max_header_size*]
|
||||||
|
# (optional) Geneve encapsulation header size is dynamic, this value is used to calculate
|
||||||
|
# the maximum MTU for the driver.
|
||||||
|
#
|
||||||
define neutron::plugins::ml2::type_driver (
|
define neutron::plugins::ml2::type_driver (
|
||||||
$flat_networks,
|
$flat_networks,
|
||||||
$tunnel_id_ranges,
|
$tunnel_id_ranges,
|
||||||
$network_vlan_ranges,
|
$network_vlan_ranges,
|
||||||
$vni_ranges,
|
$vni_ranges,
|
||||||
$vxlan_group
|
$vxlan_group,
|
||||||
|
$max_header_size
|
||||||
){
|
){
|
||||||
|
|
||||||
include ::neutron::deps
|
include ::neutron::deps
|
||||||
@ -113,6 +118,16 @@ define neutron::plugins::ml2::type_driver (
|
|||||||
elsif ($name == 'midonet') or ($name == 'uplink') {
|
elsif ($name == 'midonet') or ($name == 'uplink') {
|
||||||
# midonet type driver has its own class separate from this one
|
# midonet type driver has its own class separate from this one
|
||||||
}
|
}
|
||||||
|
elsif ($name == 'geneve') {
|
||||||
|
validate_vni_ranges($vni_ranges)
|
||||||
|
if !is_service_default($max_header_size) {
|
||||||
|
validate_integer($max_header_size)
|
||||||
|
}
|
||||||
|
neutron_plugin_ml2 {
|
||||||
|
'ml2_type_geneve/max_header_size': value => $max_header_size;
|
||||||
|
'ml2_type_geneve/vni_ranges': value => join($vni_ranges,',');
|
||||||
|
}
|
||||||
|
}
|
||||||
else {
|
else {
|
||||||
# detect an invalid type_drivers value
|
# detect an invalid type_drivers value
|
||||||
fail('type_driver unknown.')
|
fail('type_driver unknown.')
|
||||||
|
@ -0,0 +1,4 @@
|
|||||||
|
---
|
||||||
|
features:
|
||||||
|
- Added geneve config options in type_drivers.
|
||||||
|
- Added max_header_size parameter to ml2 plugin for use in geneve configuration.
|
@ -209,6 +209,21 @@ describe 'neutron::plugins::ml2' do
|
|||||||
it_raises 'a Puppet::Error', /vni ranges are invalid./
|
it_raises 'a Puppet::Error', /vni ranges are invalid./
|
||||||
end
|
end
|
||||||
|
|
||||||
|
context 'when using geneve driver' do
|
||||||
|
before :each do
|
||||||
|
params.merge!(:type_drivers => ['local', 'flat', 'vlan', 'gre', 'vxlan', 'geneve'],
|
||||||
|
:vni_ranges => ['40:300','500:1000'],
|
||||||
|
:max_header_size => 50
|
||||||
|
)
|
||||||
|
end
|
||||||
|
|
||||||
|
it 'configures geneve with valid values' do
|
||||||
|
is_expected.to contain_neutron_plugin_ml2('ml2/type_drivers').with_value(p[:type_drivers].join(','))
|
||||||
|
is_expected.to contain_neutron_plugin_ml2('ml2_type_geneve/vni_ranges').with_value([p[:vni_ranges].join(',')])
|
||||||
|
is_expected.to contain_neutron_plugin_ml2('ml2_type_geneve/max_header_size').with_value(p[:max_header_size])
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
context 'with path_mtu set' do
|
context 'with path_mtu set' do
|
||||||
before :each do
|
before :each do
|
||||||
params.merge!(:path_mtu => '9000')
|
params.merge!(:path_mtu => '9000')
|
||||||
|
Loading…
Reference in New Issue
Block a user