diff options
| author | Joe Gordon <jogo@cloudscaling.com> | 2013-03-07 00:41:48 +0000 |
|---|---|---|
| committer | Joe Gordon <jogo@cloudscaling.com> | 2013-03-12 13:33:44 -0700 |
| commit | fc561270d8600ae4ce914acf90eb560601732ca8 (patch) | |
| tree | 269b05a20af6e0efa8a89e9671e826e9c2ada37b | |
| parent | f0fc1240090938ae9d945bb91bfeda4e5d42ac9c (diff) | |
Delete instance metadata when delete VM
* like everything else instance metadata is just soft deleted.
* This doesn't soft delete instance_system_metadata (bug 1153827)
Fix bug 1092408
Change-Id: Iebc2c7e055a110e5067829569127a272a1a92a87
| -rw-r--r-- | nova/db/sqlalchemy/api.py | 4 | ||||
| -rw-r--r-- | nova/tests/test_db_api.py | 15 |
2 files changed, 18 insertions, 1 deletions
diff --git a/nova/db/sqlalchemy/api.py b/nova/db/sqlalchemy/api.py index c98cb716e..88c2d9915 100644 --- a/nova/db/sqlalchemy/api.py +++ b/nova/db/sqlalchemy/api.py @@ -1475,10 +1475,12 @@ def instance_destroy(context, instance_uuid, constraint=None): session.query(models.SecurityGroupInstanceAssociation).\ filter_by(instance_uuid=instance_uuid).\ soft_delete() - session.query(models.InstanceInfoCache).\ filter_by(instance_uuid=instance_uuid).\ soft_delete() + session.query(models.InstanceMetadata).\ + filter_by(instance_uuid=instance_uuid).\ + soft_delete() return instance_ref diff --git a/nova/tests/test_db_api.py b/nova/tests/test_db_api.py index 1653e942c..8c047f05c 100644 --- a/nova/tests/test_db_api.py +++ b/nova/tests/test_db_api.py @@ -327,6 +327,21 @@ class DbApiTestCase(DbTestCase): system_meta = db.instance_system_metadata_get(ctxt, instance['uuid']) self.assertEqual('baz', system_meta['original_image_ref']) + def test_delete_instance_metadata_on_instance_destroy(self): + ctxt = context.get_admin_context() + + # Create an instance with some metadata + values = {'metadata': {'host': 'foo', 'key1': 'meow'}, + 'system_metadata': {'original_image_ref': 'blah'}} + instance = db.instance_create(ctxt, values) + instance_meta = db.instance_metadata_get(ctxt, instance['uuid']) + self.assertEqual('foo', instance_meta['host']) + self.assertEqual('meow', instance_meta['key1']) + db.instance_destroy(ctxt, instance['uuid']) + instance_meta = db.instance_metadata_get(ctxt, instance['uuid']) + # Make sure instance metadata is deleted as well + self.assertEqual({}, instance_meta) + def test_instance_update_unique_name(self): otherprojectcontext = context.RequestContext(self.user_id, "%s2" % self.project_id) |
