diff options
| author | MotoKen <motokentsai@gmail.com> | 2013-05-01 14:05:58 +0800 |
|---|---|---|
| committer | MotoKen <motokentsai@gmail.com> | 2013-05-01 16:02:53 +0800 |
| commit | f48a2e1a68cca1ef147279b2ddf713635f494bc0 (patch) | |
| tree | 730f41138a3a382dccc192d16b40580e95fc7fa9 | |
| parent | dccbcc84a922d16eb230491e2a4d486fdb19b40f (diff) | |
| download | nova-f48a2e1a68cca1ef147279b2ddf713635f494bc0.tar.gz nova-f48a2e1a68cca1ef147279b2ddf713635f494bc0.tar.xz nova-f48a2e1a68cca1ef147279b2ddf713635f494bc0.zip | |
Fix EC2 instance bdm response
Make the bdm response respect Amazon EC2 spec:
* use ec2 volume id instead of uuid
* use volume attach_status instead of status
References:
http://docs.aws.amazon.com/AWSEC2/latest/APIReference/ApiReference-ItemType-EbsInstanceBlockDeviceMappingResponseType.html
Resolves bug 1165973.
Change-Id: Ib68397b79f63e01e92ed4bebbc245ba5e0a3ad11
| -rw-r--r-- | nova/api/ec2/cloud.py | 4 | ||||
| -rw-r--r-- | nova/tests/api/ec2/test_cinder_cloud.py | 24 | ||||
| -rw-r--r-- | nova/tests/api/ec2/test_cloud.py | 4 | ||||
| -rw-r--r-- | nova/tests/fake_volume.py | 1 |
4 files changed, 17 insertions, 16 deletions
diff --git a/nova/api/ec2/cloud.py b/nova/api/ec2/cloud.py index 4b779e26f..da319bc8b 100644 --- a/nova/api/ec2/cloud.py +++ b/nova/api/ec2/cloud.py @@ -1072,10 +1072,10 @@ class CloudController(object): vol = self.volume_api.get(context, volume_id) LOG.debug(_("vol = %s\n"), vol) # TODO(yamahata): volume attach time - ebs = {'volumeId': volume_id, + ebs = {'volumeId': ec2utils.id_to_ec2_vol_id(volume_id), 'deleteOnTermination': bdm['delete_on_termination'], 'attachTime': vol['attach_time'] or '', - 'status': vol['status'], } + 'status': vol['attach_status'], } res = {'deviceName': bdm['device_name'], 'ebs': ebs, } mapping.append(res) diff --git a/nova/tests/api/ec2/test_cinder_cloud.py b/nova/tests/api/ec2/test_cinder_cloud.py index 605f903cb..4a21f7fad 100644 --- a/nova/tests/api/ec2/test_cinder_cloud.py +++ b/nova/tests/api/ec2/test_cinder_cloud.py @@ -486,34 +486,34 @@ class CinderCloudTestCase(test.TestCase): _expected_block_device_mapping0 = [ {'deviceName': '/dev/sdb1', - 'ebs': {'status': 'in-use', + 'ebs': {'status': 'attached', 'deleteOnTermination': False, - 'volumeId': '2', + 'volumeId': 'vol-00000002', }}, {'deviceName': '/dev/sdb2', - 'ebs': {'status': 'in-use', + 'ebs': {'status': 'attached', 'deleteOnTermination': False, - 'volumeId': '3', + 'volumeId': 'vol-00000003', }}, {'deviceName': '/dev/sdb3', - 'ebs': {'status': 'in-use', + 'ebs': {'status': 'attached', 'deleteOnTermination': True, - 'volumeId': '5', + 'volumeId': 'vol-00000005', }}, {'deviceName': '/dev/sdb4', - 'ebs': {'status': 'in-use', + 'ebs': {'status': 'attached', 'deleteOnTermination': False, - 'volumeId': '7', + 'volumeId': 'vol-00000007', }}, {'deviceName': '/dev/sdb5', - 'ebs': {'status': 'in-use', + 'ebs': {'status': 'attached', 'deleteOnTermination': False, - 'volumeId': '9', + 'volumeId': 'vol-00000009', }}, {'deviceName': '/dev/sdb6', - 'ebs': {'status': 'in-use', + 'ebs': {'status': 'attached', 'deleteOnTermination': False, - 'volumeId': '11', }}] + 'volumeId': 'vol-0000000b', }}] # NOTE(yamahata): swap/ephemeral device case isn't supported yet. _expected_instance_bdm2 = { diff --git a/nova/tests/api/ec2/test_cloud.py b/nova/tests/api/ec2/test_cloud.py index 19a11b3ee..c6ec305c6 100644 --- a/nova/tests/api/ec2/test_cloud.py +++ b/nova/tests/api/ec2/test_cloud.py @@ -2293,9 +2293,9 @@ class CloudTestCase(test.TestCase): 'rootDeviceType': 'ebs', 'blockDeviceMapping': [ {'deviceName': '/dev/sdh', - 'ebs': {'status': 'in-use', + 'ebs': {'status': 'attached', 'deleteOnTermination': True, - 'volumeId': 87654321, + 'volumeId': 'vol-05397fb1', 'attachTime': '13:56:24'}}]} expected_bdm['blockDeviceMapping'].sort() self.assertEqual(bdm, expected_bdm) diff --git a/nova/tests/fake_volume.py b/nova/tests/fake_volume.py index 607f1444d..9d9eb1fb6 100644 --- a/nova/tests/fake_volume.py +++ b/nova/tests/fake_volume.py @@ -166,6 +166,7 @@ class API(object): if volume_id == 87654321: return {'id': volume_id, 'attach_time': '13:56:24', + 'attach_status': 'attached', 'status': 'in-use'} for v in self.volume_list: |
