diff options
| -rw-r--r-- | nova/tests/test_cinder.py | 18 | ||||
| -rw-r--r-- | nova/volume/cinder.py | 4 |
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 |
