Merge ~cgrabowski/maas:fix_dns_restart_when_adding_vault into maas:master

Proposed by Christian Grabowski
Status: Merged
Approved by: Christian Grabowski
Approved revision: f04821d7b35b75889c032ef401f9929f938de080
Merge reported by: MAAS Lander
Merged at revision: not available
Proposed branch: ~cgrabowski/maas:fix_dns_restart_when_adding_vault
Merge into: maas:master
Diff against target: 121 lines (+81/-4)
2 files modified
src/provisioningserver/dns/tests/test_zoneconfig.py (+79/-0)
src/provisioningserver/dns/zoneconfig.py (+2/-4)
Reviewer Review Type Date Requested Status
Alexsander de Souza Approve
MAAS Lander Approve
Review via email: mp+433738@code.launchpad.net

Commit message

always set serial if using nsupdate

To post a comment you must log in.
Revision history for this message
MAAS Lander (maas-lander) wrote :

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

STATUS: FAILED
LOG: http://maas-ci.internal:8080/job/maas-tester/1521/consoleText
COMMIT: d06b811558580b2e2c016525d39014570f22bc5e

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

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

STATUS: FAILED
LOG: http://maas-ci.internal:8080/job/maas-tester/1523/consoleText
COMMIT: dc58d19f9656cc61b7d4cd3328e52971b2c2bd77

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

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

STATUS: SUCCESS
COMMIT: f04821d7b35b75889c032ef401f9929f938de080

review: Approve
Revision history for this message
Alexsander de Souza (alexsander-souza) 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/provisioningserver/dns/tests/test_zoneconfig.py b/src/provisioningserver/dns/tests/test_zoneconfig.py
2index f97adfd..948d219 100644
3--- a/src/provisioningserver/dns/tests/test_zoneconfig.py
4+++ b/src/provisioningserver/dns/tests/test_zoneconfig.py
5@@ -415,6 +415,56 @@ class TestDNSForwardZoneConfig(MAASTestCase):
6 stdin=expected_stdin.encode("ascii"),
7 )
8
9+ def test_dynamic_update_sets_serial_when_no_other_updates_are_present(
10+ self,
11+ ):
12+ patch_zone_file_config_path(self)
13+ domain = factory.make_string()
14+ network = factory.make_ipv4_network()
15+ ipv4_hostname = factory.make_name("host")
16+ ipv4_ip = factory.pick_ip_in_network(network)
17+ ipv6_hostname = factory.make_name("host")
18+ ipv6_ip = factory.make_ipv6_address()
19+ ipv6_network = factory.make_ipv6_network()
20+ dynamic_range = IPRange(ipv6_network.first, ipv6_network.last)
21+ ttl = random.randint(10, 300)
22+ mapping = {
23+ ipv4_hostname: HostnameIPMapping(None, ttl, {ipv4_ip}),
24+ ipv6_hostname: HostnameIPMapping(None, ttl, {ipv6_ip}),
25+ }
26+ dns_zone_config = DNSForwardZoneConfig(
27+ domain,
28+ serial=random.randint(1, 100),
29+ mapping=mapping,
30+ default_ttl=ttl,
31+ dynamic_ranges=[dynamic_range],
32+ )
33+ self.patch(dns_zone_config, "get_GENERATE_directives")
34+ run_command = self.patch(actions, "run_command")
35+ dns_zone_config.write_config()
36+ new_dns_zone_config = DNSForwardZoneConfig(
37+ domain,
38+ serial=random.randint(1, 100),
39+ mapping=mapping,
40+ default_ttl=ttl,
41+ dynamic_ranges=[dynamic_range],
42+ )
43+ new_dns_zone_config.write_config()
44+ expected_stdin = "\n".join(
45+ [
46+ "server localhost",
47+ f"zone {domain}",
48+ f"update add {domain} {new_dns_zone_config.default_ttl} SOA {domain}. nobody.example.com. {new_dns_zone_config.serial} 600 1800 604800 {new_dns_zone_config.default_ttl}",
49+ "send\n",
50+ ]
51+ )
52+ run_command.assert_called_once_with(
53+ "nsupdate",
54+ "-k",
55+ get_nsupdate_key_path(),
56+ stdin=expected_stdin.encode("ascii"),
57+ )
58+
59
60 class TestDNSReverseZoneConfig(MAASTestCase):
61 """Tests for DNSReverseZoneConfig."""
62@@ -888,6 +938,35 @@ class TestDNSReverseZoneConfig(MAASTestCase):
63 stdin=expected_stdin.encode("ascii"),
64 )
65
66+ def test_dynamic_update_sets_serial_when_no_other_updates_are_present(
67+ self,
68+ ):
69+ patch_zone_file_config_path(self)
70+ domain = factory.make_string()
71+ network = IPNetwork("10.0.0.0/24")
72+ zone = DNSReverseZoneConfig(
73+ domain,
74+ serial=random.randint(1, 100),
75+ network=network,
76+ )
77+ run_command = self.patch(actions, "run_command")
78+ zone.write_config()
79+ zone.write_config()
80+ expected_stdin = "\n".join(
81+ [
82+ "server localhost",
83+ "zone 0.0.10.in-addr.arpa",
84+ f"update add 0.0.10.in-addr.arpa {zone.default_ttl} SOA 0.0.10.in-addr.arpa. nobody.example.com. {zone.serial} 600 1800 604800 {zone.default_ttl}",
85+ "send\n",
86+ ]
87+ )
88+ run_command.assert_called_once_with(
89+ "nsupdate",
90+ "-k",
91+ get_nsupdate_key_path(),
92+ stdin=expected_stdin.encode("ascii"),
93+ )
94+
95
96 class TestDNSReverseZoneConfig_GetGenerateDirectives(MAASTestCase):
97 """Tests for `DNSReverseZoneConfig.get_GENERATE_directives()`."""
98diff --git a/src/provisioningserver/dns/zoneconfig.py b/src/provisioningserver/dns/zoneconfig.py
99index eb28986..13dca69 100644
100--- a/src/provisioningserver/dns/zoneconfig.py
101+++ b/src/provisioningserver/dns/zoneconfig.py
102@@ -321,8 +321,7 @@ class DNSForwardZoneConfig(DomainConfigBase):
103 )
104 )
105 if not self.force_config_write and self.zone_file_exists(zi):
106- if len(self._dynamic_updates) > 0:
107- self.dynamic_update(zi)
108+ self.dynamic_update(zi)
109 else:
110 self.requires_reload = True
111 self.write_zone_file(
112@@ -611,8 +610,7 @@ class DNSReverseZoneConfig(DomainConfigBase):
113 )
114 )
115 if not self.force_config_write and self.zone_file_exists(zi):
116- if len(self._dynamic_updates) > 0:
117- self.dynamic_update(zi)
118+ self.dynamic_update(zi)
119 else:
120 self.requires_reload = True
121 self.write_zone_file(

Subscribers

People subscribed via source and target branches