def test_range_allocation(self): mac = utils.generate_mac() secondmac = utils.generate_mac() hostname = "test-host" address = network.allocate_ip( "netuser", "project0", mac) secondaddress = network.allocate_ip( "netuser", "project1", secondmac) net = network.get_project_network("project0", "default") secondnet = network.get_project_network("project1", "default") self.assertEqual(True, is_in_project(address, "project0")) self.assertEqual(True, is_in_project(secondaddress, "project1")) self.assertEqual(False, is_in_project(address, "project1")) # Addresses are allocated before they're issued self.dnsmasq.issue_ip(mac, address, hostname, net.bridge_name) self.dnsmasq.issue_ip(secondmac, secondaddress, hostname, secondnet.bridge_name) rv = network.deallocate_ip(address) self.dnsmasq.release_ip(mac, address, hostname, net.bridge_name) self.assertEqual(False, is_in_project(address, "project0")) # First address release shouldn't affect the second self.assertEqual(True, is_in_project(secondaddress, "project1")) rv = network.deallocate_ip(secondaddress) self.dnsmasq.release_ip(secondmac, secondaddress, hostname, secondnet.bridge_name) self.assertEqual(False, is_in_project(secondaddress, "project1"))
def test_subnet_edge(self): secondaddress = network.allocate_ip("netuser", "project0", utils.generate_mac()) hostname = "toomany-hosts" for project in range(1,5): project_id = "project%s" % (project) mac = utils.generate_mac() mac2 = utils.generate_mac() mac3 = utils.generate_mac() address = network.allocate_ip( "netuser", project_id, mac) address2 = network.allocate_ip( "netuser", project_id, mac2) address3 = network.allocate_ip( "netuser", project_id, mac3) self.assertEqual(False, is_in_project(address, "project0")) self.assertEqual(False, is_in_project(address2, "project0")) self.assertEqual(False, is_in_project(address3, "project0")) rv = network.deallocate_ip(address) rv = network.deallocate_ip(address2) rv = network.deallocate_ip(address3) net = network.get_project_network(project_id, "default") self.dnsmasq.release_ip(mac, address, hostname, net.bridge_name) self.dnsmasq.release_ip(mac2, address2, hostname, net.bridge_name) self.dnsmasq.release_ip(mac3, address3, hostname, net.bridge_name) net = network.get_project_network("project0", "default") rv = network.deallocate_ip(secondaddress) self.dnsmasq.release_ip(mac, address, hostname, net.bridge_name)
def test_range_allocation(self): address = network.allocate_ip( "netuser", "project0", utils.generate_mac()) secondaddress = network.allocate_ip( "netuser", "project1", utils.generate_mac()) self.assertEqual(True, address in self._get_project_addresses("project0")) self.assertEqual(True, secondaddress in self._get_project_addresses("project1")) self.assertEqual(False, address in self._get_project_addresses("project1")) rv = network.deallocate_ip(address) self.assertEqual(False, address in self._get_project_addresses("project0")) rv = network.deallocate_ip(secondaddress) self.assertEqual(False, secondaddress in self._get_project_addresses("project1"))
def test_allocate_deallocate_ip(self): address = network.allocate_ip( "netuser", "project0", utils.generate_mac()) logging.debug("Was allocated %s" % (address)) self.assertEqual(True, address in self._get_project_addresses("project0")) rv = network.deallocate_ip(address) self.assertEqual(False, address in self._get_project_addresses("project0"))
def test_range_allocation(self): address = network.allocate_ip("netuser", "project0", utils.generate_mac()) secondaddress = network.allocate_ip("netuser", "project1", utils.generate_mac()) self.assertEqual(True, address in self._get_project_addresses("project0")) self.assertEqual( True, secondaddress in self._get_project_addresses("project1")) self.assertEqual(False, address in self._get_project_addresses("project1")) rv = network.deallocate_ip(address) self.assertEqual(False, address in self._get_project_addresses("project0")) rv = network.deallocate_ip(secondaddress) self.assertEqual( False, secondaddress in self._get_project_addresses("project1"))
def test_too_many_projects(self): for i in range(0, 30): name = 'toomany-project%s' % i self.manager.create_project(name, 'netuser', name) address = network.allocate_ip("netuser", name, utils.generate_mac()) rv = network.deallocate_ip(address) self.manager.delete_project(name)
def test_too_many_projects(self): for i in range(0, 30): name = 'toomany-project%s' % i self.manager.create_project(name, 'netuser', name) address = network.allocate_ip( "netuser", name, utils.generate_mac()) rv = network.deallocate_ip(address) self.manager.delete_project(name)
def test_allocate_deallocate_ip(self): address = network.allocate_ip("netuser", "project0", utils.generate_mac()) logging.debug("Was allocated %s" % (address)) self.assertEqual(True, address in self._get_project_addresses("project0")) rv = network.deallocate_ip(address) self.assertEqual(False, address in self._get_project_addresses("project0"))
def test_subnet_edge(self): secondaddress = network.allocate_ip("netuser", "project0", utils.generate_mac()) for project in range(1, 5): project_id = "project%s" % (project) address = network.allocate_ip("netuser", project_id, utils.generate_mac()) address2 = network.allocate_ip("netuser", project_id, utils.generate_mac()) address3 = network.allocate_ip("netuser", project_id, utils.generate_mac()) self.assertEqual( False, address in self._get_project_addresses("project0")) self.assertEqual( False, address2 in self._get_project_addresses("project0")) self.assertEqual( False, address3 in self._get_project_addresses("project0")) rv = network.deallocate_ip(address) rv = network.deallocate_ip(address2) rv = network.deallocate_ip(address3) rv = network.deallocate_ip(secondaddress)
def test_subnet_edge(self): secondaddress = network.allocate_ip("netuser", "project0", utils.generate_mac()) for project in range(1,5): project_id = "project%s" % (project) address = network.allocate_ip( "netuser", project_id, utils.generate_mac()) address2 = network.allocate_ip( "netuser", project_id, utils.generate_mac()) address3 = network.allocate_ip( "netuser", project_id, utils.generate_mac()) self.assertEqual(False, address in self._get_project_addresses("project0")) self.assertEqual(False, address2 in self._get_project_addresses("project0")) self.assertEqual(False, address3 in self._get_project_addresses("project0")) rv = network.deallocate_ip(address) rv = network.deallocate_ip(address2) rv = network.deallocate_ip(address3) rv = network.deallocate_ip(secondaddress)
def test_allocate_deallocate_ip(self): address = network.allocate_ip( "netuser", "project0", utils.generate_mac()) logging.debug("Was allocated %s" % (address)) net = network.get_project_network("project0", "default") self.assertEqual(True, is_in_project(address, "project0")) mac = utils.generate_mac() hostname = "test-host" self.dnsmasq.issue_ip(mac, address, hostname, net.bridge_name) rv = network.deallocate_ip(address) # Doesn't go away until it's dhcp released self.assertEqual(True, is_in_project(address, "project0")) self.dnsmasq.release_ip(mac, address, hostname, net.bridge_name) self.assertEqual(False, is_in_project(address, "project0"))
def test_too_many_addresses(self): """ Network size is 32, there are 5 addresses reserved for VPN. So we should get 23 usable addresses """ net = network.get_project_network("project0", "default") hostname = "toomany-hosts" macs = {} addresses = {} for i in range(0, 22): macs[i] = utils.generate_mac() addresses[i] = network.allocate_ip("netuser", "project0", macs[i]) self.dnsmasq.issue_ip(macs[i], addresses[i], hostname, net.bridge_name) self.assertRaises(NoMoreAddresses, network.allocate_ip, "netuser", "project0", utils.generate_mac()) for i in range(0, 22): rv = network.deallocate_ip(addresses[i]) self.dnsmasq.release_ip(macs[i], addresses[i], hostname, net.bridge_name)