def test_modify_existing_performs_validation(self): subnet = make_plain_subnet() IPRange( subnet=subnet, type=IPRANGE_TYPE.DYNAMIC, start_ip="192.168.0.100", end_ip="192.168.0.150", ).save() iprange = IPRange( subnet=subnet, type=IPRANGE_TYPE.DYNAMIC, start_ip="192.168.0.151", end_ip="192.168.0.200", ) iprange.save() # Make sure safe modification works. iprange.start_ip = "192.168.0.210" iprange.end_ip = "192.168.0.250" iprange.save() # Modify again, but conflict with first range this time. instance_id = iprange.id iprange.start_ip = "192.168.0.110" iprange.end_ip = "192.168.0.140" with ExpectedException(ValidationError, self.dynamic_overlaps): iprange.save() # Make sure original range isn't deleted after failure to modify. iprange = reload_object(iprange) self.assertEqual(iprange.id, instance_id)
def test_reserved_range_can_overlap_gateway_ip(self): subnet = make_plain_subnet() iprange = IPRange( subnet=subnet, type=IPRANGE_TYPE.RESERVED, start_ip="192.168.0.2", end_ip="192.168.0.5", ) iprange.save() # A RESERVED range can overlap the gateway IP. iprange.start_ip = "192.168.0.1" iprange.save()
def test_change_dynamic_to_reserved(self): subnet = make_plain_subnet() iprange = IPRange( subnet=subnet, type=IPRANGE_TYPE.DYNAMIC, start_ip="192.168.0.2", end_ip="192.168.0.5", ) iprange.save() # Reserved should save OK overlapping gateway IP. iprange.type = IPRANGE_TYPE.RESERVED iprange.start_ip = "192.168.0.1" iprange.save()
def test_dynamic_range_cant_overlap_gateway_ip(self): subnet = make_plain_subnet() iprange = IPRange( subnet=subnet, type=IPRANGE_TYPE.DYNAMIC, start_ip="192.168.0.2", end_ip="192.168.0.5", ) iprange.save() # A DYNAMIC range cannot overlap the gateway IP. iprange.start_ip = "192.168.0.1" with ExpectedException(ValidationError, self.dynamic_overlaps): iprange.save()
def test_change_reserved_to_dynamic(self): subnet = make_plain_subnet() iprange = IPRange( subnet=subnet, type=IPRANGE_TYPE.RESERVED, start_ip="192.168.0.1", end_ip="192.168.0.5", ) # Reserved should save OK overlapping gateway IP. iprange.save() # Dynamic should not save overlapping gateway IP. iprange.type = IPRANGE_TYPE.DYNAMIC with ExpectedException(ValidationError, self.dynamic_overlaps): iprange.save() # Fix start_ip and now it should save. iprange.start_ip = "192.168.0.2" iprange.save()