diff options
| author | Jenkins <jenkins@review.openstack.org> | 2012-08-31 17:38:02 +0000 |
|---|---|---|
| committer | Gerrit Code Review <review@openstack.org> | 2012-08-31 17:38:02 +0000 |
| commit | e1cdd0f3be2615482bd485e590e1fddeea566e12 (patch) | |
| tree | 91a7543989c626cf4d31f9ab32fa7348891d7541 | |
| parent | b164525e25662f71068838e323690156c51675d1 (diff) | |
| parent | 04e6ad112f541df68b06c17f141be916e5e8bdb2 (diff) | |
| download | nova-e1cdd0f3be2615482bd485e590e1fddeea566e12.tar.gz nova-e1cdd0f3be2615482bd485e590e1fddeea566e12.tar.xz nova-e1cdd0f3be2615482bd485e590e1fddeea566e12.zip | |
Merge "Save the original base image ref for snapshots."
| -rw-r--r-- | nova/compute/api.py | 17 | ||||
| -rw-r--r-- | nova/tests/compute/test_compute.py | 10 |
2 files changed, 24 insertions, 3 deletions
diff --git a/nova/compute/api.py b/nova/compute/api.py index e47147522..6ce5b5526 100644 --- a/nova/compute/api.py +++ b/nova/compute/api.py @@ -682,6 +682,16 @@ class API(base.Base): new_value = str(value)[:255] instance['system_metadata']['image_%s' % key] = new_value + # Keep a record of the original base image that this + # image's instance is derived from: + base_image_ref = image['properties'].get('base_image_ref') + if not base_image_ref: + # base image ref property not previously set through a snapshot. + # default to using the image ref as the base: + base_image_ref = base_options['image_ref'] + + instance['system_metadata']['image_base_image_ref'] = base_image_ref + # Use 'default' security_group if none specified. if security_groups is None: security_groups = ['default'] @@ -1167,6 +1177,13 @@ class API(base.Base): 'image_type': image_type, } + # Persist base image ref as a Glance image property + system_meta = self.db.instance_system_metadata_get( + context, instance_uuid) + base_image_ref = system_meta.get('image_base_image_ref') + if base_image_ref: + properties['base_image_ref'] = base_image_ref + sent_meta = {'name': name, 'is_public': False} if image_type == 'backup': diff --git a/nova/tests/compute/test_compute.py b/nova/tests/compute/test_compute.py index 7b5f7dca7..324c32084 100644 --- a/nova/tests/compute/test_compute.py +++ b/nova/tests/compute/test_compute.py @@ -2526,10 +2526,14 @@ class ComputeAPITestCase(BaseTestCase): try: sys_metadata = db.instance_system_metadata_get(self.context, ref[0]['uuid']) - self.assertEqual(sys_metadata, - {'image_kernel_id': 'fake_kernel_id', + + image_props = {'image_kernel_id': 'fake_kernel_id', 'image_ramdisk_id': 'fake_ramdisk_id', - 'image_something_else': 'meow', }) + 'image_something_else': 'meow', } + for key, value in image_props.iteritems(): + self.assertTrue(key in sys_metadata) + self.assertEqual(value, sys_metadata[key]) + finally: db.instance_destroy(self.context, ref[0]['uuid']) |
