diff options
author | Rob Austein <sra@hactrn.net> | 2015-10-15 12:45:25 +0000 |
---|---|---|
committer | Rob Austein <sra@hactrn.net> | 2015-10-15 12:45:25 +0000 |
commit | 11dc3020ea0e91326599d45289fc003adb145443 (patch) | |
tree | a04253598b41fe1242d25d8a531c5952ca86e8a2 /rpki | |
parent | 693283f75648b06bc927405ea3af1686a376d87b (diff) |
Extend rpki.irdb.zookeeper.etree_read() to support reading directly
from an etree_wrapper object, bypassing the filesystem entirely.
svn path=/branches/tk705/; revision=6117
Diffstat (limited to 'rpki')
-rw-r--r-- | rpki/gui/app/views.py | 17 | ||||
-rw-r--r-- | rpki/irdb/zookeeper.py | 11 |
2 files changed, 12 insertions, 16 deletions
diff --git a/rpki/gui/app/views.py b/rpki/gui/app/views.py index bf152f8e..d9b3fee3 100644 --- a/rpki/gui/app/views.py +++ b/rpki/gui/app/views.py @@ -1239,22 +1239,13 @@ def resource_holder_create(request): zk_child = Zookeeper(handle=handle, logstream=log) identity_xml = zk_child.initialize_resource_bpki() if parent: - # FIXME etree_wrapper should allow us to deal with file objects - t = NamedTemporaryFile(delete=False) - t.close() - - identity_xml.save(t.name) zk_parent = Zookeeper(handle=parent.handle, logstream=log) - parent_response, _ = zk_parent.configure_child(t.name) - parent_response.save(t.name) + parent_response, _ = zk_parent.configure_child(identity_xml) zk_parent.synchronize_ca() - repo_req, _ = zk_child.configure_parent(t.name) - repo_req.save(t.name) - repo_resp, _ = zk_parent.configure_publication_client(t.name) - repo_resp.save(t.name) + repo_req, _ = zk_child.configure_parent(parent_response) + repo_resp, _ = zk_parent.configure_publication_client(repo_req) zk_parent.synchronize_pubd() - zk_child.configure_repository(t.name) - os.remove(t.name) + zk_child.configure_repository(repo_resp) zk_child.synchronize_ca() return redirect(resource_holder_list) else: diff --git a/rpki/irdb/zookeeper.py b/rpki/irdb/zookeeper.py index e23d5483..854ed9e9 100644 --- a/rpki/irdb/zookeeper.py +++ b/rpki/irdb/zookeeper.py @@ -128,13 +128,18 @@ class PEM_writer(object): self.wrote.add(filename) -def etree_read(filename): +def etree_read(filename_or_etree_wrapper): """ Read an etree from a file, verifying then stripping XML namespace - cruft. + cruft. As a convenience, we also accept an etree_wrapper object in + place of a filename, in which case we deepcopy the etree directly + from the etree_wrapper and there's no need for a file. """ - e = ElementTree(file = filename).getroot() + if isinstance(filename_or_etree_wrapper, etree_wrapper): + e = copy.deepcopy(filename_or_etree_wrapper.etree) + else: + e = ElementTree(file = filename_or_etree_wrapper).getroot() rpki.relaxng.myrpki.assertValid(e) for i in e.getiterator(): if i.tag.startswith(myrpki_xmlns): |