Ejemplo n.º 1
0
 def test_only_if_exist(self):
     sub = IpAddressPool("10.0.0.0/24")
     self.assertEqual(str(sub.get(identifier="first")), "10.0.0.1")
     self.assertEqual(
         str(sub.get(identifier="first", only_if_exist=True)), "10.0.0.1"
     )
     self.assertEqual(sub.get(identifier="second", only_if_exist=True), False)
Ejemplo n.º 2
0
    def test_no_more_ip(self):
        sub = IpAddressPool("10.0.0.0/30")

        self.assertEqual(str(sub.get()), "10.0.0.1")
        self.assertEqual(str(sub.get()), "10.0.0.2")
        self.assertIsNone(sub.get())
        self.assertIsNone(sub.get())
Ejemplo n.º 3
0
    def _add_prefix(self, prefix):

        ###
        pool = IpAddressPool(prefix)

        ### Get the list of existing IPs in Netbox
        resp = self._get_all_ips_per_prefix(prefix=prefix)

        logger.debug("Found %s ip(s) in Netbox for %s" %
                     (len(resp["results"]), prefix))

        for ip in resp["results"]:
            if ip["status"]["label"] not in ["Active", "Reserved"]:
                continue

            identifier = None

            ## make sure we have a device and an interface assigned to this IP
            if isinstance(ip["interface"], dict):
                if "device" in ip["interface"].keys():
                    identifier = "{device}::{interface}".format(
                        device=ip["interface"]["device"]["name"],
                        interface=ip["interface"]["name"],
                    )

            pool.reserve(ip["address"], identifier=identifier)

        self.subnets.append(pool)

        return True
Ejemplo n.º 4
0
    def test_v4_with_id(self):
        sub = IpAddressPool("10.0.0.0/24")

        self.assertEqual(str(sub.get()), "10.0.0.1")
        self.assertEqual(str(sub.get(id=1)), "10.0.0.1")
        self.assertEqual(str(sub.get(id=4)), "10.0.0.4")

        self.assertEqual(str(sub.get(id=1, identifier="gateway")), "10.0.0.1")
        self.assertFalse(sub.get(id=1))
Ejemplo n.º 5
0
    def test_nbr_address(self):

        sub1 = IpAddressPool("10.0.0.0/24")
        sub2 = IpAddressPool("10.0.0.0/30")
        sub3 = IpAddressPool("10.0.0.0/31")

        sub4 = IpAddressPool("2620:0000:0000::0/31")
        sub5 = IpAddressPool("2620:135:6000::0/126")
        sub6 = IpAddressPool("2620:135:6000::0/127")

        self.assertEqual(sub1.num_addresses, 254)
        self.assertEqual(sub2.num_addresses, 2)
        self.assertEqual(sub3.num_addresses, 2)

        self.assertEqual(sub4.num_addresses, 158456325028528675187087900670)
        self.assertEqual(sub5.num_addresses, 2)
        self.assertEqual(sub6.num_addresses, 2)
Ejemplo n.º 6
0
    def test_with_owner(self):
        sub = IpAddressPool("10.0.0.0/30")

        self.assertEqual(sub.reserve("10.0.0.1", identifier="first"), True)
        self.assertEqual(str(sub.get(identifier="first")), "10.0.0.1")
Ejemplo n.º 7
0
    def test_no_owner(self):
        sub = IpAddressPool("10.0.0.0/30")

        self.assertEqual(sub.reserve("10.0.0.1"), True)
        self.assertEqual(str(sub.get()), "10.0.0.2")
Ejemplo n.º 8
0
 def test_big_IpAddressPool(self):
     sub = IpAddressPool("2620:135:6000::0/64")
     self.assertEqual(str(sub.get(identifier="first")), "2620:135:6000::1")
     self.assertEqual(str(sub.get(identifier="second")), "2620:135:6000::2")
     self.assertEqual(str(sub.get(identifier="first")), "2620:135:6000::1")
Ejemplo n.º 9
0
 def test_v6_with_label(self):
     sub = IpAddressPool("2620:135:6000::0/126")
     self.assertEqual(str(sub.get(identifier="first")), "2620:135:6000::1")
     self.assertEqual(str(sub.get(identifier="second")), "2620:135:6000::2")
     self.assertEqual(str(sub.get(identifier="first")), "2620:135:6000::1")
Ejemplo n.º 10
0
    def test_v6_no_owner(self):
        sub = IpAddressPool("2620:135:6000::0/126")

        self.assertEqual(str(sub.get()), "2620:135:6000::1")
        self.assertEqual(str(sub.get()), "2620:135:6000::2")
Ejemplo n.º 11
0
 def test_v4_with_label(self):
     sub = IpAddressPool("10.0.0.0/30")
     self.assertEqual(str(sub.get(identifier="first")), "10.0.0.1")
     self.assertEqual(str(sub.get(identifier="second")), "10.0.0.2")
     self.assertEqual(str(sub.get(identifier="first")), "10.0.0.1")