Merge ~cgrabowski/maas:add_asynchronous_wrapper_to_queueDynamicDNSUpdates into maas:master

Proposed by Christian Grabowski
Status: Merged
Approved by: Adam Collard
Approved revision: fafbba566fc90bb24ee4c2aaca12c43eab7969db
Merge reported by: MAAS Lander
Merged at revision: not available
Proposed branch: ~cgrabowski/maas:add_asynchronous_wrapper_to_queueDynamicDNSUpdates
Merge into: maas:master
Diff against target: 152 lines (+133/-0)
2 files modified
src/maasserver/region_controller.py (+1/-0)
src/maasserver/tests/test_region_controller.py (+132/-0)
Reviewer Review Type Date Requested Status
MAAS Lander Approve
Jacopo Rota Approve
Review via email: mp+456550@code.launchpad.net

Commit message

add asynchronous wrapper to queueDynamicDNSUpdates

To post a comment you must log in.
Revision history for this message
Jacopo Rota (r00ta) wrote :

LGTM

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

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

STATUS: FAILED
LOG: http://maas-ci.internal:8080/job/maas-tester/4138/console
COMMIT: fafbba566fc90bb24ee4c2aaca12c43eab7969db

review: Needs Fixing
Revision history for this message
Christian Grabowski (cgrabowski) wrote :

jenkins: !test

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

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

STATUS: SUCCESS
COMMIT: fafbba566fc90bb24ee4c2aaca12c43eab7969db

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 2f73e1a..26e2c21 100644
3--- a/src/maasserver/region_controller.py
4+++ b/src/maasserver/region_controller.py
5@@ -175,6 +175,7 @@ class RegionControllerService(Service):
6 )
7 eventloop.restart()
8
9+ @asynchronous(timeout=FOREVER)
10 @inlineCallbacks
11 def queueDynamicDNSUpdate(self, channel, message):
12 """
13diff --git a/src/maasserver/tests/test_region_controller.py b/src/maasserver/tests/test_region_controller.py
14index e3c9c7a..fd974e8 100644
15--- a/src/maasserver/tests/test_region_controller.py
16+++ b/src/maasserver/tests/test_region_controller.py
17@@ -967,3 +967,135 @@ class TestRegionControllerServiceTransactional(MAASTransactionServerTestCase):
18 yield service._checkSerial(update_result)
19
20 query.assert_not_called()
21+
22+ def test_queueDynamicDNSUpdate_can_be_called_synchronously(self):
23+ domain = factory.make_Domain()
24+ update_result = (random.randint(0, 10), True, [domain.name])
25+ record1 = factory.make_DNSResource(domain=domain)
26+ record2 = factory.make_DNSResource(domain=domain)
27+ service = RegionControllerService(sentinel.listener)
28+
29+ update_zones = self.patch(region_controller, "dns_update_all_zones")
30+ update_zones.return_value = update_result
31+ check_serial = self.patch(service, "_checkSerial")
32+ check_serial.return_value = succeed(update_result)
33+
34+ for _ in range(3):
35+ service.queueDynamicDNSUpdate(
36+ factory.make_name(),
37+ f"INSERT {domain.name} {record1.name} A 30 1.1.1.1",
38+ )
39+ service.queueDynamicDNSUpdate(
40+ factory.make_name(),
41+ f"INSERT {domain.name} {record2.name} A 30 2.2.2.2",
42+ )
43+ service.queueDynamicDNSUpdate(
44+ factory.make_name(),
45+ f"DELETE {domain.name} {record1.name} A 30 1.1.1.1",
46+ )
47+ service.queueDynamicDNSUpdate(
48+ factory.make_name(),
49+ f"DELETE {domain.name} {record2.name} A 30 2.2.2.2",
50+ )
51+
52+ self.assertCountEqual(
53+ service._dns_updates,
54+ [
55+ DynamicDNSUpdate(
56+ operation="INSERT",
57+ name=f"{record1.name}.{domain.name}",
58+ zone=domain.name,
59+ rectype="A",
60+ ttl=30,
61+ answer="1.1.1.1",
62+ ),
63+ DynamicDNSUpdate(
64+ operation="INSERT",
65+ name=f"{record2.name}.{domain.name}",
66+ zone=domain.name,
67+ rectype="A",
68+ ttl=30,
69+ answer="2.2.2.2",
70+ ),
71+ DynamicDNSUpdate(
72+ operation="DELETE",
73+ name=f"{record1.name}.{domain.name}",
74+ zone=domain.name,
75+ rectype="A",
76+ ttl=None,
77+ answer="1.1.1.1",
78+ ),
79+ DynamicDNSUpdate(
80+ operation="DELETE",
81+ name=f"{record2.name}.{domain.name}",
82+ zone=domain.name,
83+ rectype="A",
84+ ttl=None,
85+ answer="2.2.2.2",
86+ ),
87+ DynamicDNSUpdate(
88+ operation="INSERT",
89+ name=f"{record1.name}.{domain.name}",
90+ zone=domain.name,
91+ rectype="A",
92+ ttl=30,
93+ answer="1.1.1.1",
94+ ),
95+ DynamicDNSUpdate(
96+ operation="INSERT",
97+ name=f"{record2.name}.{domain.name}",
98+ zone=domain.name,
99+ rectype="A",
100+ ttl=30,
101+ answer="2.2.2.2",
102+ ),
103+ DynamicDNSUpdate(
104+ operation="DELETE",
105+ name=f"{record1.name}.{domain.name}",
106+ zone=domain.name,
107+ rectype="A",
108+ ttl=None,
109+ answer="1.1.1.1",
110+ ),
111+ DynamicDNSUpdate(
112+ operation="DELETE",
113+ name=f"{record2.name}.{domain.name}",
114+ zone=domain.name,
115+ rectype="A",
116+ ttl=None,
117+ answer="2.2.2.2",
118+ ),
119+ DynamicDNSUpdate(
120+ operation="INSERT",
121+ name=f"{record1.name}.{domain.name}",
122+ zone=domain.name,
123+ rectype="A",
124+ ttl=30,
125+ answer="1.1.1.1",
126+ ),
127+ DynamicDNSUpdate(
128+ operation="INSERT",
129+ name=f"{record2.name}.{domain.name}",
130+ zone=domain.name,
131+ rectype="A",
132+ ttl=30,
133+ answer="2.2.2.2",
134+ ),
135+ DynamicDNSUpdate(
136+ operation="DELETE",
137+ name=f"{record1.name}.{domain.name}",
138+ zone=domain.name,
139+ rectype="A",
140+ ttl=None,
141+ answer="1.1.1.1",
142+ ),
143+ DynamicDNSUpdate(
144+ operation="DELETE",
145+ name=f"{record2.name}.{domain.name}",
146+ zone=domain.name,
147+ rectype="A",
148+ ttl=None,
149+ answer="2.2.2.2",
150+ ),
151+ ],
152+ )

Subscribers

People subscribed via source and target branches