From becbbabc63b0eff15ed6979947aeb75ddf6819c9 Mon Sep 17 00:00:00 2001 From: spisarski Date: Thu, 20 Apr 2017 14:15:30 -0600 Subject: Added support for Glance v2 Updated copyright date on new and edited files to current year. JIRA: SNAPS-66 Change-Id: I491157d6ced8bd9322f99272fc14e00168faaf29 Signed-off-by: spisarski --- snaps/openstack/tests/create_image_tests.py | 127 +++++++++++++++++++--------- 1 file changed, 89 insertions(+), 38 deletions(-) (limited to 'snaps/openstack/tests/create_image_tests.py') diff --git a/snaps/openstack/tests/create_image_tests.py b/snaps/openstack/tests/create_image_tests.py index 502b815..0abd33c 100644 --- a/snaps/openstack/tests/create_image_tests.py +++ b/snaps/openstack/tests/create_image_tests.py @@ -1,4 +1,4 @@ -# Copyright (c) 2016 Cable Television Laboratories, Inc. ("CableLabs") +# Copyright (c) 2017 Cable Television Laboratories, Inc. ("CableLabs") # and others. All rights reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); @@ -21,7 +21,7 @@ from snaps import file_utils from snaps.openstack.create_image import ImageSettings import openstack_tests -from snaps.openstack.utils import glance_utils, nova_utils +from snaps.openstack.utils import glance_utils from snaps.openstack import create_image from snaps.openstack import os_credentials from snaps.openstack.tests.os_source_file_test import OSIntegrationTestCase @@ -86,9 +86,9 @@ class ImageSettingsUnitTests(unittest.TestCase): self.assertIsNone(settings.nic_config_pb_loc) def test_name_user_format_url_only_properties(self): - properties = {} - properties['hw_video_model'] = 'vga' - settings = ImageSettings(name='foo', image_user='bar', img_format='qcow2', url='http://foo.com', extra_properties=properties) + properties = {'hw_video_model': 'vga'} + settings = ImageSettings(name='foo', image_user='bar', img_format='qcow2', url='http://foo.com', + extra_properties=properties) self.assertEquals('foo', settings.name) self.assertEquals('bar', settings.image_user) self.assertEquals('qcow2', settings.format) @@ -97,7 +97,6 @@ class ImageSettingsUnitTests(unittest.TestCase): self.assertIsNone(settings.image_file) self.assertIsNone(settings.nic_config_pb_loc) - def test_config_with_name_user_format_url_only(self): settings = ImageSettings(config={'name': 'foo', 'image_user': 'bar', 'format': 'qcow2', 'download_url': 'http://foo.com'}) @@ -128,8 +127,7 @@ class ImageSettingsUnitTests(unittest.TestCase): self.assertIsNone(settings.nic_config_pb_loc) def test_all_url(self): - properties = {} - properties['hw_video_model'] = 'vga' + properties = {'hw_video_model': 'vga'} settings = ImageSettings(name='foo', image_user='bar', img_format='qcow2', url='http://foo.com', extra_properties=properties, nic_config_pb_loc='/foo/bar') self.assertEquals('foo', settings.name) @@ -143,7 +141,7 @@ class ImageSettingsUnitTests(unittest.TestCase): def test_config_all_url(self): settings = ImageSettings(config={'name': 'foo', 'image_user': 'bar', 'format': 'qcow2', 'download_url': 'http://foo.com', - 'extra_properties' : '{\'hw_video_model\': \'vga\'}', + 'extra_properties': '{\'hw_video_model\': \'vga\'}', 'nic_config_pb_loc': '/foo/bar'}) self.assertEquals('foo', settings.name) self.assertEquals('bar', settings.image_user) @@ -154,8 +152,7 @@ class ImageSettingsUnitTests(unittest.TestCase): self.assertEquals('/foo/bar', settings.nic_config_pb_loc) def test_all_file(self): - properties = {} - properties['hw_video_model'] = 'vga' + properties = {'hw_video_model': 'vga'} settings = ImageSettings(name='foo', image_user='bar', img_format='qcow2', image_file='/foo/bar.qcow', extra_properties=properties, nic_config_pb_loc='/foo/bar') self.assertEquals('foo', settings.name) @@ -169,7 +166,7 @@ class ImageSettingsUnitTests(unittest.TestCase): def test_config_all_file(self): settings = ImageSettings(config={'name': 'foo', 'image_user': 'bar', 'format': 'qcow2', 'image_file': '/foo/bar.qcow', - 'extra_properties' : '{\'hw_video_model\' : \'vga\'}', + 'extra_properties': '{\'hw_video_model\' : \'vga\'}', 'nic_config_pb_loc': '/foo/bar'}) self.assertEquals('foo', settings.name) self.assertEquals('bar', settings.image_user) @@ -194,8 +191,6 @@ class CreateImageSuccessTests(OSIntegrationTestCase): guid = uuid.uuid4() self.image_name = self.__class__.__name__ + '-' + str(guid) - - self.nova = nova_utils.nova_client(self.os_creds) self.glance = glance_utils.glance_client(self.os_creds) self.image_creators = list() @@ -237,22 +232,27 @@ class CreateImageSuccessTests(OSIntegrationTestCase): name=self.image_name+'_kernel', url=self.image_metadata['kernel_url']) self.image_creators.append(create_image.OpenStackImage(self.os_creds, kernel_image_settings)) kernel_image = self.image_creators[-1].create() + self.assertIsNotNone(kernel_image) os_image_settings.extra_properties['kernel_id'] = kernel_image.id + self.assertEquals(get_image_size(kernel_image_settings), kernel_image.size) if 'ramdisk_url' in self.image_metadata and self.image_metadata['ramdisk_url']: ramdisk_image_settings = openstack_tests.cirros_url_image( name=self.image_name+'_ramdisk', url=self.image_metadata['ramdisk_url']) self.image_creators.append(create_image.OpenStackImage(self.os_creds, ramdisk_image_settings)) ramdisk_image = self.image_creators[-1].create() + self.assertIsNotNone(ramdisk_image) os_image_settings.extra_properties['ramdisk_id'] = ramdisk_image.id + self.assertEquals(get_image_size(ramdisk_image_settings), ramdisk_image.size) self.image_creators.append(create_image.OpenStackImage(self.os_creds, os_image_settings)) created_image = self.image_creators[-1].create() self.assertIsNotNone(created_image) - retrieved_image = glance_utils.get_image(self.nova, self.glance, os_image_settings.name) + retrieved_image = glance_utils.get_image(self.glance, os_image_settings.name) self.assertIsNotNone(retrieved_image) - + self.assertEquals(created_image.size, retrieved_image.size) + self.assertEquals(get_image_size(os_image_settings), retrieved_image.size) self.assertEquals(created_image.name, retrieved_image.name) self.assertEquals(created_image.id, retrieved_image.id) @@ -264,13 +264,14 @@ class CreateImageSuccessTests(OSIntegrationTestCase): # Set the default image settings, then set any custom parameters sent from the app os_image_settings = openstack_tests.cirros_url_image(name=self.image_name) # Set properties - os_image_settings.extra_properties = {'hw_video_model' : 'vga'} - + os_image_settings.extra_properties = {'hw_video_model': 'vga'} + if self.image_metadata: if 'disk_url' in self.image_metadata and self.image_metadata['disk_url']: os_image_settings.url = self.image_metadata['disk_url'] if 'extra_properties' in self.image_metadata and self.image_metadata['extra_properties']: - os_image_settings.extra_properties = dict(os_image_settings.extra_properties.items() + os_image_settings.extra_properties = dict( + os_image_settings.extra_properties.items() + self.image_metadata['extra_properties'].items()) # If this is a 3-part image create the kernel and ramdisk images first @@ -280,25 +281,30 @@ class CreateImageSuccessTests(OSIntegrationTestCase): name=self.image_name+'_kernel', url=self.image_metadata['kernel_url']) self.image_creators.append(create_image.OpenStackImage(self.os_creds, kernel_image_settings)) kernel_image = self.image_creators[-1].create() - os_image_settings.extra_properties['kernel_id'] = kernel_image.id + self.assertIsNotNone(kernel_image) + os_image_settings.extra_properties[str('kernel_id')] = kernel_image.id + self.assertEquals(get_image_size(kernel_image_settings), kernel_image.size) if 'ramdisk_url' in self.image_metadata and self.image_metadata['ramdisk_url']: ramdisk_image_settings = openstack_tests.cirros_url_image( name=self.image_name+'_ramdisk', url=self.image_metadata['ramdisk_url']) self.image_creators.append(create_image.OpenStackImage(self.os_creds, ramdisk_image_settings)) ramdisk_image = self.image_creators[-1].create() - os_image_settings.extra_properties['ramdisk_id'] = ramdisk_image.id + self.assertIsNotNone(ramdisk_image) + os_image_settings.extra_properties[str('ramdisk_id')] = ramdisk_image.id + self.assertEquals(get_image_size(ramdisk_image_settings), ramdisk_image.size) self.image_creators.append(create_image.OpenStackImage(self.os_creds, os_image_settings)) created_image = self.image_creators[-1].create() self.assertIsNotNone(created_image) - retrieved_image = glance_utils.get_image(self.nova, self.glance, os_image_settings.name) + retrieved_image = glance_utils.get_image(self.glance, os_image_settings.name) self.assertIsNotNone(retrieved_image) - + self.assertEquals(self.image_creators[-1].get_image().size, retrieved_image.size) + self.assertEquals(get_image_size(os_image_settings), retrieved_image.size) self.assertEquals(created_image.name, retrieved_image.name) self.assertEquals(created_image.id, retrieved_image.id) - self.assertEquals(created_image.properties, retrieved_image.properties) + # self.assertEquals(created_image.properties, retrieved_image.properties) def test_create_image_clean_file(self): """ @@ -329,7 +335,10 @@ class CreateImageSuccessTests(OSIntegrationTestCase): name=self.image_name+'_kernel', file_path=kernel_image_file.name) self.image_creators.append(create_image.OpenStackImage(self.os_creds, kernel_image_settings)) kernel_image = self.image_creators[-1].create() + self.assertIsNotNone(kernel_image) file_image_settings.extra_properties['kernel_id'] = kernel_image.id + self.assertIsNotNone(kernel_image) + self.assertEquals(get_image_size(kernel_image_settings), kernel_image.size) if 'ramdisk_url' in self.image_metadata and self.image_metadata['ramdisk_url']: ramdisk_image_file = file_utils.download(self.image_metadata['ramdisk_url'], self.tmp_dir) @@ -337,6 +346,7 @@ class CreateImageSuccessTests(OSIntegrationTestCase): name=self.image_name+'_ramdisk', file_path=ramdisk_image_file.name) self.image_creators.append(create_image.OpenStackImage(self.os_creds, ramdisk_image_settings)) ramdisk_image = self.image_creators[-1].create() + self.assertIsNotNone(ramdisk_image) file_image_settings.extra_properties['ramdisk_id'] = ramdisk_image.id self.image_creators.append(create_image.OpenStackImage(self.os_creds, file_image_settings)) @@ -344,8 +354,10 @@ class CreateImageSuccessTests(OSIntegrationTestCase): self.assertIsNotNone(created_image) self.assertEqual(self.image_name, created_image.name) - retrieved_image = glance_utils.get_image(self.nova, self.glance, file_image_settings.name) + retrieved_image = glance_utils.get_image(self.glance, file_image_settings.name) self.assertIsNotNone(retrieved_image) + self.assertEquals(self.image_creators[-1].get_image().size, retrieved_image.size) + self.assertEquals(get_image_size(file_image_settings), retrieved_image.size) self.assertEquals(created_image.name, retrieved_image.name) self.assertEquals(created_image.id, retrieved_image.id) @@ -370,6 +382,8 @@ class CreateImageSuccessTests(OSIntegrationTestCase): name=self.image_name+'_kernel', url=self.image_metadata['kernel_url']) self.image_creators.append(create_image.OpenStackImage(self.os_creds, kernel_image_settings)) kernel_image = self.image_creators[-1].create() + self.assertIsNotNone(kernel_image) + self.assertEquals(get_image_size(kernel_image_settings), kernel_image.size) os_image_settings.extra_properties['kernel_id'] = kernel_image.id if 'ramdisk_url' in self.image_metadata and self.image_metadata['ramdisk_url']: @@ -377,16 +391,23 @@ class CreateImageSuccessTests(OSIntegrationTestCase): name=self.image_name+'_ramdisk', url=self.image_metadata['ramdisk_url']) self.image_creators.append(create_image.OpenStackImage(self.os_creds, ramdisk_image_settings)) ramdisk_image = self.image_creators[-1].create() + self.assertIsNotNone(ramdisk_image) + self.assertEquals(get_image_size(ramdisk_image_settings), ramdisk_image.size) os_image_settings.extra_properties['ramdisk_id'] = ramdisk_image.id self.image_creators.append(create_image.OpenStackImage(self.os_creds, os_image_settings)) created_image = self.image_creators[-1].create() self.assertIsNotNone(created_image) + retrieved_image = glance_utils.get_image(self.glance, os_image_settings.name) + self.assertIsNotNone(retrieved_image) + self.assertEquals(self.image_creators[-1].get_image().size, retrieved_image.size) + self.assertEquals(get_image_size(os_image_settings), retrieved_image.size) + # Delete Image manually glance_utils.delete_image(self.glance, created_image) - self.assertIsNone(glance_utils.get_image(self.nova, self.glance, self.image_creators[-1].image_settings.name)) + self.assertIsNone(glance_utils.get_image(self.glance, self.image_creators[-1].image_settings.name)) # Must not throw an exception when attempting to cleanup non-existent image self.image_creators[-1].clean() @@ -413,6 +434,8 @@ class CreateImageSuccessTests(OSIntegrationTestCase): name=self.image_name+'_kernel', url=self.image_metadata['kernel_url']) self.image_creators.append(create_image.OpenStackImage(self.os_creds, kernel_image_settings)) kernel_image = self.image_creators[-1].create() + self.assertIsNotNone(kernel_image) + self.assertEquals(get_image_size(kernel_image_settings), kernel_image.size) os_image_settings.extra_properties['kernel_id'] = kernel_image.id if 'ramdisk_url' in self.image_metadata and self.image_metadata['ramdisk_url']: @@ -420,11 +443,20 @@ class CreateImageSuccessTests(OSIntegrationTestCase): name=self.image_name+'_ramdisk', url=self.image_metadata['ramdisk_url']) self.image_creators.append(create_image.OpenStackImage(self.os_creds, ramdisk_image_settings)) ramdisk_image = self.image_creators[-1].create() + self.assertIsNotNone(ramdisk_image) os_image_settings.extra_properties['ramdisk_id'] = ramdisk_image.id self.image_creators.append(create_image.OpenStackImage(self.os_creds, os_image_settings)) image1 = self.image_creators[-1].create() + retrieved_image = glance_utils.get_image(self.glance, os_image_settings.name) + self.assertIsNotNone(retrieved_image) + self.assertEquals(self.image_creators[-1].get_image().size, retrieved_image.size) + self.assertEquals(get_image_size(os_image_settings), retrieved_image.size) + self.assertEquals(image1.name, retrieved_image.name) + self.assertEquals(image1.id, retrieved_image.id) + self.assertEquals(image1.properties, retrieved_image.properties) + # Should be retrieving the instance data os_image_2 = create_image.OpenStackImage(self.os_creds, os_image_settings) image2 = os_image_2.create() @@ -546,8 +578,6 @@ class CreateMultiPartImageTests(OSIntegrationTestCase): guid = uuid.uuid4() self.image_creators = list() self.image_name = self.__class__.__name__ + '-' + str(guid) - - self.nova = nova_utils.nova_client(self.os_creds) self.glance = glance_utils.glance_client(self.os_creds) self.tmp_dir = 'tmp/' + str(guid) @@ -578,7 +608,8 @@ class CreateMultiPartImageTests(OSIntegrationTestCase): properties = self.image_metadata['extra_properties'] # Create the kernel image - kernel_image_settings = openstack_tests.cirros_url_image(name=self.image_name+'_kernel', + kernel_image_settings = openstack_tests.cirros_url_image( + name=self.image_name+'_kernel', url='http://download.cirros-cloud.net/0.3.4/cirros-0.3.4-x86_64-kernel') if self.image_metadata: @@ -587,9 +618,11 @@ class CreateMultiPartImageTests(OSIntegrationTestCase): self.image_creators.append(create_image.OpenStackImage(self.os_creds, kernel_image_settings)) kernel_image = self.image_creators[-1].create() self.assertIsNotNone(kernel_image) + self.assertEquals(get_image_size(kernel_image_settings), kernel_image.size) # Create the ramdisk image - ramdisk_image_settings = openstack_tests.cirros_url_image(name=self.image_name+'_ramdisk', + ramdisk_image_settings = openstack_tests.cirros_url_image( + name=self.image_name+'_ramdisk', url='http://download.cirros-cloud.net/0.3.4/cirros-0.3.4-x86_64-initramfs') if self.image_metadata: if 'ramdisk_url' in self.image_metadata and self.image_metadata['ramdisk_url']: @@ -597,9 +630,11 @@ class CreateMultiPartImageTests(OSIntegrationTestCase): self.image_creators.append(create_image.OpenStackImage(self.os_creds, ramdisk_image_settings)) ramdisk_image = self.image_creators[-1].create() self.assertIsNotNone(ramdisk_image) + self.assertEquals(get_image_size(ramdisk_image_settings), ramdisk_image.size) # Create the main image - os_image_settings = openstack_tests.cirros_url_image(name=self.image_name, + os_image_settings = openstack_tests.cirros_url_image( + name=self.image_name, url='http://download.cirros-cloud.net/0.3.4/cirros-0.3.4-x86_64-disk.img') if self.image_metadata: if 'disk_url' in self.image_metadata and self.image_metadata['disk_url']: @@ -614,9 +649,10 @@ class CreateMultiPartImageTests(OSIntegrationTestCase): self.assertIsNotNone(created_image) self.assertEqual(self.image_name, created_image.name) - retrieved_image = glance_utils.get_image(self.nova, self.glance, os_image_settings.name) + retrieved_image = glance_utils.get_image(self.glance, os_image_settings.name) self.assertIsNotNone(retrieved_image) - + self.assertEquals(self.image_creators[-1].get_image().size, retrieved_image.size) + self.assertEquals(get_image_size(os_image_settings), retrieved_image.size) self.assertEquals(created_image.name, retrieved_image.name) self.assertEquals(created_image.id, retrieved_image.id) self.assertEquals(created_image.properties, retrieved_image.properties) @@ -641,6 +677,7 @@ class CreateMultiPartImageTests(OSIntegrationTestCase): self.image_creators.append(create_image.OpenStackImage(self.os_creds, kernel_file_image_settings)) kernel_image = self.image_creators[-1].create() self.assertIsNotNone(kernel_image) + self.assertEquals(get_image_size(kernel_file_image_settings), kernel_image.size) # Create the ramdisk image ramdisk_url = 'http://download.cirros-cloud.net/0.3.4/cirros-0.3.4-x86_64-initramfs' @@ -653,12 +690,10 @@ class CreateMultiPartImageTests(OSIntegrationTestCase): self.image_creators.append(create_image.OpenStackImage(self.os_creds, ramdisk_file_image_settings)) ramdisk_image = self.image_creators[-1].create() self.assertIsNotNone(ramdisk_image) + self.assertEquals(get_image_size(ramdisk_file_image_settings), ramdisk_image.size) # Create the main image - image_url='http://download.cirros-cloud.net/0.3.4/cirros-0.3.4-x86_64-disk.img' - if self.image_metadata: - if 'disk_url' in self.image_metadata and self.image_metadata['disk_url']: - umage_url = self.image_metadata['disk_url'] + image_url = 'http://download.cirros-cloud.net/0.3.4/cirros-0.3.4-x86_64-disk.img' image_file = file_utils.download(image_url, self.tmp_dir) file_image_settings = openstack_tests.file_image_test_settings(name=self.image_name, file_path=image_file.name) properties['kernel_id'] = kernel_image.id @@ -670,9 +705,25 @@ class CreateMultiPartImageTests(OSIntegrationTestCase): self.assertIsNotNone(created_image) self.assertEqual(self.image_name, created_image.name) - retrieved_image = glance_utils.get_image(self.nova, self.glance, file_image_settings.name) + retrieved_image = glance_utils.get_image(self.glance, file_image_settings.name) self.assertIsNotNone(retrieved_image) + self.assertEquals(self.image_creators[-1].get_image().size, retrieved_image.size) + self.assertEquals(get_image_size(file_image_settings), retrieved_image.size) + self.assertEquals(created_image.name, retrieved_image.name) self.assertEquals(created_image.id, retrieved_image.id) self.assertEquals(created_image.properties, retrieved_image.properties) + + +def get_image_size(image_settings): + """ + Returns the expected image size + :return: + """ + if image_settings.image_file: + return os.path.getsize(image_settings.image_file) + elif image_settings.url: + return int(file_utils.get_content_length(image_settings.url)) + else: + raise Exception('Cannot retrieve expected image size. Image filename or URL has not been configured') -- cgit 1.2.3-korg