summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMike Scherbakov <mihgen@gmail.com>2011-05-15 15:11:54 +0400
committerMike Scherbakov <mihgen@gmail.com>2011-05-15 15:11:54 +0400
commit818c2424a0547882fe6bdfe6613ee66a248d91db (patch)
treeea6bf573456c4a3b617284c0e7bdc1c47840d17c
parentf889f6c8a430d6411a81270a68025a27781b09a2 (diff)
downloadnova-818c2424a0547882fe6bdfe6613ee66a248d91db.tar.gz
nova-818c2424a0547882fe6bdfe6613ee66a248d91db.tar.xz
nova-818c2424a0547882fe6bdfe6613ee66a248d91db.zip
Define image state during snapshotting.
Name snapshot to the name provided, not generate.
-rw-r--r--nova/compute/api.py5
-rw-r--r--nova/tests/test_virt.py10
-rw-r--r--nova/virt/libvirt_conn.py4
3 files changed, 14 insertions, 5 deletions
diff --git a/nova/compute/api.py b/nova/compute/api.py
index 63884be97..971c0732f 100644
--- a/nova/compute/api.py
+++ b/nova/compute/api.py
@@ -500,9 +500,10 @@ class API(base.Base):
"""
properties = {'instance_id': str(instance_id),
- 'user_id': str(context.user_id)}
+ 'user_id': str(context.user_id),
+ 'image_state': 'creating'}
sent_meta = {'name': name, 'is_public': False,
- 'properties': properties}
+ 'status': 'creating', 'properties': properties}
recv_meta = self.image_service.create(context, sent_meta)
params = {'image_id': recv_meta['id']}
self._cast_compute_message('snapshot_instance', context, instance_id,
diff --git a/nova/tests/test_virt.py b/nova/tests/test_virt.py
index eb238e871..c4fcc21cc 100644
--- a/nova/tests/test_virt.py
+++ b/nova/tests/test_virt.py
@@ -320,8 +320,9 @@ class LibvirtConnTestCase(test.TestCase):
instance_ref = db.instance_create(self.context, self.test_instance)
properties = {'instance_id': instance_ref['id'],
'user_id': str(self.context.user_id)}
- sent_meta = {'name': 'test-snap', 'is_public': False,
- 'properties': properties}
+ snapshot_name = 'test-snap'
+ sent_meta = {'name': snapshot_name, 'is_public': False,
+ 'status': 'creating', 'properties': properties}
# Create new image. It will be updated in snapshot method
# To work with it from snapshot, the single image_service is needed
recv_meta = image_service.create(context, sent_meta)
@@ -336,6 +337,11 @@ class LibvirtConnTestCase(test.TestCase):
conn = libvirt_conn.LibvirtConnection(False)
conn.snapshot(instance_ref, recv_meta['id'])
+ snapshot = image_service.show(context, recv_meta['id'])
+ self.assertEquals(snapshot['properties']['image_state'], 'available')
+ self.assertEquals(snapshot['status'], 'active')
+ self.assertEquals(snapshot['name'], snapshot_name)
+
def test_multi_nic(self):
instance_data = dict(self.test_instance)
network_info = _create_network_info(2)
diff --git a/nova/virt/libvirt_conn.py b/nova/virt/libvirt_conn.py
index 71cedae54..92d580314 100644
--- a/nova/virt/libvirt_conn.py
+++ b/nova/virt/libvirt_conn.py
@@ -451,11 +451,13 @@ class LibvirtConnection(driver.ComputeDriver):
elevated = context.get_admin_context()
base = image_service.show(elevated, instance['image_id'])
+ snapshot = image_service.show(elevated, image_id)
metadata = {'disk_format': base['disk_format'],
'container_format': base['container_format'],
'is_public': False,
- 'name': '%s.%s' % (base['name'], image_id),
+ 'status': 'active',
+ 'name': snapshot['name'],
'properties': {'architecture':
base['properties']['architecture'],
'kernel_id': instance['kernel_id'],