10
10
from maasserver.forms_vlan import VLANForm
11
from maasserver.models.fabric import Fabric
11
12
from maasserver.models.vlan import DEFAULT_MTU
12
13
from maasserver.testing.factory import factory
13
14
from maasserver.testing.testcase import MAASServerTestCase
31
def test__vlans_already_using_relay_vlan_not_shown(self):
32
fabric = Fabric.objects.get_default_fabric()
33
relay_vlan = factory.make_VLAN()
34
factory.make_VLAN(relay_vlan=relay_vlan)
35
form = VLANForm(fabric=fabric, data={})
36
self.assertItemsEqual(
37
[fabric.get_default_vlan(), relay_vlan],
38
form.fields['relay_vlan'].queryset)
40
def test__self_vlan_not_used_in_relay_vlan_field(self):
41
fabric = Fabric.objects.get_default_fabric()
42
relay_vlan = fabric.get_default_vlan()
43
form = VLANForm(instance=relay_vlan, data={})
44
self.assertItemsEqual([], form.fields['relay_vlan'].queryset)
46
def test__no_relay_vlans_allowed_when_dhcp_on(self):
47
vlan = factory.make_VLAN(dhcp_on=True)
49
form = VLANForm(instance=vlan, data={})
50
self.assertItemsEqual([], form.fields['relay_vlan'].queryset)
30
52
def test__creates_vlan(self):
31
53
fabric = factory.make_Fabric()
32
54
vlan_name = factory.make_name("vlan")
211
233
vlan = reload_object(vlan)
212
234
self.assertTrue(vlan.dhcp_on)
236
def test_update_sets_relay_vlan(self):
237
vlan = factory.make_VLAN()
238
relay_vlan = factory.make_VLAN()
239
form = VLANForm(instance=vlan, data={
240
"relay_vlan": relay_vlan.id,
242
self.assertTrue(form.is_valid(), form.errors)
244
vlan = reload_object(vlan)
245
self.assertEquals(relay_vlan.id, vlan.relay_vlan.id)
247
def test_update_clears_relay_vlan_when_None(self):
248
relay_vlan = factory.make_VLAN()
249
vlan = factory.make_VLAN(relay_vlan=relay_vlan)
250
form = VLANForm(instance=vlan, data={
253
self.assertTrue(form.is_valid(), form.errors)
255
vlan = reload_object(vlan)
256
self.assertIsNone(vlan.relay_vlan)
258
def test_update_clears_relay_vlan_when_empty(self):
259
relay_vlan = factory.make_VLAN()
260
vlan = factory.make_VLAN(relay_vlan=relay_vlan)
261
form = VLANForm(instance=vlan, data={
264
self.assertTrue(form.is_valid(), form.errors)
266
vlan = reload_object(vlan)
267
self.assertIsNone(vlan.relay_vlan)
269
def test_update_disables_relay_vlan_when_dhcp_turned_on(self):
270
relay_vlan = factory.make_VLAN()
271
vlan = factory.make_VLAN(relay_vlan=relay_vlan)
272
factory.make_ipv4_Subnet_with_IPRanges(vlan=vlan)
273
rack = factory.make_RackController(vlan=vlan)
274
vlan.primary_rack = rack
276
form = VLANForm(instance=reload_object(vlan), data={
279
self.assertTrue(form.is_valid(), form.errors)
281
vlan = reload_object(vlan)
282
self.assertIsNone(vlan.relay_vlan)
214
284
def test_update_validates_primary_rack_with_dhcp_on(self):
215
285
vlan = factory.make_VLAN()
216
286
form = VLANForm(instance=vlan, data={