def test_auto_reservations_2(self): obj = DummyObject(0) network = DummyObject(0) obj.network = network network.subnet = '192.168.2.0/31' network.gateway = '192.168.2.1' pool = IPPool(obj) self.assertEqual(pool.is_available('192.168.2.0'), False) self.assertEqual(pool.is_available('192.168.2.1'), False) self.assertEqual(pool.size(), 8) self.assertEqual(pool.empty(), True)
def test_auto_reservations(self): obj = DummyObject(0) network = DummyObject(0) obj.network = network network.subnet = '192.168.2.0/24' network.gateway = '192.168.2.1' pool = IPPool(obj) self.assertEqual(pool.is_available('192.168.2.0'), False) self.assertEqual(pool.is_available('192.168.2.1'), False) self.assertEqual(pool.is_available('192.168.2.255'), False) self.assertEqual(pool.count_available(), 253) self.assertEqual(pool.get(), '192.168.2.2')
def test_get_with_value(self): obj = DummyObject(16) subnet = DummyObject(0) obj.subnet = subnet subnet.cidr = "192.168.2.0/28" subnet.gateway = None obj.base = "192.168.2.0/28" obj.offset = 0 pool = IPPool(obj) # Test if reserved pool.reserve("192.168.2.2") self.assertRaises(ValueNotAvailable, pool.get, "192.168.2.2") # Test if externally reserved pool.reserve("192.168.2.3", external=True) self.assertRaises(ValueNotAvailable, pool.get, "192.168.2.3") self.assertRaises(InvalidValue, pool.get, "192.168.2.16")
def get_network_pool(gnet): """Return available and reserved IP maps. Extract the available and reserved IP map from the info return from Ganeti for a network. """ converter = IPPool(Foo(gnet['network'])) a_map = bitarray_from_map(gnet['map']) a_map.invert() reserved = gnet['external_reservations'] r_map = a_map.copy() r_map.setall(True) for address in reserved.split(','): index = converter.value_to_index(address) a_map[index] = True r_map[index] = False return a_map, r_map