diff options
Diffstat (limited to 'rpkid/rpki/rpki_engine.py')
-rw-r--r-- | rpkid/rpki/rpki_engine.py | 38 |
1 files changed, 8 insertions, 30 deletions
diff --git a/rpkid/rpki/rpki_engine.py b/rpkid/rpki/rpki_engine.py index 18c17c48..cd16c21d 100644 --- a/rpkid/rpki/rpki_engine.py +++ b/rpkid/rpki/rpki_engine.py @@ -28,8 +28,7 @@ class rpkid_context(object): def __init__(self, cfg): - self.db = rpki.sql.connect(cfg) - self.cur = self.db.cursor() + self.sql = rpki.sql.session(cfg) self.bpki_ta = rpki.x509.X509(Auto_file = cfg.get("bpki-ta")) self.irdb_cert = rpki.x509.X509(Auto_file = cfg.get("irdb-cert")) @@ -44,9 +43,6 @@ class rpkid_context(object): self.publication_kludge_base = cfg.get("publication-kludge-base", "publication/") - self.sql_cache = {} - self.sql_dirty = set() - def irdb_query(self, self_id, child_id = None): """Perform an IRDB callback query. In the long run this should not be a blocking routine, it should instead issue a query and set up a @@ -81,35 +77,17 @@ class rpkid_context(object): v6 = r_msg[0].ipv6, valid_until = r_msg[0].valid_until) - def sql_cache_clear(self): - """Clear the object cache.""" - self.sql_cache.clear() - - def sql_assert_pristine(self): - """Assert that there are no dirty objects in the cache.""" - assert not self.sql_dirty, "Dirty objects in SQL cache: %s" % self.sql_dirty - - def sql_sweep(self): - """Write any dirty objects out to SQL.""" - for s in self.sql_dirty.copy(): - rpki.log.debug("Sweeping %s" % repr(s)) - if s.sql_deleted: - s.sql_delete() - else: - s.sql_store() - self.sql_assert_pristine() - def left_right_handler(self, query, path): """Process one left-right PDU.""" rpki.log.trace() try: - self.db.ping(True) + self.sql.ping() q_msg = rpki.left_right.cms_msg.unwrap(query, (self.bpki_ta, self.irbe_cert)) if q_msg.type != "query": raise rpki.exceptions.BadQuery, "Message type is not query" r_msg = q_msg.serve_top_level(self) reply = rpki.left_right.cms_msg.wrap(r_msg, self.rpkid_key, self.rpkid_cert) - self.sql_sweep() + self.sql.sweep() return 200, reply except Exception, data: rpki.log.error(traceback.format_exc()) @@ -119,7 +97,7 @@ class rpkid_context(object): """Process one up-down PDU.""" rpki.log.trace() try: - self.db.ping(True) + self.sql.ping() child_id = path.partition("/up-down/")[2] if not child_id.isdigit(): raise rpki.exceptions.BadContactURL, "Bad path: %s" % path @@ -127,7 +105,7 @@ class rpkid_context(object): if child is None: raise rpki.exceptions.ChildNotFound, "Could not find child %s" % child_id reply = child.serve_up_down(query) - self.sql_sweep() + self.sql.sweep() return 200, reply except Exception, data: rpki.log.error(traceback.format_exc()) @@ -140,13 +118,13 @@ class rpkid_context(object): rpki.log.trace() try: - self.db.ping(True) + self.sql.ping() for s in rpki.left_right.self_elt.sql_fetch_all(self): s.client_poll() s.update_children() s.update_roas() s.regenerate_crls_and_manifests() - self.sql_sweep() + self.sql.sweep() return 200, "OK" except Exception, data: rpki.log.error(traceback.format_exc()) @@ -694,7 +672,7 @@ class child_cert_obj(rpki.sql.sql_persistant): revoked_cert_obj.revoke(cert = self.cert, ca_detail = ca_detail) repository = ca.parent().repository() repository.withdraw(self.cert, self.uri(ca)) - self.gctx.sql_sweep() + self.gctx.sql.sweep() self.sql_delete() def reissue(self, ca_detail, resources = None, sia = None): |