summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJenkins <jenkins@review.openstack.org>2013-05-29 16:09:11 +0000
committerGerrit Code Review <review@openstack.org>2013-05-29 16:09:11 +0000
commita5265cfbe6d12d6edb12167cd55f527cd679d042 (patch)
treea486c5320727b29a4a95e4cd99c31436e99f0f0d
parented76fc8306fb91e8465aa171fa8a26cb70a59803 (diff)
parent4885aa28706a1858f4fc51a0d2c661eec05139c0 (diff)
downloadnova-a5265cfbe6d12d6edb12167cd55f527cd679d042.tar.gz
nova-a5265cfbe6d12d6edb12167cd55f527cd679d042.tar.xz
nova-a5265cfbe6d12d6edb12167cd55f527cd679d042.zip
Merge "Don't delete sys_meta on instance delete"
-rw-r--r--nova/db/sqlalchemy/api.py3
-rw-r--r--nova/tests/compute/test_compute_utils.py28
-rw-r--r--nova/tests/test_db_api.py7
3 files changed, 25 insertions, 13 deletions
diff --git a/nova/db/sqlalchemy/api.py b/nova/db/sqlalchemy/api.py
index fd53ad431..a27e8df08 100644
--- a/nova/db/sqlalchemy/api.py
+++ b/nova/db/sqlalchemy/api.py
@@ -1510,9 +1510,6 @@ def instance_destroy(context, instance_uuid, constraint=None):
session.query(models.InstanceMetadata).\
filter_by(instance_uuid=instance_uuid).\
soft_delete()
- session.query(models.InstanceSystemMetadata).\
- filter_by(instance_uuid=instance_uuid).\
- soft_delete()
return instance_ref
diff --git a/nova/tests/compute/test_compute_utils.py b/nova/tests/compute/test_compute_utils.py
index d2bc41003..4366bf5ac 100644
--- a/nova/tests/compute/test_compute_utils.py
+++ b/nova/tests/compute/test_compute_utils.py
@@ -309,9 +309,8 @@ class UsageInfoTestCase(test.TestCase):
self.assertEquals(payload['image_ref_url'], image_ref_url)
self.compute.terminate_instance(self.context, instance)
- def test_notify_usage_exists_fail_on_deleted_instance(self):
- # notify_usage_exists should not work for a deleted VM. A
- # notification should be done before the instance is deleted in the db.
+ def test_notify_usage_exists_deleted_instance(self):
+ # Ensure 'exists' notification generates appropriate usage data.
instance_id = self._create_instance()
instance = db.instance_get(self.context, instance_id)
# Set some system metadata
@@ -323,8 +322,27 @@ class UsageInfoTestCase(test.TestCase):
self.compute.terminate_instance(self.context, instance)
instance = db.instance_get(self.context.elevated(read_deleted='yes'),
instance_id)
- self.assertRaises(KeyError, compute_utils.notify_usage_exists,
- self.context, instance)
+ compute_utils.notify_usage_exists(self.context, instance)
+ msg = test_notifier.NOTIFICATIONS[-1]
+ self.assertEquals(msg['priority'], 'INFO')
+ self.assertEquals(msg['event_type'], 'compute.instance.exists')
+ payload = msg['payload']
+ self.assertEquals(payload['tenant_id'], self.project_id)
+ self.assertEquals(payload['user_id'], self.user_id)
+ self.assertEquals(payload['instance_id'], instance['uuid'])
+ self.assertEquals(payload['instance_type'], 'm1.tiny')
+ type_id = flavors.get_instance_type_by_name('m1.tiny')['id']
+ self.assertEquals(str(payload['instance_type_id']), str(type_id))
+ for attr in ('display_name', 'created_at', 'launched_at',
+ 'state', 'state_description',
+ 'bandwidth', 'audit_period_beginning',
+ 'audit_period_ending', 'image_meta'):
+ self.assertTrue(attr in payload,
+ msg="Key %s not in payload" % attr)
+ self.assertEquals(payload['image_meta'],
+ {'md_key1': 'val1', 'md_key2': 'val2'})
+ image_ref_url = "%s/images/1" % glance.generate_glance_url()
+ self.assertEquals(payload['image_ref_url'], image_ref_url)
def test_notify_usage_exists_instance_not_found(self):
# Ensure 'exists' notification generates appropriate usage data.
diff --git a/nova/tests/test_db_api.py b/nova/tests/test_db_api.py
index 8ca62a2ed..f54addced 100644
--- a/nova/tests/test_db_api.py
+++ b/nova/tests/test_db_api.py
@@ -459,7 +459,7 @@ 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_and_system_metadata_on_instance_destroy(self):
+ def test_delete_instance_metadata_on_instance_destroy(self):
ctxt = context.get_admin_context()
# Create an instance with some metadata
@@ -471,11 +471,8 @@ class DbApiTestCase(DbTestCase):
self.assertEqual('meow', instance_meta['key1'])
db.instance_destroy(ctxt, instance['uuid'])
instance_meta = db.instance_metadata_get(ctxt, instance['uuid'])
- instance_system_meta = db.instance_system_metadata_get(ctxt,
- instance['uuid'])
- # Make sure instance and system metadata is deleted as well
+ # Make sure instance metadata is deleted as well
self.assertEqual({}, instance_meta)
- self.assertEqual({}, instance_system_meta)
def test_instance_update_unique_name(self):
otherprojectcontext = context.RequestContext(self.user_id,