コード例 #1
0
 def test_duplicate_vrf(self):
     vrf = VRF.objects.create(name="Test", rd="1:1", enforce_unique=False)
     IPAddress.objects.create(vrf=vrf,
                              address=netaddr.IPNetwork("192.0.2.1/24"))
     duplicate_ip = IPAddress(vrf=vrf,
                              address=netaddr.IPNetwork("192.0.2.1/24"))
     self.assertIsNone(duplicate_ip.clean())
コード例 #2
0
    def test_get_first_available_ip(self):

        parent_prefix = Prefix.objects.create(
            prefix=netaddr.IPNetwork("10.0.0.0/24"))
        IPAddress.objects.bulk_create((
            IPAddress(address=netaddr.IPNetwork("10.0.0.1/24")),
            IPAddress(address=netaddr.IPNetwork("10.0.0.2/24")),
            IPAddress(address=netaddr.IPNetwork("10.0.0.3/24")),
        ))
        self.assertEqual(parent_prefix.get_first_available_ip(), "10.0.0.4/24")

        IPAddress.objects.create(address=netaddr.IPNetwork("10.0.0.4/24"))
        self.assertEqual(parent_prefix.get_first_available_ip(), "10.0.0.5/24")
コード例 #3
0
 def test_duplicate_vrf_unique(self):
     vrf = VRF.objects.create(name="Test", rd="1:1", enforce_unique=True)
     IPAddress.objects.create(vrf=vrf,
                              address=netaddr.IPNetwork("192.0.2.1/24"))
     duplicate_ip = IPAddress(vrf=vrf,
                              address=netaddr.IPNetwork("192.0.2.1/24"))
     self.assertRaises(ValidationError, duplicate_ip.clean)
コード例 #4
0
    def test_get_available_ips(self):

        parent_prefix = Prefix.objects.create(
            prefix=netaddr.IPNetwork("10.0.0.0/28"))
        IPAddress.objects.bulk_create((
            IPAddress(address=netaddr.IPNetwork("10.0.0.1/26")),
            IPAddress(address=netaddr.IPNetwork("10.0.0.3/26")),
            IPAddress(address=netaddr.IPNetwork("10.0.0.5/26")),
            IPAddress(address=netaddr.IPNetwork("10.0.0.7/26")),
            IPAddress(address=netaddr.IPNetwork("10.0.0.9/26")),
            IPAddress(address=netaddr.IPNetwork("10.0.0.11/26")),
            IPAddress(address=netaddr.IPNetwork("10.0.0.13/26")),
        ))
        missing_ips = netaddr.IPSet([
            "10.0.0.2/32",
            "10.0.0.4/32",
            "10.0.0.6/32",
            "10.0.0.8/32",
            "10.0.0.10/32",
            "10.0.0.12/32",
            "10.0.0.14/32",
        ])
        available_ips = parent_prefix.get_available_ips()

        self.assertEqual(available_ips, missing_ips)
コード例 #5
0
 def test_address_initial(self):
     """Ensure initial kwargs for address is passed in."""
     with mock.patch(
             "nautobot.utilities.forms.forms.forms.ModelForm.__init__"
     ) as mock_init:
         ip_none = IPAddress()
         AddressFieldMixin(initial=self.initial, instance=ip_none)
         mock_init.assert_called_with(initial=self.initial,
                                      instance=ip_none)
コード例 #6
0
    def test_not_null_assigned_object_type_and_null_assigned_object_id(self):
        site = Site.objects.create(name="Test Site 1", slug="test-site-1")
        manufacturer = Manufacturer.objects.create(name="Test Manufacturer 1",
                                                   slug="test-manufacturer-1")
        devicetype = DeviceType.objects.create(
            manufacturer=manufacturer,
            model="Test Device Type 1",
            slug="test-device-type-1",
        )
        devicerole = DeviceRole.objects.create(name="Test Device Role 1",
                                               slug="test-device-role-1",
                                               color="ff0000")
        device_status = Status.objects.get_for_model(Device).get(slug="active")
        device = Device.objects.create(
            device_type=devicetype,
            device_role=devicerole,
            name="TestDevice1",
            site=site,
            status=device_status,
        )
        interface = Interface.objects.create(device=device, name="eth0")
        ipaddress_1 = IPAddress(
            address=netaddr.IPNetwork("192.0.2.1/24"),
            role=IPAddressRoleChoices.ROLE_VIP,
            assigned_object_id=interface.id,
        )

        self.assertRaises(ValidationError, ipaddress_1.clean)

        # Test IPAddress.clean() raises no exception if assigned_object_id and assigned_object_type
        # are both provided
        ipaddress_2 = IPAddress(
            address=netaddr.IPNetwork("192.0.2.1/24"),
            role=IPAddressRoleChoices.ROLE_VIP,
            assigned_object_id=interface.id,
            assigned_object_type=ContentType.objects.get_for_model(Interface),
        )
        self.assertIsNone(ipaddress_2.clean())
