aboutsummaryrefslogtreecommitdiff
path: root/rpki
diff options
context:
space:
mode:
authorRob Austein <sra@hactrn.net>2015-10-15 12:45:25 +0000
committerRob Austein <sra@hactrn.net>2015-10-15 12:45:25 +0000
commit11dc3020ea0e91326599d45289fc003adb145443 (patch)
treea04253598b41fe1242d25d8a531c5952ca86e8a2 /rpki
parent693283f75648b06bc927405ea3af1686a376d87b (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.py17
-rw-r--r--rpki/irdb/zookeeper.py11
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):