Merge ~cgrabowski/maas:units_for_default_gateway_setting_default_dns into maas:master

Proposed by Christian Grabowski
Status: Merged
Approved by: Christian Grabowski
Approved revision: 27a5fb0f387a5615338b751ff2a67c17aab53906
Merge reported by: MAAS Lander
Merged at revision: not available
Proposed branch: ~cgrabowski/maas:units_for_default_gateway_setting_default_dns
Merge into: maas:master
Diff against target: 136 lines (+125/-0)
1 file modified
src/maasserver/tests/test_preseed_network.py (+125/-0)
Reviewer Review Type Date Requested Status
Alberto Donato (community) Approve
MAAS Lander Approve
Review via email: mp+402159@code.launchpad.net

Commit message

Add units asserting setting a node's default gateway will set its default DNS

To post a comment you must log in.
Revision history for this message
Alberto Donato (ack) wrote :

Looks good, just a question inline

review: Needs Information
Revision history for this message
MAAS Lander (maas-lander) wrote :

UNIT TESTS
-b units_for_default_gateway_setting_default_dns lp:~cgrabowski/maas/+git/maas into -b master lp:~maas-committers/maas

STATUS: FAILED
LOG: http://maas-ci.internal:8080/job/maas/job/branch-tester/9920/console
COMMIT: 03072672d6920e1ca8b59317ac90fc47ccab2f4e

review: Needs Fixing
27a5fb0... by Christian Grabowski

use stdlib unit test helpers

Revision history for this message
MAAS Lander (maas-lander) wrote :

UNIT TESTS
-b units_for_default_gateway_setting_default_dns lp:~cgrabowski/maas/+git/maas into -b master lp:~maas-committers/maas

STATUS: SUCCESS
COMMIT: 27a5fb0f387a5615338b751ff2a67c17aab53906

review: Approve
Revision history for this message
Alberto Donato (ack) wrote :

+1

review: Approve

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1diff --git a/src/maasserver/tests/test_preseed_network.py b/src/maasserver/tests/test_preseed_network.py
2index e3c5687..1c3785e 100644
3--- a/src/maasserver/tests/test_preseed_network.py
4+++ b/src/maasserver/tests/test_preseed_network.py
5@@ -1614,6 +1614,131 @@ class TestNetplan(MAASServerTestCase):
6 }
7 self.expectThat(v1, Equals(expected_v1))
8
9+ def test_multiple_ethernet_with_default_gateway_with_dns(self):
10+ node = factory.make_Node()
11+ vlan = factory.make_VLAN()
12+ subnet = factory.make_Subnet(
13+ cidr="10.0.0.0/24",
14+ gateway_ip="10.0.0.1",
15+ dns_servers=["10.0.0.2"],
16+ vlan=vlan,
17+ )
18+ subnet2 = factory.make_Subnet(
19+ cidr="10.0.1.0/24",
20+ gateway_ip="10.0.1.1",
21+ dns_servers=["10.0.1.2"],
22+ vlan=vlan,
23+ )
24+ eth0 = factory.make_Interface(
25+ node=node, name="eth0", mac_address="00:01:02:03:04:05", vlan=vlan
26+ )
27+ eth1 = factory.make_Interface(
28+ node=node, name="eth1", mac_address="02:01:02:03:04:05", vlan=vlan
29+ )
30+ node.boot_interface = eth0
31+ node.save()
32+ factory.make_StaticIPAddress(
33+ interface=eth0,
34+ subnet=subnet,
35+ ip="10.0.0.4",
36+ alloc_type=IPADDRESS_TYPE.STICKY,
37+ )
38+ default_link = factory.make_StaticIPAddress(
39+ interface=eth1,
40+ subnet=subnet2,
41+ ip="10.0.1.4",
42+ alloc_type=IPADDRESS_TYPE.STICKY,
43+ )
44+ node.gateway_link_ipv4 = default_link
45+ node.save()
46+ domain = Domain.objects.first()
47+ domain.name = "ubuntu.com"
48+ domain.save()
49+ domain2 = factory.make_Domain()
50+ expected_search_list = [domain.name, domain2.name]
51+ netplan = self._render_netplan_dict(node)
52+ expected_netplan = {
53+ "network": OrderedDict(
54+ [
55+ ("version", 2),
56+ (
57+ "ethernets",
58+ {
59+ "eth0": {
60+ "nameservers": {
61+ "addresses": ["10.0.0.2"],
62+ "search": expected_search_list,
63+ },
64+ "match": {"macaddress": "00:01:02:03:04:05"},
65+ "mtu": 1500,
66+ "set-name": "eth0",
67+ "addresses": ["10.0.0.4/24"],
68+ },
69+ "eth1": {
70+ "gateway4": "10.0.1.1",
71+ "match": {"macaddress": "02:01:02:03:04:05"},
72+ "nameservers": {
73+ "addresses": ["10.0.1.2"],
74+ "search": expected_search_list,
75+ },
76+ "mtu": 1500,
77+ "set-name": "eth1",
78+ "addresses": ["10.0.1.4/24"],
79+ },
80+ },
81+ ),
82+ ]
83+ )
84+ }
85+ self.assertEqual(netplan, expected_netplan)
86+ v1 = self._render_v1_dict(node)
87+ expected_v1 = {
88+ "network": {
89+ "version": 1,
90+ "config": [
91+ {
92+ "id": "eth0",
93+ "mac_address": "00:01:02:03:04:05",
94+ "mtu": 1500,
95+ "name": "eth0",
96+ "subnets": [
97+ {
98+ "address": "10.0.0.4/24",
99+ "dns_nameservers": ["10.0.0.2"],
100+ "dns_search": expected_search_list,
101+ "type": "static",
102+ }
103+ ],
104+ "type": "physical",
105+ },
106+ {
107+ "id": "eth1",
108+ "mac_address": "02:01:02:03:04:05",
109+ "mtu": 1500,
110+ "name": "eth1",
111+ "subnets": [
112+ {
113+ "address": "10.0.1.4/24",
114+ "dns_nameservers": ["10.0.1.2"],
115+ "dns_search": expected_search_list,
116+ "gateway": "10.0.1.1",
117+ "type": "static",
118+ }
119+ ],
120+ "type": "physical",
121+ },
122+ {
123+ "address": [
124+ "10.0.1.2"
125+ ], # assert default gateway assigns dns server
126+ "search": expected_search_list,
127+ "type": "nameserver",
128+ },
129+ ],
130+ }
131+ }
132+ self.assertEqual(v1, expected_v1)
133+
134 def test_multiple_ethernet_interfaces_without_dns(self):
135 node = factory.make_Node()
136 vlan = factory.make_VLAN()

Subscribers

People subscribed via source and target branches