コード例 #7
0
    def test_get_utilization(self):

        # Container Prefix
        prefix = Prefix.objects.create(prefix=netaddr.IPNetwork("10.0.0.0/24"),
                                       status=Prefix.STATUS_CONTAINER)
        Prefix.objects.bulk_create((
            Prefix(prefix=netaddr.IPNetwork("10.0.0.0/26")),
            Prefix(prefix=netaddr.IPNetwork("10.0.0.128/26")),
        ))
        self.assertEqual(prefix.get_utilization(), (128, 256))

        # IPv4 Non-container Prefix /24
        prefix.status = self.statuses.get(slug="active")
        prefix.save()
        IPAddress.objects.bulk_create(
            # Create 32 IPAddresses within the Prefix
            [
                IPAddress(address=netaddr.IPNetwork("10.0.0.{}/24".format(i)))
                for i in range(1, 33)
            ])
        # Create IPAddress objects for network and broadcast addresses
        IPAddress.objects.bulk_create(
            (IPAddress(address=netaddr.IPNetwork("10.0.0.0/32")),
             IPAddress(address=netaddr.IPNetwork("10.0.0.255/32"))))
        self.assertEqual(prefix.get_utilization(), (32, 254))

        # Change prefix to a pool, network and broadcast address will count toward numerator and denominator in utilization
        prefix.is_pool = True
        prefix.save()
        self.assertEqual(prefix.get_utilization(), (34, 256))

        # IPv4 Non-container Prefix /31, network and broadcast addresses count toward utilization
        prefix = Prefix.objects.create(prefix="10.0.1.0/31")
        IPAddress.objects.bulk_create(
            (IPAddress(address=netaddr.IPNetwork("10.0.1.0/32")),
             IPAddress(address=netaddr.IPNetwork("10.0.1.1/32"))))
        self.assertEqual(prefix.get_utilization(), (2, 2))

        # IPv6 Non-container Prefix, network and broadcast addresses count toward utilization
        prefix = Prefix.objects.create(prefix="aaaa::/124")
        IPAddress.objects.bulk_create(
            (IPAddress(address=netaddr.IPNetwork("aaaa::0/128")),
             IPAddress(address=netaddr.IPNetwork("aaaa::f/128"))))
        self.assertEqual(prefix.get_utilization(), (2, 16))
コード例 #8
0
ファイル: test_models.py プロジェクト: erjac77/nautobot
    def test_get_utilization(self):

        # Container Prefix
        prefix = Prefix.objects.create(prefix=netaddr.IPNetwork("10.0.0.0/24"), status=Prefix.STATUS_CONTAINER)
        Prefix.objects.bulk_create(
            (
                Prefix(prefix=netaddr.IPNetwork("10.0.0.0/26")),
                Prefix(prefix=netaddr.IPNetwork("10.0.0.128/26")),
            )
        )
        self.assertEqual(prefix.get_utilization(), (128, 256))

        # Non-container Prefix
        prefix.status = self.statuses.get(slug="active")
        prefix.save()
        IPAddress.objects.bulk_create(
            # Create 32 IPAddresses within the Prefix
            [IPAddress(address=netaddr.IPNetwork("10.0.0.{}/24".format(i))) for i in range(1, 33)]
        )
        self.assertEqual(prefix.get_utilization(), (32, 254))
コード例 #9
0
 def test_duplicate_global_unique(self):
     IPAddress.objects.create(address=netaddr.IPNetwork("192.0.2.1/24"))
     duplicate_ip = IPAddress(address=netaddr.IPNetwork("192.0.2.1/24"))
     self.assertRaises(ValidationError, duplicate_ip.clean)
コード例 #10
0
 def test_duplicate_global(self):
     IPAddress.objects.create(address=netaddr.IPNetwork("192.0.2.1/24"))
     duplicate_ip = IPAddress(address=netaddr.IPNetwork("192.0.2.1/24"))
     self.assertIsNone(duplicate_ip.clean())