Merge "DBMS: Fix volume deletion with MySQL"
This commit is contained in:
commit
db20a5a148
@ -315,6 +315,10 @@ class DBPersistence(persistence_base.PersistenceDriverBase):
|
|||||||
volume.volume_type.qos_specs_id)
|
volume.volume_type.qos_specs_id)
|
||||||
else:
|
else:
|
||||||
LOG.debug('hard deleting volume %s', volume.id)
|
LOG.debug('hard deleting volume %s', volume.id)
|
||||||
|
for model in (models.VolumeMetadata, models.VolumeAdminMetadata):
|
||||||
|
query = sqla_api.model_query(objects.CONTEXT, model)
|
||||||
|
query.filter_by(volume_id=volume.id).delete()
|
||||||
|
|
||||||
query = sqla_api.model_query(objects.CONTEXT, models.Volume)
|
query = sqla_api.model_query(objects.CONTEXT, models.Volume)
|
||||||
query.filter_by(id=volume.id).delete()
|
query.filter_by(id=volume.id).delete()
|
||||||
if delete_type:
|
if delete_type:
|
||||||
|
@ -120,6 +120,21 @@ class TestDBPersistence(base.BasePersistenceTest):
|
|||||||
cinder_ovos.VolumeType)
|
cinder_ovos.VolumeType)
|
||||||
self.assertEqual('__DEFAULT__', self.persistence.DEFAULT_TYPE.name)
|
self.assertEqual('__DEFAULT__', self.persistence.DEFAULT_TYPE.name)
|
||||||
|
|
||||||
|
def test_delete_volume_with_metadata(self):
|
||||||
|
vols = self.create_volumes([{'size': i, 'name': 'disk%s' % i,
|
||||||
|
'metadata': {'k': 'v', 'k2': 'v2'},
|
||||||
|
'admin_metadata': {'k': '1'}}
|
||||||
|
for i in range(1, 3)])
|
||||||
|
self.persistence.delete_volume(vols[0])
|
||||||
|
res = self.persistence.get_volumes()
|
||||||
|
self.assertListEqualObj([vols[1]], res)
|
||||||
|
|
||||||
|
for model in (dbms.models.VolumeMetadata,
|
||||||
|
dbms.models.VolumeAdminMetadata):
|
||||||
|
query = dbms.sqla_api.model_query(self.context, model)
|
||||||
|
res = query.filter_by(volume_id=vols[0].id).all()
|
||||||
|
self.assertEqual([], res)
|
||||||
|
|
||||||
|
|
||||||
class TestMemoryDBPersistence(TestDBPersistence):
|
class TestMemoryDBPersistence(TestDBPersistence):
|
||||||
PERSISTENCE_CFG = {'storage': 'memory_db'}
|
PERSISTENCE_CFG = {'storage': 'memory_db'}
|
||||||
|
@ -0,0 +1,5 @@
|
|||||||
|
---
|
||||||
|
fixes:
|
||||||
|
- |
|
||||||
|
Bug #1868148: Volume deletion no longer fails due to DB constraints when
|
||||||
|
using the DBMS metadata persistence plugin with a MySQL backend.
|
Loading…
Reference in New Issue
Block a user