aboutsummaryrefslogtreecommitdiff
path: root/rpkid/rpki/gui/app
diff options
context:
space:
mode:
authorMichael Elkins <melkins@tislabs.com>2012-11-10 03:45:29 +0000
committerMichael Elkins <melkins@tislabs.com>2012-11-10 03:45:29 +0000
commitf414cd6e8abdab6824fa9f7334db87f8e6effdde (patch)
tree16e439e225d9780b2f2103038565c557df34870e /rpkid/rpki/gui/app
parent9a9ddea7d897912fa2b3c35b9ffdae0fdf26fc18 (diff)
add ResourceCert.conf and make .parent optinally null
svn path=/branches/tk316/; revision=4827
Diffstat (limited to 'rpkid/rpki/gui/app')
-rw-r--r--rpkid/rpki/gui/app/glue.py16
-rw-r--r--rpkid/rpki/gui/app/models.py16
-rw-r--r--rpkid/rpki/gui/app/templates/app/dashboard.html18
-rw-r--r--rpkid/rpki/gui/app/views.py16
4 files changed, 45 insertions, 21 deletions
diff --git a/rpkid/rpki/gui/app/glue.py b/rpkid/rpki/gui/app/glue.py
index 6d168b26..bf68170e 100644
--- a/rpkid/rpki/gui/app/glue.py
+++ b/rpkid/rpki/gui/app/glue.py
@@ -78,19 +78,23 @@ def list_received_resources(log, conf):
z = Zookeeper(handle=conf.handle)
pdus = z.call_rpkid(list_received_resources_elt.make_pdu(self_handle=conf.handle))
- models.ResourceCert.objects.filter(parent__issuer=conf).delete()
+ models.ResourceCert.objects.filter(conf=conf).delete()
for pdu in pdus:
if isinstance(pdu, list_received_resources_elt):
- parent = models.Parent.objects.get(issuer=conf,
- handle=pdu.parent_handle)
+ if pdu.parent_handle != conf.handle:
+ parent = models.Parent.objects.get(issuer=conf,
+ handle=pdu.parent_handle)
+ else:
+ # root cert, self-signed
+ parent = None
not_before = datetime.strptime(pdu.notBefore, "%Y-%m-%dT%H:%M:%SZ")
not_after = datetime.strptime(pdu.notAfter, "%Y-%m-%dT%H:%M:%SZ")
- cert = models.ResourceCert.objects.create(parent=parent,
- not_before=not_before, not_after=not_after,
- uri=pdu.uri)
+ cert = models.ResourceCert.objects.create(
+ conf=conf, parent=parent, not_before=not_before,
+ not_after=not_after, uri=pdu.uri)
for asn in resource_set_as(pdu.asn):
cert.asn_ranges.create(min=asn.min, max=asn.max)
diff --git a/rpkid/rpki/gui/app/models.py b/rpkid/rpki/gui/app/models.py
index b7393717..9ebf76df 100644
--- a/rpkid/rpki/gui/app/models.py
+++ b/rpkid/rpki/gui/app/models.py
@@ -115,8 +115,13 @@ class ResourceCert(models.Model):
This model is used to cache the output of <list_received_resources/>.
"""
- # pointer to the parent object in the irdb
- parent = models.ForeignKey(Parent, related_name='certs')
+
+ # Handle to which this cert was issued
+ conf = models.ForeignKey(Conf, related_name='certs')
+
+ # The parent that issued the cert. This field is marked null=True because
+ # the root has no parent
+ parent = models.ForeignKey(Parent, related_name='certs', null=True)
# certificate validity period
not_before = models.DateTimeField()
@@ -127,8 +132,11 @@ class ResourceCert(models.Model):
uri = models.CharField(max_length=255)
def __unicode__(self):
- return u"%s's cert from %s" % (self.parent.issuer.handle,
- self.parent.handle)
+ if self.parent:
+ return u"%s's cert from %s" % (self.conf.handle,
+ self.parent.handle)
+ else:
+ return u"%s's root cert" % self.conf.handle
class ResourceRangeAddressV4(rpki.gui.models.PrefixV4):
diff --git a/rpkid/rpki/gui/app/templates/app/dashboard.html b/rpkid/rpki/gui/app/templates/app/dashboard.html
index f74dad09..d346ce88 100644
--- a/rpkid/rpki/gui/app/templates/app/dashboard.html
+++ b/rpkid/rpki/gui/app/templates/app/dashboard.html
@@ -29,7 +29,11 @@
<tr>
<td>{{ object }}</td>
<td>{{ object.cert.not_after }}</td>
- <td>{{ object.cert.parent.handle }}</td>
+ <td>
+ {% if object.cert.parent %}
+ {{ object.cert.parent.handle }}
+ {% endif %}
+ </td>
</tr>
{% endfor %}
@@ -37,7 +41,11 @@
<tr>
<td>{{ object.as_resource_range }}</td>
<td>{{ object.cert.not_after }}</td>
- <td>{{ object.cert.parent.handle }}</td>
+ <td>
+ {% if object.cert.parent %}
+ {{ object.cert.parent.handle }}
+ {% endif %}
+ </td>
</tr>
{% endfor %}
@@ -46,7 +54,11 @@
<tr>
<td>{{ object.as_resource_range }}</td>
<td>{{ object.cert.not_after }}</td>
- <td>{{ object.cert.parent.handle }}</td>
+ <td>
+ {% if object.cert.parent %}
+ {{ object.cert.parent.handle }}
+ {% endif %}
+ </td>
</tr>
{% endfor %}
{% endif %}
diff --git a/rpkid/rpki/gui/app/views.py b/rpkid/rpki/gui/app/views.py
index 6ba6f1c4..835bf4a5 100644
--- a/rpkid/rpki/gui/app/views.py
+++ b/rpkid/rpki/gui/app/views.py
@@ -180,7 +180,7 @@ def dashboard(request):
used_asns.extend((resource_range_as(obj.start_as, obj.end_as) for obj in child_asns))
# my received asns
- asns = models.ResourceRangeAS.objects.filter(cert__parent__issuer=conf)
+ asns = models.ResourceRangeAS.objects.filter(cert__conf=conf)
my_asns = range_list.RangeList([resource_range_as(obj.min, obj.max) for obj in asns])
unused_asns = my_asns.difference(used_asns)
@@ -207,8 +207,8 @@ def dashboard(request):
used_prefixes_v6.append(obj.as_resource_range())
# my received prefixes
- prefixes = models.ResourceRangeAddressV4.objects.filter(cert__parent__issuer=conf).all()
- prefixes_v6 = models.ResourceRangeAddressV6.objects.filter(cert__parent__issuer=conf).all()
+ prefixes = models.ResourceRangeAddressV4.objects.filter(cert__conf=conf).all()
+ prefixes_v6 = models.ResourceRangeAddressV6.objects.filter(cert__conf=conf).all()
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])
@@ -367,7 +367,7 @@ def add_asn_callback(child, form):
def child_add_asn(request, pk):
conf = request.session['handle']
get_object_or_404(models.Child, issuer=conf, pk=pk)
- qs = models.ResourceRangeAS.objects.filter(cert__parent__issuer=conf)
+ qs = models.ResourceRangeAS.objects.filter(cert__conf=conf)
return child_add_resource(request, pk, forms.AddASNForm(qs), [],
add_asn_callback)
@@ -387,8 +387,8 @@ def add_address_callback(child, form):
def child_add_address(request, pk):
conf = request.session['handle']
get_object_or_404(models.Child, issuer=conf, pk=pk)
- qsv4 = models.ResourceRangeAddressV4.objects.filter(cert__parent__issuer=conf)
- qsv6 = models.ResourceRangeAddressV6.objects.filter(cert__parent__issuer=conf)
+ qsv4 = models.ResourceRangeAddressV4.objects.filter(cert__conf=conf)
+ qsv6 = models.ResourceRangeAddressV6.objects.filter(cert__conf=conf)
return child_add_resource(request, pk,
forms.AddNetForm(qsv4, qsv6),
[],
@@ -789,11 +789,11 @@ def route_view(request):
log = request.META['wsgi.errors']
routes = []
- for p in models.ResourceRangeAddressV4.objects.filter(cert__parent__in=conf.parents.all()):
+ for p in models.ResourceRangeAddressV4.objects.filter(cert__conf=conf):
r = p.as_resource_range()
print >>log, 'querying for routes matching %s' % r
routes.extend([validate_route(*x) for x in roa_match(r)])
- for p in models.ResourceRangeAddressV6.objects.filter(cert__parent__in=conf.parents.all()):
+ for p in models.ResourceRangeAddressV6.objects.filter(cert__conf=conf):
r = p.as_resource_range()
print >>log, 'querying for routes matching %s' % r
routes.extend([validate_route(*x) for x in roa_match(r)])