Fix metadata's soft-delete error when deleting shares

Currently we don't soft-delete metadata when deleting shares,
fix it.

Change-Id: Iad2031dab2fb6556d45fffb1cadee242ea668133
Closes-Bug: #1657033
This commit is contained in:
zhongjun2 2017-01-17 17:14:36 +08:00 committed by TommyLike
parent 8bdf0d476d
commit 0ec71e29b2
3 changed files with 12 additions and 1 deletions

View File

@ -1205,8 +1205,10 @@ def share_instance_delete(context, instance_id, session=None):
instance_ref.soft_delete(session=session, update_status=True)
share = share_get(context, instance_ref['share_id'], session=session)
if len(share.instances) == 0:
share.soft_delete(session=session)
share_access_delete_all_by_share(context, share['id'])
session.query(models.ShareMetadata).filter_by(
share_id=share['id']).soft_delete()
share.soft_delete(session=session)
def _set_instances_share_data(context, instances, session):

View File

@ -194,10 +194,15 @@ class ShareDatabaseAPITestCase(test.TestCase):
def test_share_instance_delete_with_share(self):
share = db_utils.create_share()
self.assertIsNotNone(db_api.share_get(self.ctxt, share['id']))
self.assertIsNotNone(db_api.share_metadata_get(self.ctxt, share['id']))
db_api.share_instance_delete(self.ctxt, share.instance['id'])
self.assertRaises(exception.NotFound, db_api.share_get,
self.ctxt, share['id'])
self.assertRaises(exception.NotFound, db_api.share_metadata_get,
self.ctxt, share['id'])
def test_share_instance_get(self):
share = db_utils.create_share()

View File

@ -0,0 +1,4 @@
---
fixes:
- Fixed the error that share metadata records are not soft-deleted
when deleting a share.