aboutsummaryrefslogtreecommitdiff
path: root/scripts/rpki/up_down.py
diff options
context:
space:
mode:
Diffstat (limited to 'scripts/rpki/up_down.py')
-rw-r--r--scripts/rpki/up_down.py21
1 files changed, 19 insertions, 2 deletions
diff --git a/scripts/rpki/up_down.py b/scripts/rpki/up_down.py
index 9eaddd20..268134ca 100644
--- a/scripts/rpki/up_down.py
+++ b/scripts/rpki/up_down.py
@@ -385,6 +385,17 @@ class error_response_pdu(base_elt):
1302 : "Revoke - no such key",
2001 : "Internal Server Error - Request not performed" }
+ exceptions = {}
+
+ def __init__(self, exception = None):
+ """Initialize an error_response PDU from an exception object."""
+ if exception is not None:
+ if exception in self.exceptions:
+ self.status = exceptions[exception]
+ else:
+ self.status = 2001
+ self.description = str(exception)
+
def endElement(self, stack, name, text):
"""Handle "error_response" PDU."""
if name == "status":
@@ -392,8 +403,6 @@ class error_response_pdu(base_elt):
if code not in self.codes:
raise rpki.exceptions.BadStatusCode, "%s is not a known status code"
self.status = code
- elif name == "last_message_processed":
- self.last_message_processed = text
elif name == "description":
self.description = text
else:
@@ -457,6 +466,14 @@ class message_pdu(base_elt):
self.payload.serve_pdu(gctx, self, r_msg, child)
return r_msg
+ def serve_error(self, exception):
+ """Generate an error_response message PDU."""
+ r_msg = message_pdu()
+ r_msg.sender = self.receiver
+ r_msg.receiver = self.sender
+ r_msg.payload = error_response_pdu(exception)
+ return r_msg
+
@classmethod
def make_query(cls, payload, sender = "tweedledee", recipient = "tweedledum"):
"""Construct one message PDU."""