Skip to content

Commit ce5ef76

Browse files
Zuulopenstack-gerrit
authored andcommitted
Merge "Soft delete virtual_interfaces when instance is destroyed"
2 parents 09fd6cc + 1af9de4 commit ce5ef76

File tree

2 files changed

+17
-0
lines changed

2 files changed

+17
-0
lines changed

nova/db/sqlalchemy/api.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1788,6 +1788,8 @@ def instance_destroy(context, instance_uuid, constraint=None):
17881788
model_query(context, models.Migration).\
17891789
filter_by(instance_uuid=instance_uuid).\
17901790
soft_delete()
1791+
model_query(context, models.VirtualInterface).filter_by(
1792+
instance_uuid=instance_uuid).soft_delete()
17911793
model_query(context, models.InstanceIdMapping).filter_by(
17921794
uuid=instance_uuid).soft_delete()
17931795
# NOTE(snikitin): We can't use model_query here, because there is no

nova/tests/unit/db/test_db_api.py

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2574,6 +2574,21 @@ def test_delete_migrations_on_instance_destroy(self):
25742574
self.assertTrue(instance.deleted)
25752575
self.assertEqual(0, len(migrations))
25762576

2577+
def test_delete_virtual_interfaces_on_instance_destroy(self):
2578+
# Create the instance.
2579+
ctxt = context.get_admin_context()
2580+
uuid = uuidsentinel.uuid1
2581+
db.instance_create(ctxt, {'uuid': uuid})
2582+
# Create the VirtualInterface.
2583+
db.virtual_interface_create(ctxt, {'instance_uuid': uuid})
2584+
# Make sure the vif is tied to the instance.
2585+
vifs = db.virtual_interface_get_by_instance(ctxt, uuid)
2586+
self.assertEqual(1, len(vifs))
2587+
# Destroy the instance and verify the vif is gone as well.
2588+
db.instance_destroy(ctxt, uuid)
2589+
self.assertEqual(
2590+
0, len(db.virtual_interface_get_by_instance(ctxt, uuid)))
2591+
25772592
def test_instance_update_and_get_original(self):
25782593
instance = self.create_instance_with_args(vm_state='building')
25792594
(old_ref, new_ref) = db.instance_update_and_get_original(self.ctxt,

0 commit comments

Comments
 (0)