diff options
Diffstat (limited to 'rpkid/rpki/rpki_engine.py')
-rw-r--r-- | rpkid/rpki/rpki_engine.py | 36 |
1 files changed, 19 insertions, 17 deletions
diff --git a/rpkid/rpki/rpki_engine.py b/rpkid/rpki/rpki_engine.py index 9cc06a71..9f0fff25 100644 --- a/rpkid/rpki/rpki_engine.py +++ b/rpkid/rpki/rpki_engine.py @@ -1163,46 +1163,48 @@ class roa_obj(rpki.sql.sql_persistent): """ self.gctx.sql.execute("DELETE FROM roa_prefix WHERE roa_id = %s", (self.roa_id,)) - def update(self, callback): + @classmethod + def create(cls, gctx, self_id, asn, ipv4, ipv6): """ - Bring this roa_obj's ROA up to date if necesssary. + Construct a new ROA. """ + self = cls() + self.gctx = gctx + self.self_id = self_id + self.asn = asn + self.ipv4 = ipv4 + self.ipv6 = ipv6 + return self - def lose(e): - rpki.log.traceback() - rpki.log.warn("Could not update ROA %r, skipping: %s" % (self, e)) - callback() - return + def update(self, callback, errback): + """ + Bring this roa_obj's ROA up to date if necesssary. + """ if self.roa is None: - self.generate(callback, lose) - return + return self.generate(callback, errback) ca_detail = self.ca_detail() if ca_detail is None or ca_detail.state != "active": - self.regenerate(callback, lose) - return + return self.regenerate(callback, errback) regen_margin = rpki.sundial.timedelta(seconds = self.self().regen_margin) if rpki.sundial.now() + regen_margin > self.cert.getNotAfter(): - self.regenerate(callback, lose) - return + return self.regenerate(callback, errback) ca_resources = ca_detail.latest_ca_cert.get_3779resources() ee_resources = self.cert.get_3779resources() if ee_resources.oversized(ca_resources): - self.regenerate(callback, lose) - return + return self.regenerate(callback, errback) v4 = self.ipv4.to_resource_set() if self.ipv4 is not None else rpki.resource_set.resource_set_ipv4() v6 = self.ipv6.to_resource_set() if self.ipv6 is not None else rpki.resource_set.resource_set_ipv6() if ee_resources.v4 != v4 or ee_resources.v6 != v6: - self.regenerate(callback, lose) - return + return self.regenerate(callback, errback) callback() |