diff options
author | Rob Austein <sra@hactrn.net> | 2010-03-03 23:18:29 +0000 |
---|---|---|
committer | Rob Austein <sra@hactrn.net> | 2010-03-03 23:18:29 +0000 |
commit | 9dc417ab477dc1fff29cdf3c44950d9bee81dbb1 (patch) | |
tree | b411543b757edf410ed88373b7adc065a85eefc9 | |
parent | 127c56f70eb5eab97d2f051a822081b515d5d0e2 (diff) |
Checkpoint
svn path=/myrpki.rototill/myrpki.py; revision=3016
-rw-r--r-- | myrpki.rototill/myrpki.py | 15 | ||||
-rw-r--r-- | myrpki.rototill/setup.py | 23 |
2 files changed, 32 insertions, 6 deletions
diff --git a/myrpki.rototill/myrpki.py b/myrpki.rototill/myrpki.py index e5d4eaf8..b35a56e6 100644 --- a/myrpki.rototill/myrpki.py +++ b/myrpki.rototill/myrpki.py @@ -576,6 +576,17 @@ def etree_write(e, filename, verbose = True): ElementTree(e).write(filename + ".tmp") os.rename(filename + ".tmp", filename) +def etree_read(filename, verbose = False): + """ + Read an etree from a file. + """ + if verbose: + print "Reading", filename + try: + return ElementTree(file = filename).getroot() + except IOError: + return None + def tag(t): """ Wrap an element name in the right XML namespace goop. @@ -621,8 +632,8 @@ def main(argv = ()): bpki = CA(cfg_file, bpki_dir) bpki.setup("/CN=%s TA" % my_handle) - if os.path.exists(xml_filename): - e = ElementTree(file = xml_filename).getroot() + e = etree_read(xml_filename) + if e: bsc_req, bsc_cer = bpki.bsc(e.findtext("{%s}%s" % (namespace, "bpki_bsc_pkcs10"))) else: bsc_req, bsc_cer = None, None diff --git a/myrpki.rototill/setup.py b/myrpki.rototill/setup.py index fb4760bb..f6fb3a5c 100644 --- a/myrpki.rototill/setup.py +++ b/myrpki.rototill/setup.py @@ -21,12 +21,20 @@ import myrpki, rpki.config, rpki.cli from xml.etree.ElementTree import Element, SubElement, ElementTree +def read_xml_handle_tree(filename): + return filename.split()[1].splitext()[0], myrpki.etree_read(filename) + class main(rpki.cli.Cmd): prompt = "setup> " completedefault = rpki.cli.Cmd.filename_complete + me = None + parents = {} + children = {} + repositories = {} + def __init__(self): os.environ["TZ"] = "UTC" time.tzset() @@ -58,6 +66,13 @@ class main(rpki.cli.Cmd): rpki.cli.Cmd.__init__(self, argv) + def load_xml(self): + handle, self.me = read_xml_handle_tree(self.handle + ".xml") + self.parents = dict(read_xml_handle_tree(i) for i in glob.glob("parents/*.xml")) + self.children = dict(read_xml_handle_tree(i) for i in glob.glob("children/*.xml")) + self.repositories = dict(read_xml_handle_tree(i) for i in glob.glob("repositories/*.xml")) + assert handle == self.handle + def do_initialize(self, arg): self.bpki_myrpki.setup(self.cfg.get("bpki_myrpki_ta_dn", "/CN=%s BPKI Resource Trust Anchor" % self.handle)) @@ -125,7 +140,7 @@ class main(rpki.cli.Cmd): if not os.path.exists(rootd_child_fn): os.link(self.bpki_myirbe.xcert(self.bpki_myrpki.cer), rootd_child_fn) - def do_from_child(self, arg): + def do_receive_from_child(self, arg): child_handle = None @@ -140,7 +155,7 @@ class main(rpki.cli.Cmd): if not self.run_rpkid: raise RuntimeError, "Don't (yet) know how to set up child unless we run rpkid" - c = ElementTree(file = argv[0]).getroot() + c = myrpki.etree_read(argv[0]) if child_handle is None: child_handle = c["handle"] @@ -167,7 +182,7 @@ class main(rpki.cli.Cmd): myrpki.etree_write(e, "children/%s.xml" % child_handle) - def do_from_parent(self, arg): + def do_receive_from_parent(self, arg): parent_handle = None repository_handle = None @@ -182,7 +197,7 @@ class main(rpki.cli.Cmd): if len(argv) != 1 or not os.path.exists(argv[0]): raise RuntimeError, "Ned to specify filename for parent.xml on command line" - p = ElementTree(file = argv[0]).getroot() + p = myrpki.etree_read(argv[0]) if parent_handle is None: parent_handle = p["parent_handle"] |