diff options
author | Rob Austein <sra@hactrn.net> | 2015-10-19 03:36:42 +0000 |
---|---|---|
committer | Rob Austein <sra@hactrn.net> | 2015-10-19 03:36:42 +0000 |
commit | 7f5e75188ad4527e3c3425a155dfed0847a389dd (patch) | |
tree | 400301cae01f51141e380664cf0b382b8204a00d /rpki/irdb/zookeeper.py | |
parent | 7ab6040f7eb05a7ac4424e0294d228256e9a64dd (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.py | 62 |
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() |