diff options
-rw-r--r-- | myrpki.rototill/myrpki.py | 12 | ||||
-rw-r--r-- | myrpki.rototill/setup.py | 14 | ||||
-rw-r--r-- | myrpki.rototill/yamltest.py | 15 |
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 |