summaryrefslogtreecommitdiffstats
path: root/nova/wsgi.py
diff options
context:
space:
mode:
authorNaveed Massjouni <naveedm9@gmail.com>2011-04-05 10:56:24 -0400
committerNaveed Massjouni <naveedm9@gmail.com>2011-04-05 10:56:24 -0400
commite6505fd78cc28a5e91ec6fbf55e2e8de07679c7c (patch)
tree2d96509769d8f275af334e392f3eb8a9537b2cde /nova/wsgi.py
parent08417c48c223ad1b698ab1d00686a967b6a2dc0a (diff)
downloadnova-e6505fd78cc28a5e91ec6fbf55e2e8de07679c7c.tar.gz
nova-e6505fd78cc28a5e91ec6fbf55e2e8de07679c7c.tar.xz
nova-e6505fd78cc28a5e91ec6fbf55e2e8de07679c7c.zip
Fixed the addresses and metadata collections in xml responses.
Added corresponding tests.
Diffstat (limited to 'nova/wsgi.py')
-rw-r--r--nova/wsgi.py18
1 files changed, 18 insertions, 0 deletions
diff --git a/nova/wsgi.py b/nova/wsgi.py
index ba0819466..a550a33b0 100644
--- a/nova/wsgi.py
+++ b/nova/wsgi.py
@@ -484,6 +484,14 @@ class Serializer(object):
"""Recursive method to convert data members to XML nodes."""
result = doc.createElement(nodename)
if type(data) is list:
+ collections = metadata.get('list_collections', {})
+ if nodename in collections:
+ metadata = collections[nodename]
+ for item in data:
+ node = doc.createElement(metadata['item_name'])
+ node.setAttribute(metadata['item_key'], str(item))
+ result.appendChild(node)
+ return result
singular = metadata.get('plurals', {}).get(nodename, None)
if singular is None:
if nodename.endswith('s'):
@@ -494,6 +502,16 @@ class Serializer(object):
node = self._to_xml_node(doc, metadata, singular, item)
result.appendChild(node)
elif type(data) is dict:
+ collections = metadata.get('dict_collections', {})
+ if nodename in collections:
+ metadata = collections[nodename]
+ for k, v in data.items():
+ node = doc.createElement(metadata['item_name'])
+ node.setAttribute(metadata['item_key'], str(k))
+ text = doc.createTextNode(str(v))
+ node.appendChild(text)
+ result.appendChild(node)
+ return result
attrs = metadata.get('attributes', {}).get(nodename, {})
for k, v in data.items():
if k in attrs: