aboutsummaryrefslogtreecommitdiff
path: root/rpki/irdb/zookeeper.py
diff options
context:
space:
mode:
authorRob Austein <sra@hactrn.net>2015-10-19 03:36:42 +0000
committerRob Austein <sra@hactrn.net>2015-10-19 03:36:42 +0000
commit7f5e75188ad4527e3c3425a155dfed0847a389dd (patch)
tree400301cae01f51141e380664cf0b382b8204a00d /rpki/irdb/zookeeper.py
parent7ab6040f7eb05a7ac4424e0294d228256e9a64dd (diff)
Amputate old SQL code out of rpkid with a fire axe, replacing it with
Django ORM. Duct tape and bailing wire everywhere, much clean-up left to do, but basic "make yamltest" suite runs. Much of the clean-up isn't worth doing until after revamping the I/O system, as it'll all change again at that point anyway. svn path=/branches/tk705/; revision=6127
Diffstat (limited to 'rpki/irdb/zookeeper.py')
-rw-r--r--rpki/irdb/zookeeper.py62
1 files changed, 34 insertions, 28 deletions
diff --git a/rpki/irdb/zookeeper.py b/rpki/irdb/zookeeper.py
index 4b4a2f46..6a355f9e 100644
--- a/rpki/irdb/zookeeper.py
+++ b/rpki/irdb/zookeeper.py
@@ -583,6 +583,9 @@ class Zookeeper(object):
x = etree_read(filename)
+ if x.tag != tag_oob_child_request:
+ raise BadXMLMessage("Expected %s, got %s", tag_oob_child_request, x.tag)
+
if child_handle is None:
child_handle = x.get("child_handle")
@@ -674,6 +677,9 @@ class Zookeeper(object):
x = etree_read(filename)
+ if x.tag != tag_oob_parent_response:
+ raise BadXMLMessage("Expected %s, got %s", tag_oob_parent_response, x.tag)
+
if parent_handle is None:
parent_handle = x.get("parent_handle")
@@ -757,6 +763,9 @@ class Zookeeper(object):
x = etree_read(filename)
+ if x.tag != tag_oob_publisher_request:
+ raise BadXMLMessage("Expected %s, got %s", tag_oob_publisher_request, x.tag)
+
client_ta = rpki.x509.X509(Base64 = x.findtext(tag_oob_publisher_bpki_ta))
referral = x.find(tag_oob_referral)
@@ -868,7 +877,10 @@ class Zookeeper(object):
x = etree_read(filename)
- self.log("Repository calls us %r" % (x.get("client_handle")))
+ if x.tag != tag_oob_repository_response:
+ raise BadXMLMessage("Expected %s, got %s", tag_oob_repository_response, x.tag)
+
+ self.log("Repository calls us %r" % (x.get("publisher_handle")))
if parent_handle is not None:
self.log("Explicit parent_handle given")
@@ -1231,18 +1243,18 @@ class Zookeeper(object):
throw exceptions as needed.
"""
- if any(r_pdu.tag in (rpki.left_right.tag_report_error,
- rpki.publication_control.tag_report_error)
- for r_pdu in r_msg):
- for r_pdu in r_msg:
- if r_pdu.tag == rpki.left_right.tag_report_error:
- self.log("rpkid reported failure: %s" % r_pdu.get("error_code"))
- elif r_pdu.tag == rpki.publication_control.tag_report_error:
- self.log("pubd reported failure: %s" % r_pdu.get("error_code"))
- else:
- continue
- if r_pdu.text:
- self.log(r_pdu.text)
+ failed = False
+ for r_pdu in r_msg.getiterator(rpki.left_right.tag_report_error):
+ failed = True
+ self.log("rpkid reported failure: %s" % r_pdu.get("error_code"))
+ if r_pdu.text:
+ self.log(r_pdu.text)
+ for r_pdu in r_msg.getiterator(rpki.publication_control.tag_report_error):
+ failed = True
+ self.log("pubd reported failure: %s" % r_pdu.get("error_code"))
+ if r_pdu.text:
+ self.log(r_pdu.text)
+ if failed:
raise CouldntTalkToDaemon
@@ -1343,24 +1355,18 @@ class Zookeeper(object):
r_msg = self.call_rpkid(q_msg, suppress_error_check = True)
- if r_msg[0].tag == rpki.left_right.tag_self:
- self.check_error_report(r_msg)
- self_pdu = r_msg[0]
- else:
- self_pdu = None
+ self.check_error_report(r_msg)
+
+ self_pdu = r_msg.find(rpki.left_right.tag_self)
bsc_pdus = dict((r_pdu.get("bsc_handle"), r_pdu)
- for r_pdu in r_msg
- if r_pdu.tag == rpki.left_right.tag_bsc)
+ for r_pdu in r_msg.getiterator(rpki.left_right.tag_bsc))
repository_pdus = dict((r_pdu.get("repository_handle"), r_pdu)
- for r_pdu in r_msg
- if r_pdu.tag == rpki.left_right.tag_repository)
+ for r_pdu in r_msg.getiterator(rpki.left_right.tag_repository))
parent_pdus = dict((r_pdu.get("parent_handle"), r_pdu)
- for r_pdu in r_msg
- if r_pdu.tag == rpki.left_right.tag_parent)
+ for r_pdu in r_msg.getiterator(rpki.left_right.tag_parent))
child_pdus = dict((r_pdu.get("child_handle"), r_pdu)
- for r_pdu in r_msg
- if r_pdu.tag == rpki.left_right.tag_child)
+ for r_pdu in r_msg.getiterator(rpki.left_right.tag_child))
q_msg = self._compose_left_right_query()
@@ -1408,8 +1414,8 @@ class Zookeeper(object):
SubElement(q_msg, rpki.left_right.tag_bsc, action = "list", tag = "bsc", self_handle = ca.handle)
r_msg = self.call_rpkid(q_msg)
bsc_pdus = dict((r_pdu.get("bsc_handle"), r_pdu)
- for r_pdu in r_msg
- if r_pdu.tag == rpki.left_right.tag_bsc and r_pdu.get("action") == "list")
+ for r_pdu in r_msg.getiterator(rpki.left_right.tag_bsc)
+ if r_pdu.get("action") == "list")
bsc_pdu = bsc_pdus.pop(bsc_handle, None)
q_msg = self._compose_left_right_query()