diff --git a/cinder/tests/unit/volume/test_volume_retype.py b/cinder/tests/unit/volume/test_volume_retype.py index 195f2a860f8..d73c54c4692 100644 --- a/cinder/tests/unit/volume/test_volume_retype.py +++ b/cinder/tests/unit/volume/test_volume_retype.py @@ -146,3 +146,22 @@ class VolumeRetypeTestCase(base.BaseVolumeTestCase): mock_authorize.assert_has_calls( [mock.call(vol_action_policies.RETYPE_POLICY, target_obj=mock.ANY) ]) + + def test_retype_driver_not_initialized(self): + volume = tests_utils.create_volume( + self.context, + host=CONF.host, + status='available', + volume_type_id=self.default_vol_type.id) + + host_obj = {'host': CONF.host, 'capabilities': {}} + + self.volume.driver._initialized = False + self.assertRaises(exception.DriverNotInitialized, + self.volume.retype, + self.context, volume, + self.multiattach_type.id, host_obj, + migration_policy='on-demand') + + volume.refresh() + self.assertEqual('available', volume.status) diff --git a/cinder/volume/manager.py b/cinder/volume/manager.py index 5e4ba4f087a..f8cd6d693d5 100644 --- a/cinder/volume/manager.py +++ b/cinder/volume/manager.py @@ -2701,7 +2701,9 @@ class VolumeManager(manager.CleanableManager, if new_reservations: QUOTAS.rollback(context, new_reservations) - status_update = {'status': volume.previous_status} + previous_status = ( + volume.previous_status or volume.status) + status_update = {'status': previous_status} if context.project_id != volume.project_id: project_id = volume.project_id else: