95
102
dns_update_all_zones = self.patch_autospec(
96
103
dns_config_module, "dns_update_all_zones")
97
104
subnet = factory.make_Subnet()
98
self.assertThat(dns_add_subnets, MockCalledOnceWith(subnets=[subnet]))
105
self.assertThat(dns_add_subnets, MockCalledOnceWith(subnets={subnet}))
106
subnet.name = factory.make_name("subnet")
108
self.assertThat(dns_update_all_zones, MockCalledOnceWith())
110
def test_saving_subnet_with_parent_triggers_update(self):
111
self.patch(settings, "DNS_CONNECT", False)
112
dns_add_subnets = self.patch_autospec(
113
dns_config_module, "dns_add_subnets")
114
dns_update_subnets = self.patch_autospec(
115
dns_config_module, "dns_update_subnets")
116
dns_update_all_zones = self.patch_autospec(
117
dns_config_module, "dns_update_all_zones")
118
net = factory.make_ip4_or_6_network(host_bits=random.randint(2, 3))
120
prefixlen = random.randint(121, 124)
122
prefixlen = random.randint(20, 24)
123
parent = IPNetwork("%s/%d" % (net.network, prefixlen))
124
parent = IPNetwork("%s/%d" % (parent.network, prefixlen))
125
parent_subnet = factory.make_Subnet(cidr=parent.cidr)
126
self.assertThat(dns_add_subnets, MockCalledOnceWith(
127
subnets={parent_subnet}))
128
subnet = factory.make_Subnet(cidr=net.cidr)
129
self.assertEqual(2, dns_add_subnets.call_count)
130
self.assertThat(dns_update_subnets, MockCalledOnceWith(
99
132
subnet.name = factory.make_name("subnet")
101
134
self.assertThat(dns_update_all_zones, MockCalledOnceWith())
150
183
domain_module, "dns_kms_setting_changed")
151
184
Config.objects.set_config('windows_kms_host', '8.8.8.8')
152
185
self.assertThat(dns_kms_setting_changed, MockCalledOnceWith())
187
def test_adding_and_removing_ip_on_dnsrr_triggers_update(self):
188
self.patch(settings, "DNS_CONNECT", False)
189
dns_update_all_zones = self.patch_autospec(
190
dns_config_module, "dns_update_all_zones")
191
dns_update_domains = self.patch_autospec(
192
dns_config_module, "dns_update_domains")
193
dns_update_subnets = self.patch_autospec(
194
dns_config_module, "dns_update_subnets")
195
domain = factory.make_Domain()
196
dnsrr = factory.make_DNSResource(domain=domain, no_ip_addresses=True)
197
sip = factory.make_StaticIPAddress()
198
self.assertThat(dns_update_subnets, MockNotCalled())
199
self.assertThat(dns_update_domains, MockCalledOnceWith({domain}))
200
dnsrr.ip_addresses.add(sip)
201
self.assertThat(dns_update_all_zones, MockNotCalled())
202
# One call from creating the DNSResource, and one from adding the
206
MockCallsMatch(call({domain}), call({domain})))
207
# Once from adding the StaticIPAddress.
210
MockCallsMatch(call({sip.subnet})))
212
dnsrr.ip_addresses.remove(sip)
213
# Calls update_all_zones, does not generate new calls to the others.
214
self.assertThat(dns_update_all_zones, MockCalledOnceWith())
215
self.assertEqual(2, dns_update_domains.call_count)
216
self.assertEqual(1, dns_update_subnets.call_count)
218
def test_adding_and_removing_ip_on_interface_triggers_update(self):
219
self.patch(settings, "DNS_CONNECT", False)
220
dns_update_all_zones = self.patch_autospec(
221
dns_config_module, "dns_update_all_zones")
222
dns_update_domains = self.patch_autospec(
223
dns_config_module, "dns_update_domains")
224
dns_update_subnets = self.patch_autospec(
225
dns_config_module, "dns_update_subnets")
226
subnet = factory.make_Subnet()
227
node = factory.make_Node_with_Interface_on_Subnet(subnet=subnet)
228
self.assertThat(dns_update_all_zones, MockNotCalled())
230
dns_update_subnets, MockCallsMatch(
231
call({subnet}), call({subnet})))
233
dns_update_domains, MockCallsMatch(
234
call({node.domain}), call({node.domain})))
235
# Now add an extra StaticIPAddress
236
sip = factory.make_StaticIPAddress(subnet=subnet)
237
node.get_boot_interface().ip_addresses.add(sip)
238
# This calls dns_update_{domains,subnets}
239
self.assertThat(dns_update_all_zones, MockNotCalled())
241
dns_update_subnets, MockCallsMatch(
242
call({subnet}), call({subnet}), call({subnet})))
244
dns_update_domains, MockCallsMatch(
245
call({node.domain}), call({node.domain}),
246
call({node.domain})))
248
node.get_boot_interface().ip_addresses.remove(sip)
249
# This calls update_all_zones
250
self.assertThat(dns_update_all_zones, MockCalledOnceWith())
251
self.assertEqual(3, dns_update_subnets.call_count)
252
self.assertEqual(3, dns_update_domains.call_count)
254
def test_adding_and_removing_dnsrr_on_ip_triggers_update(self):
255
self.patch(settings, "DNS_CONNECT", False)
256
dns_update_all_zones = self.patch_autospec(
257
dns_config_module, "dns_update_all_zones")
258
dns_update_domains = self.patch_autospec(
259
dns_config_module, "dns_update_domains")
260
dns_update_subnets = self.patch_autospec(
261
dns_config_module, "dns_update_subnets")
262
domain = factory.make_Domain()
263
dnsrr = factory.make_DNSResource(domain=domain, no_ip_addresses=True)
264
sip = factory.make_StaticIPAddress()
265
self.assertThat(dns_update_subnets, MockNotCalled())
266
self.assertThat(dns_update_domains, MockCalledOnceWith({domain}))
267
sip.dnsresource_set.add(dnsrr)
268
self.assertThat(dns_update_all_zones, MockNotCalled())
269
# One call from creating the DNSResource, and one from adding the
273
MockCallsMatch(call({domain}), call({domain})))
274
# Once from adding the StaticIPAddress.
277
MockCallsMatch(call({sip.subnet})))
279
sip.dnsresource_set.remove(dnsrr)
280
# Calls update_all_zones, does not generate new calls to the others.
281
self.assertThat(dns_update_all_zones, MockCalledOnceWith())
282
self.assertEqual(2, dns_update_domains.call_count)
283
self.assertEqual(1, dns_update_subnets.call_count)
285
def test_adding_and_removing_interface_on_ip_triggers_update(self):
286
self.patch(settings, "DNS_CONNECT", False)
287
dns_update_all_zones = self.patch_autospec(
288
dns_config_module, "dns_update_all_zones")
289
dns_update_domains = self.patch_autospec(
290
dns_config_module, "dns_update_domains")
291
dns_update_subnets = self.patch_autospec(
292
dns_config_module, "dns_update_subnets")
293
subnet = factory.make_Subnet()
294
node = factory.make_Node_with_Interface_on_Subnet(subnet=subnet)
295
self.assertThat(dns_update_all_zones, MockNotCalled())
297
dns_update_subnets, MockCallsMatch(
298
call({subnet}), call({subnet})))
300
dns_update_domains, MockCallsMatch(
301
call({node.domain}), call({node.domain})))
302
# Now add an extra StaticIPAddress
303
sip = factory.make_StaticIPAddress(subnet=subnet)
304
sip.interface_set.add(node.get_boot_interface())
305
# This calls dns_update_{domains,subnets}
306
self.assertThat(dns_update_all_zones, MockNotCalled())
308
dns_update_subnets, MockCallsMatch(
309
call({subnet}), call({subnet}), call({subnet})))
311
dns_update_domains, MockCallsMatch(
312
call({node.domain}), call({node.domain}),
313
call({node.domain})))
315
sip.interface_set.remove(node.get_boot_interface())
316
# This calls update_all_zones
317
self.assertThat(dns_update_all_zones, MockCalledOnceWith())
318
self.assertEqual(3, dns_update_subnets.call_count)
319
self.assertEqual(3, dns_update_domains.call_count)