|
@@ -5,279 +5,177 @@ from ipam.models import IPAddress, Prefix, VRF
|
|
|
|
|
|
|
|
import netaddr
|
|
import netaddr
|
|
|
|
|
|
|
|
-
|
|
|
|
|
-class PrefixOrderingTestCase(TestCase):
|
|
|
|
|
|
|
+class OrderingTestBase(TestCase):
|
|
|
vrfs = None
|
|
vrfs = None
|
|
|
|
|
|
|
|
|
|
+ """
|
|
|
|
|
+ Setup the VRFs for the class as a whole
|
|
|
|
|
+ """
|
|
|
def setUp(self):
|
|
def setUp(self):
|
|
|
- vrfa = VRF(name="VRF A")
|
|
|
|
|
- vrfb = VRF(name="VRF B")
|
|
|
|
|
- vrfc = VRF(name="VRF C")
|
|
|
|
|
- VRF.objects.bulk_create([vrfa, vrfb, vrfc])
|
|
|
|
|
- self.vrfs = (vrfa, vrfb, vrfc)
|
|
|
|
|
-
|
|
|
|
|
- def _create_prefix(self, prefixes):
|
|
|
|
|
- prefixobjects = []
|
|
|
|
|
- for pfx in prefixes:
|
|
|
|
|
- status, vrf, prefix = pfx
|
|
|
|
|
- family = 4
|
|
|
|
|
- if not netaddr.valid_ipv4(prefix):
|
|
|
|
|
- family = 6
|
|
|
|
|
- pfx = Prefix(prefix=prefix, family=family, vrf=vrf, status=status)
|
|
|
|
|
- prefixobjects.append(pfx)
|
|
|
|
|
|
|
+ self.vrfs = (VRF(name="VRF A"), VRF(name="VRF B"), VRF(name="VRF C"))
|
|
|
|
|
+ VRF.objects.bulk_create(self.vrfs)
|
|
|
|
|
|
|
|
- return prefixobjects
|
|
|
|
|
|
|
+ """
|
|
|
|
|
+ Perform the comparison of the queryset object and the object used to instantiate the queryset.
|
|
|
|
|
+ """
|
|
|
|
|
+ def _compare(self, queryset, objectset):
|
|
|
|
|
+ for i, obj in enumerate(queryset):
|
|
|
|
|
+ if isinstance(obj, Prefix):
|
|
|
|
|
+ self.assertEqual((obj.vrf, obj.prefix), (objectset[i]['vrf'], objectset[i]['prefix']))
|
|
|
|
|
+ elif isinstance(obj, IPAddress):
|
|
|
|
|
+ self.assertEqual((obj.vrf, obj.address), (objectset[i]['vrf'], objectset[i]['address']))
|
|
|
|
|
|
|
|
- def _compare_prefix(self, queryset, prefixes):
|
|
|
|
|
|
|
|
|
|
- for i, obj in enumerate(queryset):
|
|
|
|
|
- status, vrf, prefix = prefixes[i]
|
|
|
|
|
- self.assertEqual((obj.vrf, obj.prefix), (vrf, prefix))
|
|
|
|
|
|
|
+class PrefixOrderingTestCase(OrderingTestBase):
|
|
|
|
|
|
|
|
|
|
+ """
|
|
|
|
|
+ This is for comparing the complex ordering test case
|
|
|
|
|
+ """
|
|
|
def _compare_complex(self, queryset, prefixes):
|
|
def _compare_complex(self, queryset, prefixes):
|
|
|
qsprefixes, regprefixes = [], []
|
|
qsprefixes, regprefixes = [], []
|
|
|
for i, obj in enumerate(queryset):
|
|
for i, obj in enumerate(queryset):
|
|
|
qsprefixes.append(obj.prefix)
|
|
qsprefixes.append(obj.prefix)
|
|
|
for pfx in prefixes:
|
|
for pfx in prefixes:
|
|
|
- regprefixes.append(pfx[2])
|
|
|
|
|
- return (qsprefixes, regprefixes)
|
|
|
|
|
-
|
|
|
|
|
-
|
|
|
|
|
-
|
|
|
|
|
- def test_prefix_ordering(self):
|
|
|
|
|
- # Setup Prefixes
|
|
|
|
|
- prefixes = (
|
|
|
|
|
- (PrefixStatusChoices.STATUS_CONTAINER, None, netaddr.IPNetwork('10.0.0.0/8')),
|
|
|
|
|
- (PrefixStatusChoices.STATUS_CONTAINER, None, netaddr.IPNetwork('10.0.0.0/16')),
|
|
|
|
|
- (PrefixStatusChoices.STATUS_ACTIVE, None, netaddr.IPNetwork('10.0.0.0/24')),
|
|
|
|
|
- (PrefixStatusChoices.STATUS_ACTIVE, None, netaddr.IPNetwork('10.0.1.0/24')),
|
|
|
|
|
- (PrefixStatusChoices.STATUS_ACTIVE, None, netaddr.IPNetwork('10.0.2.0/24')),
|
|
|
|
|
- (PrefixStatusChoices.STATUS_ACTIVE, None, netaddr.IPNetwork('10.0.3.0/24')),
|
|
|
|
|
- (PrefixStatusChoices.STATUS_ACTIVE, None, netaddr.IPNetwork('10.0.4.0/24')),
|
|
|
|
|
- (PrefixStatusChoices.STATUS_CONTAINER, None, netaddr.IPNetwork('10.1.0.0/16')),
|
|
|
|
|
- (PrefixStatusChoices.STATUS_ACTIVE, None, netaddr.IPNetwork('10.1.1.0/24')),
|
|
|
|
|
- (PrefixStatusChoices.STATUS_ACTIVE, None, netaddr.IPNetwork('10.1.2.0/24')),
|
|
|
|
|
- (PrefixStatusChoices.STATUS_ACTIVE, None, netaddr.IPNetwork('10.1.3.0/24')),
|
|
|
|
|
- (PrefixStatusChoices.STATUS_ACTIVE, None, netaddr.IPNetwork('10.1.4.0/24')),
|
|
|
|
|
- (PrefixStatusChoices.STATUS_CONTAINER, None, netaddr.IPNetwork('10.2.0.0/16')),
|
|
|
|
|
- (PrefixStatusChoices.STATUS_ACTIVE, None, netaddr.IPNetwork('10.2.1.0/24')),
|
|
|
|
|
- (PrefixStatusChoices.STATUS_ACTIVE, None, netaddr.IPNetwork('10.2.2.0/24')),
|
|
|
|
|
- (PrefixStatusChoices.STATUS_ACTIVE, None, netaddr.IPNetwork('10.2.3.0/24')),
|
|
|
|
|
- (PrefixStatusChoices.STATUS_ACTIVE, None, netaddr.IPNetwork('10.2.4.0/24')),
|
|
|
|
|
-
|
|
|
|
|
- (PrefixStatusChoices.STATUS_CONTAINER, None, netaddr.IPNetwork('172.16.0.0/12')),
|
|
|
|
|
- (PrefixStatusChoices.STATUS_CONTAINER, None, netaddr.IPNetwork('172.16.0.0/16')),
|
|
|
|
|
- (PrefixStatusChoices.STATUS_ACTIVE, None, netaddr.IPNetwork('172.16.0.0/24')),
|
|
|
|
|
- (PrefixStatusChoices.STATUS_ACTIVE, None, netaddr.IPNetwork('172.16.1.0/24')),
|
|
|
|
|
- (PrefixStatusChoices.STATUS_ACTIVE, None, netaddr.IPNetwork('172.16.2.0/24')),
|
|
|
|
|
- (PrefixStatusChoices.STATUS_ACTIVE, None, netaddr.IPNetwork('172.16.3.0/24')),
|
|
|
|
|
- (PrefixStatusChoices.STATUS_ACTIVE, None, netaddr.IPNetwork('172.16.4.0/24')),
|
|
|
|
|
- (PrefixStatusChoices.STATUS_CONTAINER, None, netaddr.IPNetwork('172.17.0.0/16')),
|
|
|
|
|
- (PrefixStatusChoices.STATUS_ACTIVE, None, netaddr.IPNetwork('172.17.0.0/24')),
|
|
|
|
|
- (PrefixStatusChoices.STATUS_ACTIVE, None, netaddr.IPNetwork('172.17.1.0/24')),
|
|
|
|
|
- (PrefixStatusChoices.STATUS_ACTIVE, None, netaddr.IPNetwork('172.17.2.0/24')),
|
|
|
|
|
- (PrefixStatusChoices.STATUS_ACTIVE, None, netaddr.IPNetwork('172.17.3.0/24')),
|
|
|
|
|
- (PrefixStatusChoices.STATUS_ACTIVE, None, netaddr.IPNetwork('172.17.4.0/24')),
|
|
|
|
|
-
|
|
|
|
|
- (PrefixStatusChoices.STATUS_CONTAINER, None, netaddr.IPNetwork('192.168.0.0/16')),
|
|
|
|
|
- (PrefixStatusChoices.STATUS_ACTIVE, None, netaddr.IPNetwork('192.168.0.0/24')),
|
|
|
|
|
- (PrefixStatusChoices.STATUS_ACTIVE, None, netaddr.IPNetwork('192.168.1.0/24')),
|
|
|
|
|
- (PrefixStatusChoices.STATUS_ACTIVE, None, netaddr.IPNetwork('192.168.2.0/24')),
|
|
|
|
|
- (PrefixStatusChoices.STATUS_ACTIVE, None, netaddr.IPNetwork('192.168.3.0/24')),
|
|
|
|
|
- (PrefixStatusChoices.STATUS_ACTIVE, None, netaddr.IPNetwork('192.168.4.0/24')),
|
|
|
|
|
- (PrefixStatusChoices.STATUS_ACTIVE, None, netaddr.IPNetwork('192.168.5.0/24'))
|
|
|
|
|
- )
|
|
|
|
|
- Prefix.objects.bulk_create(self._create_prefix(prefixes))
|
|
|
|
|
-
|
|
|
|
|
- # Test
|
|
|
|
|
- self._compare_prefix(Prefix.objects.all(), prefixes)
|
|
|
|
|
|
|
+ regprefixes.append(pfx['prefix'])
|
|
|
|
|
+ self.assertEquals(qsprefixes, regprefixes)
|
|
|
|
|
|
|
|
|
|
+ """
|
|
|
|
|
+ This is a very basic test, which tests both prefixes without VRFs and prefixes with VRFs
|
|
|
|
|
+ """
|
|
|
def test_prefix_vrf_ordering(self):
|
|
def test_prefix_vrf_ordering(self):
|
|
|
# Setup VRFs
|
|
# Setup VRFs
|
|
|
vrfa, vrfb, vrfc = self.vrfs
|
|
vrfa, vrfb, vrfc = self.vrfs
|
|
|
|
|
|
|
|
# Setup Prefixes
|
|
# Setup Prefixes
|
|
|
prefixes = (
|
|
prefixes = (
|
|
|
- (PrefixStatusChoices.STATUS_CONTAINER, None, netaddr.IPNetwork('192.168.0.0/16')),
|
|
|
|
|
- (PrefixStatusChoices.STATUS_ACTIVE, None, netaddr.IPNetwork('192.168.0.0/24')),
|
|
|
|
|
- (PrefixStatusChoices.STATUS_ACTIVE, None, netaddr.IPNetwork('192.168.1.0/24')),
|
|
|
|
|
- (PrefixStatusChoices.STATUS_ACTIVE, None, netaddr.IPNetwork('192.168.2.0/24')),
|
|
|
|
|
- (PrefixStatusChoices.STATUS_ACTIVE, None, netaddr.IPNetwork('192.168.3.0/24')),
|
|
|
|
|
- (PrefixStatusChoices.STATUS_ACTIVE, None, netaddr.IPNetwork('192.168.4.0/24')),
|
|
|
|
|
- (PrefixStatusChoices.STATUS_ACTIVE, None, netaddr.IPNetwork('192.168.5.0/24')),
|
|
|
|
|
-
|
|
|
|
|
- (PrefixStatusChoices.STATUS_CONTAINER, vrfa, netaddr.IPNetwork('10.0.0.0/8')),
|
|
|
|
|
- (PrefixStatusChoices.STATUS_CONTAINER, vrfa, netaddr.IPNetwork('10.0.0.0/16')),
|
|
|
|
|
- (PrefixStatusChoices.STATUS_ACTIVE, vrfa, netaddr.IPNetwork('10.0.0.0/24')),
|
|
|
|
|
- (PrefixStatusChoices.STATUS_ACTIVE, vrfa, netaddr.IPNetwork('10.0.1.0/24')),
|
|
|
|
|
- (PrefixStatusChoices.STATUS_ACTIVE, vrfa, netaddr.IPNetwork('10.0.2.0/24')),
|
|
|
|
|
- (PrefixStatusChoices.STATUS_ACTIVE, vrfa, netaddr.IPNetwork('10.0.3.0/24')),
|
|
|
|
|
- (PrefixStatusChoices.STATUS_ACTIVE, vrfa, netaddr.IPNetwork('10.0.4.0/24')),
|
|
|
|
|
- (PrefixStatusChoices.STATUS_CONTAINER, vrfa, netaddr.IPNetwork('10.1.0.0/16')),
|
|
|
|
|
- (PrefixStatusChoices.STATUS_ACTIVE, vrfa, netaddr.IPNetwork('10.1.1.0/24')),
|
|
|
|
|
- (PrefixStatusChoices.STATUS_ACTIVE, vrfa, netaddr.IPNetwork('10.1.2.0/24')),
|
|
|
|
|
- (PrefixStatusChoices.STATUS_ACTIVE, vrfa, netaddr.IPNetwork('10.1.3.0/24')),
|
|
|
|
|
- (PrefixStatusChoices.STATUS_ACTIVE, vrfa, netaddr.IPNetwork('10.1.4.0/24')),
|
|
|
|
|
- (PrefixStatusChoices.STATUS_CONTAINER, vrfa, netaddr.IPNetwork('10.2.0.0/16')),
|
|
|
|
|
- (PrefixStatusChoices.STATUS_ACTIVE, vrfa, netaddr.IPNetwork('10.2.1.0/24')),
|
|
|
|
|
- (PrefixStatusChoices.STATUS_ACTIVE, vrfa, netaddr.IPNetwork('10.2.2.0/24')),
|
|
|
|
|
- (PrefixStatusChoices.STATUS_ACTIVE, vrfa, netaddr.IPNetwork('10.2.3.0/24')),
|
|
|
|
|
- (PrefixStatusChoices.STATUS_ACTIVE, vrfa, netaddr.IPNetwork('10.2.4.0/24')),
|
|
|
|
|
-
|
|
|
|
|
- (PrefixStatusChoices.STATUS_CONTAINER, vrfb, netaddr.IPNetwork('172.16.0.0/12')),
|
|
|
|
|
- (PrefixStatusChoices.STATUS_CONTAINER, vrfb, netaddr.IPNetwork('172.16.0.0/16')),
|
|
|
|
|
- (PrefixStatusChoices.STATUS_ACTIVE, vrfb, netaddr.IPNetwork('172.16.0.0/24')),
|
|
|
|
|
- (PrefixStatusChoices.STATUS_ACTIVE, vrfb, netaddr.IPNetwork('172.16.1.0/24')),
|
|
|
|
|
- (PrefixStatusChoices.STATUS_ACTIVE, vrfb, netaddr.IPNetwork('172.16.2.0/24')),
|
|
|
|
|
- (PrefixStatusChoices.STATUS_ACTIVE, vrfb, netaddr.IPNetwork('172.16.3.0/24')),
|
|
|
|
|
- (PrefixStatusChoices.STATUS_ACTIVE, vrfb, netaddr.IPNetwork('172.16.4.0/24')),
|
|
|
|
|
- (PrefixStatusChoices.STATUS_CONTAINER, vrfb, netaddr.IPNetwork('172.17.0.0/16')),
|
|
|
|
|
- (PrefixStatusChoices.STATUS_ACTIVE, vrfb, netaddr.IPNetwork('172.17.0.0/24')),
|
|
|
|
|
- (PrefixStatusChoices.STATUS_ACTIVE, vrfb, netaddr.IPNetwork('172.17.1.0/24')),
|
|
|
|
|
- (PrefixStatusChoices.STATUS_ACTIVE, vrfb, netaddr.IPNetwork('172.17.2.0/24')),
|
|
|
|
|
- (PrefixStatusChoices.STATUS_ACTIVE, vrfb, netaddr.IPNetwork('172.17.3.0/24')),
|
|
|
|
|
- (PrefixStatusChoices.STATUS_ACTIVE, vrfb, netaddr.IPNetwork('172.17.4.0/24')),
|
|
|
|
|
|
|
+ {"status": PrefixStatusChoices.STATUS_CONTAINER, "vrf": None, "family": 4, "prefix": netaddr.IPNetwork('192.168.0.0/16')},
|
|
|
|
|
+ {"status": PrefixStatusChoices.STATUS_ACTIVE, "vrf": None, "family": 4, "prefix": netaddr.IPNetwork('192.168.0.0/24')},
|
|
|
|
|
+ {"status": PrefixStatusChoices.STATUS_ACTIVE, "vrf": None, "family": 4, "prefix": netaddr.IPNetwork('192.168.1.0/24')},
|
|
|
|
|
+ {"status": PrefixStatusChoices.STATUS_ACTIVE, "vrf": None, "family": 4, "prefix": netaddr.IPNetwork('192.168.2.0/24')},
|
|
|
|
|
+ {"status": PrefixStatusChoices.STATUS_ACTIVE, "vrf": None, "family": 4, "prefix": netaddr.IPNetwork('192.168.3.0/24')},
|
|
|
|
|
+ {"status": PrefixStatusChoices.STATUS_ACTIVE, "vrf": None, "family": 4, "prefix": netaddr.IPNetwork('192.168.4.0/24')},
|
|
|
|
|
+ {"status": PrefixStatusChoices.STATUS_ACTIVE, "vrf": None, "family": 4, "prefix": netaddr.IPNetwork('192.168.5.0/24')},
|
|
|
|
|
+
|
|
|
|
|
+ {"status": PrefixStatusChoices.STATUS_ACTIVE, "vrf": vrfa, "family": 4, "prefix": netaddr.IPNetwork('10.0.0.0/8')},
|
|
|
|
|
+ {"status": PrefixStatusChoices.STATUS_ACTIVE, "vrf": vrfa, "family": 4, "prefix": netaddr.IPNetwork('10.0.0.0/16')},
|
|
|
|
|
+ {"status": PrefixStatusChoices.STATUS_ACTIVE, "vrf": vrfa, "family": 4, "prefix": netaddr.IPNetwork('10.0.0.0/24')},
|
|
|
|
|
+ {"status": PrefixStatusChoices.STATUS_ACTIVE, "vrf": vrfa, "family": 4, "prefix": netaddr.IPNetwork('10.0.1.0/24')},
|
|
|
|
|
+ {"status": PrefixStatusChoices.STATUS_ACTIVE, "vrf": vrfa, "family": 4, "prefix": netaddr.IPNetwork('10.0.2.0/24')},
|
|
|
|
|
+ {"status": PrefixStatusChoices.STATUS_ACTIVE, "vrf": vrfa, "family": 4, "prefix": netaddr.IPNetwork('10.0.3.0/24')},
|
|
|
|
|
+ {"status": PrefixStatusChoices.STATUS_ACTIVE, "vrf": vrfa, "family": 4, "prefix": netaddr.IPNetwork('10.0.4.0/24')},
|
|
|
|
|
+ {"status": PrefixStatusChoices.STATUS_ACTIVE, "vrf": vrfa, "family": 4, "prefix": netaddr.IPNetwork('10.1.0.0/16')},
|
|
|
|
|
+ {"status": PrefixStatusChoices.STATUS_ACTIVE, "vrf": vrfa, "family": 4, "prefix": netaddr.IPNetwork('10.1.1.0/24')},
|
|
|
|
|
+ {"status": PrefixStatusChoices.STATUS_ACTIVE, "vrf": vrfa, "family": 4, "prefix": netaddr.IPNetwork('10.1.2.0/24')},
|
|
|
|
|
+ {"status": PrefixStatusChoices.STATUS_ACTIVE, "vrf": vrfa, "family": 4, "prefix": netaddr.IPNetwork('10.1.3.0/24')},
|
|
|
|
|
+ {"status": PrefixStatusChoices.STATUS_ACTIVE, "vrf": vrfa, "family": 4, "prefix": netaddr.IPNetwork('10.1.4.0/24')},
|
|
|
|
|
+ {"status": PrefixStatusChoices.STATUS_ACTIVE, "vrf": vrfa, "family": 4, "prefix": netaddr.IPNetwork('10.2.0.0/16')},
|
|
|
|
|
+ {"status": PrefixStatusChoices.STATUS_ACTIVE, "vrf": vrfa, "family": 4, "prefix": netaddr.IPNetwork('10.2.1.0/24')},
|
|
|
|
|
+ {"status": PrefixStatusChoices.STATUS_ACTIVE, "vrf": vrfa, "family": 4, "prefix": netaddr.IPNetwork('10.2.2.0/24')},
|
|
|
|
|
+ {"status": PrefixStatusChoices.STATUS_ACTIVE, "vrf": vrfa, "family": 4, "prefix": netaddr.IPNetwork('10.2.3.0/24')},
|
|
|
|
|
+ {"status": PrefixStatusChoices.STATUS_ACTIVE, "vrf": vrfa, "family": 4, "prefix": netaddr.IPNetwork('10.2.4.0/24')},
|
|
|
|
|
+
|
|
|
|
|
+ {"status": PrefixStatusChoices.STATUS_CONTAINER, "vrf": vrfb, "family": 4, "prefix": netaddr.IPNetwork('172.16.0.0/12')},
|
|
|
|
|
+ {"status": PrefixStatusChoices.STATUS_CONTAINER, "vrf": vrfb, "family": 4, "prefix": netaddr.IPNetwork('172.16.0.0/16')},
|
|
|
|
|
+ {"status": PrefixStatusChoices.STATUS_ACTIVE, "vrf": vrfb, "family": 4, "prefix": netaddr.IPNetwork('172.16.0.0/24')},
|
|
|
|
|
+ {"status": PrefixStatusChoices.STATUS_ACTIVE, "vrf": vrfb, "family": 4, "prefix": netaddr.IPNetwork('172.16.1.0/24')},
|
|
|
|
|
+ {"status": PrefixStatusChoices.STATUS_ACTIVE, "vrf": vrfb, "family": 4, "prefix": netaddr.IPNetwork('172.16.2.0/24')},
|
|
|
|
|
+ {"status": PrefixStatusChoices.STATUS_ACTIVE, "vrf": vrfb, "family": 4, "prefix": netaddr.IPNetwork('172.16.3.0/24')},
|
|
|
|
|
+ {"status": PrefixStatusChoices.STATUS_ACTIVE, "vrf": vrfb, "family": 4, "prefix": netaddr.IPNetwork('172.16.4.0/24')},
|
|
|
|
|
+ {"status": PrefixStatusChoices.STATUS_CONTAINER, "vrf": vrfb, "family": 4, "prefix": netaddr.IPNetwork('172.17.0.0/16')},
|
|
|
|
|
+ {"status": PrefixStatusChoices.STATUS_ACTIVE, "vrf": vrfb, "family": 4, "prefix": netaddr.IPNetwork('172.17.0.0/24')},
|
|
|
|
|
+ {"status": PrefixStatusChoices.STATUS_ACTIVE, "vrf": vrfb, "family": 4, "prefix": netaddr.IPNetwork('172.17.1.0/24')},
|
|
|
|
|
+ {"status": PrefixStatusChoices.STATUS_ACTIVE, "vrf": vrfb, "family": 4, "prefix": netaddr.IPNetwork('172.17.2.0/24')},
|
|
|
|
|
+ {"status": PrefixStatusChoices.STATUS_ACTIVE, "vrf": vrfb, "family": 4, "prefix": netaddr.IPNetwork('172.17.3.0/24')},
|
|
|
|
|
+ {"status": PrefixStatusChoices.STATUS_ACTIVE, "vrf": vrfb, "family": 4, "prefix": netaddr.IPNetwork('172.17.4.0/24')},
|
|
|
)
|
|
)
|
|
|
- Prefix.objects.bulk_create(self._create_prefix(prefixes))
|
|
|
|
|
|
|
|
|
|
- # Test
|
|
|
|
|
- self._compare_prefix(Prefix.objects.all(), prefixes)
|
|
|
|
|
|
|
+ Prefix.objects.bulk_create([Prefix(status=args['status'], vrf=args['vrf'], family=args['family'], prefix=args['prefix']) for args in prefixes])
|
|
|
|
|
|
|
|
|
|
+ # Test
|
|
|
|
|
+ self._compare(Prefix.objects.all(), prefixes)
|
|
|
|
|
+
|
|
|
|
|
+ """
|
|
|
|
|
+ This function tests a compex ordering of interwoven prefixes and vrfs. This is the current expected ordering of VRFs
|
|
|
|
|
+ This includes the testing of the Container status.
|
|
|
|
|
+
|
|
|
|
|
+ The proper ordering, to get proper containerization should be:
|
|
|
|
|
+ None:10.0.0.0/8
|
|
|
|
|
+ None:10.0.0.0/16
|
|
|
|
|
+ VRF A:10.0.0.0/24
|
|
|
|
|
+ VRF A:10.0.1.0/24
|
|
|
|
|
+ VRF A:10.0.1.0/25
|
|
|
|
|
+ None:10.1.0.0/16
|
|
|
|
|
+ VRF A:10.1.0.0/24
|
|
|
|
|
+ VRF A:10.1.1.0/24
|
|
|
|
|
+ None: 192.168.0.0/16
|
|
|
|
|
+ """
|
|
|
def test_prefix_complex_ordering(self):
|
|
def test_prefix_complex_ordering(self):
|
|
|
# Setup VRFs
|
|
# Setup VRFs
|
|
|
vrfa, vrfb, vrfc = self.vrfs
|
|
vrfa, vrfb, vrfc = self.vrfs
|
|
|
|
|
|
|
|
# Setup Prefixes
|
|
# Setup Prefixes
|
|
|
prefixes = [
|
|
prefixes = [
|
|
|
- (PrefixStatusChoices.STATUS_CONTAINER, None, netaddr.IPNetwork('10.0.0.0/8')),
|
|
|
|
|
- (PrefixStatusChoices.STATUS_CONTAINER, None, netaddr.IPNetwork('10.0.0.0/16')),
|
|
|
|
|
- (PrefixStatusChoices.STATUS_ACTIVE, None, netaddr.IPNetwork('10.1.0.0/16')),
|
|
|
|
|
- (PrefixStatusChoices.STATUS_ACTIVE, None, netaddr.IPNetwork('192.168.0.0/16')),
|
|
|
|
|
- (PrefixStatusChoices.STATUS_ACTIVE, vrfa, netaddr.IPNetwork('10.0.0.0/24')),
|
|
|
|
|
- (PrefixStatusChoices.STATUS_CONTAINER, vrfa, netaddr.IPNetwork('10.0.1.0/24')),
|
|
|
|
|
- (PrefixStatusChoices.STATUS_ACTIVE, vrfa, netaddr.IPNetwork('10.0.1.0/25')),
|
|
|
|
|
- (PrefixStatusChoices.STATUS_ACTIVE, vrfa, netaddr.IPNetwork('10.1.0.0/24')),
|
|
|
|
|
- (PrefixStatusChoices.STATUS_ACTIVE, vrfa, netaddr.IPNetwork('10.1.1.0/24'))
|
|
|
|
|
|
|
+ {"status": PrefixStatusChoices.STATUS_CONTAINER, "vrf": None, "family": 4, "prefix": netaddr.IPNetwork('10.0.0.0/8')},
|
|
|
|
|
+ {"status": PrefixStatusChoices.STATUS_CONTAINER, "vrf": None, "family": 4, "prefix": netaddr.IPNetwork('10.0.0.0/16')},
|
|
|
|
|
+ {"status": PrefixStatusChoices.STATUS_ACTIVE, "vrf": None, "family": 4, "prefix": netaddr.IPNetwork('10.1.0.0/16')},
|
|
|
|
|
+ {"status": PrefixStatusChoices.STATUS_ACTIVE, "vrf": None, "family": 4, "prefix": netaddr.IPNetwork('192.168.0.0/16')},
|
|
|
|
|
+ {"status": PrefixStatusChoices.STATUS_ACTIVE, "vrf": vrfa, "family": 4, "prefix": netaddr.IPNetwork('10.0.0.0/24')},
|
|
|
|
|
+ {"status": PrefixStatusChoices.STATUS_ACTIVE, "vrf": vrfa, "family": 4, "prefix": netaddr.IPNetwork('10.0.1.0/24')},
|
|
|
|
|
+ {"status": PrefixStatusChoices.STATUS_ACTIVE, "vrf": vrfa, "family": 4, "prefix": netaddr.IPNetwork('10.0.1.0/25')},
|
|
|
|
|
+ {"status": PrefixStatusChoices.STATUS_ACTIVE, "vrf": vrfa, "family": 4, "prefix": netaddr.IPNetwork('10.1.0.0/24')},
|
|
|
|
|
+ {"status": PrefixStatusChoices.STATUS_ACTIVE, "vrf": vrfa, "family": 4, "prefix": netaddr.IPNetwork('10.1.1.0/24')},
|
|
|
]
|
|
]
|
|
|
- Prefix.objects.bulk_create(self._create_prefix(prefixes))
|
|
|
|
|
|
|
+ Prefix.objects.bulk_create([Prefix(status=args['status'], vrf=args['vrf'], family=args['family'], prefix=args['prefix']) for args in prefixes])
|
|
|
|
|
|
|
|
# Test
|
|
# Test
|
|
|
- qsprefixes, compprefixes = self._compare_complex(Prefix.objects.all(), prefixes)
|
|
|
|
|
- self.assertEquals(qsprefixes, compprefixes)
|
|
|
|
|
|
|
+ self._compare_complex(Prefix.objects.all(), prefixes)
|
|
|
|
|
|
|
|
|
|
|
|
|
-class IPAddressOrderingTestCase(TestCase):
|
|
|
|
|
- vrfs = None
|
|
|
|
|
-
|
|
|
|
|
- def setUp(self):
|
|
|
|
|
- vrfa = VRF(name="VRF A")
|
|
|
|
|
- vrfb = VRF(name="VRF B")
|
|
|
|
|
- vrfc = VRF(name="VRF C")
|
|
|
|
|
- VRF.objects.bulk_create([vrfa, vrfb, vrfc])
|
|
|
|
|
- self.vrfs = (vrfa, vrfb, vrfc)
|
|
|
|
|
-
|
|
|
|
|
- def _create_address(self, addresses):
|
|
|
|
|
- addressobjects = []
|
|
|
|
|
- for addr in addresses:
|
|
|
|
|
- status, vrf, address = addr
|
|
|
|
|
- family = 4
|
|
|
|
|
- if not netaddr.valid_ipv4(address):
|
|
|
|
|
- family = 6
|
|
|
|
|
- addressobj = IPAddress(address=address, vrf=vrf, status=status, family=family)
|
|
|
|
|
- addressobjects.append(addressobj)
|
|
|
|
|
-
|
|
|
|
|
- return addressobjects
|
|
|
|
|
-
|
|
|
|
|
- def _compare_address(self, queryset, addresses):
|
|
|
|
|
-
|
|
|
|
|
- for i, obj in enumerate(queryset):
|
|
|
|
|
- status, vrf, address = addresses[i]
|
|
|
|
|
- self.assertEqual((obj.vrf, obj.address), (vrf, address))
|
|
|
|
|
-
|
|
|
|
|
-
|
|
|
|
|
- def test_address_ordering(self):
|
|
|
|
|
- # Setup Addresses
|
|
|
|
|
- addresses = (
|
|
|
|
|
- (IPAddressStatusChoices.STATUS_ACTIVE, None, netaddr.IPNetwork('10.0.0.1/24')),
|
|
|
|
|
- (IPAddressStatusChoices.STATUS_ACTIVE, None, netaddr.IPNetwork('10.0.1.1/24')),
|
|
|
|
|
- (IPAddressStatusChoices.STATUS_ACTIVE, None, netaddr.IPNetwork('10.0.2.1/24')),
|
|
|
|
|
- (IPAddressStatusChoices.STATUS_ACTIVE, None, netaddr.IPNetwork('10.0.3.1/24')),
|
|
|
|
|
- (IPAddressStatusChoices.STATUS_ACTIVE, None, netaddr.IPNetwork('10.0.4.1/24')),
|
|
|
|
|
- (IPAddressStatusChoices.STATUS_ACTIVE, None, netaddr.IPNetwork('10.1.0.1/24')),
|
|
|
|
|
- (IPAddressStatusChoices.STATUS_ACTIVE, None, netaddr.IPNetwork('10.1.1.1/24')),
|
|
|
|
|
- (IPAddressStatusChoices.STATUS_ACTIVE, None, netaddr.IPNetwork('10.1.2.1/24')),
|
|
|
|
|
- (IPAddressStatusChoices.STATUS_ACTIVE, None, netaddr.IPNetwork('10.1.3.1/24')),
|
|
|
|
|
- (IPAddressStatusChoices.STATUS_ACTIVE, None, netaddr.IPNetwork('10.1.4.0/24')),
|
|
|
|
|
- (IPAddressStatusChoices.STATUS_ACTIVE, None, netaddr.IPNetwork('10.2.0.1/24')),
|
|
|
|
|
- (IPAddressStatusChoices.STATUS_ACTIVE, None, netaddr.IPNetwork('10.2.1.1/24')),
|
|
|
|
|
- (IPAddressStatusChoices.STATUS_ACTIVE, None, netaddr.IPNetwork('10.2.2.1/24')),
|
|
|
|
|
- (IPAddressStatusChoices.STATUS_ACTIVE, None, netaddr.IPNetwork('10.2.3.1/24')),
|
|
|
|
|
- (IPAddressStatusChoices.STATUS_ACTIVE, None, netaddr.IPNetwork('10.2.4.1/24')),
|
|
|
|
|
-
|
|
|
|
|
- (IPAddressStatusChoices.STATUS_ACTIVE, None, netaddr.IPNetwork('172.16.0.1/24')),
|
|
|
|
|
- (IPAddressStatusChoices.STATUS_ACTIVE, None, netaddr.IPNetwork('172.16.1.1/24')),
|
|
|
|
|
- (IPAddressStatusChoices.STATUS_ACTIVE, None, netaddr.IPNetwork('172.16.2.1/24')),
|
|
|
|
|
- (IPAddressStatusChoices.STATUS_ACTIVE, None, netaddr.IPNetwork('172.16.3.1/24')),
|
|
|
|
|
- (IPAddressStatusChoices.STATUS_ACTIVE, None, netaddr.IPNetwork('172.16.4.1/24')),
|
|
|
|
|
- (IPAddressStatusChoices.STATUS_ACTIVE, None, netaddr.IPNetwork('172.17.0.1/24')),
|
|
|
|
|
- (IPAddressStatusChoices.STATUS_ACTIVE, None, netaddr.IPNetwork('172.17.1.1/24')),
|
|
|
|
|
- (IPAddressStatusChoices.STATUS_ACTIVE, None, netaddr.IPNetwork('172.17.2.1/24')),
|
|
|
|
|
- (IPAddressStatusChoices.STATUS_ACTIVE, None, netaddr.IPNetwork('172.17.3.1/24')),
|
|
|
|
|
- (IPAddressStatusChoices.STATUS_ACTIVE, None, netaddr.IPNetwork('172.17.4.1/24')),
|
|
|
|
|
-
|
|
|
|
|
- (IPAddressStatusChoices.STATUS_ACTIVE, None, netaddr.IPNetwork('192.168.0.1/24')),
|
|
|
|
|
- (IPAddressStatusChoices.STATUS_ACTIVE, None, netaddr.IPNetwork('192.168.1.1/24')),
|
|
|
|
|
- (IPAddressStatusChoices.STATUS_ACTIVE, None, netaddr.IPNetwork('192.168.2.1/24')),
|
|
|
|
|
- (IPAddressStatusChoices.STATUS_ACTIVE, None, netaddr.IPNetwork('192.168.3.1/24')),
|
|
|
|
|
- (IPAddressStatusChoices.STATUS_ACTIVE, None, netaddr.IPNetwork('192.168.4.1/24')),
|
|
|
|
|
- (IPAddressStatusChoices.STATUS_ACTIVE, None, netaddr.IPNetwork('192.168.5.1/24'))
|
|
|
|
|
- )
|
|
|
|
|
- IPAddress.objects.bulk_create(self._create_address(addresses))
|
|
|
|
|
-
|
|
|
|
|
- # Test
|
|
|
|
|
- self._compare_address(IPAddress.objects.all(), addresses)
|
|
|
|
|
-
|
|
|
|
|
|
|
+class IPAddressOrderingTestCase(OrderingTestBase):
|
|
|
|
|
+ """
|
|
|
|
|
+ This function tests ordering with the inclusion of vrfs
|
|
|
|
|
+ """
|
|
|
def test_address_vrf_ordering(self):
|
|
def test_address_vrf_ordering(self):
|
|
|
# Setup VRFs
|
|
# Setup VRFs
|
|
|
vrfa, vrfb, vrfc = self.vrfs
|
|
vrfa, vrfb, vrfc = self.vrfs
|
|
|
|
|
|
|
|
# Setup Addresses
|
|
# Setup Addresses
|
|
|
addresses = (
|
|
addresses = (
|
|
|
- (IPAddressStatusChoices.STATUS_ACTIVE, vrfa, netaddr.IPNetwork('10.0.0.1/24')),
|
|
|
|
|
- (IPAddressStatusChoices.STATUS_ACTIVE, vrfa, netaddr.IPNetwork('10.0.1.1/24')),
|
|
|
|
|
- (IPAddressStatusChoices.STATUS_ACTIVE, vrfa, netaddr.IPNetwork('10.0.2.1/24')),
|
|
|
|
|
- (IPAddressStatusChoices.STATUS_ACTIVE, vrfa, netaddr.IPNetwork('10.0.3.1/24')),
|
|
|
|
|
- (IPAddressStatusChoices.STATUS_ACTIVE, vrfa, netaddr.IPNetwork('10.0.4.1/24')),
|
|
|
|
|
- (IPAddressStatusChoices.STATUS_ACTIVE, vrfa, netaddr.IPNetwork('10.1.0.1/24')),
|
|
|
|
|
- (IPAddressStatusChoices.STATUS_ACTIVE, vrfa, netaddr.IPNetwork('10.1.1.1/24')),
|
|
|
|
|
- (IPAddressStatusChoices.STATUS_ACTIVE, vrfa, netaddr.IPNetwork('10.1.2.1/24')),
|
|
|
|
|
- (IPAddressStatusChoices.STATUS_ACTIVE, vrfa, netaddr.IPNetwork('10.1.3.1/24')),
|
|
|
|
|
- (IPAddressStatusChoices.STATUS_ACTIVE, vrfa, netaddr.IPNetwork('10.1.4.1/24')),
|
|
|
|
|
- (IPAddressStatusChoices.STATUS_ACTIVE, vrfa, netaddr.IPNetwork('10.2.0.1/24')),
|
|
|
|
|
- (IPAddressStatusChoices.STATUS_ACTIVE, vrfa, netaddr.IPNetwork('10.2.1.1/24')),
|
|
|
|
|
- (IPAddressStatusChoices.STATUS_ACTIVE, vrfa, netaddr.IPNetwork('10.2.2.1/24')),
|
|
|
|
|
- (IPAddressStatusChoices.STATUS_ACTIVE, vrfa, netaddr.IPNetwork('10.2.3.1/24')),
|
|
|
|
|
- (IPAddressStatusChoices.STATUS_ACTIVE, vrfa, netaddr.IPNetwork('10.2.4.1/24')),
|
|
|
|
|
-
|
|
|
|
|
- (IPAddressStatusChoices.STATUS_ACTIVE, vrfb, netaddr.IPNetwork('172.16.0.1/24')),
|
|
|
|
|
- (IPAddressStatusChoices.STATUS_ACTIVE, vrfb, netaddr.IPNetwork('172.16.1.1/24')),
|
|
|
|
|
- (IPAddressStatusChoices.STATUS_ACTIVE, vrfb, netaddr.IPNetwork('172.16.2.1/24')),
|
|
|
|
|
- (IPAddressStatusChoices.STATUS_ACTIVE, vrfb, netaddr.IPNetwork('172.16.3.1/24')),
|
|
|
|
|
- (IPAddressStatusChoices.STATUS_ACTIVE, vrfb, netaddr.IPNetwork('172.16.4.1/24')),
|
|
|
|
|
- (IPAddressStatusChoices.STATUS_ACTIVE, vrfb, netaddr.IPNetwork('172.17.0.1/24')),
|
|
|
|
|
- (IPAddressStatusChoices.STATUS_ACTIVE, vrfb, netaddr.IPNetwork('172.17.1.1/24')),
|
|
|
|
|
- (IPAddressStatusChoices.STATUS_ACTIVE, vrfb, netaddr.IPNetwork('172.17.2.1/24')),
|
|
|
|
|
- (IPAddressStatusChoices.STATUS_ACTIVE, vrfb, netaddr.IPNetwork('172.17.3.1/24')),
|
|
|
|
|
- (IPAddressStatusChoices.STATUS_ACTIVE, vrfb, netaddr.IPNetwork('172.17.4.1/24')),
|
|
|
|
|
-
|
|
|
|
|
- (IPAddressStatusChoices.STATUS_ACTIVE, None, netaddr.IPNetwork('192.168.0.1/24')),
|
|
|
|
|
- (IPAddressStatusChoices.STATUS_ACTIVE, None, netaddr.IPNetwork('192.168.1.1/24')),
|
|
|
|
|
- (IPAddressStatusChoices.STATUS_ACTIVE, None, netaddr.IPNetwork('192.168.2.1/24')),
|
|
|
|
|
- (IPAddressStatusChoices.STATUS_ACTIVE, None, netaddr.IPNetwork('192.168.3.1/24')),
|
|
|
|
|
- (IPAddressStatusChoices.STATUS_ACTIVE, None, netaddr.IPNetwork('192.168.4.1/24')),
|
|
|
|
|
- (IPAddressStatusChoices.STATUS_ACTIVE, None, netaddr.IPNetwork('192.168.5.1/24')),
|
|
|
|
|
|
|
+ {"status": IPAddressStatusChoices.STATUS_ACTIVE, "vrf": vrfa, "family": 4, "address": netaddr.IPNetwork('10.0.0.1/24')},
|
|
|
|
|
+ {"status": IPAddressStatusChoices.STATUS_ACTIVE, "vrf": vrfa, "family": 4, "address": netaddr.IPNetwork('10.0.1.1/24')},
|
|
|
|
|
+ {"status": IPAddressStatusChoices.STATUS_ACTIVE, "vrf": vrfa, "family": 4, "address": netaddr.IPNetwork('10.0.2.1/24')},
|
|
|
|
|
+ {"status": IPAddressStatusChoices.STATUS_ACTIVE, "vrf": vrfa, "family": 4, "address": netaddr.IPNetwork('10.0.3.1/24')},
|
|
|
|
|
+ {"status": IPAddressStatusChoices.STATUS_ACTIVE, "vrf": vrfa, "family": 4, "address": netaddr.IPNetwork('10.0.4.1/24')},
|
|
|
|
|
+ {"status": IPAddressStatusChoices.STATUS_ACTIVE, "vrf": vrfa, "family": 4, "address": netaddr.IPNetwork('10.1.0.1/24')},
|
|
|
|
|
+ {"status": IPAddressStatusChoices.STATUS_ACTIVE, "vrf": vrfa, "family": 4, "address": netaddr.IPNetwork('10.1.1.1/24')},
|
|
|
|
|
+ {"status": IPAddressStatusChoices.STATUS_ACTIVE, "vrf": vrfa, "family": 4, "address": netaddr.IPNetwork('10.1.2.1/24')},
|
|
|
|
|
+ {"status": IPAddressStatusChoices.STATUS_ACTIVE, "vrf": vrfa, "family": 4, "address": netaddr.IPNetwork('10.1.3.1/24')},
|
|
|
|
|
+ {"status": IPAddressStatusChoices.STATUS_ACTIVE, "vrf": vrfa, "family": 4, "address": netaddr.IPNetwork('10.1.4.1/24')},
|
|
|
|
|
+ {"status": IPAddressStatusChoices.STATUS_ACTIVE, "vrf": vrfa, "family": 4, "address": netaddr.IPNetwork('10.2.0.1/24')},
|
|
|
|
|
+ {"status": IPAddressStatusChoices.STATUS_ACTIVE, "vrf": vrfa, "family": 4, "address": netaddr.IPNetwork('10.2.1.1/24')},
|
|
|
|
|
+ {"status": IPAddressStatusChoices.STATUS_ACTIVE, "vrf": vrfa, "family": 4, "address": netaddr.IPNetwork('10.2.2.1/24')},
|
|
|
|
|
+ {"status": IPAddressStatusChoices.STATUS_ACTIVE, "vrf": vrfa, "family": 4, "address": netaddr.IPNetwork('10.2.3.1/24')},
|
|
|
|
|
+ {"status": IPAddressStatusChoices.STATUS_ACTIVE, "vrf": vrfa, "family": 4, "address": netaddr.IPNetwork('10.2.4.1/24')},
|
|
|
|
|
+
|
|
|
|
|
+ {"status": IPAddressStatusChoices.STATUS_ACTIVE, "vrf": vrfb, "family": 4, "address": netaddr.IPNetwork('172.16.0.1/24')},
|
|
|
|
|
+ {"status": IPAddressStatusChoices.STATUS_ACTIVE, "vrf": vrfb, "family": 4, "address": netaddr.IPNetwork('172.16.1.1/24')},
|
|
|
|
|
+ {"status": IPAddressStatusChoices.STATUS_ACTIVE, "vrf": vrfb, "family": 4, "address": netaddr.IPNetwork('172.16.2.1/24')},
|
|
|
|
|
+ {"status": IPAddressStatusChoices.STATUS_ACTIVE, "vrf": vrfb, "family": 4, "address": netaddr.IPNetwork('172.16.3.1/24')},
|
|
|
|
|
+ {"status": IPAddressStatusChoices.STATUS_ACTIVE, "vrf": vrfb, "family": 4, "address": netaddr.IPNetwork('172.16.4.1/24')},
|
|
|
|
|
+ {"status": IPAddressStatusChoices.STATUS_ACTIVE, "vrf": vrfb, "family": 4, "address": netaddr.IPNetwork('172.17.0.1/24')},
|
|
|
|
|
+ {"status": IPAddressStatusChoices.STATUS_ACTIVE, "vrf": vrfb, "family": 4, "address": netaddr.IPNetwork('172.17.1.1/24')},
|
|
|
|
|
+ {"status": IPAddressStatusChoices.STATUS_ACTIVE, "vrf": vrfb, "family": 4, "address": netaddr.IPNetwork('172.17.2.1/24')},
|
|
|
|
|
+ {"status": IPAddressStatusChoices.STATUS_ACTIVE, "vrf": vrfb, "family": 4, "address": netaddr.IPNetwork('172.17.3.1/24')},
|
|
|
|
|
+ {"status": IPAddressStatusChoices.STATUS_ACTIVE, "vrf": vrfb, "family": 4, "address": netaddr.IPNetwork('172.17.4.1/24')},
|
|
|
|
|
+
|
|
|
|
|
+ {"status": IPAddressStatusChoices.STATUS_ACTIVE, "vrf": None, "family": 4, "address": netaddr.IPNetwork('192.168.0.1/24')},
|
|
|
|
|
+ {"status": IPAddressStatusChoices.STATUS_ACTIVE, "vrf": None, "family": 4, "address": netaddr.IPNetwork('192.168.1.1/24')},
|
|
|
|
|
+ {"status": IPAddressStatusChoices.STATUS_ACTIVE, "vrf": None, "family": 4, "address": netaddr.IPNetwork('192.168.2.1/24')},
|
|
|
|
|
+ {"status": IPAddressStatusChoices.STATUS_ACTIVE, "vrf": None, "family": 4, "address": netaddr.IPNetwork('192.168.3.1/24')},
|
|
|
|
|
+ {"status": IPAddressStatusChoices.STATUS_ACTIVE, "vrf": None, "family": 4, "address": netaddr.IPNetwork('192.168.4.1/24')},
|
|
|
|
|
+ {"status": IPAddressStatusChoices.STATUS_ACTIVE, "vrf": None, "family": 4, "address": netaddr.IPNetwork('192.168.5.1/24')},
|
|
|
)
|
|
)
|
|
|
- IPAddress.objects.bulk_create(self._create_address(addresses))
|
|
|
|
|
|
|
+ IPAddress.objects.bulk_create([IPAddress(status=args['status'], vrf=args['vrf'], family=args['family'], address=args['address']) for args in addresses])
|
|
|
|
|
|
|
|
# Test
|
|
# Test
|
|
|
- self._compare_address(IPAddress.objects.all(), addresses)
|
|
|
|
|
|
|
+ self._compare(IPAddress.objects.all(), addresses)
|