diff options
author | Michael Elkins <melkins@tislabs.com> | 2012-01-19 00:35:52 +0000 |
---|---|---|
committer | Michael Elkins <melkins@tislabs.com> | 2012-01-19 00:35:52 +0000 |
commit | edf891be7ebaf36182d27ad73a9e29e9ab4109d8 (patch) | |
tree | 85af57dbbd6e830ad7ec187ae9812a3e731b6346 /rpkid/rpki/gui/app/views.py | |
parent | 7735c9840baedceff3a5aa6c4d5a4b8fef400a3e (diff) |
add new module range_list with implementation of a resource_set type object that collapses adjacent ranges and can compute missing ranges
svn path=/branches/tk161/; revision=4225
Diffstat (limited to 'rpkid/rpki/gui/app/views.py')
-rw-r--r-- | rpkid/rpki/gui/app/views.py | 33 |
1 files changed, 17 insertions, 16 deletions
diff --git a/rpkid/rpki/gui/app/views.py b/rpkid/rpki/gui/app/views.py index b61c846d..37cca667 100644 --- a/rpkid/rpki/gui/app/views.py +++ b/rpkid/rpki/gui/app/views.py @@ -33,7 +33,7 @@ from django.views.generic.list_detail import object_list, object_detail from django.views.generic.create_update import delete_object, update_object, create_object from django.core.urlresolvers import reverse -from rpki.gui.app import models, forms, glue, settings +from rpki.gui.app import models, forms, glue, settings, range_list from rpki import resource_set import rpki.irdb import rpki.exceptions @@ -103,7 +103,7 @@ def dashboard(request, template_name='app/dashboard.html'): conf = request.session['handle'] - used_asns = resource_set.resource_set_as() + used_asns = range_list.RangeList() # asns used in my roas roa_asns = set((obj.asn for obj in models.ROARequest.objects.filter(issuer=conf))) @@ -113,39 +113,40 @@ def dashboard(request, template_name='app/dashboard.html'): child_asns = rpki.irdb.models.ChildASN.objects.filter(child__in=conf.children.all()) used_asns.extend((resource_set.resource_range_as(obj.start_as, obj.end_as) for obj in child_asns)) - used_asns.canonize() - # my received asns asns = models.ResourceRangeAS.objects.filter(cert__parent__issuer=conf) - my_asns = resource_set.resource_set_as([resource_set.resource_range_as(obj.min, obj.max) for obj in asns]) + my_asns = range_list.RangeList([resource_set.resource_range_as(obj.min, obj.max) for obj in asns]) unused_asns = my_asns.difference(used_asns) - used_prefixes = resource_set.resource_set_ipv4() - used_prefixes_v6 = resource_set.resource_set_ipv6() + used_prefixes = range_list.RangeList() + used_prefixes_v6 = range_list.RangeList() # prefixes used in my roas - used_prefixes.extend((obj.as_resource_range() for obj in models.ROARequestPrefix.objects.filter(roa_request__issuer=conf, version='IPv4'))) - used_prefixes_v6.extend((obj.as_resource_range() for obj in models.ROARequestPrefix.objects.filter(roa_request__issuer=conf, version='IPv6'))) + for obj in models.ROARequestPrefix.objects.filter(roa_request__issuer=conf, version='IPv4'): + used_prefixes.append(obj.as_resource_range()) + + for obj in models.ROARequestPrefix.objects.filter(roa_request__issuer=conf, version='IPv6'): + used_prefixes_v6.append(obj.as_resource_range()) # prefixes given to my children - used_prefixes.extend((obj.as_resource_range() for obj in rpki.irdb.models.ChildNet.objects.filter(child__in=conf.children.all(), version='IPv4'))) - used_prefixes_v6.extend((obj.as_resource_range() for obj in rpki.irdb.models.ChildNet.objects.filter(child__in=conf.children.all(), version='IPv6'))) + for obj in rpki.irdb.models.ChildNet.objects.filter(child__in=conf.children.all(), version='IPv4'): + used_prefixes.append(obj.as_resource_range()) - used_prefixes.canonize() - used_prefixes_v6.canonize() + for obj in rpki.irdb.models.ChildNet.objects.filter(child__in=conf.children.all(), version='IPv6'): + used_prefixes_v6.append(obj.as_resource_range()) # my received prefixes prefixes = models.ResourceRangeAddressV4.objects.filter(cert__parent__issuer=conf) prefixes_v6 = models.ResourceRangeAddressV6.objects.filter(cert__parent__issuer=conf) - my_prefixes = resource_set.resource_set_ipv4([obj.as_resource_range() for obj in prefixes]) - my_prefixes_v6 = resource_set.resource_set_ipv6([obj.as_resource_range() for obj in prefixes_v6]) + my_prefixes = range_list.RangeList([obj.as_resource_range() for obj in prefixes]) + my_prefixes_v6 = range_list.RangeList([obj.as_resource_range() for obj in prefixes_v6]) unused_prefixes = my_prefixes.difference(used_prefixes) unused_prefixes_v6 = my_prefixes_v6.difference(used_prefixes_v6) return render(template_name, { - 'conf': handle, + 'conf': conf, 'unused_asns': unused_asns, 'unused_prefixes': unused_prefixes, 'unused_prefixes_v6': unused_prefixes_v6, |