diff options
| author | Mark Washenberger <mark.washenberger@rackspace.com> | 2011-03-15 19:11:21 -0400 |
|---|---|---|
| committer | Mark Washenberger <mark.washenberger@rackspace.com> | 2011-03-15 19:11:21 -0400 |
| commit | e237b4a5653384688b16f7fd2c0708eaec4b9ec7 (patch) | |
| tree | a694d8162a0c8443560b8fb681a348129bb507e7 /nova/api | |
| parent | 70769dbe239c979d97154b88a33cb34d377d1196 (diff) | |
| download | nova-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.py | 10 |
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: |
