Add option to control IPv6 address mode
Add option ipv6_address_mode in undercloud.conf to control the address mode, dhcpv6-steteful or dhcpv6-steteless, for IPv6 provisioning network. Related-Bug: #1847606 Change-Id: I7de5f5487065d20068229e0d34102be6119fbeef
This commit is contained in:
parent
8cf2f8771b
commit
d5e3726999
@ -0,0 +1,12 @@
|
||||
---
|
||||
features:
|
||||
- |
|
||||
The IPv6 addressing mode is now configurable for the undercloud
|
||||
provisioning network. The option ``ipv6_address_mode`` (default:
|
||||
``dhpcv6-stateless``) in undercloud.conf is used to control the addressing
|
||||
mode. Possible values:
|
||||
|
||||
- **dhpcv6-stateless**: Address configuration using RA and optional
|
||||
information using DHCPv6.
|
||||
- **dhcpv6-stateful**: Address configuration and optional information
|
||||
using DHCPv6.
|
@ -346,6 +346,19 @@ class UndercloudConfig(StandaloneConfig):
|
||||
'values is: %s') %
|
||||
' '.join(constants.ADDITIONAL_ARCHITECTURES))
|
||||
),
|
||||
cfg.StrOpt('ipv6_address_mode',
|
||||
default='dhcpv6-stateless',
|
||||
choices=[
|
||||
('dhcpv6-stateless', 'Address configuration using '
|
||||
'RA and optional information '
|
||||
'using DHCPv6.'),
|
||||
('dhcpv6-stateful', 'Address configuration and '
|
||||
'optional information using '
|
||||
'DHCPv6.')
|
||||
],
|
||||
help=(_('IPv6 address configuration mode for the '
|
||||
'undercloud provisioning network.'))
|
||||
),
|
||||
]
|
||||
return self.sort_opts(_base_opts + _opts)
|
||||
|
||||
|
@ -50,6 +50,7 @@ class TestUndercloudConfig(base.TestCase):
|
||||
'inspection_interface',
|
||||
'inspection_runbench',
|
||||
'ipa_otp',
|
||||
'ipv6_address_mode',
|
||||
'ipxe_enabled',
|
||||
'local_interface',
|
||||
'local_ip',
|
||||
@ -115,6 +116,7 @@ class TestUndercloudConfig(base.TestCase):
|
||||
'inspection_interface',
|
||||
'inspection_runbench',
|
||||
'ipa_otp',
|
||||
'ipv6_address_mode',
|
||||
'ipxe_enabled',
|
||||
'local_interface',
|
||||
'local_ip',
|
||||
|
@ -175,7 +175,9 @@ class TestNetworkSettings(base.TestCase):
|
||||
'DnsNameServers': ['10.10.10.10', '10.10.10.11'],
|
||||
'HostRoutes': [],
|
||||
'NetworkCidr': '192.168.24.0/24',
|
||||
'NetworkGateway': '192.168.24.1'}}}
|
||||
'NetworkGateway': '192.168.24.1'}},
|
||||
'UndercloudCtlplaneIPv6AddressMode': 'dhcpv6-stateless',
|
||||
}
|
||||
self.assertEqual(expected, env)
|
||||
|
||||
def test_ipv6_control_plane(self):
|
||||
@ -221,7 +223,9 @@ class TestNetworkSettings(base.TestCase):
|
||||
'fd12:3456:789a:1::6'],
|
||||
'HostRoutes': [],
|
||||
'NetworkCidr': 'fd12:3456:789a:1::/64',
|
||||
'NetworkGateway': 'fd12:3456:789a:1::1'}}}
|
||||
'NetworkGateway': 'fd12:3456:789a:1::1'}},
|
||||
'UndercloudCtlplaneIPv6AddressMode': 'dhcpv6-stateless',
|
||||
}
|
||||
self.assertEqual(expected, env)
|
||||
|
||||
def test_nameserver_toomany_fail(self):
|
||||
@ -295,7 +299,9 @@ class TestNetworkSettings(base.TestCase):
|
||||
'DnsNameServers': ['10.10.10.10', '10.10.10.11'],
|
||||
'HostRoutes': [],
|
||||
'NetworkCidr': '192.168.24.0/24',
|
||||
'NetworkGateway': '192.168.24.1'}}}
|
||||
'NetworkGateway': '192.168.24.1'}},
|
||||
'UndercloudCtlplaneIPv6AddressMode': 'dhcpv6-stateless',
|
||||
}
|
||||
self.assertEqual(expected, env)
|
||||
|
||||
def test_ignore_dhcp_start_end_if_default_but_cidr_not_default(self):
|
||||
@ -323,7 +329,9 @@ class TestNetworkSettings(base.TestCase):
|
||||
'DnsNameServers': ['10.10.10.10', '10.10.10.11'],
|
||||
'HostRoutes': [],
|
||||
'NetworkCidr': '192.168.10.0/24',
|
||||
'NetworkGateway': '192.168.10.1'}}}
|
||||
'NetworkGateway': '192.168.10.1'}},
|
||||
'UndercloudCtlplaneIPv6AddressMode': 'dhcpv6-stateless',
|
||||
}
|
||||
self.assertEqual(expected, env)
|
||||
|
||||
def test_dhcp_exclude(self):
|
||||
@ -355,7 +363,9 @@ class TestNetworkSettings(base.TestCase):
|
||||
'DnsNameServers': ['10.10.10.10', '10.10.10.11'],
|
||||
'HostRoutes': [],
|
||||
'NetworkCidr': '192.168.10.0/24',
|
||||
'NetworkGateway': '192.168.10.1'}}}
|
||||
'NetworkGateway': '192.168.10.1'}},
|
||||
'UndercloudCtlplaneIPv6AddressMode': 'dhcpv6-stateless',
|
||||
}
|
||||
self.assertEqual(expected, env)
|
||||
|
||||
def test_no_dhcp_start_no_dhcp_end(self):
|
||||
@ -382,7 +392,9 @@ class TestNetworkSettings(base.TestCase):
|
||||
'DnsNameServers': ['10.10.10.10', '10.10.10.11'],
|
||||
'HostRoutes': [],
|
||||
'NetworkCidr': '192.168.24.0/24',
|
||||
'NetworkGateway': '192.168.24.1'}}}
|
||||
'NetworkGateway': '192.168.24.1'}},
|
||||
'UndercloudCtlplaneIPv6AddressMode': 'dhcpv6-stateless',
|
||||
}
|
||||
self.assertEqual(expected, env)
|
||||
|
||||
def test_dhcp_start_no_dhcp_end(self):
|
||||
@ -409,7 +421,9 @@ class TestNetworkSettings(base.TestCase):
|
||||
'DnsNameServers': ['10.10.10.10', '10.10.10.11'],
|
||||
'HostRoutes': [],
|
||||
'NetworkCidr': '192.168.24.0/24',
|
||||
'NetworkGateway': '192.168.24.1'}}
|
||||
'NetworkGateway': '192.168.24.1'},
|
||||
},
|
||||
'UndercloudCtlplaneIPv6AddressMode': 'dhcpv6-stateless',
|
||||
}
|
||||
self.assertEqual(expected, env)
|
||||
|
||||
@ -437,7 +451,9 @@ class TestNetworkSettings(base.TestCase):
|
||||
'DnsNameServers': ['10.10.10.10', '10.10.10.11'],
|
||||
'HostRoutes': [],
|
||||
'NetworkCidr': '192.168.24.0/24',
|
||||
'NetworkGateway': '192.168.24.1'}}
|
||||
'NetworkGateway': '192.168.24.1'},
|
||||
},
|
||||
'UndercloudCtlplaneIPv6AddressMode': 'dhcpv6-stateless',
|
||||
}
|
||||
self.assertEqual(expected, env)
|
||||
|
||||
@ -527,7 +543,8 @@ class TestNetworkSettings(base.TestCase):
|
||||
'HostRoutes': [],
|
||||
'NetworkCidr': '192.168.20.0/24',
|
||||
'NetworkGateway': '192.168.20.254'}
|
||||
}
|
||||
},
|
||||
'UndercloudCtlplaneIPv6AddressMode': 'dhcpv6-stateless',
|
||||
}
|
||||
self.assertEqual(expected, env)
|
||||
|
||||
@ -603,7 +620,8 @@ class TestNetworkSettings(base.TestCase):
|
||||
'HostRoutes': [],
|
||||
'NetworkCidr': '192.168.20.0/24',
|
||||
'NetworkGateway': '192.168.20.254'}
|
||||
}
|
||||
},
|
||||
'UndercloudCtlplaneIPv6AddressMode': 'dhcpv6-stateless',
|
||||
}
|
||||
self.assertEqual(expected, env)
|
||||
|
||||
@ -654,7 +672,8 @@ class TestNetworkSettings(base.TestCase):
|
||||
'HostRoutes': [],
|
||||
'NetworkCidr': '192.168.10.0/24',
|
||||
'NetworkGateway': '192.168.10.254'}
|
||||
}
|
||||
},
|
||||
'UndercloudCtlplaneIPv6AddressMode': 'dhcpv6-stateless',
|
||||
}
|
||||
self.assertEqual(expected, env)
|
||||
|
||||
@ -707,7 +726,8 @@ class TestNetworkSettings(base.TestCase):
|
||||
'HostRoutes': [],
|
||||
'NetworkCidr': '192.168.10.0/24',
|
||||
'NetworkGateway': '192.168.10.222'}
|
||||
}
|
||||
},
|
||||
'UndercloudCtlplaneIPv6AddressMode': 'dhcpv6-stateless',
|
||||
}
|
||||
self.assertEqual(expected, env)
|
||||
|
||||
@ -795,7 +815,8 @@ class TestNetworkSettings(base.TestCase):
|
||||
'nexthop': '192.168.20.254'}],
|
||||
'NetworkCidr': '192.168.20.0/24',
|
||||
'NetworkGateway': '192.168.20.254'}
|
||||
}
|
||||
},
|
||||
'UndercloudCtlplaneIPv6AddressMode': 'dhcpv6-stateless'
|
||||
}
|
||||
self.assertEqual(expected, env)
|
||||
|
||||
|
@ -331,6 +331,7 @@ def _process_network_args(env):
|
||||
env['IronicInspectorSubnets'] = _generate_inspection_subnets()
|
||||
env['ControlPlaneStaticRoutes'] = _generate_subnets_static_routes()
|
||||
env['UndercloudCtlplaneSubnets'] = {}
|
||||
env['UndercloudCtlplaneIPv6AddressMode'] = CONF['ipv6_address_mode']
|
||||
for subnet in CONF.subnets:
|
||||
s = CONF.get(subnet)
|
||||
env['UndercloudCtlplaneSubnets'][subnet] = {
|
||||
|
Loading…
x
Reference in New Issue
Block a user