diff options
author | Rob Austein <sra@hactrn.net> | 2015-11-23 06:27:33 +0000 |
---|---|---|
committer | Rob Austein <sra@hactrn.net> | 2015-11-23 06:27:33 +0000 |
commit | 4035533a429100b6c92c8b7bb482d340db3f8343 (patch) | |
tree | a30fd59924d13959bf99db3253e43697b1eaf5bf | |
parent | 67857a480d509d3e5a04e47b7d6947fc21f3d4e5 (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-x | rp/rcynic/rcynicng | 20 | ||||
-rw-r--r-- | rpki/POW/__init__.py | 3 |
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) |