diff options
-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): |