diff options
author | Brian Waldon <brian.waldon@rackspace.com> | 2011-12-07 11:59:14 -0500 |
---|---|---|
committer | Brian Waldon <brian.waldon@rackspace.com> | 2011-12-07 14:54:34 -0500 |
commit | c3b7cce8101548428b64abb23ab88482bc79c36e (patch) | |
tree | 3e5d77157b1e092978ef61e5fcb4fc1eb4288f11 | |
parent | 8a8dd22aea07dcbbfa80ea5519dcb7bfb92b0217 (diff) | |
download | nova-c3b7cce8101548428b64abb23ab88482bc79c36e.tar.gz nova-c3b7cce8101548428b64abb23ab88482bc79c36e.tar.xz nova-c3b7cce8101548428b64abb23ab88482bc79c36e.zip |
Clean up snapshot metadata
- Removed image_state from compute api snapshot (only needed by ec2/s3)
- Only set backup_type when image_type is 'backup'
- Add testing to verify snapshots/backups get the correct metadata
Change-Id: Ib5461f9aa790d7ed5629c591bbe1510443dbc2aa
-rw-r--r-- | nova/compute/api.py | 14 | ||||
-rw-r--r-- | nova/tests/test_compute.py | 23 |
2 files changed, 30 insertions, 7 deletions
diff --git a/nova/compute/api.py b/nova/compute/api.py index d3b329685..f65b5cead 100644 --- a/nova/compute/api.py +++ b/nova/compute/api.py @@ -1131,11 +1131,15 @@ class API(base.Base): if task_state == task_states.IMAGE_SNAPSHOT: raise exception.InstanceSnapshotting(instance_uuid=instance_uuid) - properties = {'instance_uuid': instance_uuid, - 'user_id': str(context.user_id), - 'image_state': 'creating', - 'image_type': image_type, - 'backup_type': backup_type} + properties = { + 'instance_uuid': instance_uuid, + 'user_id': str(context.user_id), + 'image_type': image_type, + } + + if image_type == 'backup': + properties['backup_type'] = backup_type + properties.update(extra_properties or {}) sent_meta = {'name': name, 'is_public': False, 'status': 'creating', 'properties': properties} diff --git a/nova/tests/test_compute.py b/nova/tests/test_compute.py index 6c4540094..6ad3565ef 100644 --- a/nova/tests/test_compute.py +++ b/nova/tests/test_compute.py @@ -1504,13 +1504,32 @@ class ComputeAPITestCase(BaseTestCase): def test_snapshot(self): """Can't backup an instance which is already being backed up.""" instance = self._create_fake_instance() - self.compute_api.snapshot(self.context, instance, None, None) + image = self.compute_api.snapshot(self.context, instance, 'snap1', + {'extra_param': 'value1'}) + + self.assertEqual(image['name'], 'snap1') + properties = image['properties'] + self.assertTrue('backup_type' not in properties) + self.assertEqual(properties['image_type'], 'snapshot') + self.assertEqual(properties['instance_uuid'], instance['uuid']) + self.assertEqual(properties['extra_param'], 'value1') + db.instance_destroy(self.context, instance['id']) def test_backup(self): """Can't backup an instance which is already being backed up.""" instance = self._create_fake_instance() - self.compute_api.backup(self.context, instance, None, None, None) + image = self.compute_api.backup(self.context, instance, + 'backup1', 'DAILY', None, + {'extra_param': 'value1'}) + + self.assertEqual(image['name'], 'backup1') + properties = image['properties'] + self.assertEqual(properties['backup_type'], 'DAILY') + self.assertEqual(properties['image_type'], 'backup') + self.assertEqual(properties['instance_uuid'], instance['uuid']) + self.assertEqual(properties['extra_param'], 'value1') + db.instance_destroy(self.context, instance['id']) def test_backup_conflict(self): |