aboutsummaryrefslogtreecommitdiff
path: root/rpki/POW/__init__.py
diff options
context:
space:
mode:
Diffstat (limited to 'rpki/POW/__init__.py')
-rw-r--r--rpki/POW/__init__.py29
1 files changed, 16 insertions, 13 deletions
diff --git a/rpki/POW/__init__.py b/rpki/POW/__init__.py
index 7f92c2cd..eae16b53 100644
--- a/rpki/POW/__init__.py
+++ b/rpki/POW/__init__.py
@@ -57,18 +57,19 @@ class StatusCode(object):
class StatusCodeDB(object):
- def __init__(self, bad, warn, good):
- for k, v in bad.iteritems():
- setattr(self, k, StatusCode(name = k, text = v, kind = "bad"))
- for k, v in warn.iteritems():
- setattr(self, k, StatusCode(name = k, text = v, kind = "warn"))
- for k, v in good.iteritems():
- setattr(self, k, StatusCode(name = k, text = v, kind = "good"))
-
- # Do we want something to let us use the OpenSSL symbolic names
- # for the X509_V_ERR_* codes, or just skip that entirely?
- #
- # Sort that out when we get to the Python-side API for this stuff.
+ def __init__(self, bad, warn, good, verification_errors):
+ self._map = dict((name, StatusCode(code = code, name = name, text = text,
+ kind = "bad" if code != 0 else "good"))
+ for code, name, text in verification_errors)
+ self._map.update((k, StatusCode(name = k, text = v, kind = "bad"))
+ for k, v in bad.iteritems())
+ self._map.update((k, StatusCode(name = k, text = v, kind = "warn"))
+ for k, v in warn.iteritems())
+ self._map.update((k, StatusCode(name = k, text = v, kind = "good"))
+ for k, v in good.iteritems())
+ for k, v in self._map.iteritems():
+ setattr(self, k, v)
+ self._map.update((s.code, s) for s in self._map.values() if s.code is not None)
validation_status = StatusCodeDB(
@@ -187,4 +188,6 @@ validation_status = StatusCodeDB(
OBJECT_ACCEPTED = "Object accepted",
RECHECKING_OBJECT = "Rechecking object",
RSYNC_TRANSFER_SUCCEEDED = "rsync transfer succeeded",
- VALIDATION_OK = "OK"))
+ VALIDATION_OK = "OK"),
+
+ verification_errors = _POW.getVerificationErrors())