Merge "Soft delete virtual_interfaces when instance is destroyed"

This commit is contained in:
Zuul 2019-04-30 03:55:10 +00:00 committed by Gerrit Code Review
commit ce5ef763b5
2 changed files with 17 additions and 0 deletions

View File

@ -1788,6 +1788,8 @@ def instance_destroy(context, instance_uuid, constraint=None):
model_query(context, models.Migration).\
filter_by(instance_uuid=instance_uuid).\
soft_delete()
model_query(context, models.VirtualInterface).filter_by(
instance_uuid=instance_uuid).soft_delete()
model_query(context, models.InstanceIdMapping).filter_by(
uuid=instance_uuid).soft_delete()
# NOTE(snikitin): We can't use model_query here, because there is no

View File

@ -2574,6 +2574,21 @@ class InstanceTestCase(test.TestCase, ModelsObjectComparatorMixin):
self.assertTrue(instance.deleted)
self.assertEqual(0, len(migrations))
def test_delete_virtual_interfaces_on_instance_destroy(self):
# Create the instance.
ctxt = context.get_admin_context()
uuid = uuidsentinel.uuid1
db.instance_create(ctxt, {'uuid': uuid})
# Create the VirtualInterface.
db.virtual_interface_create(ctxt, {'instance_uuid': uuid})
# Make sure the vif is tied to the instance.
vifs = db.virtual_interface_get_by_instance(ctxt, uuid)
self.assertEqual(1, len(vifs))
# Destroy the instance and verify the vif is gone as well.
db.instance_destroy(ctxt, uuid)
self.assertEqual(
0, len(db.virtual_interface_get_by_instance(ctxt, uuid)))
def test_instance_update_and_get_original(self):
instance = self.create_instance_with_args(vm_state='building')
(old_ref, new_ref) = db.instance_update_and_get_original(self.ctxt,