Merge ~cgrabowski/maas:fix_missing_dns_records into maas:master

Proposed by Christian Grabowski
Status: Merged
Approved by: Christian Grabowski
Approved revision: aba24db16134c148573e6b5597224dcef6a2ec90
Merge reported by: MAAS Lander
Merged at revision: not available
Proposed branch: ~cgrabowski/maas:fix_missing_dns_records
Merge into: maas:master
Diff against target: 74 lines (+55/-0)
2 files modified
src/maasserver/region_controller.py (+1/-0)
src/maasserver/tests/test_region_controller.py (+54/-0)
Reviewer Review Type Date Requested Status
MAAS Lander Approve
Alexsander de Souza Approve
Review via email: mp+439183@code.launchpad.net

Commit message

ensure needsDNSUpdate is true when there were queued updates

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

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

STATUS: FAILED
LOG: http://maas-ci.internal:8080/job/maas-tester/2172/consoleText
COMMIT: 357b32a2ca7f5e48c948989f808dd3624427f4d6

review: Needs Fixing
Revision history for this message
Alexsander de Souza (alexsander-souza) wrote :

+1

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

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

STATUS: SUCCESS
COMMIT: aba24db16134c148573e6b5597224dcef6a2ec90

review: Approve

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1diff --git a/src/maasserver/region_controller.py b/src/maasserver/region_controller.py
2index a8cb828..de5e1e8 100644
3--- a/src/maasserver/region_controller.py
4+++ b/src/maasserver/region_controller.py
5@@ -225,6 +225,7 @@ class RegionControllerService(Service):
6 if len(self._queued_updates) > 0:
7 self._dns_updates = self._queued_updates
8 self._queued_updates = []
9+ self.needsDNSUpdate = True
10 else:
11 self._dns_updates = []
12 self._dns_requires_full_reload = False
13diff --git a/src/maasserver/tests/test_region_controller.py b/src/maasserver/tests/test_region_controller.py
14index 072d3b3..e5a1f09 100644
15--- a/src/maasserver/tests/test_region_controller.py
16+++ b/src/maasserver/tests/test_region_controller.py
17@@ -893,3 +893,57 @@ class TestRegionControllerServiceTransactional(MAASTransactionServerTestCase):
18 ],
19 )
20 self.assertCountEqual(service._queued_updates, [])
21+
22+ @wait_for_reactor
23+ @inlineCallbacks
24+ def test_dns_is_set_to_update_when_queued_updates_are_present(self):
25+ domain = yield deferToDatabase(factory.make_Domain)
26+ update_result = (random.randint(0, 10), True, [domain.name])
27+ record = yield deferToDatabase(factory.make_DNSResource, domain=domain)
28+ service = RegionControllerService(sentinel.listener)
29+
30+ update_zones = self.patch(region_controller, "dns_update_all_zones")
31+ update_zones.return_value = update_result
32+ check_serial = self.patch(service, "_checkSerial")
33+ check_serial.return_value = succeed(update_result)
34+
35+ service._dns_update_in_progress = True
36+ service.queueDynamicDNSUpdate(
37+ factory.make_name(),
38+ f"INSERT {domain.name} {record.name} A 30 10.10.10.10",
39+ )
40+ self.assertCountEqual(service._dns_updates, [])
41+ expected_updates = [
42+ DynamicDNSUpdate(
43+ operation="INSERT",
44+ name=f"{record.name}.{domain.name}",
45+ zone=domain.name,
46+ rectype="A",
47+ ttl=30,
48+ answer="10.10.10.10",
49+ )
50+ ]
51+ self.assertCountEqual(
52+ service._queued_updates,
53+ expected_updates,
54+ )
55+ service.needsDNSUpdate = True
56+
57+ # 3 times, first to queue the update, second to process the update,
58+ # third to ensure it doesn't flag for update without updates queued
59+ for i in range(3):
60+ if i == 2:
61+ # should fail on assert that the loop is running when stopping
62+ try:
63+ yield service.process()
64+ except AssertionError:
65+ pass
66+ else:
67+ yield service.process()
68+
69+ update_zones.assert_has_calls(
70+ [
71+ call(dynamic_updates=[], requires_reload=True),
72+ call(dynamic_updates=expected_updates, requires_reload=False),
73+ ]
74+ )

Subscribers

People subscribed via source and target branches