'cgsnapshot_id': None, }
self.assertEqual(expected_result, result)
+ @mock.patch('cinder.volume.volume_types.is_encrypted')
+ @mock.patch('cinder.volume.volume_types.get_volume_type_qos_specs')
+ @mock.patch('cinder.volume.flows.api.create_volume.'
+ 'ExtractVolumeRequestTask.'
+ '_get_volume_type_id')
+ def test_extract_volume_request_from_image_with_qos_specs(
+ self,
+ fake_get_type_id,
+ fake_get_qos,
+ fake_is_encrypted):
+
+ fake_image_service = fake_image.FakeImageService()
+ image_id = 5
+ image_meta = {}
+ image_meta['id'] = image_id
+ image_meta['status'] = 'active'
+ image_meta['size'] = 1
+ fake_image_service.create(self.ctxt, image_meta)
+ fake_key_manager = mock_key_mgr.MockKeyManager()
+ volume_type = 'type1'
+
+ task = create_volume.ExtractVolumeRequestTask(
+ fake_image_service,
+ {'nova'})
+
+ fake_is_encrypted.return_value = False
+ fake_get_type_id.return_value = 1
+ fake_qos_spec = {'specs': {'fake_key': 'fake'}}
+ fake_get_qos.return_value = {'qos_specs': fake_qos_spec}
+ result = task.execute(self.ctxt,
+ size=1,
+ snapshot=None,
+ image_id=image_id,
+ source_volume=None,
+ availability_zone='nova',
+ volume_type=volume_type,
+ metadata=None,
+ key_manager=fake_key_manager,
+ source_replica=None,
+ consistencygroup=None,
+ cgsnapshot=None)
+ expected_result = {'size': 1,
+ 'snapshot_id': None,
+ 'source_volid': None,
+ 'availability_zone': 'nova',
+ 'volume_type': volume_type,
+ 'volume_type_id': 1,
+ 'encryption_key_id': None,
+ 'qos_specs': {'fake_key': 'fake'},
+ 'source_replicaid': None,
+ 'consistencygroup_id': None,
+ 'cgsnapshot_id': None, }
+ self.assertEqual(expected_result, result)
+
class CreateVolumeFlowManagerTestCase(test.TestCase):
default_provides = set(['availability_zone', 'size', 'snapshot_id',
'source_volid', 'volume_type', 'volume_type_id',
'encryption_key_id', 'source_replicaid',
- 'consistencygroup_id', 'cgsnapshot_id'])
+ 'consistencygroup_id', 'cgsnapshot_id',
+ 'qos_specs'])
def __init__(self, image_service, availability_zones, **kwargs):
super(ExtractVolumeRequestTask, self).__init__(addons=[ACTION],
specs = {}
if volume_type_id:
qos_specs = volume_types.get_volume_type_qos_specs(volume_type_id)
- specs = qos_specs['qos_specs']
+ if qos_specs['qos_specs']:
+ specs = qos_specs['qos_specs'].get('specs', {})
if not specs:
# to make sure we don't pass empty dict
specs = None
'name', 'reservations', 'size', 'snapshot_id',
'source_volid', 'volume_type_id', 'encryption_key_id',
'source_replicaid', 'consistencygroup_id',
- 'cgsnapshot_id', 'multiattach']
+ 'cgsnapshot_id', 'multiattach', 'qos_specs']
super(EntryCreateTask, self).__init__(addons=[ACTION],
requires=requires)
self.db = db