summaryrefslogtreecommitdiffstats
path: root/nova/api
diff options
context:
space:
mode:
authorMark Washenberger <mark.washenberger@rackspace.com>2011-03-15 19:11:21 -0400
committerMark Washenberger <mark.washenberger@rackspace.com>2011-03-15 19:11:21 -0400
commite237b4a5653384688b16f7fd2c0708eaec4b9ec7 (patch)
treea694d8162a0c8443560b8fb681a348129bb507e7 /nova/api
parent70769dbe239c979d97154b88a33cb34d377d1196 (diff)
downloadnova-e237b4a5653384688b16f7fd2c0708eaec4b9ec7.tar.gz
nova-e237b4a5653384688b16f7fd2c0708eaec4b9ec7.tar.xz
nova-e237b4a5653384688b16f7fd2c0708eaec4b9ec7.zip
ignore differently-named nodes in personality and metadata parsing
Diffstat (limited to 'nova/api')
-rw-r--r--nova/api/openstack/servers.py10
1 files changed, 8 insertions, 2 deletions
diff --git a/nova/api/openstack/servers.py b/nova/api/openstack/servers.py
index f618c31a0..ea88f1fdc 100644
--- a/nova/api/openstack/servers.py
+++ b/nova/api/openstack/servers.py
@@ -575,7 +575,7 @@ class ServerCreateRequestXMLDeserializer(object):
if metadata_node is None:
return None
metadata = {}
- for meta_node in metadata_node.childNodes:
+ for meta_node in self._find_children_named(metadata_node, "meta"):
key = meta_node.getAttribute("key")
metadata[key] = self._extract_text(meta_node)
return metadata
@@ -587,7 +587,7 @@ class ServerCreateRequestXMLDeserializer(object):
if personality_node is None:
return None
personality = []
- for file_node in personality_node.childNodes:
+ for file_node in self._find_children_named(personality_node, "file"):
item = {}
if file_node.hasAttribute("path"):
item["path"] = file_node.getAttribute("path")
@@ -602,6 +602,12 @@ class ServerCreateRequestXMLDeserializer(object):
return node
return None
+ def _find_children_named(self, parent, name):
+ """Return all of a nodes children who have the given name"""
+ for node in parent.childNodes:
+ if node.nodeName == name:
+ yield node
+
def _extract_text(self, node):
"""Get the text field contained by the given node"""
if len(node.childNodes) == 1: