diff options
author | Rob Austein <sra@hactrn.net> | 2016-02-26 23:39:19 +0000 |
---|---|---|
committer | Rob Austein <sra@hactrn.net> | 2016-02-26 23:39:19 +0000 |
commit | 0b0d0d6506a107690e62341cc1b630eea96e4f35 (patch) | |
tree | 1b7437fd61eb3ceae8bcefd5dbd12e110d38d439 /rpki/rpkid_tasks.py | |
parent | 0dab9aeecfcd37c8f598760046f800f17d88f875 (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.py | 28 |
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: |