def test_convert_ini_to_dict(self): self.assertEqual(functest_utils.convert_ini_to_dict(""), {}) self.assertEqual(functest_utils.convert_ini_to_dict("a:b"), {"a": "b"}) self.assertEqual(functest_utils.convert_ini_to_dict("a:b,c:d"), { "a": "b", "c": "d" }) self.assertEqual(functest_utils.convert_ini_to_dict("a:b:c,d:e:f"), { "a:b": "c", "d:e": "f" }) with self.assertRaises(AssertionError): functest_utils.convert_list_to_ini({})
def publish_image(self, name=None): """Publish image It allows publishing multiple images for the child testcases. It forces the same configuration for all subtestcases. Returns: image Raises: expection on error """ assert self.cloud extra_properties = self.extra_properties.copy() if env.get('IMAGE_PROPERTIES'): extra_properties.update( functest_utils.convert_ini_to_dict( env.get('IMAGE_PROPERTIES'))) extra_properties.update( getattr(config.CONF, '{}_extra_properties'.format( self.case_name), {})) image = self.cloud.create_image( name if name else '{}-img_{}'.format(self.case_name, self.guid), filename=getattr( config.CONF, '{}_image'.format(self.case_name), self.filename), meta=extra_properties, disk_format=getattr( config.CONF, '{}_image_format'.format(self.case_name), self.image_format), visibility=getattr( config.CONF, '{}_visibility'.format(self.case_name), self.visibility), wait=True) self.__logger.debug("image: %s", image) return image
def create_flavor_alt(self, name=None): """Create flavor It allows creating multiple alt flavors for the child testcases. It forces the same configuration for all subtestcases. Returns: flavor Raises: expection on error """ assert self.orig_cloud flavor = self.orig_cloud.create_flavor( name if name else '{}-flavor_alt_{}'.format( self.case_name, self.guid), getattr(config.CONF, '{}_flavor_alt_ram'.format(self.case_name), self.flavor_alt_ram), getattr(config.CONF, '{}_flavor_alt_vcpus'.format(self.case_name), self.flavor_alt_vcpus), getattr(config.CONF, '{}_flavor_alt_disk'.format(self.case_name), self.flavor_alt_disk)) self.__logger.debug("flavor: %s", flavor) flavor_alt_extra_specs = self.flavor_alt_extra_specs.copy() if env.get('FLAVOR_EXTRA_SPECS'): flavor_alt_extra_specs.update( functest_utils.convert_ini_to_dict( env.get('FLAVOR_EXTRA_SPECS'))) flavor_alt_extra_specs.update( getattr(config.CONF, '{}_flavor_alt_extra_specs'.format(self.case_name), {})) self.orig_cloud.set_flavor_specs( flavor.id, flavor_alt_extra_specs) return flavor
def update_scenario_section(self): """Update scenario section in tempest.conf""" rconfig = configparser.RawConfigParser() rconfig.read(self.conf_file) filename = getattr(config.CONF, '{}_image'.format(self.case_name), self.filename) if not rconfig.has_section('scenario'): rconfig.add_section('scenario') rconfig.set('scenario', 'img_file', os.path.basename(filename)) rconfig.set('scenario', 'img_dir', os.path.dirname(filename)) rconfig.set( 'scenario', 'img_disk_format', getattr(config.CONF, '{}_image_format'.format(self.case_name), self.image_format)) extra_properties = self.extra_properties.copy() if env.get('IMAGE_PROPERTIES'): extra_properties.update( functest_utils.convert_ini_to_dict( env.get('IMAGE_PROPERTIES'))) extra_properties.update( getattr(config.CONF, '{}_extra_properties'.format(self.case_name), {})) rconfig.set('scenario', 'img_properties', functest_utils.convert_dict_to_ini(extra_properties)) with open(self.conf_file, 'wb') as config_file: rconfig.write(config_file)