summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBrian Waldon <brian.waldon@rackspace.com>2011-06-23 12:41:57 -0400
committerBrian Waldon <brian.waldon@rackspace.com>2011-06-23 12:41:57 -0400
commitb186f7ae1515b8296f5fdb7f86b67c07973bb463 (patch)
tree5caf4a6fe2912ea4d149b04cb093465bf440b5d1
parent8feaa2394cd4c4d9709568c7d294fa0a75f790bc (diff)
downloadnova-b186f7ae1515b8296f5fdb7f86b67c07973bb463.tar.gz
nova-b186f7ae1515b8296f5fdb7f86b67c07973bb463.tar.xz
nova-b186f7ae1515b8296f5fdb7f86b67c07973bb463.zip
fixing 500 on None metadata value
-rw-r--r--nova/api/openstack/image_metadata.py2
-rw-r--r--nova/tests/api/openstack/test_image_metadata.py20
2 files changed, 21 insertions, 1 deletions
diff --git a/nova/api/openstack/image_metadata.py b/nova/api/openstack/image_metadata.py
index 90cbfe04c..639e4320d 100644
--- a/nova/api/openstack/image_metadata.py
+++ b/nova/api/openstack/image_metadata.py
@@ -111,7 +111,7 @@ class ImageMetadataXMLSerializer(wsgi.XMLDictSerializer):
def _meta_item_to_xml(self, doc, key, value):
node = doc.createElement('meta')
node.setAttribute('key', key)
- text = doc.createTextNode(value)
+ text = doc.createTextNode(str(value))
node.appendChild(text)
return node
diff --git a/nova/tests/api/openstack/test_image_metadata.py b/nova/tests/api/openstack/test_image_metadata.py
index 9495eadec..52905056d 100644
--- a/nova/tests/api/openstack/test_image_metadata.py
+++ b/nova/tests/api/openstack/test_image_metadata.py
@@ -130,6 +130,26 @@ class ImageMetaDataTest(unittest.TestCase):
self.assertEqual(expected.toxml(), actual.toxml())
+ def test_index_xml_null_value(self):
+ serializer = openstack.image_metadata.ImageMetadataXMLSerializer()
+ fixture = {
+ 'metadata': {
+ 'three': None,
+ },
+ }
+ output = serializer.index(fixture)
+ actual = minidom.parseString(output.replace(" ", ""))
+
+ expected = minidom.parseString("""
+ <metadata xmlns="http://docs.openstack.org/compute/api/v1.1">
+ <meta key="three">
+ None
+ </meta>
+ </metadata>
+ """.replace(" ", ""))
+
+ self.assertEqual(expected.toxml(), actual.toxml())
+
def test_show(self):
req = webob.Request.blank('/v1.1/images/1/meta/key1')
req.environ['api.version'] = '1.1'