aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--scripts/rpki/left_right.py16
-rw-r--r--scripts/rpki/sql.py4
-rw-r--r--scripts/rpki/up_down.py2
3 files changed, 19 insertions, 3 deletions
diff --git a/scripts/rpki/left_right.py b/scripts/rpki/left_right.py
index c57651e8..0264f881 100644
--- a/scripts/rpki/left_right.py
+++ b/scripts/rpki/left_right.py
@@ -230,6 +230,22 @@ class self_elt(data_elt):
elt.extend([i.toXML() for i in self.prefs])
return elt
+ def client_poll(self, gctx):
+ """Run the regular client poll cycle with each of this self's parents in turn."""
+ for parent in parent_elt.sql_fetch_where(gctx, "self_id = %s" % self.self_id):
+ r_pdu = rpki.up_down.list_pdu(gctx, parent)
+ ca_dict = dict((ca.parent_resource_class, ca) for ca in rpki.sql.ca_obj.sql_fetch_where(gctx, "parent_id = %s", parent.parent_id))
+ for rc in r_pdu.payload:
+ if rc.class_name in ca_dict:
+ ca = ca_dict[rc.class_name]
+ del ca_dict[rc.class_name]
+ ca.check_for_updates(gctx, parent, rc)
+ else:
+ rpki.sql.ca_obj.create(gctx, parent, rc)
+ for ca in ca_dict.values():
+ ca.delete(gctx) # CA not listed by parent
+ rpki.sql.sql_sweep(gctx)
+
class bsc_elt(data_elt):
"""<bsc/> (Business Signing Context) element."""
diff --git a/scripts/rpki/sql.py b/scripts/rpki/sql.py
index d8f6629a..edbc9331 100644
--- a/scripts/rpki/sql.py
+++ b/scripts/rpki/sql.py
@@ -41,10 +41,10 @@ def sql_assert_pristine():
"""Assert that there are no dirty objects in the cache."""
assert not sql_dirty, "Dirty objects in SQL cache: %s" % sql_dirty
-def sql_sweep(db, cur):
+def sql_sweep(gctx):
"""Write any dirty objects out to SQL."""
for s in sql_dirty:
- s.sql_store(db, cur)
+ s.sql_store(gctx)
def fetch_column(gctx, *query):
"""Pull a single column from SQL, return it as a list."""
diff --git a/scripts/rpki/up_down.py b/scripts/rpki/up_down.py
index 90c6f63e..5b3ec841 100644
--- a/scripts/rpki/up_down.py
+++ b/scripts/rpki/up_down.py
@@ -280,7 +280,7 @@ class issue_pdu(base_elt):
raise NotImplementedError, "Should generate a new manifest, should publish newly-created certificate"
# Save anything we modified and generate response
- rpki.sql.sql_sweep(gctx.db, gctx.cur)
+ rpki.sql.sql_sweep(gctx)
assert child_cert and child_cert.sql_in_db
c = certificate_elt()
c.cert_url = multi_uri(ca.sia_uri + child_cert.cert.gSKI() + ".cer")