Merge "Do not rename rbd based volume after migration" into stable/train

This commit is contained in:
Zuul 2020-04-23 04:49:13 +00:00 committed by Gerrit Code Review
commit dc8e9ce10f
2 changed files with 27 additions and 1 deletions

View File

@ -1844,6 +1844,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

View File

@ -1763,6 +1763,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:
@ -1778,7 +1785,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):