Merge "Reject unsupported image to local BDM"
This commit is contained in:
commit
9debd59494
|
@ -180,6 +180,7 @@ class BlockDeviceDict(dict):
|
|||
|
||||
source_type = api_dict.get('source_type')
|
||||
device_uuid = api_dict.get('uuid')
|
||||
destination_type = api_dict.get('destination_type')
|
||||
|
||||
if source_type not in ('volume', 'image', 'snapshot', 'blank'):
|
||||
raise exception.InvalidBDMFormat(
|
||||
|
@ -192,6 +193,9 @@ class BlockDeviceDict(dict):
|
|||
raise exception.InvalidBDMFormat(
|
||||
details=_("Missing device UUID."))
|
||||
api_dict[source_type + '_id'] = device_uuid
|
||||
if source_type == 'image' and destination_type == 'local':
|
||||
raise exception.InvalidBDMFormat(
|
||||
details=_("Mapping image to local is not supported."))
|
||||
|
||||
api_dict.pop('uuid', None)
|
||||
return cls(api_dict)
|
||||
|
|
|
@ -534,6 +534,14 @@ class TestBlockDeviceDict(test.NoDBTestCase):
|
|||
self.assertRaises(exception.InvalidBDMFormat,
|
||||
block_device.BlockDeviceDict.from_api, api_dict)
|
||||
|
||||
def test_from_api_invalid_source_to_local_mapping(self):
|
||||
api_dict = {'id': 1,
|
||||
'source_type': 'image',
|
||||
'destination_type': 'local',
|
||||
'uuid': 'fake-volume-id-1'}
|
||||
self.assertRaises(exception.InvalidBDMFormat,
|
||||
block_device.BlockDeviceDict.from_api, api_dict)
|
||||
|
||||
def test_legacy(self):
|
||||
for legacy, new in zip(self.legacy_mapping, self.new_mapping):
|
||||
self.assertThat(
|
||||
|
|
Loading…
Reference in New Issue