diff options
| author | Jenkins <jenkins@review.openstack.org> | 2013-05-29 16:09:11 +0000 |
|---|---|---|
| committer | Gerrit Code Review <review@openstack.org> | 2013-05-29 16:09:11 +0000 |
| commit | a5265cfbe6d12d6edb12167cd55f527cd679d042 (patch) | |
| tree | a486c5320727b29a4a95e4cd99c31436e99f0f0d | |
| parent | ed76fc8306fb91e8465aa171fa8a26cb70a59803 (diff) | |
| parent | 4885aa28706a1858f4fc51a0d2c661eec05139c0 (diff) | |
| download | nova-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.py | 3 | ||||
| -rw-r--r-- | nova/tests/compute/test_compute_utils.py | 28 | ||||
| -rw-r--r-- | nova/tests/test_db_api.py | 7 |
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, |
