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)
Beispiel #3
0
 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"))
Beispiel #4
0
 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"))
Beispiel #5
0
 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"))
Beispiel #6
0
 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)
Beispiel #7
0
 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)
Beispiel #8
0
 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"))
Beispiel #9
0
 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)
Beispiel #10
0
 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)