Delete volume transfer in volume_destroy function
Doing volume force delete operation on volume-A will change volume-A's
status to 'deleted', so all related data about volume-A should be deleted.
Now current version's volume_destroy function doesn't delete related data
of volume transfer. If there is volume transfer about volume-A, first do
force delete operation on volume A, and thus the volume-A's transfer data
would be residual. So remove the related data of volume transfer in
volume_destroy function.
Change-Id: Id80a6e0cc061fccb02af60706244be043abdd72d
Closes-Bug: #1270785
(cherry picked from commit 19d8040d61
)
This commit is contained in:
parent
240c81d00a
commit
42e28055aa
|
@ -1147,6 +1147,11 @@ def volume_destroy(context, volume_id):
|
|||
update({'deleted': True,
|
||||
'deleted_at': now,
|
||||
'updated_at': literal_column('updated_at')})
|
||||
model_query(context, models.Transfer, session=session).\
|
||||
filter_by(volume_id=volume_id).\
|
||||
update({'deleted': True,
|
||||
'deleted_at': now,
|
||||
'updated_at': literal_column('updated_at')})
|
||||
|
||||
|
||||
@require_admin_context
|
||||
|
|
|
@ -119,3 +119,20 @@ class VolumeTransferTestCase(test.TestCase):
|
|||
|
||||
ts = tx_api.get_all(nctxt)
|
||||
self.assertEqual(len(ts), 0, 'Unexpected transfers listed.')
|
||||
|
||||
def test_delete_transfer_with_deleted_volume(self):
|
||||
#create a volume
|
||||
volume = utils.create_volume(self.ctxt, id='1',
|
||||
updated_at=self.updated_at)
|
||||
#create a transfer
|
||||
tx_api = transfer_api.API()
|
||||
transfer = tx_api.create(self.ctxt, volume['id'], 'Description')
|
||||
t = tx_api.get(self.ctxt, transfer['id'])
|
||||
self.assertEqual(t['id'], transfer['id'], 'Unexpected transfer id')
|
||||
#force delete volume
|
||||
db.volume_destroy(context.get_admin_context(), volume['id'])
|
||||
#Make sure transfer has been deleted.
|
||||
self.assertRaises(exception.TransferNotFound,
|
||||
tx_api.get,
|
||||
self.ctxt,
|
||||
transfer['id'])
|
||||
|
|
Loading…
Reference in New Issue