ovn: Support options related to OVN's native DHCP

Change-Id: I6f136315f781d581e808906a85ef54740e8ba7a8
This commit is contained in:
Takashi Kajinami 2024-02-12 23:25:45 +09:00
parent 68cceacff2
commit 4c8188efc0
3 changed files with 59 additions and 3 deletions

View File

@ -95,6 +95,21 @@
# Type: String
# Defaults to $facts['os_service_default']
#
# [*dhcp_default_lease_time*]
# (optional) Default lease time (in seconds) to use with OVN's native DHCP
# service.
# Defaults to $facts['os_service_default']
#
# [*ovn_dhcp4_global_options*]
# (optional) Global DHCP6 options which will be automatically set on each
# subnet upon creation and on all existing subnets when Neutron starts.
# Defaults to $facts['os_service_default']
#
# [*ovn_dhcp6_global_options*]
# (optional) Global DHCP6 options which will be automatically set on each
# subnet upon creation and on all existing subnets when Neutron starts.
# Defaults to $facts['os_service_default']
#
# [*ovn_emit_need_to_frag*]
# (optional) Configure OVN to emit "need to frag" packets in case
# of MTU mismatch. Before enabling this configuration make
@ -170,6 +185,9 @@ class neutron::plugins::ml2::ovn(
$disable_ovn_dhcp_for_baremetal_ports = $facts['os_service_default'],
$dns_servers = $facts['os_service_default'],
$vhostuser_socket_dir = $facts['os_service_default'],
$dhcp_default_lease_time = $facts['os_service_default'],
$ovn_dhcp4_global_options = $facts['os_service_default'],
$ovn_dhcp6_global_options = $facts['os_service_default'],
$ovn_emit_need_to_frag = $facts['os_service_default'],
$localnet_learn_fdb = $facts['os_service_default'],
$fdb_age_threshold = $facts['os_service_default'],
@ -189,6 +207,15 @@ class neutron::plugins::ml2::ovn(
fail( 'Invalid value for neutron_sync_mode parameter' )
}
$ovn_dhcp4_global_options_real = $ovn_dhcp4_global_options ? {
Hash => join(join_keys_to_values($ovn_dhcp4_global_options, ':'), ','),
default => join(any2array($ovn_dhcp4_global_options), ',')
}
$ovn_dhcp6_global_options_real = $ovn_dhcp6_global_options ? {
Hash => join(join_keys_to_values($ovn_dhcp6_global_options, ':'), ','),
default => join(any2array($ovn_dhcp6_global_options), ',')
}
neutron_plugin_ml2 {
'ovn/ovn_nb_connection' : value => join(any2array($ovn_nb_connection), ',');
'ovn/ovn_sb_connection' : value => join(any2array($ovn_sb_connection), ',');
@ -207,6 +234,9 @@ class neutron::plugins::ml2::ovn(
'ovn/disable_ovn_dhcp_for_baremetal_ports': value => $disable_ovn_dhcp_for_baremetal_ports;
'ovn/dns_servers' : value => join(any2array($dns_servers), ',');
'ovn/vhost_sock_dir' : value => $vhostuser_socket_dir;
'ovn/dhcp_default_lease_time' : value => $dhcp_default_lease_time;
'ovn/ovn_dhcp4_global_options' : value => $ovn_dhcp4_global_options_real;
'ovn/ovn_dhcp6_global_options' : value => $ovn_dhcp6_global_options_real;
'ovn/ovn_emit_need_to_frag' : value => $ovn_emit_need_to_frag;
'ovn/localnet_learn_fdb' : value => $localnet_learn_fdb;
'ovn/fdb_age_threshold' : value => $fdb_age_threshold;

View File

@ -0,0 +1,9 @@
---
features:
- |
The following parameters have been added to
the ``neutron::plugins::ml2::ovn`` class.
- ``dhcp_default_lease_time``
- ``ovn_dhcp4_global_options``
- ``ovn_dhcp6_global_options``

View File

@ -27,6 +27,9 @@ describe 'neutron::plugins::ml2::ovn' do
:disable_ovn_dhcp_for_baremetal_ports => '<SERVICE DEFAULT>',
:dns_servers => '<SERVICE DEFAULT>',
:vhostuser_socket_dir => '<SERVICE DEFAULT>',
:dhcp_default_lease_time => '<SERVICE DEFAULT>',
:ovn_dhcp4_global_options => '<SERVICE DEFAULT>',
:ovn_dhcp6_global_options => '<SERVICE DEFAULT>',
:ovn_emit_need_to_frag => '<SERVICE DEFAULT>',
:localnet_learn_fdb => '<SERVICE DEFAULT>',
:fdb_age_threshold => '<SERVICE DEFAULT>',
@ -68,6 +71,9 @@ describe 'neutron::plugins::ml2::ovn' do
should contain_neutron_plugin_ml2('ovn/disable_ovn_dhcp_for_baremetal_ports').with_value(p[:disable_ovn_dhcp_for_baremetal_ports])
should contain_neutron_plugin_ml2('ovn/dns_servers').with_value(p[:dns_servers])
should contain_neutron_plugin_ml2('ovn/vhost_sock_dir').with_value(p[:vhostuser_socket_dir])
should contain_neutron_plugin_ml2('ovn/dhcp_default_lease_time').with_value(p[:dhcp_default_lease_time])
should contain_neutron_plugin_ml2('ovn/ovn_dhcp4_global_options').with_value(p[:ovn_dhcp4_global_options])
should contain_neutron_plugin_ml2('ovn/ovn_dhcp6_global_options').with_value(p[:ovn_dhcp6_global_options])
should contain_neutron_plugin_ml2('ovn/ovn_emit_need_to_frag').with_value(p[:ovn_emit_need_to_frag])
should contain_neutron_plugin_ml2('ovn/localnet_learn_fdb').with_value(p[:localnet_learn_fdb])
should contain_neutron_plugin_ml2('ovn/fdb_age_threshold').with_value(p[:fdb_age_threshold])
@ -99,6 +105,10 @@ describe 'neutron::plugins::ml2::ovn' do
:dvr_enabled => false,
:disable_ovn_dhcp_for_baremetal_ports => false,
:dns_servers => '8.8.8.8,10.10.10.10',
:vhostuser_socket_dir => '/var/run/openvswitch',
:dhcp_default_lease_time => 43200,
:ovn_dhcp4_global_options => 'ntp_server:1.2.3.4',
:ovn_dhcp6_global_options => 'ntp_server:5.6.7.8',
:ovn_emit_need_to_frag => false,
:localnet_learn_fdb => false,
:fdb_age_threshold => 10,
@ -126,6 +136,9 @@ describe 'neutron::plugins::ml2::ovn' do
should contain_neutron_plugin_ml2('ovn/disable_ovn_dhcp_for_baremetal_ports').with_value(p[:disable_ovn_dhcp_for_baremetal_ports])
should contain_neutron_plugin_ml2('ovn/dns_servers').with_value(p[:dns_servers])
should contain_neutron_plugin_ml2('ovn/vhost_sock_dir').with_value(p[:vhostuser_socket_dir])
should contain_neutron_plugin_ml2('ovn/dhcp_default_lease_time').with_value(p[:dhcp_default_lease_time])
should contain_neutron_plugin_ml2('ovn/ovn_dhcp4_global_options').with_value(p[:ovn_dhcp4_global_options])
should contain_neutron_plugin_ml2('ovn/ovn_dhcp6_global_options').with_value(p[:ovn_dhcp6_global_options])
should contain_neutron_plugin_ml2('ovn/ovn_emit_need_to_frag').with_value(p[:ovn_emit_need_to_frag])
should contain_neutron_plugin_ml2('ovn/localnet_learn_fdb').with_value(p[:localnet_learn_fdb])
should contain_neutron_plugin_ml2('ovn/fdb_age_threshold').with_value(p[:fdb_age_threshold])
@ -154,9 +167,11 @@ describe 'neutron::plugins::ml2::ovn' do
context 'with parameters set by arrays' do
let :params do
{
:ovn_nb_connection => ['tcp:192.0.2.11:6641', 'tcp:192.0.2.12:6641'],
:ovn_sb_connection => ['tcp:192.0.2.11:6642', 'tcp:192.0.2.12:6642'],
:dns_servers => ['8.8.8.8', '10.10.10.10'],
:ovn_nb_connection => ['tcp:192.0.2.11:6641', 'tcp:192.0.2.12:6641'],
:ovn_sb_connection => ['tcp:192.0.2.11:6642', 'tcp:192.0.2.12:6642'],
:dns_servers => ['8.8.8.8', '10.10.10.10'],
:ovn_dhcp4_global_options => ['ntp_server:1.2.3.4', 'wpad:1.2.3.5'],
:ovn_dhcp6_global_options => ['ntp_server:5.6.7.8', 'wpad:5.6.7.9'],
}
end
@ -164,6 +179,8 @@ describe 'neutron::plugins::ml2::ovn' do
should contain_neutron_plugin_ml2('ovn/ovn_nb_connection').with_value(p[:ovn_nb_connection].join(','))
should contain_neutron_plugin_ml2('ovn/ovn_sb_connection').with_value(p[:ovn_sb_connection].join(','))
should contain_neutron_plugin_ml2('ovn/dns_servers').with_value(p[:dns_servers].join(','))
should contain_neutron_plugin_ml2('ovn/ovn_dhcp4_global_options').with_value(p[:ovn_dhcp4_global_options].join(','))
should contain_neutron_plugin_ml2('ovn/ovn_dhcp6_global_options').with_value(p[:ovn_dhcp6_global_options].join(','))
end
end
end