Set OVSBOOTPROTO to dhcp when using dhcpv6 with OVS

In order for DHCPv6 to work with OVS, OVSBOOTPROTO must be set to dhcp.

Change-Id: Ifb22c2398f13725bc6341974d0841da197659fe8
Closes-Bug: 1883967
This commit is contained in:
Bob Fournier 2020-06-17 16:23:19 -04:00
parent d0fa8a7374
commit 247f54d71e
2 changed files with 26 additions and 3 deletions

View File

@ -464,7 +464,7 @@ class IfcfgNetConfig(os_net_config.NetConfig):
if isinstance(base_opt, objects.OvsBridge):
data += "DEVICETYPE=ovs\n"
data += "TYPE=OVSBridge\n"
if base_opt.use_dhcp:
if base_opt.use_dhcp or base_opt.use_dhcpv6:
data += "OVSBOOTPROTO=dhcp\n"
if base_opt.members:
members = [member.name for member in base_opt.members]
@ -481,7 +481,7 @@ class IfcfgNetConfig(os_net_config.NetConfig):
elif isinstance(base_opt, objects.OvsUserBridge):
data += "DEVICETYPE=ovs\n"
data += "TYPE=OVSUserBridge\n"
if base_opt.use_dhcp:
if base_opt.use_dhcp or base_opt.use_dhcpv6:
data += "OVSBOOTPROTO=dhcp\n"
if base_opt.members:
members = [member.name for member in base_opt.members]
@ -497,7 +497,7 @@ class IfcfgNetConfig(os_net_config.NetConfig):
self.bond_primary_ifaces[base_opt.name] = primary_name
data += "DEVICETYPE=ovs\n"
data += "TYPE=OVSBond\n"
if base_opt.use_dhcp:
if base_opt.use_dhcp or base_opt.use_dhcpv6:
data += "OVSBOOTPROTO=dhcp\n"
if base_opt.members:
members = [member.name for member in base_opt.members]

View File

@ -283,6 +283,19 @@ OVSBOOTPROTO=dhcp
OVSDHCPINTERFACES="em1"
"""
_OVS_BRIDGE_DHCPV6 = """# This file is autogenerated by os-net-config
DEVICE=br-ctlplane
ONBOOT=yes
HOTPLUG=no
NM_CONTROLLED=no
PEERDNS=no
DEVICETYPE=ovs
TYPE=OVSBridge
OVSBOOTPROTO=dhcp
IPV6INIT=yes
DHCPV6C=yes
"""
_NM_CONTROLLED_INTERFACE = _BASE_IFCFG_NETWORKMANAGER + """MASTER=bond1
SLAVE=yes
BOOTPROTO=none
@ -834,6 +847,16 @@ class TestIfcfgNetConfig(base.TestCase):
self.assertEqual(_OVS_BRIDGE_DHCP,
self.provider.bridge_data['br-ctlplane'])
def test_network_ovs_bridge_with_dhcpv6(self):
interface = objects.Interface('em1')
bridge = objects.OvsBridge('br-ctlplane', use_dhcpv6=True,
members=[interface])
self.provider.add_interface(interface)
self.provider.add_bridge(bridge)
self.assertEqual(_OVS_INTERFACE, self.get_interface_config())
self.assertEqual(_OVS_BRIDGE_DHCPV6,
self.provider.bridge_data['br-ctlplane'])
def test_network_ovs_bridge_with_standalone_fail_mode(self):
interface = objects.Interface('em1')
bridge = objects.OvsBridge('br-ctlplane', use_dhcp=True,