X-Git-Url: https://gerrit.opnfv.org/gerrit/gitweb?a=blobdiff_plain;f=snaps%2Fopenstack%2Ftests%2Fcreate_instance_tests.py;h=765def774cfe3d19dbd35277156fccdb98845fc2;hb=4762240029f3ab7393a353f094a746ebbb70f288;hp=40fb779080f2ee93cd94a2319e1ce4f7b0167c1d;hpb=8a6c7a2be06f25f9c8c18a80b1b54c3b3be8b62a;p=snaps.git diff --git a/snaps/openstack/tests/create_instance_tests.py b/snaps/openstack/tests/create_instance_tests.py index 40fb779..765def7 100644 --- a/snaps/openstack/tests/create_instance_tests.py +++ b/snaps/openstack/tests/create_instance_tests.py @@ -243,7 +243,7 @@ class SimpleHealthCheck(OSIntegrationTestCase): self.floating_ip_name = guid + 'fip1' # Initialize for tearDown() - self.image_creator = None + self.image_creators = list() self.network_creator = None self.flavor_creator = None self.inst_creator = None @@ -253,12 +253,35 @@ class SimpleHealthCheck(OSIntegrationTestCase): self.port_settings = PortSettings( name=self.port_1_name, network_name=self.priv_net_config.network_settings.name) + # Create Image + # Set the default image settings, then set any custom parameters sent from the app self.os_image_settings = openstack_tests.cirros_url_image(name=guid + '-image') + if self.image_metadata: + if 'disk_url' in self.image_metadata and self.image_metadata['disk_url']: + self.os_image_settings.url = self.image_metadata['disk_url'] + if 'extra_properties' in self.image_metadata and self.image_metadata['extra_properties']: + self.os_image_settings.extra_properties = self.image_metadata['extra_properties'] + try: - # Create Image - self.image_creator = OpenStackImage(self.os_creds, self.os_image_settings) - self.image_creator.create() + # If this is a 3-part image create the kernel and ramdisk images first + if self.image_metadata: + if 'kernel_url' in self.image_metadata and self.image_metadata['kernel_url']: + kernel_image_settings = openstack_tests.cirros_url_image( + name=self.os_image_settings.name+'_kernel', url=self.image_metadata['kernel_url']) + self.image_creators.append(OpenStackImage(self.os_creds, kernel_image_settings)) + kernel_image = self.image_creators[-1].create() + self.os_image_settings.extra_properties['kernel_id'] = kernel_image.id + + if 'ramdisk_url' in self.image_metadata and self.image_metadata['ramdisk_url']: + ramdisk_image_settings = openstack_tests.cirros_url_image( + name=self.os_image_settings.name+'_ramdisk', url=self.image_metadata['ramdisk_url']) + self.image_creators.append(OpenStackImage(self.os_creds, ramdisk_image_settings)) + ramdisk_image = self.image_creators[-1].create() + self.os_image_settings.extra_properties['ramdisk_id'] = ramdisk_image.id + + self.image_creators.append(OpenStackImage(self.os_creds, self.os_image_settings)) + self.image_creators[-1].create() # Create Network self.network_creator = OpenStackNetwork(self.os_creds, self.priv_net_config.network_settings) @@ -267,7 +290,7 @@ class SimpleHealthCheck(OSIntegrationTestCase): # Create Flavor self.flavor_creator = OpenStackFlavor( self.admin_os_creds, - FlavorSettings(name=guid + '-flavor-name', ram=1024, disk=10, vcpus=1, metadata=self.flavor_metadata)) + FlavorSettings(name=guid + '-flavor-name', ram=128, disk=10, vcpus=1, metadata=self.flavor_metadata)) self.flavor_creator.create() except Exception as e: self.tearDown() @@ -289,21 +312,23 @@ class SimpleHealthCheck(OSIntegrationTestCase): if os.path.isfile(self.keypair_priv_filepath): os.remove(self.keypair_priv_filepath) - if self.flavor_creator: - try: - self.flavor_creator.clean() - except Exception as e: - logger.error('Unexpected exception cleaning flavor with message - ' + e.message) - if self.network_creator: try: self.network_creator.clean() except Exception as e: logger.error('Unexpected exception cleaning network with message - ' + e.message) - if self.image_creator: + if self.flavor_creator: try: - self.image_creator.clean() + self.flavor_creator.clean() + except Exception as e: + logger.error('Unexpected exception cleaning flavor with message - ' + e.message) + + if self.image_creators: + try: + while self.image_creators: + self.image_creators[-1].clean() + self.image_creators.pop() except Exception as e: logger.error('Unexpected exception cleaning image with message - ' + e.message) @@ -317,7 +342,8 @@ class SimpleHealthCheck(OSIntegrationTestCase): instance_settings = VmInstanceSettings( name=self.vm_inst_name, flavor=self.flavor_creator.flavor_settings.name, port_settings=[self.port_settings]) - self.inst_creator = OpenStackVmInstance(self.os_creds, instance_settings, self.image_creator.image_settings) + self.inst_creator = OpenStackVmInstance(self.os_creds, instance_settings, + self.image_creators[-1].image_settings) vm = self.inst_creator.create() ip = self.inst_creator.get_port_ip(self.port_settings.name) @@ -331,8 +357,10 @@ class SimpleHealthCheck(OSIntegrationTestCase): match_value = 'Lease of.*obtained' logger.info("Looking for expression %s in the console log" % match_value) + full_log = '' while timeout > time.time() - start_time: output = vm.get_console_output() + full_log = full_log + output if re.search(match_value, output): logger.info('DHCP lease obtained logged in console') if ip in output: @@ -342,6 +370,11 @@ class SimpleHealthCheck(OSIntegrationTestCase): logger.error('With incorrect IP address') break + if not found: + logger.error('Full console output -\n' + full_log) + else: + logger.debug('Full console output -\n' + full_log) + self.assertTrue(found) @@ -366,21 +399,44 @@ class CreateInstanceSimpleTests(OSIntegrationTestCase): router_name=guid + '-pub-router', external_net=self.ext_net_name) # Initialize for tearDown() - self.image_creator = None + self.image_creators = list() self.flavor_creator = None - self.net_creator = None + self.network_creator = None self.inst_creator = None try: # Create Image - self.image_creator = OpenStackImage(self.os_creds, self.os_image_settings) - self.image_creator.create() + # Set any custom parameters sent from the app + if self.image_metadata: + if 'disk_url' in self.image_metadata and self.image_metadata['disk_url']: + self.os_image_settings.url = self.image_metadata['disk_url'] + if 'extra_properties' in self.image_metadata and self.image_metadata['extra_properties']: + self.os_image_settings.extra_properties = self.image_metadata['extra_properties'] + + # If this is a 3-part image create the kernel and ramdisk images first + if self.image_metadata: + if 'kernel_url' in self.image_metadata and self.image_metadata['kernel_url']: + kernel_image_settings = openstack_tests.cirros_url_image( + name=self.os_image_settings.name+'_kernel', url=self.image_metadata['kernel_url']) + self.image_creators.append(OpenStackImage(self.os_creds, kernel_image_settings)) + kernel_image = self.image_creators[-1].create() + self.os_image_settings.extra_properties['kernel_id'] = kernel_image.id + + if 'ramdisk_url' in self.image_metadata and self.image_metadata['ramdisk_url']: + ramdisk_image_settings = openstack_tests.cirros_url_image( + name=self.os_image_settings.name+'_ramdisk', url=self.image_metadata['ramdisk_url']) + self.image_creators.append(OpenStackImage(self.os_creds, ramdisk_image_settings)) + ramdisk_image = self.image_creators[-1].create() + self.os_image_settings.extra_properties['ramdisk_id'] = ramdisk_image.id + + self.image_creators.append(OpenStackImage(self.os_creds, self.os_image_settings)) + self.image_creators[-1].create() # Create Flavor self.flavor_creator = OpenStackFlavor( self.admin_os_creds, - FlavorSettings(name=guid + '-flavor-name', ram=2048, disk=10, vcpus=2, metadata=self.flavor_metadata)) + FlavorSettings(name=guid + '-flavor-name', ram=128, disk=10, vcpus=2, metadata=self.flavor_metadata)) self.flavor_creator.create() # Create Network @@ -410,15 +466,17 @@ class CreateInstanceSimpleTests(OSIntegrationTestCase): except Exception as e: logger.error('Unexpected exception cleaning flavor with message - ' + e.message) - if self.net_creator: + if self.network_creator: try: - self.net_creator.clean() + self.network_creator.clean() except Exception as e: logger.error('Unexpected exception cleaning network with message - ' + e.message) - if self.image_creator: + if self.image_creators: try: - self.image_creator.clean() + while self.image_creators: + self.image_creators[-1].clean() + self.image_creators.pop() except Exception as e: logger.error('Unexpected exception cleaning image with message - ' + e.message) @@ -432,7 +490,7 @@ class CreateInstanceSimpleTests(OSIntegrationTestCase): port_settings=[self.port_settings]) self.inst_creator = OpenStackVmInstance( - self.os_creds, instance_settings, self.image_creator.image_settings) + self.os_creds, instance_settings, self.image_creators[-1].image_settings) vm_inst = self.inst_creator.create() self.assertEquals(1, len(nova_utils.get_servers_by_name(self.nova, instance_settings.name))) @@ -469,7 +527,7 @@ class CreateInstanceSingleNetworkTests(OSIntegrationTestCase): self.floating_ip_name = guid + 'fip1' # Initialize for tearDown() - self.image_creator = None + self.image_creators = list() self.network_creator = None self.router_creator = None self.flavor_creator = None @@ -483,8 +541,31 @@ class CreateInstanceSingleNetworkTests(OSIntegrationTestCase): try: # Create Image - self.image_creator = OpenStackImage(self.os_creds, self.os_image_settings) - self.image_creator.create() + # Set any custom parameters sent from the app + if self.image_metadata: + if 'disk_url' in self.image_metadata and self.image_metadata['disk_url']: + self.os_image_settings.url = self.image_metadata['disk_url'] + if 'extra_properties' in self.image_metadata and self.image_metadata['extra_properties']: + self.os_image_settings.extra_properties = self.image_metadata['extra_properties'] + + # If this is a 3-part image create the kernel and ramdisk images first + if self.image_metadata: + if 'kernel_url' in self.image_metadata and self.image_metadata['kernel_url']: + kernel_image_settings = openstack_tests.cirros_url_image( + name=self.os_image_settings.name+'_kernel', url=self.image_metadata['kernel_url']) + self.image_creators.append(OpenStackImage(self.os_creds, kernel_image_settings)) + kernel_image = self.image_creators[-1].create() + self.os_image_settings.extra_properties['kernel_id'] = kernel_image.id + + if 'ramdisk_url' in self.image_metadata and self.image_metadata['ramdisk_url']: + ramdisk_image_settings = openstack_tests.cirros_url_image( + name=self.os_image_settings.name+'_ramdisk', url=self.image_metadata['ramdisk_url']) + self.image_creators.append(OpenStackImage(self.os_creds, ramdisk_image_settings)) + ramdisk_image = self.image_creators[-1].create() + self.os_image_settings.extra_properties['ramdisk_id'] = ramdisk_image.id + + self.image_creators.append(OpenStackImage(self.os_creds, self.os_image_settings)) + self.image_creators[-1].create() # Create Network self.network_creator = OpenStackNetwork(self.os_creds, self.pub_net_config.network_settings) @@ -497,7 +578,7 @@ class CreateInstanceSingleNetworkTests(OSIntegrationTestCase): # Create Flavor self.flavor_creator = OpenStackFlavor( self.admin_os_creds, - FlavorSettings(name=guid + '-flavor-name', ram=2048, disk=10, vcpus=2, metadata=self.flavor_metadata)) + FlavorSettings(name=guid + '-flavor-name', ram=128, disk=10, vcpus=2, metadata=self.flavor_metadata)) self.flavor_creator.create() self.keypair_creator = OpenStackKeypair( @@ -549,9 +630,11 @@ class CreateInstanceSingleNetworkTests(OSIntegrationTestCase): except Exception as e: logger.error('Unexpected exception cleaning network with message - ' + e.message) - if self.image_creator: + if self.image_creators: try: - self.image_creator.clean() + while self.image_creators: + self.image_creators[-1].clean() + self.image_creators.pop() except Exception as e: logger.error('Unexpected exception cleaning image with message - ' + e.message) @@ -574,7 +657,7 @@ class CreateInstanceSingleNetworkTests(OSIntegrationTestCase): router_name=self.pub_net_config.router_settings.name)]) inst_creator = OpenStackVmInstance( - self.os_creds, instance_settings, self.image_creator.image_settings, + self.os_creds, instance_settings, self.image_creators[-1].image_settings, keypair_settings=self.keypair_creator.keypair_settings) self.inst_creators.append(inst_creator) vm_inst = inst_creator.create() @@ -597,7 +680,7 @@ class CreateInstanceSingleNetworkTests(OSIntegrationTestCase): router_name=self.pub_net_config.router_settings.name)]) inst_creator = OpenStackVmInstance( - self.os_creds, instance_settings, self.image_creator.image_settings, + self.os_creds, instance_settings, self.image_creators[-1].image_settings, keypair_settings=self.keypair_creator.keypair_settings) self.inst_creators.append(inst_creator) vm_inst = inst_creator.create() @@ -606,7 +689,7 @@ class CreateInstanceSingleNetworkTests(OSIntegrationTestCase): self.assertTrue(inst_creator.vm_active(block=True)) self.assertEquals(vm_inst, inst_creator.get_vm_inst()) - validate_ssh_client(inst_creator) + self.assertTrue(validate_ssh_client(inst_creator)) def test_ssh_client_fip_after_active(self): """ @@ -622,7 +705,7 @@ class CreateInstanceSingleNetworkTests(OSIntegrationTestCase): router_name=self.pub_net_config.router_settings.name)]) inst_creator = OpenStackVmInstance( - self.os_creds, instance_settings, self.image_creator.image_settings, + self.os_creds, instance_settings, self.image_creators[-1].image_settings, keypair_settings=self.keypair_creator.keypair_settings) self.inst_creators.append(inst_creator) @@ -633,7 +716,7 @@ class CreateInstanceSingleNetworkTests(OSIntegrationTestCase): self.assertTrue(inst_creator.vm_active(block=True)) self.assertEquals(vm_inst, inst_creator.get_vm_inst()) - validate_ssh_client(inst_creator) + self.assertTrue(validate_ssh_client(inst_creator)) # TODO - Determine how allowed_address_pairs is supposed to operate before continuing this test # see http://docs.openstack.org/developer/dragonflow/specs/allowed_address_pairs.html for a functional description @@ -651,7 +734,7 @@ class CreateInstanceSingleNetworkTests(OSIntegrationTestCase): # router_name=self.pub_net_config.router_settings.name)]) # # inst_creator_1 = OpenStackVmInstance( - # self.os_creds, instance_settings_1, self.image_creator.image_settings, + # self.os_creds, instance_settings_1, self.image_creators[-1].image_settings, # keypair_settings=self.keypair_creator.keypair_settings) # self.inst_creators.append(inst_creator_1) # @@ -669,7 +752,7 @@ class CreateInstanceSingleNetworkTests(OSIntegrationTestCase): # router_name=self.pub_net_config.router_settings.name)]) # # inst_creator_1 = OpenStackVmInstance( - # self.os_creds, instance_settings_1, self.image_creator.image_settings, + # self.os_creds, instance_settings_1, self.image_creators[-1].image_settings, # keypair_settings=self.keypair_creator.keypair_settings) # self.inst_creators.append(inst_creator_1) # inst_creator_1.create(block=True) @@ -692,7 +775,7 @@ class CreateInstanceSingleNetworkTests(OSIntegrationTestCase): # port_settings=[port_settings_2]) # # inst_creator_2 = OpenStackVmInstance( - # self.os_creds, instance_settings_2, self.image_creator.image_settings) + # self.os_creds, instance_settings_2, self.image_creators[-1].image_settings) # self.inst_creators.append(inst_creator_2) # inst_creator_2.create(block=True) # @@ -710,13 +793,13 @@ class CreateInstanceSingleNetworkTests(OSIntegrationTestCase): # port_settings=[port_settings_3]) # # inst_creator_3 = OpenStackVmInstance( - # self.os_creds, instance_settings_3, self.image_creator.image_settings) + # self.os_creds, instance_settings_3, self.image_creators[-1].image_settings) # self.inst_creators.append(inst_creator_3) # inst_creator_3.create(block=True) # # print 'foo' - # I expected that this feature would block/allow traffic from specific endpoints (VMs). In this case, I would expect - # inst_1 to be able to access inst_2 but not inst_3; however, they all can access each other. + # I expected that this feature would block/allow traffic from specific endpoints (VMs). In this case, I would + # expect inst_1 to be able to access inst_2 but not inst_3; however, they all can access each other. # TODO - Add validation @@ -739,7 +822,7 @@ class CreateInstancePortManipulationTests(OSIntegrationTestCase): self.floating_ip_name = guid + 'fip1' # Initialize for tearDown() - self.image_creator = None + self.image_creators = list() self.network_creator = None self.flavor_creator = None self.inst_creator = None @@ -751,8 +834,31 @@ class CreateInstancePortManipulationTests(OSIntegrationTestCase): try: # Create Image - self.image_creator = OpenStackImage(self.os_creds, self.os_image_settings) - self.image_creator.create() + # Set any custom parameters sent from the app + if self.image_metadata: + if 'disk_url' in self.image_metadata and self.image_metadata['disk_url']: + self.os_image_settings.url = self.image_metadata['disk_url'] + if 'extra_properties' in self.image_metadata and self.image_metadata['extra_properties']: + self.os_image_settings.extra_properties = self.image_metadata['extra_properties'] + + # If this is a 3-part image create the kernel and ramdisk images first + if self.image_metadata: + if 'kernel_url' in self.image_metadata and self.image_metadata['kernel_url']: + kernel_image_settings = openstack_tests.cirros_url_image( + name=self.os_image_settings.name+'_kernel', url=self.image_metadata['kernel_url']) + self.image_creators.append(OpenStackImage(self.os_creds, kernel_image_settings)) + kernel_image = self.image_creators[-1].create() + self.os_image_settings.extra_properties['kernel_id'] = kernel_image.id + + if 'ramdisk_url' in self.image_metadata and self.image_metadata['ramdisk_url']: + ramdisk_image_settings = openstack_tests.cirros_url_image( + name=self.os_image_settings.name+'_ramdisk', url=self.image_metadata['ramdisk_url']) + self.image_creators.append(OpenStackImage(self.os_creds, ramdisk_image_settings)) + ramdisk_image = self.image_creators[-1].create() + self.os_image_settings.extra_properties['ramdisk_id'] = ramdisk_image.id + + self.image_creators.append(OpenStackImage(self.os_creds, self.os_image_settings)) + self.image_creators[-1].create() # Create Network self.network_creator = OpenStackNetwork(self.os_creds, self.net_config.network_settings) @@ -761,7 +867,7 @@ class CreateInstancePortManipulationTests(OSIntegrationTestCase): # Create Flavor self.flavor_creator = OpenStackFlavor( self.admin_os_creds, - FlavorSettings(name=guid + '-flavor-name', ram=2048, disk=10, vcpus=2, metadata=self.flavor_metadata)) + FlavorSettings(name=guid + '-flavor-name', ram=128, disk=10, vcpus=2, metadata=self.flavor_metadata)) self.flavor_creator.create() except Exception as e: self.tearDown() @@ -789,9 +895,11 @@ class CreateInstancePortManipulationTests(OSIntegrationTestCase): except Exception as e: logger.error('Unexpected exception cleaning network with message - ' + e.message) - if self.image_creator: + if self.image_creators: try: - self.image_creator.clean() + while self.image_creators: + self.image_creators[-1].clean() + self.image_creators.pop() except Exception as e: logger.error('Unexpected exception cleaning image with message - ' + e.message) @@ -809,7 +917,8 @@ class CreateInstancePortManipulationTests(OSIntegrationTestCase): instance_settings = VmInstanceSettings( name=self.vm_inst_name, flavor=self.flavor_creator.flavor_settings.name, port_settings=[port_settings]) - self.inst_creator = OpenStackVmInstance(self.os_creds, instance_settings, self.image_creator.image_settings) + self.inst_creator = OpenStackVmInstance(self.os_creds, instance_settings, + self.image_creators[-1].image_settings) self.inst_creator.create() self.assertEquals(ip, self.inst_creator.get_port_ip( @@ -827,7 +936,8 @@ class CreateInstancePortManipulationTests(OSIntegrationTestCase): instance_settings = VmInstanceSettings( name=self.vm_inst_name, flavor=self.flavor_creator.flavor_settings.name, port_settings=[port_settings]) - self.inst_creator = OpenStackVmInstance(self.os_creds, instance_settings, self.image_creator.image_settings) + self.inst_creator = OpenStackVmInstance(self.os_creds, instance_settings, + self.image_creators[-1].image_settings) with self.assertRaises(Exception): self.inst_creator.create() @@ -843,7 +953,8 @@ class CreateInstancePortManipulationTests(OSIntegrationTestCase): instance_settings = VmInstanceSettings( name=self.vm_inst_name, flavor=self.flavor_creator.flavor_settings.name, port_settings=[port_settings]) - self.inst_creator = OpenStackVmInstance(self.os_creds, instance_settings, self.image_creator.image_settings) + self.inst_creator = OpenStackVmInstance(self.os_creds, instance_settings, + self.image_creators[-1].image_settings) self.inst_creator.create() self.assertEquals(mac_addr, self.inst_creator.get_port_mac(self.port_1_name)) @@ -860,7 +971,7 @@ class CreateInstancePortManipulationTests(OSIntegrationTestCase): name=self.vm_inst_name, flavor=self.flavor_creator.flavor_settings.name, port_settings=[port_settings]) self.inst_creator = OpenStackVmInstance( - self.os_creds, instance_settings, self.image_creator.image_settings) + self.os_creds, instance_settings, self.image_creators[-1].image_settings) with self.assertRaises(Exception): self.inst_creator.create() @@ -878,7 +989,8 @@ class CreateInstancePortManipulationTests(OSIntegrationTestCase): instance_settings = VmInstanceSettings( name=self.vm_inst_name, flavor=self.flavor_creator.flavor_settings.name, port_settings=[port_settings]) - self.inst_creator = OpenStackVmInstance(self.os_creds, instance_settings, self.image_creator.image_settings) + self.inst_creator = OpenStackVmInstance(self.os_creds, instance_settings, + self.image_creators[-1].image_settings) self.inst_creator.create() self.assertEquals(ip, self.inst_creator.get_port_ip( @@ -898,7 +1010,8 @@ class CreateInstancePortManipulationTests(OSIntegrationTestCase): instance_settings = VmInstanceSettings( name=self.vm_inst_name, flavor=self.flavor_creator.flavor_settings.name, port_settings=[port_settings]) - self.inst_creator = OpenStackVmInstance(self.os_creds, instance_settings, self.image_creator.image_settings) + self.inst_creator = OpenStackVmInstance(self.os_creds, instance_settings, + self.image_creators[-1].image_settings) self.inst_creator.create() port = self.inst_creator.get_port_by_name(port_settings.name) @@ -923,7 +1036,8 @@ class CreateInstancePortManipulationTests(OSIntegrationTestCase): instance_settings = VmInstanceSettings( name=self.vm_inst_name, flavor=self.flavor_creator.flavor_settings.name, port_settings=[port_settings]) - self.inst_creator = OpenStackVmInstance(self.os_creds, instance_settings, self.image_creator.image_settings) + self.inst_creator = OpenStackVmInstance(self.os_creds, instance_settings, + self.image_creators[-1].image_settings) with self.assertRaises(Exception): self.inst_creator.create() @@ -943,7 +1057,8 @@ class CreateInstancePortManipulationTests(OSIntegrationTestCase): instance_settings = VmInstanceSettings( name=self.vm_inst_name, flavor=self.flavor_creator.flavor_settings.name, port_settings=[port_settings]) - self.inst_creator = OpenStackVmInstance(self.os_creds, instance_settings, self.image_creator.image_settings) + self.inst_creator = OpenStackVmInstance(self.os_creds, instance_settings, + self.image_creators[-1].image_settings) with self.assertRaises(Exception): self.inst_creator.create() @@ -965,7 +1080,7 @@ class CreateInstanceOnComputeHost(OSIntegrationTestCase): self.port_base_name = guid + 'port' # Initialize for tearDown() - self.image_creator = None + self.image_creators = list() self.flavor_creator = None self.network_creator = None self.inst_creators = list() @@ -987,8 +1102,31 @@ class CreateInstanceOnComputeHost(OSIntegrationTestCase): self.flavor_creator.create() # Create Image - self.image_creator = OpenStackImage(self.admin_os_creds, self.os_image_settings) - self.image_creator.create() + # Set any custom parameters sent from the app + if self.image_metadata: + if 'disk_url' in self.image_metadata and self.image_metadata['disk_url']: + self.os_image_settings.url = self.image_metadata['disk_url'] + if 'extra_properties' in self.image_metadata and self.image_metadata['extra_properties']: + self.os_image_settings.extra_properties = self.image_metadata['extra_properties'] + + # If this is a 3-part image create the kernel and ramdisk images first + if self.image_metadata: + if 'kernel_url' in self.image_metadata and self.image_metadata['kernel_url']: + kernel_image_settings = openstack_tests.cirros_url_image( + name=self.os_image_settings.name+'_kernel', url=self.image_metadata['kernel_url']) + self.image_creators.append(OpenStackImage(self.os_creds, kernel_image_settings)) + kernel_image = self.image_creators[-1].create() + self.os_image_settings.extra_properties['kernel_id'] = kernel_image.id + + if 'ramdisk_url' in self.image_metadata and self.image_metadata['ramdisk_url']: + ramdisk_image_settings = openstack_tests.cirros_url_image( + name=self.os_image_settings.name+'_ramdisk', url=self.image_metadata['ramdisk_url']) + self.image_creators.append(OpenStackImage(self.os_creds, ramdisk_image_settings)) + ramdisk_image = self.image_creators[-1].create() + self.os_image_settings.extra_properties['ramdisk_id'] = ramdisk_image.id + + self.image_creators.append(OpenStackImage(self.os_creds, self.os_image_settings)) + self.image_creators[-1].create() except Exception as e: self.tearDown() @@ -1016,9 +1154,11 @@ class CreateInstanceOnComputeHost(OSIntegrationTestCase): except Exception as e: logger.error('Unexpected exception cleaning network with message - ' + e.message) - if self.image_creator: + if self.image_creators: try: - self.image_creator.clean() + while self.image_creators: + self.image_creators[-1].clean() + self.image_creators.pop() except Exception as e: logger.error('Unexpected exception cleaning image with message - ' + e.message) @@ -1044,7 +1184,7 @@ class CreateInstanceOnComputeHost(OSIntegrationTestCase): name=inst_name, flavor=self.flavor_creator.flavor_settings.name, availability_zone=zone, port_settings=[port_settings]) inst_creator = OpenStackVmInstance( - self.admin_os_creds, instance_settings, self.image_creator.image_settings) + self.admin_os_creds, instance_settings, self.image_creators[-1].image_settings) self.inst_creators.append(inst_creator) inst_creator.create() @@ -1074,7 +1214,7 @@ class CreateInstancePubPrivNetTests(OSIntegrationTestCase): super(self.__class__, self).__start__() # Initialize for tearDown() - self.image_creator = None + self.image_creators = list() self.network_creators = list() self.router_creators = list() self.flavor_creator = None @@ -1100,8 +1240,31 @@ class CreateInstancePubPrivNetTests(OSIntegrationTestCase): try: # Create Image - self.image_creator = OpenStackImage(self.os_creds, self.os_image_settings) - self.image_creator.create() + # Set any custom parameters sent from the app + if self.image_metadata: + if 'disk_url' in self.image_metadata and self.image_metadata['disk_url']: + self.os_image_settings.url = self.image_metadata['disk_url'] + if 'extra_properties' in self.image_metadata and self.image_metadata['extra_properties']: + self.os_image_settings.extra_properties = self.image_metadata['extra_properties'] + + # If this is a 3-part image create the kernel and ramdisk images first + if self.image_metadata: + if 'kernel_url' in self.image_metadata and self.image_metadata['kernel_url']: + kernel_image_settings = openstack_tests.cirros_url_image( + name=self.os_image_settings.name+'_kernel', url=self.image_metadata['kernel_url']) + self.image_creators.append(OpenStackImage(self.os_creds, kernel_image_settings)) + kernel_image = self.image_creators[-1].create() + self.os_image_settings.extra_properties['kernel_id'] = kernel_image.id + + if 'ramdisk_url' in self.image_metadata and self.image_metadata['ramdisk_url']: + ramdisk_image_settings = openstack_tests.cirros_url_image( + name=self.os_image_settings.name+'_ramdisk', url=self.image_metadata['ramdisk_url']) + self.image_creators.append(OpenStackImage(self.os_creds, ramdisk_image_settings)) + ramdisk_image = self.image_creators[-1].create() + self.os_image_settings.extra_properties['ramdisk_id'] = ramdisk_image.id + + self.image_creators.append(OpenStackImage(self.os_creds, self.os_image_settings)) + self.image_creators[-1].create() # First network is public self.network_creators.append(OpenStackNetwork(self.os_creds, self.pub_net_config.network_settings)) @@ -1120,7 +1283,7 @@ class CreateInstancePubPrivNetTests(OSIntegrationTestCase): # Create Flavor self.flavor_creator = OpenStackFlavor( self.admin_os_creds, - FlavorSettings(name=self.guid + '-flavor-name', ram=2048, disk=10, vcpus=2, + FlavorSettings(name=self.guid + '-flavor-name', ram=512, disk=10, vcpus=2, metadata=self.flavor_metadata)) self.flavor_creator.create() @@ -1174,9 +1337,11 @@ class CreateInstancePubPrivNetTests(OSIntegrationTestCase): except Exception as e: logger.error('Unexpected exception cleaning network with message - ' + e.message) - if self.image_creator: + if self.image_creators: try: - self.image_creator.clean() + while self.image_creators: + self.image_creators[-1].clean() + self.image_creators.pop() except Exception as e: logger.error('Unexpected exception cleaning image with message - ' + e.message) @@ -1208,7 +1373,7 @@ class CreateInstancePubPrivNetTests(OSIntegrationTestCase): router_name=self.pub_net_config.router_settings.name)]) self.inst_creator = OpenStackVmInstance( - self.os_creds, instance_settings, self.image_creator.image_settings, + self.os_creds, instance_settings, self.image_creators[-1].image_settings, keypair_settings=self.keypair_creator.keypair_settings) vm_inst = self.inst_creator.create(block=True) @@ -1255,7 +1420,7 @@ class InstanceSecurityGroupTests(OSIntegrationTestCase): router_name=self.guid + '-pub-router', external_net=self.ext_net_name) # Initialize for tearDown() - self.image_creator = None + self.image_creators = list() self.flavor_creator = None self.network_creator = None self.router_creator = None @@ -1264,8 +1429,31 @@ class InstanceSecurityGroupTests(OSIntegrationTestCase): try: # Create Image - self.image_creator = OpenStackImage(self.os_creds, self.os_image_settings) - self.image_creator.create() + # Set any custom parameters sent from the app + if self.image_metadata: + if 'disk_url' in self.image_metadata and self.image_metadata['disk_url']: + self.os_image_settings.url = self.image_metadata['disk_url'] + if 'extra_properties' in self.image_metadata and self.image_metadata['extra_properties']: + self.os_image_settings.extra_properties = self.image_metadata['extra_properties'] + + # If this is a 3-part image create the kernel and ramdisk images first + if self.image_metadata: + if 'kernel_url' in self.image_metadata and self.image_metadata['kernel_url']: + kernel_image_settings = openstack_tests.cirros_url_image( + name=self.os_image_settings.name+'_kernel', url=self.image_metadata['kernel_url']) + self.image_creators.append(OpenStackImage(self.os_creds, kernel_image_settings)) + kernel_image = self.image_creators[-1].create() + self.os_image_settings.extra_properties['kernel_id'] = kernel_image.id + + if 'ramdisk_url' in self.image_metadata and self.image_metadata['ramdisk_url']: + ramdisk_image_settings = openstack_tests.cirros_url_image( + name=self.os_image_settings.name+'_ramdisk', url=self.image_metadata['ramdisk_url']) + self.image_creators.append(OpenStackImage(self.os_creds, ramdisk_image_settings)) + ramdisk_image = self.image_creators[-1].create() + self.os_image_settings.extra_properties['ramdisk_id'] = ramdisk_image.id + + self.image_creators.append(OpenStackImage(self.os_creds, self.os_image_settings)) + self.image_creators[-1].create() # Create Network self.network_creator = OpenStackNetwork(self.os_creds, net_config.network_settings) @@ -1274,7 +1462,7 @@ class InstanceSecurityGroupTests(OSIntegrationTestCase): # Create Flavor self.flavor_creator = OpenStackFlavor( self.admin_os_creds, - FlavorSettings(name=self.guid + '-flavor-name', ram=2048, disk=10, vcpus=2, + FlavorSettings(name=self.guid + '-flavor-name', ram=128, disk=10, vcpus=2, metadata=self.flavor_metadata)) self.flavor_creator.create() @@ -1312,9 +1500,11 @@ class InstanceSecurityGroupTests(OSIntegrationTestCase): except Exception as e: logger.error('Unexpected exception cleaning network with message - ' + e.message) - if self.image_creator: + if self.image_creators: try: - self.image_creator.clean() + while self.image_creators: + self.image_creators[-1].clean() + self.image_creators.pop() except Exception as e: logger.error('Unexpected exception cleaning image with message - ' + e.message) @@ -1327,7 +1517,8 @@ class InstanceSecurityGroupTests(OSIntegrationTestCase): # Create instance instance_settings = VmInstanceSettings( name=self.vm_inst_name, flavor=self.flavor_creator.flavor_settings.name, port_settings=[self.port_settings]) - self.inst_creator = OpenStackVmInstance(self.os_creds, instance_settings, self.image_creator.image_settings) + self.inst_creator = OpenStackVmInstance(self.os_creds, instance_settings, + self.image_creators[-1].image_settings) vm_inst = self.inst_creator.create(block=True) self.assertIsNotNone(vm_inst) @@ -1353,7 +1544,8 @@ class InstanceSecurityGroupTests(OSIntegrationTestCase): # Create instance instance_settings = VmInstanceSettings( name=self.vm_inst_name, flavor=self.flavor_creator.flavor_settings.name, port_settings=[self.port_settings]) - self.inst_creator = OpenStackVmInstance(self.os_creds, instance_settings, self.image_creator.image_settings) + self.inst_creator = OpenStackVmInstance(self.os_creds, instance_settings, + self.image_creators[-1].image_settings) vm_inst = self.inst_creator.create(block=True) self.assertIsNotNone(vm_inst) @@ -1387,7 +1579,8 @@ class InstanceSecurityGroupTests(OSIntegrationTestCase): instance_settings = VmInstanceSettings( name=self.vm_inst_name, flavor=self.flavor_creator.flavor_settings.name, security_group_names=[sec_grp_settings.name], port_settings=[self.port_settings]) - self.inst_creator = OpenStackVmInstance(self.os_creds, instance_settings, self.image_creator.image_settings) + self.inst_creator = OpenStackVmInstance(self.os_creds, instance_settings, + self.image_creators[-1].image_settings) vm_inst = self.inst_creator.create(block=True) self.assertIsNotNone(vm_inst) @@ -1413,7 +1606,8 @@ class InstanceSecurityGroupTests(OSIntegrationTestCase): # Create instance instance_settings = VmInstanceSettings( name=self.vm_inst_name, flavor=self.flavor_creator.flavor_settings.name, port_settings=[self.port_settings]) - self.inst_creator = OpenStackVmInstance(self.os_creds, instance_settings, self.image_creator.image_settings) + self.inst_creator = OpenStackVmInstance(self.os_creds, instance_settings, + self.image_creators[-1].image_settings) vm_inst = self.inst_creator.create(block=True) self.assertIsNotNone(vm_inst) @@ -1440,7 +1634,8 @@ class InstanceSecurityGroupTests(OSIntegrationTestCase): instance_settings = VmInstanceSettings( name=self.vm_inst_name, flavor=self.flavor_creator.flavor_settings.name, security_group_names=[sec_grp_settings.name], port_settings=[self.port_settings]) - self.inst_creator = OpenStackVmInstance(self.os_creds, instance_settings, self.image_creator.image_settings) + self.inst_creator = OpenStackVmInstance(self.os_creds, instance_settings, + self.image_creators[-1].image_settings) vm_inst = self.inst_creator.create(block=True) self.assertIsNotNone(vm_inst) @@ -1524,10 +1719,21 @@ class CreateInstanceFromThreePartImage(OSIntegrationTestCase): try: # Create Images + # Set properties + properties = {} + if self.image_metadata: + if 'extra_properties' in self.image_metadata and self.image_metadata['extra_properties']: + properties = self.image_metadata['extra_properties'] + # Create the kernel image 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: + if 'kernel_url' in self.image_metadata and self.image_metadata['kernel_url']: + kernel_image_settings.url = self.image_metadata['kernel_url'] + self.image_creators.append(OpenStackImage(self.os_creds, kernel_image_settings)) kernel_image = self.image_creators[-1].create() @@ -1535,6 +1741,11 @@ class CreateInstanceFromThreePartImage(OSIntegrationTestCase): 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']: + ramdisk_image_settings.url = self.image_metadata['ramdisk_url'] + self.image_creators.append(OpenStackImage(self.os_creds, ramdisk_image_settings)) ramdisk_image = self.image_creators[-1].create() self.assertIsNotNone(ramdisk_image) @@ -1543,7 +1754,10 @@ class CreateInstanceFromThreePartImage(OSIntegrationTestCase): 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') - properties = dict() + 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'] + properties['kernel_id'] = kernel_image.id properties['ramdisk_id'] = ramdisk_image.id os_image_settings.extra_properties = properties @@ -1554,7 +1768,7 @@ class CreateInstanceFromThreePartImage(OSIntegrationTestCase): # Create Flavor self.flavor_creator = OpenStackFlavor( self.admin_os_creds, - FlavorSettings(name=guid + '-flavor-name', ram=2048, disk=10, vcpus=2, metadata=self.flavor_metadata)) + FlavorSettings(name=guid + '-flavor-name', ram=128, disk=10, vcpus=2, metadata=self.flavor_metadata)) self.flavor_creator.create() # Create Network @@ -1613,6 +1827,8 @@ class CreateInstanceFromThreePartImage(OSIntegrationTestCase): vm_inst = self.inst_creator.create() self.assertEquals(1, len(nova_utils.get_servers_by_name(self.nova, instance_settings.name))) + self.assertTrue(self.inst_creator.vm_active(block=True)) + # Delete instance nova_utils.delete_vm_instance(self.nova, vm_inst)