Allow per-subnet DNSNameServers for ctlplane network
Add a new option ``dns_nameservers`` in the subnet sections for the undercloud ctlplane network. By default the option is not set, and in that case the ``undercloud_nameservers`` are used, maintaining the current behaviour. This decouples the nameservers used on the undercloud and the ones used for the overcloud nodes. In a DCN setting different DNS server may be preferred per-site. Related-Bug: #1834306 Change-Id: I0dc03eddf9ea00ff33cd3ae0cdc8f42a4961e89c
This commit is contained in:
parent
6627c4c2e0
commit
ee16c09447
@ -51,6 +51,10 @@ HOST_ROUTES_HELP_STR = _(
|
|||||||
'Host routes for the Neutron-managed subnet for the Overcloud instances '
|
'Host routes for the Neutron-managed subnet for the Overcloud instances '
|
||||||
'on this network. The host routes on the local_subnet will also be '
|
'on this network. The host routes on the local_subnet will also be '
|
||||||
'configured on the undercloud.')
|
'configured on the undercloud.')
|
||||||
|
DNS_NAMESERVERS_HELP_STR = _(
|
||||||
|
'DNS nameservers for the Neutron-managed subnet for the Overcloud '
|
||||||
|
'instances on this network. If no nameservers are defined for the subnet, '
|
||||||
|
'the nameservers defined for undercloud_nameservers will be used.')
|
||||||
|
|
||||||
# Deprecated options
|
# Deprecated options
|
||||||
_deprecated_opt_network_gateway = [cfg.DeprecatedOpt(
|
_deprecated_opt_network_gateway = [cfg.DeprecatedOpt(
|
||||||
@ -385,6 +389,9 @@ class UndercloudConfig(StandaloneConfig):
|
|||||||
sample_default=('[{destination: 10.10.10.0/24, '
|
sample_default=('[{destination: 10.10.10.0/24, '
|
||||||
'nexthop: 192.168.24.1}]'),
|
'nexthop: 192.168.24.1}]'),
|
||||||
help=HOST_ROUTES_HELP_STR),
|
help=HOST_ROUTES_HELP_STR),
|
||||||
|
cfg.ListOpt('dns_nameservers',
|
||||||
|
default=constants.CTLPLANE_DNS_NAMESERVERS_DEFAULT,
|
||||||
|
help=DNS_NAMESERVERS_HELP_STR),
|
||||||
]
|
]
|
||||||
return self.sort_opts(_subnets_opts)
|
return self.sort_opts(_subnets_opts)
|
||||||
|
|
||||||
@ -413,6 +420,9 @@ class UndercloudConfig(StandaloneConfig):
|
|||||||
bounds=True,
|
bounds=True,
|
||||||
default=[],
|
default=[],
|
||||||
help=HOST_ROUTES_HELP_STR),
|
help=HOST_ROUTES_HELP_STR),
|
||||||
|
cfg.ListOpt('dns_nameservers',
|
||||||
|
default=constants.CTLPLANE_DNS_NAMESERVERS_DEFAULT,
|
||||||
|
help=DNS_NAMESERVERS_HELP_STR),
|
||||||
]
|
]
|
||||||
return self.sort_opts(_subnets_opts)
|
return self.sort_opts(_subnets_opts)
|
||||||
|
|
||||||
|
@ -100,6 +100,7 @@ CTLPLANE_DHCP_START_DEFAULT = ['192.168.24.5']
|
|||||||
CTLPLANE_DHCP_END_DEFAULT = ['192.168.24.24']
|
CTLPLANE_DHCP_END_DEFAULT = ['192.168.24.24']
|
||||||
CTLPLANE_INSPECTION_IPRANGE_DEFAULT = '192.168.24.100,192.168.24.120'
|
CTLPLANE_INSPECTION_IPRANGE_DEFAULT = '192.168.24.100,192.168.24.120'
|
||||||
CTLPLANE_GATEWAY_DEFAULT = '192.168.24.1'
|
CTLPLANE_GATEWAY_DEFAULT = '192.168.24.1'
|
||||||
|
CTLPLANE_DNS_NAMESERVERS_DEFAULT = []
|
||||||
|
|
||||||
# Ansible parameters used for the actions being
|
# Ansible parameters used for the actions being
|
||||||
# executed during tripleo deploy/upgrade.
|
# executed during tripleo deploy/upgrade.
|
||||||
|
@ -148,6 +148,7 @@ class TestUndercloudConfig(base.TestCase):
|
|||||||
'dhcp_end',
|
'dhcp_end',
|
||||||
'dhcp_exclude',
|
'dhcp_exclude',
|
||||||
'dhcp_start',
|
'dhcp_start',
|
||||||
|
'dns_nameservers',
|
||||||
'gateway',
|
'gateway',
|
||||||
'host_routes',
|
'host_routes',
|
||||||
'inspection_iprange',
|
'inspection_iprange',
|
||||||
|
@ -131,7 +131,8 @@ class TestNetworkSettings(base.TestCase):
|
|||||||
fixtures.MockPatch('tripleoclient.utils.load_config'))
|
fixtures.MockPatch('tripleoclient.utils.load_config'))
|
||||||
self.conf.config(local_ip='192.168.24.1/24',
|
self.conf.config(local_ip='192.168.24.1/24',
|
||||||
undercloud_admin_host='192.168.24.3',
|
undercloud_admin_host='192.168.24.3',
|
||||||
undercloud_public_host='192.168.24.2')
|
undercloud_public_host='192.168.24.2',
|
||||||
|
undercloud_nameservers=['10.10.10.10', '10.10.10.11'])
|
||||||
# ctlplane network - config group options
|
# ctlplane network - config group options
|
||||||
self.grp0 = cfg.OptGroup(name='ctlplane-subnet',
|
self.grp0 = cfg.OptGroup(name='ctlplane-subnet',
|
||||||
title='ctlplane-subnet')
|
title='ctlplane-subnet')
|
||||||
@ -144,7 +145,8 @@ class TestNetworkSettings(base.TestCase):
|
|||||||
cfg.BoolOpt('masquerade'),
|
cfg.BoolOpt('masquerade'),
|
||||||
cfg.ListOpt('host_routes',
|
cfg.ListOpt('host_routes',
|
||||||
item_type=cfg.types.Dict(bounds=True),
|
item_type=cfg.types.Dict(bounds=True),
|
||||||
bounds=True,)]
|
bounds=True,),
|
||||||
|
cfg.ListOpt('dns_nameservers')]
|
||||||
self.conf.register_opts(self.opts, group=self.grp0)
|
self.conf.register_opts(self.opts, group=self.grp0)
|
||||||
self.grp1 = cfg.OptGroup(name='subnet1', title='subnet1')
|
self.grp1 = cfg.OptGroup(name='subnet1', title='subnet1')
|
||||||
self.grp2 = cfg.OptGroup(name='subnet2', title='subnet2')
|
self.grp2 = cfg.OptGroup(name='subnet2', title='subnet2')
|
||||||
@ -156,14 +158,15 @@ class TestNetworkSettings(base.TestCase):
|
|||||||
gateway='192.168.24.1',
|
gateway='192.168.24.1',
|
||||||
masquerade=False,
|
masquerade=False,
|
||||||
host_routes=[],
|
host_routes=[],
|
||||||
|
dns_nameservers=[],
|
||||||
group='ctlplane-subnet')
|
group='ctlplane-subnet')
|
||||||
|
|
||||||
def test_default(self):
|
def test_default(self):
|
||||||
env = {}
|
env = {}
|
||||||
undercloud_config._process_network_args(env)
|
undercloud_config._process_network_args(env)
|
||||||
expected = {
|
expected = {
|
||||||
|
'DnsServers': '10.10.10.10,10.10.10.11',
|
||||||
'ControlPlaneStaticRoutes': [],
|
'ControlPlaneStaticRoutes': [],
|
||||||
'DnsServers': '',
|
|
||||||
'IronicInspectorSubnets': [
|
'IronicInspectorSubnets': [
|
||||||
{'gateway': '192.168.24.1',
|
{'gateway': '192.168.24.1',
|
||||||
'host_routes': [],
|
'host_routes': [],
|
||||||
@ -175,6 +178,7 @@ class TestNetworkSettings(base.TestCase):
|
|||||||
'ctlplane-subnet': {
|
'ctlplane-subnet': {
|
||||||
'AllocationPools': [
|
'AllocationPools': [
|
||||||
{'start': '192.168.24.5', 'end': '192.168.24.24'}],
|
{'start': '192.168.24.5', 'end': '192.168.24.24'}],
|
||||||
|
'DnsNameServers': ['10.10.10.10', '10.10.10.11'],
|
||||||
'HostRoutes': [],
|
'HostRoutes': [],
|
||||||
'NetworkCidr': '192.168.24.0/24',
|
'NetworkCidr': '192.168.24.0/24',
|
||||||
'NetworkGateway': '192.168.24.1'}}}
|
'NetworkGateway': '192.168.24.1'}}}
|
||||||
@ -189,6 +193,8 @@ class TestNetworkSettings(base.TestCase):
|
|||||||
dhcp_start='fd12:3456:789a:1::10',
|
dhcp_start='fd12:3456:789a:1::10',
|
||||||
dhcp_end='fd12:3456:789a:1::20',
|
dhcp_end='fd12:3456:789a:1::20',
|
||||||
dhcp_exclude=[],
|
dhcp_exclude=[],
|
||||||
|
dns_nameservers=['fd12:3456:789a:1::5',
|
||||||
|
'fd12:3456:789a:1::6'],
|
||||||
inspection_iprange=('fd12:3456:789a:1::30,'
|
inspection_iprange=('fd12:3456:789a:1::30,'
|
||||||
'fd12:3456:789a:1::40'),
|
'fd12:3456:789a:1::40'),
|
||||||
gateway='fd12:3456:789a:1::1',
|
gateway='fd12:3456:789a:1::1',
|
||||||
@ -203,7 +209,7 @@ class TestNetworkSettings(base.TestCase):
|
|||||||
'RedisIPv6': True,
|
'RedisIPv6': True,
|
||||||
'MysqlIPv6': True,
|
'MysqlIPv6': True,
|
||||||
'ControlPlaneStaticRoutes': [],
|
'ControlPlaneStaticRoutes': [],
|
||||||
'DnsServers': '',
|
'DnsServers': '10.10.10.10,10.10.10.11',
|
||||||
'IronicInspectorSubnets': [
|
'IronicInspectorSubnets': [
|
||||||
{'gateway': 'fd12:3456:789a:1::1',
|
{'gateway': 'fd12:3456:789a:1::1',
|
||||||
'host_routes': [],
|
'host_routes': [],
|
||||||
@ -216,6 +222,8 @@ class TestNetworkSettings(base.TestCase):
|
|||||||
'AllocationPools': [
|
'AllocationPools': [
|
||||||
{'start': 'fd12:3456:789a:1::10',
|
{'start': 'fd12:3456:789a:1::10',
|
||||||
'end': 'fd12:3456:789a:1::20'}],
|
'end': 'fd12:3456:789a:1::20'}],
|
||||||
|
'DnsNameServers': ['fd12:3456:789a:1::5',
|
||||||
|
'fd12:3456:789a:1::6'],
|
||||||
'HostRoutes': [],
|
'HostRoutes': [],
|
||||||
'NetworkCidr': 'fd12:3456:789a:1::/64',
|
'NetworkCidr': 'fd12:3456:789a:1::/64',
|
||||||
'NetworkGateway': 'fd12:3456:789a:1::1'}}}
|
'NetworkGateway': 'fd12:3456:789a:1::1'}}}
|
||||||
@ -237,8 +245,8 @@ class TestNetworkSettings(base.TestCase):
|
|||||||
env = {}
|
env = {}
|
||||||
undercloud_config._process_network_args(env)
|
undercloud_config._process_network_args(env)
|
||||||
expected = {
|
expected = {
|
||||||
|
'DnsServers': '10.10.10.10,10.10.10.11',
|
||||||
'ControlPlaneStaticRoutes': [],
|
'ControlPlaneStaticRoutes': [],
|
||||||
'DnsServers': '',
|
|
||||||
'IronicInspectorSubnets': [
|
'IronicInspectorSubnets': [
|
||||||
{'gateway': '192.168.24.1',
|
{'gateway': '192.168.24.1',
|
||||||
'host_routes': [],
|
'host_routes': [],
|
||||||
@ -251,6 +259,7 @@ class TestNetworkSettings(base.TestCase):
|
|||||||
'AllocationPools': [
|
'AllocationPools': [
|
||||||
{'start': '192.168.24.4', 'end': '192.168.24.99'},
|
{'start': '192.168.24.4', 'end': '192.168.24.99'},
|
||||||
{'start': '192.168.24.121', 'end': '192.168.24.254'}],
|
{'start': '192.168.24.121', 'end': '192.168.24.254'}],
|
||||||
|
'DnsNameServers': ['10.10.10.10', '10.10.10.11'],
|
||||||
'HostRoutes': [],
|
'HostRoutes': [],
|
||||||
'NetworkCidr': '192.168.24.0/24',
|
'NetworkCidr': '192.168.24.0/24',
|
||||||
'NetworkGateway': '192.168.24.1'}}}
|
'NetworkGateway': '192.168.24.1'}}}
|
||||||
@ -264,8 +273,8 @@ class TestNetworkSettings(base.TestCase):
|
|||||||
env = {}
|
env = {}
|
||||||
undercloud_config._process_network_args(env)
|
undercloud_config._process_network_args(env)
|
||||||
expected = {
|
expected = {
|
||||||
|
'DnsServers': '10.10.10.10,10.10.10.11',
|
||||||
'ControlPlaneStaticRoutes': [],
|
'ControlPlaneStaticRoutes': [],
|
||||||
'DnsServers': '',
|
|
||||||
'IronicInspectorSubnets': [
|
'IronicInspectorSubnets': [
|
||||||
{'gateway': '192.168.10.1',
|
{'gateway': '192.168.10.1',
|
||||||
'host_routes': [],
|
'host_routes': [],
|
||||||
@ -278,6 +287,7 @@ class TestNetworkSettings(base.TestCase):
|
|||||||
'AllocationPools': [
|
'AllocationPools': [
|
||||||
{'start': '192.168.10.2', 'end': '192.168.10.99'},
|
{'start': '192.168.10.2', 'end': '192.168.10.99'},
|
||||||
{'start': '192.168.10.121', 'end': '192.168.10.254'}],
|
{'start': '192.168.10.121', 'end': '192.168.10.254'}],
|
||||||
|
'DnsNameServers': ['10.10.10.10', '10.10.10.11'],
|
||||||
'HostRoutes': [],
|
'HostRoutes': [],
|
||||||
'NetworkCidr': '192.168.10.0/24',
|
'NetworkCidr': '192.168.10.0/24',
|
||||||
'NetworkGateway': '192.168.10.1'}}}
|
'NetworkGateway': '192.168.10.1'}}}
|
||||||
@ -293,8 +303,8 @@ class TestNetworkSettings(base.TestCase):
|
|||||||
env = {}
|
env = {}
|
||||||
undercloud_config._process_network_args(env)
|
undercloud_config._process_network_args(env)
|
||||||
expected = {
|
expected = {
|
||||||
|
'DnsServers': '10.10.10.10,10.10.10.11',
|
||||||
'ControlPlaneStaticRoutes': [],
|
'ControlPlaneStaticRoutes': [],
|
||||||
'DnsServers': '',
|
|
||||||
'IronicInspectorSubnets': [
|
'IronicInspectorSubnets': [
|
||||||
{'gateway': '192.168.10.1',
|
{'gateway': '192.168.10.1',
|
||||||
'host_routes': [],
|
'host_routes': [],
|
||||||
@ -309,6 +319,7 @@ class TestNetworkSettings(base.TestCase):
|
|||||||
{'start': '192.168.10.51', 'end': '192.168.10.79'},
|
{'start': '192.168.10.51', 'end': '192.168.10.79'},
|
||||||
{'start': '192.168.10.90', 'end': '192.168.10.99'},
|
{'start': '192.168.10.90', 'end': '192.168.10.99'},
|
||||||
{'start': '192.168.10.121', 'end': '192.168.10.254'}],
|
{'start': '192.168.10.121', 'end': '192.168.10.254'}],
|
||||||
|
'DnsNameServers': ['10.10.10.10', '10.10.10.11'],
|
||||||
'HostRoutes': [],
|
'HostRoutes': [],
|
||||||
'NetworkCidr': '192.168.10.0/24',
|
'NetworkCidr': '192.168.10.0/24',
|
||||||
'NetworkGateway': '192.168.10.1'}}}
|
'NetworkGateway': '192.168.10.1'}}}
|
||||||
@ -321,8 +332,8 @@ class TestNetworkSettings(base.TestCase):
|
|||||||
env = {}
|
env = {}
|
||||||
undercloud_config._process_network_args(env)
|
undercloud_config._process_network_args(env)
|
||||||
expected = {
|
expected = {
|
||||||
|
'DnsServers': '10.10.10.10,10.10.10.11',
|
||||||
'ControlPlaneStaticRoutes': [],
|
'ControlPlaneStaticRoutes': [],
|
||||||
'DnsServers': '',
|
|
||||||
'IronicInspectorSubnets': [
|
'IronicInspectorSubnets': [
|
||||||
{'gateway': '192.168.24.1',
|
{'gateway': '192.168.24.1',
|
||||||
'host_routes': [],
|
'host_routes': [],
|
||||||
@ -335,6 +346,7 @@ class TestNetworkSettings(base.TestCase):
|
|||||||
'AllocationPools': [
|
'AllocationPools': [
|
||||||
{'start': '192.168.24.4', 'end': '192.168.24.99'},
|
{'start': '192.168.24.4', 'end': '192.168.24.99'},
|
||||||
{'start': '192.168.24.121', 'end': '192.168.24.254'}],
|
{'start': '192.168.24.121', 'end': '192.168.24.254'}],
|
||||||
|
'DnsNameServers': ['10.10.10.10', '10.10.10.11'],
|
||||||
'HostRoutes': [],
|
'HostRoutes': [],
|
||||||
'NetworkCidr': '192.168.24.0/24',
|
'NetworkCidr': '192.168.24.0/24',
|
||||||
'NetworkGateway': '192.168.24.1'}}}
|
'NetworkGateway': '192.168.24.1'}}}
|
||||||
@ -347,8 +359,8 @@ class TestNetworkSettings(base.TestCase):
|
|||||||
env = {}
|
env = {}
|
||||||
undercloud_config._process_network_args(env)
|
undercloud_config._process_network_args(env)
|
||||||
expected = {
|
expected = {
|
||||||
|
'DnsServers': '10.10.10.10,10.10.10.11',
|
||||||
'ControlPlaneStaticRoutes': [],
|
'ControlPlaneStaticRoutes': [],
|
||||||
'DnsServers': '',
|
|
||||||
'IronicInspectorSubnets': [
|
'IronicInspectorSubnets': [
|
||||||
{'gateway': '192.168.24.1',
|
{'gateway': '192.168.24.1',
|
||||||
'host_routes': [],
|
'host_routes': [],
|
||||||
@ -361,6 +373,7 @@ class TestNetworkSettings(base.TestCase):
|
|||||||
'AllocationPools': [
|
'AllocationPools': [
|
||||||
{'start': '192.168.24.10', 'end': '192.168.24.99'},
|
{'start': '192.168.24.10', 'end': '192.168.24.99'},
|
||||||
{'start': '192.168.24.121', 'end': '192.168.24.254'}],
|
{'start': '192.168.24.121', 'end': '192.168.24.254'}],
|
||||||
|
'DnsNameServers': ['10.10.10.10', '10.10.10.11'],
|
||||||
'HostRoutes': [],
|
'HostRoutes': [],
|
||||||
'NetworkCidr': '192.168.24.0/24',
|
'NetworkCidr': '192.168.24.0/24',
|
||||||
'NetworkGateway': '192.168.24.1'}}
|
'NetworkGateway': '192.168.24.1'}}
|
||||||
@ -374,8 +387,8 @@ class TestNetworkSettings(base.TestCase):
|
|||||||
env = {}
|
env = {}
|
||||||
undercloud_config._process_network_args(env)
|
undercloud_config._process_network_args(env)
|
||||||
expected = {
|
expected = {
|
||||||
|
'DnsServers': '10.10.10.10,10.10.10.11',
|
||||||
'ControlPlaneStaticRoutes': [],
|
'ControlPlaneStaticRoutes': [],
|
||||||
'DnsServers': '',
|
|
||||||
'IronicInspectorSubnets': [
|
'IronicInspectorSubnets': [
|
||||||
{'gateway': '192.168.24.1',
|
{'gateway': '192.168.24.1',
|
||||||
'host_routes': [],
|
'host_routes': [],
|
||||||
@ -388,6 +401,7 @@ class TestNetworkSettings(base.TestCase):
|
|||||||
'AllocationPools': [
|
'AllocationPools': [
|
||||||
{'start': '192.168.24.4', 'end': '192.168.24.99'},
|
{'start': '192.168.24.4', 'end': '192.168.24.99'},
|
||||||
{'start': '192.168.24.121', 'end': '192.168.24.220'}],
|
{'start': '192.168.24.121', 'end': '192.168.24.220'}],
|
||||||
|
'DnsNameServers': ['10.10.10.10', '10.10.10.11'],
|
||||||
'HostRoutes': [],
|
'HostRoutes': [],
|
||||||
'NetworkCidr': '192.168.24.0/24',
|
'NetworkCidr': '192.168.24.0/24',
|
||||||
'NetworkGateway': '192.168.24.1'}}
|
'NetworkGateway': '192.168.24.1'}}
|
||||||
@ -399,6 +413,7 @@ class TestNetworkSettings(base.TestCase):
|
|||||||
self.conf.register_opts(self.opts, group=self.grp1)
|
self.conf.register_opts(self.opts, group=self.grp1)
|
||||||
self.conf.register_opts(self.opts, group=self.grp2)
|
self.conf.register_opts(self.opts, group=self.grp2)
|
||||||
self.conf.config(masquerade=True,
|
self.conf.config(masquerade=True,
|
||||||
|
dns_nameservers=['10.1.1.100', '10.1.1.101'],
|
||||||
group='ctlplane-subnet')
|
group='ctlplane-subnet')
|
||||||
self.conf.config(cidr='192.168.10.0/24',
|
self.conf.config(cidr='192.168.10.0/24',
|
||||||
dhcp_start='192.168.10.10',
|
dhcp_start='192.168.10.10',
|
||||||
@ -406,6 +421,7 @@ class TestNetworkSettings(base.TestCase):
|
|||||||
dhcp_exclude=[],
|
dhcp_exclude=[],
|
||||||
inspection_iprange='192.168.10.100,192.168.10.189',
|
inspection_iprange='192.168.10.100,192.168.10.189',
|
||||||
gateway='192.168.10.254',
|
gateway='192.168.10.254',
|
||||||
|
dns_nameservers=['10.2.2.100', '10.2.2.101'],
|
||||||
host_routes=[],
|
host_routes=[],
|
||||||
masquerade=True,
|
masquerade=True,
|
||||||
group='subnet1')
|
group='subnet1')
|
||||||
@ -415,16 +431,17 @@ class TestNetworkSettings(base.TestCase):
|
|||||||
dhcp_exclude=[],
|
dhcp_exclude=[],
|
||||||
inspection_iprange='192.168.20.100,192.168.20.189',
|
inspection_iprange='192.168.20.100,192.168.20.189',
|
||||||
gateway='192.168.20.254',
|
gateway='192.168.20.254',
|
||||||
|
dns_nameservers=['10.3.3.100', '10.3.3.101'],
|
||||||
host_routes=[],
|
host_routes=[],
|
||||||
masquerade=True,
|
masquerade=True,
|
||||||
group='subnet2')
|
group='subnet2')
|
||||||
env = {}
|
env = {}
|
||||||
undercloud_config._process_network_args(env)
|
undercloud_config._process_network_args(env)
|
||||||
expected = {
|
expected = {
|
||||||
|
'DnsServers': '10.10.10.10,10.10.10.11',
|
||||||
'ControlPlaneStaticRoutes': [
|
'ControlPlaneStaticRoutes': [
|
||||||
{'ip_netmask': '192.168.10.0/24', 'next_hop': '192.168.24.1'},
|
{'ip_netmask': '192.168.10.0/24', 'next_hop': '192.168.24.1'},
|
||||||
{'ip_netmask': '192.168.20.0/24', 'next_hop': '192.168.24.1'}],
|
{'ip_netmask': '192.168.20.0/24', 'next_hop': '192.168.24.1'}],
|
||||||
'DnsServers': '',
|
|
||||||
'IronicInspectorSubnets': [
|
'IronicInspectorSubnets': [
|
||||||
{'gateway': '192.168.24.1',
|
{'gateway': '192.168.24.1',
|
||||||
'host_routes': [],
|
'host_routes': [],
|
||||||
@ -457,18 +474,21 @@ class TestNetworkSettings(base.TestCase):
|
|||||||
'ctlplane-subnet': {
|
'ctlplane-subnet': {
|
||||||
'AllocationPools': [
|
'AllocationPools': [
|
||||||
{'start': '192.168.24.5', 'end': '192.168.24.24'}],
|
{'start': '192.168.24.5', 'end': '192.168.24.24'}],
|
||||||
|
'DnsNameServers': ['10.1.1.100', '10.1.1.101'],
|
||||||
'HostRoutes': [],
|
'HostRoutes': [],
|
||||||
'NetworkCidr': '192.168.24.0/24',
|
'NetworkCidr': '192.168.24.0/24',
|
||||||
'NetworkGateway': '192.168.24.1'},
|
'NetworkGateway': '192.168.24.1'},
|
||||||
'subnet1': {
|
'subnet1': {
|
||||||
'AllocationPools': [
|
'AllocationPools': [
|
||||||
{'start': '192.168.10.10', 'end': '192.168.10.99'}],
|
{'start': '192.168.10.10', 'end': '192.168.10.99'}],
|
||||||
|
'DnsNameServers': ['10.2.2.100', '10.2.2.101'],
|
||||||
'HostRoutes': [],
|
'HostRoutes': [],
|
||||||
'NetworkCidr': '192.168.10.0/24',
|
'NetworkCidr': '192.168.10.0/24',
|
||||||
'NetworkGateway': '192.168.10.254'},
|
'NetworkGateway': '192.168.10.254'},
|
||||||
'subnet2': {
|
'subnet2': {
|
||||||
'AllocationPools': [
|
'AllocationPools': [
|
||||||
{'start': '192.168.20.10', 'end': '192.168.20.99'}],
|
{'start': '192.168.20.10', 'end': '192.168.20.99'}],
|
||||||
|
'DnsNameServers': ['10.3.3.100', '10.3.3.101'],
|
||||||
'HostRoutes': [],
|
'HostRoutes': [],
|
||||||
'NetworkCidr': '192.168.20.0/24',
|
'NetworkCidr': '192.168.20.0/24',
|
||||||
'NetworkGateway': '192.168.20.254'}
|
'NetworkGateway': '192.168.20.254'}
|
||||||
@ -486,6 +506,7 @@ class TestNetworkSettings(base.TestCase):
|
|||||||
dhcp_exclude=[],
|
dhcp_exclude=[],
|
||||||
inspection_iprange='192.168.10.100,192.168.10.189',
|
inspection_iprange='192.168.10.100,192.168.10.189',
|
||||||
gateway='192.168.10.254',
|
gateway='192.168.10.254',
|
||||||
|
dns_nameservers=[],
|
||||||
host_routes=[],
|
host_routes=[],
|
||||||
group='subnet1')
|
group='subnet1')
|
||||||
self.conf.config(cidr='192.168.20.0/24',
|
self.conf.config(cidr='192.168.20.0/24',
|
||||||
@ -494,15 +515,16 @@ class TestNetworkSettings(base.TestCase):
|
|||||||
dhcp_exclude=[],
|
dhcp_exclude=[],
|
||||||
inspection_iprange='192.168.20.100,192.168.20.189',
|
inspection_iprange='192.168.20.100,192.168.20.189',
|
||||||
gateway='192.168.20.254',
|
gateway='192.168.20.254',
|
||||||
|
dns_nameservers=[],
|
||||||
host_routes=[],
|
host_routes=[],
|
||||||
group='subnet2')
|
group='subnet2')
|
||||||
env = {}
|
env = {}
|
||||||
undercloud_config._process_network_args(env)
|
undercloud_config._process_network_args(env)
|
||||||
expected = {
|
expected = {
|
||||||
|
'DnsServers': '10.10.10.10,10.10.10.11',
|
||||||
'ControlPlaneStaticRoutes': [
|
'ControlPlaneStaticRoutes': [
|
||||||
{'ip_netmask': '192.168.10.0/24', 'next_hop': '192.168.24.1'},
|
{'ip_netmask': '192.168.10.0/24', 'next_hop': '192.168.24.1'},
|
||||||
{'ip_netmask': '192.168.20.0/24', 'next_hop': '192.168.24.1'}],
|
{'ip_netmask': '192.168.20.0/24', 'next_hop': '192.168.24.1'}],
|
||||||
'DnsServers': '',
|
|
||||||
'IronicInspectorSubnets': [
|
'IronicInspectorSubnets': [
|
||||||
{'gateway': '192.168.24.1',
|
{'gateway': '192.168.24.1',
|
||||||
'host_routes': [],
|
'host_routes': [],
|
||||||
@ -526,18 +548,21 @@ class TestNetworkSettings(base.TestCase):
|
|||||||
'ctlplane-subnet': {
|
'ctlplane-subnet': {
|
||||||
'AllocationPools': [
|
'AllocationPools': [
|
||||||
{'start': '192.168.24.5', 'end': '192.168.24.24'}],
|
{'start': '192.168.24.5', 'end': '192.168.24.24'}],
|
||||||
|
'DnsNameServers': ['10.10.10.10', '10.10.10.11'],
|
||||||
'HostRoutes': [],
|
'HostRoutes': [],
|
||||||
'NetworkCidr': '192.168.24.0/24',
|
'NetworkCidr': '192.168.24.0/24',
|
||||||
'NetworkGateway': '192.168.24.1'},
|
'NetworkGateway': '192.168.24.1'},
|
||||||
'subnet1': {
|
'subnet1': {
|
||||||
'AllocationPools': [
|
'AllocationPools': [
|
||||||
{'start': '192.168.10.10', 'end': '192.168.10.99'}],
|
{'start': '192.168.10.10', 'end': '192.168.10.99'}],
|
||||||
|
'DnsNameServers': ['10.10.10.10', '10.10.10.11'],
|
||||||
'HostRoutes': [],
|
'HostRoutes': [],
|
||||||
'NetworkCidr': '192.168.10.0/24',
|
'NetworkCidr': '192.168.10.0/24',
|
||||||
'NetworkGateway': '192.168.10.254'},
|
'NetworkGateway': '192.168.10.254'},
|
||||||
'subnet2': {
|
'subnet2': {
|
||||||
'AllocationPools': [
|
'AllocationPools': [
|
||||||
{'start': '192.168.20.10', 'end': '192.168.20.99'}],
|
{'start': '192.168.20.10', 'end': '192.168.20.99'}],
|
||||||
|
'DnsNameServers': ['10.10.10.10', '10.10.10.11'],
|
||||||
'HostRoutes': [],
|
'HostRoutes': [],
|
||||||
'NetworkCidr': '192.168.20.0/24',
|
'NetworkCidr': '192.168.20.0/24',
|
||||||
'NetworkGateway': '192.168.20.254'}
|
'NetworkGateway': '192.168.20.254'}
|
||||||
@ -552,15 +577,16 @@ class TestNetworkSettings(base.TestCase):
|
|||||||
dhcp_exclude=[],
|
dhcp_exclude=[],
|
||||||
inspection_iprange='192.168.10.200,192.168.10.254',
|
inspection_iprange='192.168.10.200,192.168.10.254',
|
||||||
gateway='192.168.10.254',
|
gateway='192.168.10.254',
|
||||||
|
dns_nameservers=[],
|
||||||
host_routes=[],
|
host_routes=[],
|
||||||
masquerade=False,
|
masquerade=False,
|
||||||
group='subnet1')
|
group='subnet1')
|
||||||
env = {}
|
env = {}
|
||||||
undercloud_config._process_network_args(env)
|
undercloud_config._process_network_args(env)
|
||||||
expected = {
|
expected = {
|
||||||
|
'DnsServers': '10.10.10.10,10.10.10.11',
|
||||||
'ControlPlaneStaticRoutes': [
|
'ControlPlaneStaticRoutes': [
|
||||||
{'ip_netmask': '192.168.10.0/24', 'next_hop': '192.168.24.1'}],
|
{'ip_netmask': '192.168.10.0/24', 'next_hop': '192.168.24.1'}],
|
||||||
'DnsServers': '',
|
|
||||||
'IronicInspectorSubnets': [
|
'IronicInspectorSubnets': [
|
||||||
{'gateway': '192.168.24.1',
|
{'gateway': '192.168.24.1',
|
||||||
'host_routes': [],
|
'host_routes': [],
|
||||||
@ -579,12 +605,14 @@ class TestNetworkSettings(base.TestCase):
|
|||||||
'ctlplane-subnet': {
|
'ctlplane-subnet': {
|
||||||
'AllocationPools': [
|
'AllocationPools': [
|
||||||
{'start': '192.168.24.5', 'end': '192.168.24.24'}],
|
{'start': '192.168.24.5', 'end': '192.168.24.24'}],
|
||||||
|
'DnsNameServers': ['10.10.10.10', '10.10.10.11'],
|
||||||
'HostRoutes': [],
|
'HostRoutes': [],
|
||||||
'NetworkCidr': '192.168.24.0/24',
|
'NetworkCidr': '192.168.24.0/24',
|
||||||
'NetworkGateway': '192.168.24.1'},
|
'NetworkGateway': '192.168.24.1'},
|
||||||
'subnet1': {
|
'subnet1': {
|
||||||
'AllocationPools': [
|
'AllocationPools': [
|
||||||
{'start': '192.168.10.1', 'end': '192.168.10.199'}],
|
{'start': '192.168.10.1', 'end': '192.168.10.199'}],
|
||||||
|
'DnsNameServers': ['10.10.10.10', '10.10.10.11'],
|
||||||
'HostRoutes': [],
|
'HostRoutes': [],
|
||||||
'NetworkCidr': '192.168.10.0/24',
|
'NetworkCidr': '192.168.10.0/24',
|
||||||
'NetworkGateway': '192.168.10.254'}
|
'NetworkGateway': '192.168.10.254'}
|
||||||
@ -599,15 +627,16 @@ class TestNetworkSettings(base.TestCase):
|
|||||||
dhcp_exclude=[],
|
dhcp_exclude=[],
|
||||||
inspection_iprange='192.168.10.100,192.168.10.199',
|
inspection_iprange='192.168.10.100,192.168.10.199',
|
||||||
gateway='192.168.10.222',
|
gateway='192.168.10.222',
|
||||||
|
dns_nameservers=[],
|
||||||
host_routes=[],
|
host_routes=[],
|
||||||
masquerade=False,
|
masquerade=False,
|
||||||
group='subnet1')
|
group='subnet1')
|
||||||
env = {}
|
env = {}
|
||||||
undercloud_config._process_network_args(env)
|
undercloud_config._process_network_args(env)
|
||||||
expected = {
|
expected = {
|
||||||
|
'DnsServers': '10.10.10.10,10.10.10.11',
|
||||||
'ControlPlaneStaticRoutes': [
|
'ControlPlaneStaticRoutes': [
|
||||||
{'ip_netmask': '192.168.10.0/24', 'next_hop': '192.168.24.1'}],
|
{'ip_netmask': '192.168.10.0/24', 'next_hop': '192.168.24.1'}],
|
||||||
'DnsServers': '',
|
|
||||||
'IronicInspectorSubnets': [
|
'IronicInspectorSubnets': [
|
||||||
{'gateway': '192.168.24.1',
|
{'gateway': '192.168.24.1',
|
||||||
'host_routes': [],
|
'host_routes': [],
|
||||||
@ -626,6 +655,7 @@ class TestNetworkSettings(base.TestCase):
|
|||||||
'ctlplane-subnet': {
|
'ctlplane-subnet': {
|
||||||
'AllocationPools': [
|
'AllocationPools': [
|
||||||
{'start': '192.168.24.5', 'end': '192.168.24.24'}],
|
{'start': '192.168.24.5', 'end': '192.168.24.24'}],
|
||||||
|
'DnsNameServers': ['10.10.10.10', '10.10.10.11'],
|
||||||
'HostRoutes': [],
|
'HostRoutes': [],
|
||||||
'NetworkCidr': '192.168.24.0/24',
|
'NetworkCidr': '192.168.24.0/24',
|
||||||
'NetworkGateway': '192.168.24.1'},
|
'NetworkGateway': '192.168.24.1'},
|
||||||
@ -634,6 +664,7 @@ class TestNetworkSettings(base.TestCase):
|
|||||||
{'start': '192.168.10.1', 'end': '192.168.10.99'},
|
{'start': '192.168.10.1', 'end': '192.168.10.99'},
|
||||||
{'start': '192.168.10.200', 'end': '192.168.10.221'},
|
{'start': '192.168.10.200', 'end': '192.168.10.221'},
|
||||||
{'start': '192.168.10.223', 'end': '192.168.10.254'}],
|
{'start': '192.168.10.223', 'end': '192.168.10.254'}],
|
||||||
|
'DnsNameServers': ['10.10.10.10', '10.10.10.11'],
|
||||||
'HostRoutes': [],
|
'HostRoutes': [],
|
||||||
'NetworkCidr': '192.168.10.0/24',
|
'NetworkCidr': '192.168.10.0/24',
|
||||||
'NetworkGateway': '192.168.10.222'}
|
'NetworkGateway': '192.168.10.222'}
|
||||||
@ -654,6 +685,7 @@ class TestNetworkSettings(base.TestCase):
|
|||||||
dhcp_exclude=[],
|
dhcp_exclude=[],
|
||||||
inspection_iprange='192.168.10.100,192.168.10.189',
|
inspection_iprange='192.168.10.100,192.168.10.189',
|
||||||
gateway='192.168.10.254',
|
gateway='192.168.10.254',
|
||||||
|
dns_nameservers=[],
|
||||||
host_routes=[{'destination': '10.10.10.254/32',
|
host_routes=[{'destination': '10.10.10.254/32',
|
||||||
'nexthop': '192.168.10.254'}],
|
'nexthop': '192.168.10.254'}],
|
||||||
group='subnet1')
|
group='subnet1')
|
||||||
@ -663,17 +695,18 @@ class TestNetworkSettings(base.TestCase):
|
|||||||
dhcp_exclude=[],
|
dhcp_exclude=[],
|
||||||
inspection_iprange='192.168.20.100,192.168.20.189',
|
inspection_iprange='192.168.20.100,192.168.20.189',
|
||||||
gateway='192.168.20.254',
|
gateway='192.168.20.254',
|
||||||
|
dns_nameservers=[],
|
||||||
host_routes=[{'destination': '10.10.10.254/32',
|
host_routes=[{'destination': '10.10.10.254/32',
|
||||||
'nexthop': '192.168.20.254'}],
|
'nexthop': '192.168.20.254'}],
|
||||||
group='subnet2')
|
group='subnet2')
|
||||||
env = {}
|
env = {}
|
||||||
undercloud_config._process_network_args(env)
|
undercloud_config._process_network_args(env)
|
||||||
expected = {
|
expected = {
|
||||||
|
'DnsServers': '10.10.10.10,10.10.10.11',
|
||||||
'ControlPlaneStaticRoutes': [
|
'ControlPlaneStaticRoutes': [
|
||||||
{'ip_netmask': '192.168.10.0/24', 'next_hop': '192.168.24.1'},
|
{'ip_netmask': '192.168.10.0/24', 'next_hop': '192.168.24.1'},
|
||||||
{'ip_netmask': '192.168.20.0/24', 'next_hop': '192.168.24.1'},
|
{'ip_netmask': '192.168.20.0/24', 'next_hop': '192.168.24.1'},
|
||||||
{'ip_netmask': '10.10.10.254/32', 'next_hop': '192.168.24.1'}],
|
{'ip_netmask': '10.10.10.254/32', 'next_hop': '192.168.24.1'}],
|
||||||
'DnsServers': '',
|
|
||||||
'IronicInspectorSubnets': [
|
'IronicInspectorSubnets': [
|
||||||
{'gateway': '192.168.24.1',
|
{'gateway': '192.168.24.1',
|
||||||
'host_routes': [{'destination': '10.10.10.254/32',
|
'host_routes': [{'destination': '10.10.10.254/32',
|
||||||
@ -700,6 +733,7 @@ class TestNetworkSettings(base.TestCase):
|
|||||||
'ctlplane-subnet': {
|
'ctlplane-subnet': {
|
||||||
'AllocationPools': [
|
'AllocationPools': [
|
||||||
{'start': '192.168.24.5', 'end': '192.168.24.24'}],
|
{'start': '192.168.24.5', 'end': '192.168.24.24'}],
|
||||||
|
'DnsNameServers': ['10.10.10.10', '10.10.10.11'],
|
||||||
'HostRoutes': [{'destination': '10.10.10.254/32',
|
'HostRoutes': [{'destination': '10.10.10.254/32',
|
||||||
'nexthop': '192.168.24.1'}],
|
'nexthop': '192.168.24.1'}],
|
||||||
'NetworkCidr': '192.168.24.0/24',
|
'NetworkCidr': '192.168.24.0/24',
|
||||||
@ -707,6 +741,7 @@ class TestNetworkSettings(base.TestCase):
|
|||||||
'subnet1': {
|
'subnet1': {
|
||||||
'AllocationPools': [
|
'AllocationPools': [
|
||||||
{'start': '192.168.10.10', 'end': '192.168.10.99'}],
|
{'start': '192.168.10.10', 'end': '192.168.10.99'}],
|
||||||
|
'DnsNameServers': ['10.10.10.10', '10.10.10.11'],
|
||||||
'HostRoutes': [{'destination': '10.10.10.254/32',
|
'HostRoutes': [{'destination': '10.10.10.254/32',
|
||||||
'nexthop': '192.168.10.254'}],
|
'nexthop': '192.168.10.254'}],
|
||||||
'NetworkCidr': '192.168.10.0/24',
|
'NetworkCidr': '192.168.10.0/24',
|
||||||
@ -714,6 +749,7 @@ class TestNetworkSettings(base.TestCase):
|
|||||||
'subnet2': {
|
'subnet2': {
|
||||||
'AllocationPools': [
|
'AllocationPools': [
|
||||||
{'start': '192.168.20.10', 'end': '192.168.20.99'}],
|
{'start': '192.168.20.10', 'end': '192.168.20.99'}],
|
||||||
|
'DnsNameServers': ['10.10.10.10', '10.10.10.11'],
|
||||||
'HostRoutes': [{'destination': '10.10.10.254/32',
|
'HostRoutes': [{'destination': '10.10.10.254/32',
|
||||||
'nexthop': '192.168.20.254'}],
|
'nexthop': '192.168.20.254'}],
|
||||||
'NetworkCidr': '192.168.20.0/24',
|
'NetworkCidr': '192.168.20.0/24',
|
||||||
|
@ -78,7 +78,7 @@ PARAMETER_MAPPING = {
|
|||||||
SUBNET_PARAMETER_MAPPING = {
|
SUBNET_PARAMETER_MAPPING = {
|
||||||
'cidr': 'NetworkCidr',
|
'cidr': 'NetworkCidr',
|
||||||
'gateway': 'NetworkGateway',
|
'gateway': 'NetworkGateway',
|
||||||
'host_routes': 'HostRoutes'
|
'host_routes': 'HostRoutes',
|
||||||
}
|
}
|
||||||
|
|
||||||
THT_HOME = os.environ.get('THT_HOME',
|
THT_HOME = os.environ.get('THT_HOME',
|
||||||
@ -310,6 +310,9 @@ def _calculate_allocation_pools(subnet):
|
|||||||
CONF.undercloud_admin_host)))
|
CONF.undercloud_admin_host)))
|
||||||
ip_set.remove(netaddr.IPNetwork(utils.get_single_ip(
|
ip_set.remove(netaddr.IPNetwork(utils.get_single_ip(
|
||||||
CONF.undercloud_public_host)))
|
CONF.undercloud_public_host)))
|
||||||
|
# Remove dns nameservers
|
||||||
|
for addr in subnet.get('dns_nameservers', []):
|
||||||
|
ip_set.remove(netaddr.IPAddress(addr))
|
||||||
# Remove addresses in the inspection_iprange
|
# Remove addresses in the inspection_iprange
|
||||||
inspect_start, inspect_end = subnet.get('inspection_iprange').split(',')
|
inspect_start, inspect_end = subnet.get('inspection_iprange').split(',')
|
||||||
ip_set.remove(netaddr.IPRange(inspect_start, inspect_end))
|
ip_set.remove(netaddr.IPRange(inspect_start, inspect_end))
|
||||||
@ -337,6 +340,12 @@ def _process_network_args(env):
|
|||||||
env['UndercloudCtlplaneSubnets'][subnet] = {
|
env['UndercloudCtlplaneSubnets'][subnet] = {
|
||||||
'AllocationPools': _calculate_allocation_pools(s)
|
'AllocationPools': _calculate_allocation_pools(s)
|
||||||
}
|
}
|
||||||
|
if s.get('dns_nameservers'):
|
||||||
|
env['UndercloudCtlplaneSubnets'][subnet].update(
|
||||||
|
{'DnsNameServers': s['dns_nameservers']})
|
||||||
|
else:
|
||||||
|
env['UndercloudCtlplaneSubnets'][subnet].update(
|
||||||
|
{'DnsNameServers': CONF['undercloud_nameservers']})
|
||||||
for param_key, param_value in SUBNET_PARAMETER_MAPPING.items():
|
for param_key, param_value in SUBNET_PARAMETER_MAPPING.items():
|
||||||
if param_value:
|
if param_value:
|
||||||
env['UndercloudCtlplaneSubnets'][subnet].update(
|
env['UndercloudCtlplaneSubnets'][subnet].update(
|
||||||
|
@ -447,6 +447,21 @@ def _validate_deprecetad_now_invalid_parameters():
|
|||||||
del deprecate_conf
|
del deprecate_conf
|
||||||
|
|
||||||
|
|
||||||
|
def _validate_dnsnameservers(s):
|
||||||
|
ip_version = netaddr.IPNetwork(s['cidr']).version
|
||||||
|
if s['dns_nameservers']:
|
||||||
|
nameservers = s['dns_nameservers']
|
||||||
|
else:
|
||||||
|
nameservers = CONF.undercloud_nameservers
|
||||||
|
|
||||||
|
for nameserver in nameservers:
|
||||||
|
if not netaddr.IPAddress(nameserver).version == ip_version:
|
||||||
|
message = (_('IP version missmatch. Nameserver {0} is not valid '
|
||||||
|
'for subnet {1}').format(nameserver, s['cidr']))
|
||||||
|
LOG.error(message)
|
||||||
|
raise FailedValidation(message)
|
||||||
|
|
||||||
|
|
||||||
def check(verbose_level, upgrade=False):
|
def check(verbose_level, upgrade=False):
|
||||||
# Fetch configuration and use its log file param to add logging to a file
|
# Fetch configuration and use its log file param to add logging to a file
|
||||||
utils.load_config(CONF, constants.UNDERCLOUD_CONF_PATH)
|
utils.load_config(CONF, constants.UNDERCLOUD_CONF_PATH)
|
||||||
@ -483,6 +498,7 @@ def check(verbose_level, upgrade=False):
|
|||||||
_validate_dhcp_range(s, subnet)
|
_validate_dhcp_range(s, subnet)
|
||||||
_checking_status('Inspection range for subnet "%s"' % subnet)
|
_checking_status('Inspection range for subnet "%s"' % subnet)
|
||||||
_validate_inspection_range(s)
|
_validate_inspection_range(s)
|
||||||
|
_validate_dnsnameservers(s)
|
||||||
_checking_status('IP addresses')
|
_checking_status('IP addresses')
|
||||||
_validate_ips()
|
_validate_ips()
|
||||||
_checking_status('Network interfaces')
|
_checking_status('Network interfaces')
|
||||||
|
Loading…
x
Reference in New Issue
Block a user