aboutsummaryrefslogtreecommitdiff
path: root/scripts/rpkid.py
diff options
context:
space:
mode:
authorRob Austein <sra@hactrn.net>2007-09-18 16:45:58 +0000
committerRob Austein <sra@hactrn.net>2007-09-18 16:45:58 +0000
commit0c04890fc5108c58dd9ec0c241c45f6f1038408b (patch)
treef6201a736cddb5f3dd940dc9d613f6df69304ccf /scripts/rpkid.py
parentf8dbec35dc669ec58d5018ad5b5a73b2cc395551 (diff)
Move bulk of left-right handler to methods on left-right objects (duh).
Add copy hook to handle screwball cases like bsc_cert table. svn path=/scripts/PLAN; revision=984
Diffstat (limited to 'scripts/rpkid.py')
-rwxr-xr-xscripts/rpkid.py59
1 files changed, 1 insertions, 58 deletions
diff --git a/scripts/rpkid.py b/scripts/rpkid.py
index 6f0f06bf..94d98fed 100755
--- a/scripts/rpkid.py
+++ b/scripts/rpkid.py
@@ -17,57 +17,6 @@ def encode(msg, cms_key, cms_certs):
return rpki.cms.encode(lxml.etree.tostring(msg, pretty_print=True, encoding="us-ascii", xml_declaration=True), cms_key, cms_certs)
def left_right_handler(query, path):
-
- def make_reply(q_pdu, r_pdu=None):
- if r_pdu is None:
- r_pdu = q_pdu.__class__()
- r_pdu.self_id = q_pdu.self_id
- setattr(r_pdu, q_pdu.sql_template.index, getattr(q_pdu, q_pdu.sql_template.index))
- r_pdu.action = q_pdu.action
- r_pdu.type = "reply"
- return r_pdu
-
- def destroy_handler(q_pdu):
- data = q_pdu.sql_fetch(db, cur, getattr(q_pdu, q_pdu.sql_template.index))
- if data is not None:
- data.sql_delete(db, cur)
- r_msg.append(make_reply(q_pdu))
- else:
- r_msg.append(make_error_report(q_pdu))
-
- def create_handler(q_pdu):
- r_pdu = make_reply(q_pdu)
- q_pdu.sql_store(db, cur)
- setattr(r_pdu, q_pdu.sql_template.index, getattr(q_pdu, q_pdu.sql_template.index))
- r_msg.append(r_pdu)
-
- def get_handler(q_pdu):
- r_pdu = q_pdu.sql_fetch(db, cur, getattr(q_pdu, q_pdu.sql_template.index))
- if r_pdu is not None:
- make_reply(q_pdu, r_pdu)
- r_msg.append(r_pdu)
- else:
- r_msg.append(make_error_report(q_pdu))
-
- def set_handler(q_pdu):
- data = q_pdu.sql_fetch(db, cur, getattr(q_pdu, q_pdu.sql_template.index))
- if data is not None:
- for a in data.sql_template.columns[1:]:
- v = getattr(q_pdu, a)
- if v is not None:
- setattr(data, a, v)
- data.sql_dirty = True
- data.sql_store(db, cur)
- r_pdu = make_reply(q_pdu)
- r_msg.append(r_pdu)
- else:
- r_msg.append(make_error_report(q_pdu))
-
- def list_handler(q_pdu):
- for r_pdu in q_pdu.sql_fetch_all(db, cur):
- make_reply(q_pdu, r_pdu)
- r_msg.append(r_pdu)
-
try:
q_elt = decode(query, cms_ta_irbe)
lr_rng.assertValid(q_elt)
@@ -76,12 +25,7 @@ def left_right_handler(query, path):
q_msg = saxer.result
r_msg = rpki.left_right.msg()
for q_pdu in q_msg:
- assert isinstance(q_pdu, rpki.left_right.data_elt) and q_pdu.type == "query"
- { "create" : create_handler,
- "set" : set_handler,
- "get" : get_handler,
- "list" : list_handler,
- "destroy" : destroy_handler }[q_pdu.action](q_pdu)
+ q_pdu.serve_dispatch(db, cur, r_msg)
r_elt = r_msg.toXML()
try:
lr_rng.assertValid(r_elt)
@@ -89,7 +33,6 @@ def left_right_handler(query, path):
print lxml.etree.tostring(r_elt, pretty_print=True, encoding="us-ascii", xml_declaration=True)
raise
return 200, encode(r_elt, cms_key, cms_certs)
-
except Exception, data:
if show_traceback:
traceback.print_exc()