summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--nova/tests/test_cinder.py18
-rw-r--r--nova/volume/cinder.py4
2 files changed, 22 insertions, 0 deletions
diff --git a/nova/tests/test_cinder.py b/nova/tests/test_cinder.py
index 11d29a3ff..dfdd4f3d7 100644
--- a/nova/tests/test_cinder.py
+++ b/nova/tests/test_cinder.py
@@ -42,6 +42,11 @@ def _stub_volume(**kwargs):
volume.update(kwargs)
return volume
+_image_metadata = {
+ 'kernel_id': 'fake',
+ 'ramdisk_id': 'fake'
+}
+
class FakeHTTPClient(cinder.cinder_client.client.HTTPClient):
@@ -82,6 +87,13 @@ class FakeHTTPClient(cinder.cinder_client.client.HTTPClient):
def get_volumes_nonexisting(self, **kw):
raise cinder_exception.NotFound(code=404, message='Resource not found')
+ def get_volumes_5678(self, **kw):
+ """Volume with image metadata"""
+ volume = {'volume': _stub_volume(id='1234',
+ volume_image_metadata=_image_metadata)
+ }
+ return (200, volume)
+
class FakeCinderClient(cinder.cinder_client.Client):
@@ -155,3 +167,9 @@ class CinderTestCase(test.TestCase):
def test_get_non_existing_volume(self):
self.assertRaises(exception.VolumeNotFound, self.api.get, self.context,
'nonexisting')
+
+ def test_volume_with_image_metadata(self):
+ volume = self.api.get(self.context, '5678')
+ self.assert_called('GET', '/volumes/5678')
+ self.assertTrue('volume_image_metadata' in volume)
+ self.assertEqual(volume['volume_image_metadata'], _image_metadata)
diff --git a/nova/volume/cinder.py b/nova/volume/cinder.py
index 1b8305505..04c151d1e 100644
--- a/nova/volume/cinder.py
+++ b/nova/volume/cinder.py
@@ -20,6 +20,7 @@
Handles all requests relating to volumes + cinder.
"""
+from copy import deepcopy
import sys
from cinderclient import exceptions as cinder_exception
@@ -117,6 +118,9 @@ def _untranslate_volume_summary_view(context, vol):
item['value'] = value
d['volume_metadata'].append(item)
+ if hasattr(vol, 'volume_image_metadata'):
+ d['volume_image_metadata'] = deepcopy(vol.volume_image_metadata)
+
return d