diff --git a/cinder/tests/unit/volume/drivers/test_rbd.py b/cinder/tests/unit/volume/drivers/test_rbd.py index f60bc30ef77..8486e9342f0 100644 --- a/cinder/tests/unit/volume/drivers/test_rbd.py +++ b/cinder/tests/unit/volume/drivers/test_rbd.py @@ -1841,6 +1841,24 @@ class RBDTestCase(test.TestCase): self.assertEqual({'_name_id': None, 'provider_location': None}, model_update) + @common_mocks + def test_update_migrated_volume_in_use(self): + client = self.mock_client.return_value + client.__enter__.return_value = client + + with mock.patch.object(self.driver.rbd.RBD(), 'rename') as mock_rename: + context = {} + mock_rename.return_value = 0 + model_update = self.driver.update_migrated_volume(context, + self.volume_a, + self.volume_b, + 'in-use') + mock_rename.assert_not_called() + self.assertEqual({'_name_id': self.volume_b.id, + 'provider_location': + self.volume_b['provider_location']}, + model_update) + @common_mocks def test_update_migrated_volume_image_exists(self): client = self.mock_client.return_value diff --git a/cinder/volume/drivers/rbd.py b/cinder/volume/drivers/rbd.py index 4174ca1ac8e..aee69126c11 100644 --- a/cinder/volume/drivers/rbd.py +++ b/cinder/volume/drivers/rbd.py @@ -1764,6 +1764,13 @@ class RBDDriver(driver.CloneableImageVD, driver.MigrateVD, name_id = None provider_location = None + if original_volume_status == 'in-use': + # The back-end will not be renamed. + name_id = new_volume['_name_id'] or new_volume['id'] + provider_location = new_volume['provider_location'] + return {'_name_id': name_id, + 'provider_location': provider_location} + existing_name = CONF.volume_name_template % new_volume.id wanted_name = CONF.volume_name_template % volume.id with RADOSClient(self) as client: @@ -1779,7 +1786,8 @@ class RBDDriver(driver.CloneableImageVD, driver.MigrateVD, # one from the new volume as well. name_id = new_volume._name_id or new_volume.id provider_location = new_volume['provider_location'] - return {'_name_id': name_id, 'provider_location': provider_location} + return {'_name_id': name_id, + 'provider_location': provider_location} def migrate_volume(self, context, volume, host):