184
179
reload_object(subnet).vlan, fabric.get_default_vlan())
187
class TestVLANConfigureDHCP(MAASServerTestCase):
189
def _regex(self, string):
190
"""Returns an escaped regular expression for the given string, which
191
will match the given string anywhere in the input to the regex.
193
return ".*" + re.escape(string) + ".*"
195
def test__unconfigures_dhcp(self):
196
primary = factory.make_RackController()
197
secondary = factory.make_RackController()
198
vlan = factory.make_VLAN()
200
vlan.primary_rack = primary
201
vlan.secondary_rack = secondary
202
vlan.configure_dhcp([])
203
self.assertThat(vlan.dhcp_on, Equals(False))
204
self.assertThat(vlan.primary_rack, Is(None))
205
self.assertThat(vlan.secondary_rack, Is(None))
207
def test__configures_dhcp_with_one_controller(self):
208
primary = factory.make_RackController()
209
secondary = factory.make_RackController()
210
vlan = factory.make_VLAN()
212
vlan.primary_rack = primary
213
vlan.secondary_rack = secondary
214
vlan.configure_dhcp([primary])
215
self.assertThat(vlan.dhcp_on, Equals(True))
216
self.assertThat(vlan.primary_rack, Is(primary))
217
self.assertThat(vlan.secondary_rack, Is(None))
219
def test__configures_dhcp_with_two_controllers(self):
220
primary = factory.make_RackController()
221
secondary = factory.make_RackController()
222
vlan = factory.make_VLAN()
223
vlan.configure_dhcp([primary, secondary])
224
self.assertThat(vlan.dhcp_on, Equals(True))
225
self.assertThat(vlan.primary_rack, Is(primary))
226
self.assertThat(vlan.secondary_rack, Is(secondary))
228
def test__rejects_non_list(self):
229
vlan = factory.make_VLAN()
230
with ExpectedException(
231
AssertionError, self._regex(VLAN.MUST_SPECIFY_LIST_ERROR)):
232
vlan.configure_dhcp(1)
234
def test__rejects_three_item_list(self):
235
rack1 = factory.make_RackController()
236
rack2 = factory.make_RackController()
237
rack3 = factory.make_RackController()
238
vlan = factory.make_VLAN()
239
with ExpectedException(
240
ValueError, self._regex(
241
VLAN.INVALID_NUMBER_OF_CONTROLLERS_ERROR % 3)):
242
vlan.configure_dhcp([rack1, rack2, rack3])
244
def test__rejects_list_with_duplicate_items(self):
245
rack = factory.make_RackController()
246
vlan = factory.make_VLAN()
247
with ExpectedException(
248
ValidationError, self._regex(VLAN.DUPLICATE_CONTROLLER_ERROR)):
249
vlan.configure_dhcp([rack, rack])
252
182
class TestVLANVidValidation(MAASServerTestCase):