aboutsummaryrefslogtreecommitdiff
path: root/rpki/rpkid_tasks.py
diff options
context:
space:
mode:
authorRob Austein <sra@hactrn.net>2016-02-26 23:39:19 +0000
committerRob Austein <sra@hactrn.net>2016-02-26 23:39:19 +0000
commit0b0d0d6506a107690e62341cc1b630eea96e4f35 (patch)
tree1b7437fd61eb3ceae8bcefd5dbd12e110d38d439 /rpki/rpkid_tasks.py
parent0dab9aeecfcd37c8f598760046f800f17d88f875 (diff)
Tweak UpdateROAsTask to create new ROAs before worrying about updating old ones.
svn path=/branches/tk705/; revision=6296
Diffstat (limited to 'rpki/rpkid_tasks.py')
-rw-r--r--rpki/rpkid_tasks.py28
1 files changed, 14 insertions, 14 deletions
diff --git a/rpki/rpkid_tasks.py b/rpki/rpkid_tasks.py
index 9386f796..b002f6df 100644
--- a/rpki/rpkid_tasks.py
+++ b/rpki/rpkid_tasks.py
@@ -373,6 +373,7 @@ class UpdateROAsTask(AbstractTask):
roas = {}
seen = set()
orphans = []
+ creates = []
updates = []
publisher = rpki.rpkid.publication_queue(self.rpkid)
ca_details = set()
@@ -391,29 +392,30 @@ class UpdateROAsTask(AbstractTask):
k = "{!s} {!s} {!s}".format(r_pdu.get("asn"), r_pdu.get("ipv4"), r_pdu.get("ipv6"))
if k in seen:
logger.warning("%r: Skipping duplicate ROA request %r", self, r_pdu)
+ continue
+ seen.add(k)
+ roa = roas.pop(k, None)
+ if roa is None:
+ roa = rpki.rpkidb.models.ROA(tenant = self.tenant, asn = long(r_pdu.get("asn")), ipv4 = r_pdu.get("ipv4"), ipv6 = r_pdu.get("ipv6"))
+ logger.debug("%r: Try to create %r", self, roa)
+ creates.append(roa)
else:
- seen.add(k)
- roa = roas.pop(k, None)
- if roa is None:
- roa = rpki.rpkidb.models.ROA(tenant = self.tenant, asn = long(r_pdu.get("asn")), ipv4 = r_pdu.get("ipv4"), ipv6 = r_pdu.get("ipv6"))
- logger.debug("%r: Created new %r", self, roa)
- else:
- logger.debug("%r: Found existing %r", self, roa)
+ logger.debug("%r: Found existing %r", self, roa)
updates.append(roa)
- r_msg = seen = None
-
orphans.extend(roas.itervalues())
- roas = None
+ roas = creates + updates
+
+ r_msg = seen = creates = updates = None
postponing = False
- while updates and not postponing:
+ while roas and not postponing:
if (yield self.overdue()):
postponing = True
break
- roa = updates.pop(0)
+ roa = roas.pop(0)
try:
roa.update(publisher = publisher)
ca_details.add(roa.ca_detail)
@@ -422,8 +424,6 @@ class UpdateROAsTask(AbstractTask):
except:
logger.exception("%r: Could not update %r, skipping", self, roa)
- updates = None
-
if not postponing:
for roa in orphans:
try: