summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBrian Waldon <brian.waldon@rackspace.com>2011-06-23 10:53:09 -0400
committerBrian Waldon <brian.waldon@rackspace.com>2011-06-23 10:53:09 -0400
commit9044733fb0aff698875080caf1ffd9e44470ec0e (patch)
tree7a04374d21bbe5614b41c957e9e858740b6c70f2
parent6d6720e9b7e52461238ece684c9acc7183673bb8 (diff)
adding metadata container to /images/detail and /images/<id> calls
-rw-r--r--nova/api/openstack/views/images.py3
-rw-r--r--nova/tests/api/openstack/test_images.py45
2 files changed, 38 insertions, 10 deletions
diff --git a/nova/api/openstack/views/images.py b/nova/api/openstack/views/images.py
index 2773c9c13..e7472b5cd 100644
--- a/nova/api/openstack/views/images.py
+++ b/nova/api/openstack/views/images.py
@@ -109,6 +109,9 @@ class ViewBuilderV11(ViewBuilder):
image = ViewBuilder.build(self, image_obj, detail)
href = self.generate_href(image_obj["id"])
+ if detail:
+ image["metadata"] = image_obj.get("properties", {})
+
image["links"] = [{
"rel": "self",
"href": href,
diff --git a/nova/tests/api/openstack/test_images.py b/nova/tests/api/openstack/test_images.py
index e4204809f..6ec0f8712 100644
--- a/nova/tests/api/openstack/test_images.py
+++ b/nova/tests/api/openstack/test_images.py
@@ -393,20 +393,25 @@ class ImageControllerWithGlanceServiceTest(test.TestCase):
self.assertEqual(expected_image, actual_image)
def test_get_image_v1_1(self):
- request = webob.Request.blank('/v1.1/images/123')
+ request = webob.Request.blank('/v1.1/images/124')
response = request.get_response(fakes.wsgi_app())
actual_image = json.loads(response.body)
- href = "http://localhost/v1.1/images/123"
+ href = "http://localhost/v1.1/images/124"
expected_image = {
"image": {
- "id": 123,
- "name": "public image",
+ "id": 124,
+ "name": "queued backup",
+ "serverRef": "http://localhost/v1.1/servers/42",
"updated": self.NOW_API_FORMAT,
"created": self.NOW_API_FORMAT,
- "status": "ACTIVE",
+ "status": "QUEUED",
+ "metadata": {
+ "instance_id": "42",
+ "user_id": "1",
+ },
"links": [{
"rel": "self",
"href": href,
@@ -465,20 +470,21 @@ class ImageControllerWithGlanceServiceTest(test.TestCase):
self.assertEqual(expected_image.toxml(), actual_image.toxml())
def test_get_image_v1_1_xml(self):
- request = webob.Request.blank('/v1.1/images/123')
+ request = webob.Request.blank('/v1.1/images/124')
request.accept = "application/xml"
response = request.get_response(fakes.wsgi_app())
actual_image = minidom.parseString(response.body.replace(" ", ""))
- expected_href = "http://localhost/v1.1/images/123"
+ expected_href = "http://localhost/v1.1/images/124"
expected_now = self.NOW_API_FORMAT
expected_image = minidom.parseString("""
- <image id="123"
- name="public image"
+ <image id="124"
+ name="queued backup"
+ serverRef="http://localhost/v1.1/servers/42"
updated="%(expected_now)s"
created="%(expected_now)s"
- status="ACTIVE"
+ status="QUEUED"
xmlns="http://docs.openstack.org/compute/api/v1.1">
<links>
<link href="%(expected_href)s" rel="self"/>
@@ -487,6 +493,14 @@ class ImageControllerWithGlanceServiceTest(test.TestCase):
<link href="%(expected_href)s" rel="bookmark"
type="application/xml" />
</links>
+ <metadata>
+ <instance_id>
+ 42
+ </instance_id>
+ <user_id>
+ 1
+ </user_id>
+ </metadata>
</image>
""".replace(" ", "") % (locals()))
@@ -668,6 +682,7 @@ class ImageControllerWithGlanceServiceTest(test.TestCase):
expected = [{
'id': 123,
'name': 'public image',
+ 'metadata': {},
'updated': self.NOW_API_FORMAT,
'created': self.NOW_API_FORMAT,
'status': 'ACTIVE',
@@ -689,6 +704,7 @@ class ImageControllerWithGlanceServiceTest(test.TestCase):
{
'id': 124,
'name': 'queued backup',
+ 'metadata': {u'instance_id': u'42', u'user_id': u'1'},
'serverRef': "http://localhost/v1.1/servers/42",
'updated': self.NOW_API_FORMAT,
'created': self.NOW_API_FORMAT,
@@ -711,6 +727,7 @@ class ImageControllerWithGlanceServiceTest(test.TestCase):
{
'id': 125,
'name': 'saving backup',
+ 'metadata': {u'instance_id': u'42', u'user_id': u'1'},
'serverRef': "http://localhost/v1.1/servers/42",
'updated': self.NOW_API_FORMAT,
'created': self.NOW_API_FORMAT,
@@ -734,6 +751,7 @@ class ImageControllerWithGlanceServiceTest(test.TestCase):
{
'id': 126,
'name': 'active backup',
+ 'metadata': {u'instance_id': u'42', u'user_id': u'1'},
'serverRef': "http://localhost/v1.1/servers/42",
'updated': self.NOW_API_FORMAT,
'created': self.NOW_API_FORMAT,
@@ -756,6 +774,7 @@ class ImageControllerWithGlanceServiceTest(test.TestCase):
{
'id': 127,
'name': 'killed backup',
+ 'metadata': {u'instance_id': u'42', u'user_id': u'1'},
'serverRef': "http://localhost/v1.1/servers/42",
'updated': self.NOW_API_FORMAT,
'created': self.NOW_API_FORMAT,
@@ -778,6 +797,7 @@ class ImageControllerWithGlanceServiceTest(test.TestCase):
{
'id': 129,
'name': None,
+ 'metadata': {},
'updated': self.NOW_API_FORMAT,
'created': self.NOW_API_FORMAT,
'status': 'ACTIVE',
@@ -1030,6 +1050,11 @@ class ImageControllerWithGlanceServiceTest(test.TestCase):
<link href="%(expected_href)s" rel="bookmark"
type="application/xml" />
</links>
+ <metadata>
+ <instance_id>
+ 123
+ </instance_id>
+ </metadata>
</image>
""".replace(" ", "") % (locals()))