aboutsummaryrefslogtreecommitdiff
path: root/rpkid/rpki/gui/cacheview/util.py
diff options
context:
space:
mode:
authorMichael Elkins <melkins@tislabs.com>2013-03-18 15:57:11 +0000
committerMichael Elkins <melkins@tislabs.com>2013-03-18 15:57:11 +0000
commite612d70bdef358121a9c3f7e422e662dcc32fdf3 (patch)
tree86e183782cf5ade3fbea63b47e3a4d694f367d69 /rpkid/rpki/gui/cacheview/util.py
parent05f8d3e67ed099d7272f6d106743f02664990c8a (diff)
merge work for #460
svn path=/trunk/; revision=5166
Diffstat (limited to 'rpkid/rpki/gui/cacheview/util.py')
-rw-r--r--rpkid/rpki/gui/cacheview/util.py50
1 files changed, 32 insertions, 18 deletions
diff --git a/rpkid/rpki/gui/cacheview/util.py b/rpkid/rpki/gui/cacheview/util.py
index 2f5cfd90..dffa591f 100644
--- a/rpkid/rpki/gui/cacheview/util.py
+++ b/rpkid/rpki/gui/cacheview/util.py
@@ -52,26 +52,40 @@ def rcynic_cert(cert, obj):
obj.asns.clear()
obj.addresses.clear()
- for asr in cert.resources.asn:
- logger.debug('processing %s' % asr)
-
- attrs = {'min': asr.min, 'max': asr.max}
- q = models.ASRange.objects.filter(**attrs)
- if not q:
- obj.asns.create(**attrs)
- else:
- obj.asns.add(q[0])
-
- for cls, addr_obj, addrset in (models.AddressRange, obj.addresses, cert.resources.v4), (models.AddressRangeV6, obj.addresses_v6, cert.resources.v6):
- for rng in addrset:
- logger.debug('processing %s' % rng)
-
- attrs = {'prefix_min': rng.min, 'prefix_max': rng.max}
- q = cls.objects.filter(**attrs)
+ if cert.resources.asn.inherit:
+ # FIXME: what happens when the parent's resources change and the child
+ # cert is not reissued?
+ obj.asns.add(*obj.issuer.asns.all())
+ else:
+ for asr in cert.resources.asn:
+ logger.debug('processing %s' % asr)
+
+ attrs = {'min': asr.min, 'max': asr.max}
+ q = models.ASRange.objects.filter(**attrs)
if not q:
- addr_obj.create(**attrs)
+ obj.asns.create(**attrs)
else:
- addr_obj.add(q[0])
+ obj.asns.add(q[0])
+
+ for cls, addr_obj, addrset, parentset in (
+ models.AddressRange, obj.addresses, cert.resources.v4,
+ obj.issuer.addresses
+ ), (
+ models.AddressRangeV6, obj.addresses_v6, cert.resources.v6,
+ obj.issuer.addresses_v6
+ ):
+ if addrset.inherit:
+ addr_obj.add(*parentset.all())
+ else:
+ for rng in addrset:
+ logger.debug('processing %s' % rng)
+
+ attrs = {'prefix_min': rng.min, 'prefix_max': rng.max}
+ q = cls.objects.filter(**attrs)
+ if not q:
+ addr_obj.create(**attrs)
+ else:
+ addr_obj.add(q[0])
def rcynic_roa(roa, obj):