Merge ~mpontillo/maas:replicate-search-paths-on-interface--bug-1771885 into maas:master

Proposed by Mike Pontillo
Status: Merged
Approved by: Mike Pontillo
Approved revision: 55b08879703c27ab5721a8f92a6e83d1fefab969
Merge reported by: MAAS Lander
Merged at revision: not available
Proposed branch: ~mpontillo/maas:replicate-search-paths-on-interface--bug-1771885
Merge into: maas:master
Diff against target: 162 lines (+32/-18)
2 files modified
src/maasserver/preseed_network.py (+11/-7)
src/maasserver/tests/test_preseed_network.py (+21/-11)
Reviewer Review Type Date Requested Status
Andres Rodriguez (community) Approve
MAAS Lander unittests Pending
Review via email: mp+349442@code.launchpad.net

Commit message

LP: #1771885 - Replicate DNS search paths per-interface in v1 preseed YAML

To post a comment you must log in.
Revision history for this message
Andres Rodriguez (andreserl) wrote :

lgtm!

review: Approve

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
diff --git a/src/maasserver/preseed_network.py b/src/maasserver/preseed_network.py
index 4a2d323..1c448fb 100644
--- a/src/maasserver/preseed_network.py
+++ b/src/maasserver/preseed_network.py
@@ -257,6 +257,8 @@ class InterfaceConfiguration:
257 len(subnet.dns_servers) > 0):257 len(subnet.dns_servers) > 0):
258 v1_subnet_operation["dns_nameservers"] = (258 v1_subnet_operation["dns_nameservers"] = (
259 subnet.dns_servers)259 subnet.dns_servers)
260 v1_subnet_operation["dns_search"] = (
261 self.node_config.default_search_list)
260 if "nameservers" not in v2_config:262 if "nameservers" not in v2_config:
261 v2_config["nameservers"] = v2_nameservers263 v2_config["nameservers"] = v2_nameservers
262 # XXX should also support search paths.264 # XXX should also support search paths.
@@ -462,9 +464,17 @@ class NodeNetworkConfiguration:
462 self.v2_bridges = {}464 self.v2_bridges = {}
463 self.gateway_ipv4_set = False465 self.gateway_ipv4_set = False
464 self.gateway_ipv6_set = False466 self.gateway_ipv6_set = False
467
465 # The default value is False: expected keys are 4 and 6.468 # The default value is False: expected keys are 4 and 6.
466 self.addr_family_present = defaultdict(bool)469 self.addr_family_present = defaultdict(bool)
467470
471 # Ensure the machine's primary domain always comes first in the list.
472 self.default_search_list = [self.node.domain.name] + [
473 name
474 for name in sorted(get_dns_search_paths())
475 if name != self.node.domain.name
476 ]
477
468 self.gateways = self.node.get_default_gateways()478 self.gateways = self.node.get_default_gateways()
469 if self.gateways.ipv4 is not None:479 if self.gateways.ipv4 is not None:
470 dest_ip = self.gateways.ipv4.gateway_ip480 dest_ip = self.gateways.ipv4.gateway_ip
@@ -506,16 +516,10 @@ class NodeNetworkConfiguration:
506 default_dns_servers = self.node.get_default_dns_servers(516 default_dns_servers = self.node.get_default_dns_servers(
507 ipv4=self.addr_family_present[4], ipv6=self.addr_family_present[6],517 ipv4=self.addr_family_present[4], ipv6=self.addr_family_present[6],
508 default_region_ip=default_source_ip)518 default_region_ip=default_source_ip)
509 # Ensure the machine's primary domain always comes first in the list.
510 search_list = [self.node.domain.name] + [
511 name
512 for name in sorted(get_dns_search_paths())
513 if name != self.node.domain.name
514 ]
515 self.v1_config.append({519 self.v1_config.append({
516 "type": "nameserver",520 "type": "nameserver",
517 "address": default_dns_servers,521 "address": default_dns_servers,
518 "search": search_list,522 "search": self.default_search_list,
519 })523 })
520 if version == 1:524 if version == 1:
521 network_config = {525 network_config = {
diff --git a/src/maasserver/tests/test_preseed_network.py b/src/maasserver/tests/test_preseed_network.py
index 2992b0c..13d11b1 100644
--- a/src/maasserver/tests/test_preseed_network.py
+++ b/src/maasserver/tests/test_preseed_network.py
@@ -213,6 +213,10 @@ class AssertNetworkConfigMixin:
213 ret += " dns_nameservers:\n"213 ret += " dns_nameservers:\n"
214 for dns_server in subnet.dns_servers:214 for dns_server in subnet.dns_servers:
215 ret += " - %s\n" % dns_server215 ret += " - %s\n" % dns_server
216 ret += " dns_search:\n"
217 for domain in self.get_dns_search_list(
218 node.domain.name):
219 ret += " - %s\n" % domain
216 dhcp_types = set()220 dhcp_types = set()
217 for dhcp_ip in iface.ip_addresses.filter(221 for dhcp_ip in iface.ip_addresses.filter(
218 alloc_type=IPADDRESS_TYPE.DHCP):222 alloc_type=IPADDRESS_TYPE.DHCP):
@@ -230,18 +234,22 @@ class AssertNetworkConfigMixin:
230 ret += " - type: dhcp6\n"234 ret += " - type: dhcp6\n"
231 return ret235 return ret
232236
233 def collectDNSConfig(self, node, ipv4=True, ipv6=True):237 def collect_dns_config(self, node, ipv4=True, ipv6=True):
234 config = "- type: nameserver\n address: %s\n search:\n" % (238 config = "- type: nameserver\n address: %s\n search:\n" % (
235 repr(node.get_default_dns_servers(ipv4=ipv4, ipv6=ipv6)))239 repr(node.get_default_dns_servers(ipv4=ipv4, ipv6=ipv6)))
236 domain_name = node.domain.name240 domain_name = node.domain.name
237 dns_searches = [domain_name] + [241 dns_searches = self.get_dns_search_list(domain_name)
238 name
239 for name in sorted(get_dns_search_paths())
240 if name != domain_name]
241 for dns_name in dns_searches:242 for dns_name in dns_searches:
242 config += " - %s\n" % dns_name243 config += " - %s\n" % dns_name
243 return config244 return config
244245
246 def get_dns_search_list(self, domain_name):
247 return [domain_name] + [
248 name
249 for name in sorted(get_dns_search_paths())
250 if name != domain_name
251 ]
252
245253
246class TestSingleAddrFamilyLayout(MAASServerTestCase, AssertNetworkConfigMixin):254class TestSingleAddrFamilyLayout(MAASServerTestCase, AssertNetworkConfigMixin):
247255
@@ -277,7 +285,7 @@ class TestSingleAddrFamilyLayout(MAASServerTestCase, AssertNetworkConfigMixin):
277 sip.save()285 sip.save()
278 factory.make_Interface(node=node)286 factory.make_Interface(node=node)
279 net_config = self.collect_interface_config(node)287 net_config = self.collect_interface_config(node)
280 net_config += self.collectDNSConfig(288 net_config += self.collect_dns_config(
281 node, ipv4=(self.version == 4), ipv6=(self.version == 6))289 node, ipv4=(self.version == 4), ipv6=(self.version == 6))
282 config = compose_curtin_network_config(node)290 config = compose_curtin_network_config(node)
283 self.assertNetworkConfig(net_config, config)291 self.assertNetworkConfig(net_config, config)
@@ -311,7 +319,7 @@ class TestSimpleNetworkLayout(MAASServerTestCase, AssertNetworkConfigMixin):
311 sip.save()319 sip.save()
312 factory.make_Interface(node=node)320 factory.make_Interface(node=node)
313 net_config = self.collect_interface_config(node)321 net_config = self.collect_interface_config(node)
314 net_config += self.collectDNSConfig(node)322 net_config += self.collect_dns_config(node)
315 config = compose_curtin_network_config(node)323 config = compose_curtin_network_config(node)
316 self.assertNetworkConfig(net_config, config)324 self.assertNetworkConfig(net_config, config)
317325
@@ -335,7 +343,7 @@ class TestBondNetworkLayout(MAASServerTestCase, AssertNetworkConfigMixin):
335 subnet=bond_iface.vlan.subnet_set.first())343 subnet=bond_iface.vlan.subnet_set.first())
336 net_config = self.collect_interface_config(node, filter="physical")344 net_config = self.collect_interface_config(node, filter="physical")
337 net_config += self.collect_interface_config(node, filter="bond")345 net_config += self.collect_interface_config(node, filter="bond")
338 net_config += self.collectDNSConfig(node)346 net_config += self.collect_dns_config(node)
339 config = compose_curtin_network_config(node)347 config = compose_curtin_network_config(node)
340 self.assertNetworkConfig(net_config, config)348 self.assertNetworkConfig(net_config, config)
341349
@@ -352,7 +360,7 @@ class TestVLANNetworkLayout(MAASServerTestCase, AssertNetworkConfigMixin):
352 factory.make_StaticIPAddress(interface=vlan_iface, subnet=subnet)360 factory.make_StaticIPAddress(interface=vlan_iface, subnet=subnet)
353 net_config = self.collect_interface_config(node, filter="physical")361 net_config = self.collect_interface_config(node, filter="physical")
354 net_config += self.collect_interface_config(node, filter="vlan")362 net_config += self.collect_interface_config(node, filter="vlan")
355 net_config += self.collectDNSConfig(node)363 net_config += self.collect_dns_config(node)
356 config = compose_curtin_network_config(node)364 config = compose_curtin_network_config(node)
357 self.assertNetworkConfig(net_config, config)365 self.assertNetworkConfig(net_config, config)
358366
@@ -379,7 +387,7 @@ class TestVLANOnBondNetworkLayout(MAASServerTestCase,
379 net_config = self.collect_interface_config(node, filter="physical")387 net_config = self.collect_interface_config(node, filter="physical")
380 net_config += self.collect_interface_config(node, filter="bond")388 net_config += self.collect_interface_config(node, filter="bond")
381 net_config += self.collect_interface_config(node, filter="vlan")389 net_config += self.collect_interface_config(node, filter="vlan")
382 net_config += self.collectDNSConfig(node)390 net_config += self.collect_dns_config(node)
383 config = compose_curtin_network_config(node)391 config = compose_curtin_network_config(node)
384 self.assertNetworkConfig(net_config, config)392 self.assertNetworkConfig(net_config, config)
385393
@@ -438,7 +446,7 @@ class TestBridgeNetworkLayout(MAASServerTestCase, AssertNetworkConfigMixin):
438 subnet=bridge_iface.vlan.subnet_set.first())446 subnet=bridge_iface.vlan.subnet_set.first())
439 net_config = self.collect_interface_config(node, filter="physical")447 net_config = self.collect_interface_config(node, filter="physical")
440 net_config += self.collect_interface_config(node, filter="bridge")448 net_config += self.collect_interface_config(node, filter="bridge")
441 net_config += self.collectDNSConfig(node)449 net_config += self.collect_dns_config(node)
442 config = compose_curtin_network_config(node)450 config = compose_curtin_network_config(node)
443 self.assertNetworkConfig(net_config, config)451 self.assertNetworkConfig(net_config, config)
444452
@@ -965,6 +973,7 @@ class TestNetplan(MAASServerTestCase):
965 'subnets': [{973 'subnets': [{
966 'address': '10.0.0.4/24',974 'address': '10.0.0.4/24',
967 'dns_nameservers': ['10.0.0.2'],975 'dns_nameservers': ['10.0.0.2'],
976 'dns_search': ['maas'],
968 'gateway': '10.0.0.1',977 'gateway': '10.0.0.1',
969 'type': 'static',978 'type': 'static',
970 }],979 }],
@@ -978,6 +987,7 @@ class TestNetplan(MAASServerTestCase):
978 'subnets': [{987 'subnets': [{
979 'address': '10.0.1.4/24',988 'address': '10.0.1.4/24',
980 'dns_nameservers': ['10.0.1.2'],989 'dns_nameservers': ['10.0.1.2'],
990 'dns_search': ['maas'],
981 'type': 'static',991 'type': 'static',
982 }],992 }],
983 'type': 'physical'993 'type': 'physical'

Subscribers

People subscribed via source and target branches