298
298
node = factory.make_node(networks=[network, factory.make_network()])
299
299
self.assertConstrainedNodes([node], {'networks': [network.name]})
301
def test_not_networks_filters_by_name(self):
302
networks = [factory.make_network() for _ in range(2)]
303
nodes = [factory.make_node(networks=[network]) for network in networks]
304
self.assertConstrainedNodes(
306
{'not_networks': [networks[1].name]})
308
def test_not_networks_filters_by_ip(self):
309
networks = [factory.make_network() for _ in range(2)]
310
nodes = [factory.make_node(networks=[network]) for network in networks]
311
self.assertConstrainedNodes(
313
{'not_networks': ['ip:%s' % networks[1].ip]})
315
def test_not_networks_filters_by_vlan_tag(self):
317
networks = [factory.make_network(vlan_tag=tag) for tag in vlan_tags]
318
nodes = [factory.make_node(networks=[network]) for network in networks]
319
self.assertConstrainedNodes(
321
{'not_networks': ['vlan:%d' % vlan_tags[1]]})
323
def test_invalid_not_networks(self):
324
form = AcquireNodeForm(data={'not_networks': 'ip:10.0.0.0'})
330
"Invalid parameter: list of networks required.",
334
(form.is_valid(), form.errors))
336
# The validator is unit-tested separately. This just verifies that it
337
# is being consulted.
338
form = AcquireNodeForm(data={'not_networks': ['vlan:-1']})
340
(False, {'not_networks': ["VLAN tag out of range (1-4094)."]}),
341
(form.is_valid(), form.errors))
343
def test_not_networks_combines_filters(self):
344
network_by_name = factory.make_network()
345
network_by_ip = factory.make_network()
346
network_by_vlan = factory.make_network(vlan_tag=randint(1, 0xffe))
347
factory.make_node(networks=[network_by_name])
348
factory.make_node(networks=[network_by_name, network_by_ip])
349
factory.make_node(networks=[network_by_name, network_by_vlan])
350
factory.make_node(networks=[network_by_vlan])
351
factory.make_node(networks=[network_by_vlan, factory.make_network()])
352
right_node = factory.make_node(networks=[factory.make_network()])
354
self.assertConstrainedNodes(
358
network_by_name.name,
359
'ip:%s' % network_by_ip.ip,
360
'vlan:%d' % network_by_vlan.vlan_tag,
301
364
def test_connected_to(self):
302
365
mac1 = MAC('aa:bb:cc:dd:ee:ff')
303
366
mac2 = MAC('00:11:22:33:44:55')