aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--myrpki.rototill/myrpki.py12
-rw-r--r--myrpki.rototill/setup.py14
-rw-r--r--myrpki.rototill/yamltest.py15
3 files changed, 22 insertions, 19 deletions
diff --git a/myrpki.rototill/myrpki.py b/myrpki.rototill/myrpki.py
index bf466038..6a62b0ba 100644
--- a/myrpki.rototill/myrpki.py
+++ b/myrpki.rototill/myrpki.py
@@ -606,10 +606,7 @@ def etree_read(filename, verbose = False):
"""
if verbose:
print "Reading", filename
- try:
- e = ElementTree(file = filename).getroot()
- except IOError:
- return None
+ e = ElementTree(file = filename).getroot()
for i in e.getiterator():
if i.tag.startswith(namespaceQName):
i.tag = i.tag[len(namespaceQName):]
@@ -655,10 +652,9 @@ def main(argv = ()):
bpki = CA(cfg_file, bpki_dir)
- e = etree_read(xml_filename)
- if e:
- bsc_req, bsc_cer = bpki.bsc(e.findtext("bpki_bsc_pkcs10"))
- else:
+ try:
+ bsc_req, bsc_cer = bpki.bsc(etree_read(xml_filename).findtext("bpki_bsc_pkcs10"))
+ except IOError:
bsc_req, bsc_cer = None, None
e = Element("myrpki", xmlns = namespace, version = "1", handle = my_handle, repository_handle = repository_handle)
diff --git a/myrpki.rototill/setup.py b/myrpki.rototill/setup.py
index 4edc5d3d..c6f83656 100644
--- a/myrpki.rototill/setup.py
+++ b/myrpki.rototill/setup.py
@@ -90,7 +90,10 @@ class main(rpki.cli.Cmd):
def load_xml(self):
- self.me = myrpki.etree_read(self.entitydb("identity.xml"))
+ try:
+ self.me = myrpki.etree_read(self.entitydb("identity.xml"))
+ except IOError:
+ self.me = None
self.parents = dict(read_xml_handle_tree(i) for i in glob.glob(self.entitydb("parents", "*.xml")))
self.children = dict(read_xml_handle_tree(i) for i in glob.glob(self.entitydb("children", "*.xml")))
self.repositories = dict(read_xml_handle_tree(i) for i in glob.glob(self.entitydb("repositories", "*.xml")))
@@ -187,7 +190,7 @@ class main(rpki.cli.Cmd):
if o == "--child_handle":
child_handle = a
- if len(argv) != 1 or not os.path.exists(argv[0]):
+ if len(argv) != 1:
raise RuntimeError, "Need to specify filename for child.xml"
if not self.run_rpkid:
@@ -212,7 +215,6 @@ class main(rpki.cli.Cmd):
SubElement(e, "bpki_child_ta").text = c.findtext("bpki_ta")
repos = [(n, r) for n, r in self.repositories.iteritems() if r.get("type") == "confirmed"]
- print "repos", repos
if len(repos) < 1:
print "Couldn't find any usable repositories, not giving referral"
elif len(repos) > 1:
@@ -245,7 +247,7 @@ class main(rpki.cli.Cmd):
elif o == "--repository_handle":
repository_handle = a
- if len(argv) != 1 or not os.path.exists(argv[0]):
+ if len(argv) != 1:
raise RuntimeError, "Need to specify filename for parent.xml on command line"
p = myrpki.etree_read(argv[0])
@@ -287,7 +289,7 @@ class main(rpki.cli.Cmd):
if o == "--sia_base":
sia_base = a
- if len(argv) != 1 or not os.path.exists(argv[0]):
+ if len(argv) != 1:
raise RuntimeError, "Need to specify filename for client.xml"
c = myrpki.etree_read(argv[0])
@@ -357,7 +359,7 @@ class main(rpki.cli.Cmd):
if o == "--repository_handle":
repository_handle = a
- if len(argv) != 1 or not os.path.exists(argv[0]):
+ if len(argv) != 1:
raise RuntimeError, "Need to specify filename for repository.xml on command line"
r = myrpki.etree_read(argv[0])
diff --git a/myrpki.rototill/yamltest.py b/myrpki.rototill/yamltest.py
index 646d703c..97952532 100644
--- a/myrpki.rototill/yamltest.py
+++ b/myrpki.rototill/yamltest.py
@@ -373,14 +373,19 @@ class allocation(object):
f.writerows((s.client_handle, s.path("bpki/resources/ca.cer"), s.sia_base)
for s in (db if only_one_pubd else [self] + self.kids))
- def find_pubd(self):
+ def find_pubd(self, want_path = False):
"""
Walk up tree until we find somebody who runs pubd.
"""
s = self
+ path = [s]
while not s.runs_pubd():
s = s.parent
- return s
+ path.append(s)
+ if want_path:
+ return s, ".".join(i.name for i in reversed(path))
+ else:
+ return s
def dump_conf(self, fn):
"""
@@ -625,10 +630,10 @@ for d in db:
print
d.run_setup("process_parent_answer", d.parent.path("entitydb", "children", "%s.xml" % d.name))
print
- p = d.find_pubd()
- p.run_setup("answer_repository_client", d.path("entitydb", "identity.xml"))
+ p, n = d.find_pubd(want_path = True)
+ p.run_setup("answer_repository_client", d.path("entitydb", "repositories", "%s.xml" % d.parent.name))
print
- d.run_setup("process_repository_answer", p.path("entitydb", "pubclients", "%s.%s.xml" % (p.name, d.name)))
+ d.run_setup("process_repository_answer", p.path("entitydb", "pubclients", "%s.xml" % n))
print
else:
print