aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRob Austein <sra@hactrn.net>2010-03-03 23:18:29 +0000
committerRob Austein <sra@hactrn.net>2010-03-03 23:18:29 +0000
commit9dc417ab477dc1fff29cdf3c44950d9bee81dbb1 (patch)
treeb411543b757edf410ed88373b7adc065a85eefc9
parent127c56f70eb5eab97d2f051a822081b515d5d0e2 (diff)
Checkpoint
svn path=/myrpki.rototill/myrpki.py; revision=3016
-rw-r--r--myrpki.rototill/myrpki.py15
-rw-r--r--myrpki.rototill/setup.py23
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"]