diff options
author | Naveed Massjouni <naveedm9@gmail.com> | 2011-04-05 10:56:24 -0400 |
---|---|---|
committer | Naveed Massjouni <naveedm9@gmail.com> | 2011-04-05 10:56:24 -0400 |
commit | e6505fd78cc28a5e91ec6fbf55e2e8de07679c7c (patch) | |
tree | 2d96509769d8f275af334e392f3eb8a9537b2cde /nova/wsgi.py | |
parent | 08417c48c223ad1b698ab1d00686a967b6a2dc0a (diff) | |
download | nova-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.py | 18 |
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: |