aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRob Austein <sra@hactrn.net>2015-11-23 06:27:33 +0000
committerRob Austein <sra@hactrn.net>2015-11-23 06:27:33 +0000
commit4035533a429100b6c92c8b7bb482d340db3f8343 (patch)
treea30fd59924d13959bf99db3253e43697b1eaf5bf
parent67857a480d509d3e5a04e47b7d6947fc21f3d4e5 (diff)
first pass on XML output. Incomplete, but enough to get a useful
summary from rcynic-text. svn path=/branches/tk705/; revision=6187
-rwxr-xr-xrp/rcynic/rcynicng20
-rw-r--r--rpki/POW/__init__.py3
2 files changed, 22 insertions, 1 deletions
diff --git a/rp/rcynic/rcynicng b/rp/rcynic/rcynicng
index b69074a2..4ac9d18e 100755
--- a/rp/rcynic/rcynicng
+++ b/rp/rcynic/rcynicng
@@ -552,6 +552,7 @@ def parse_arguments():
parser.add_argument("--output", default = "rcynic-data/rcynicng-output")
parser.add_argument("--workers", type = posint, default = 10)
parser.add_argument("--no-fetch", action = "store_true")
+ parser.add_argument("--xml-file", type = argparse.FileType("w"), default = "rcynicng.xml")
return parser.parse_args()
@@ -782,7 +783,24 @@ def main():
def final_report():
# Should be doing something to generate rcynic.xml here.
- if False:
+ if True:
+ # rcynic-version = "", summary-version="", reporting-hostname=""
+ doc = Element("rcynic-summary")
+ labels = SubElement(doc, "labels")
+ for code in codes.all():
+ SubElement(labels, code.name).text = code.text
+ for uri in Status.db:
+ status = Status.db[uri]
+ ts = str(status.timestamp)
+ gen = str(status.generation)
+ uri = status.uri
+ for sym in sorted(status.status):
+ SubElement(doc, "validation_status", timestamp = ts, status = str(sym), generation = gen).text = uri
+ #
+ # Should generate <rsync_history/> elements here too, later
+ #
+ ElementTree(doc).write(file = args.xml_file, pretty_print = True)
+ elif False:
for uri in sorted(Status.db):
print Status.db[uri]
else:
diff --git a/rpki/POW/__init__.py b/rpki/POW/__init__.py
index 76570333..14db54f8 100644
--- a/rpki/POW/__init__.py
+++ b/rpki/POW/__init__.py
@@ -71,6 +71,9 @@ class StatusCodeDB(object):
setattr(self, k, v)
self._map.update((s.code, s) for s in self._map.values() if s.code is not None)
+ def all(self):
+ return set(self._map.itervalues())
+
def normalize(self, status):
convert = set(s for s in status if isinstance(s, (int, str)))
status |= set(self._map[s] for s in convert)