diff options
author | Rob Austein <sra@hactrn.net> | 2007-10-05 23:23:24 +0000 |
---|---|---|
committer | Rob Austein <sra@hactrn.net> | 2007-10-05 23:23:24 +0000 |
commit | e8aed589d763880e3d5e83555a04d892fab9da35 (patch) | |
tree | ea0aeb6fb26057fb2a62719e4c69182012c2ef58 | |
parent | 0adb6d413488c9b8930f03ec63b95327d42b9c59 (diff) |
Start on "regular poll" code
svn path=/scripts/rpki/left_right.py; revision=1101
-rw-r--r-- | scripts/rpki/left_right.py | 16 | ||||
-rw-r--r-- | scripts/rpki/sql.py | 4 | ||||
-rw-r--r-- | scripts/rpki/up_down.py | 2 |
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") |