def test_convert_dict_to_ini(self): self.assertEqual(functest_utils.convert_dict_to_ini({}), "") self.assertEqual(functest_utils.convert_dict_to_ini({"a": "b"}), "a:b") value = functest_utils.convert_dict_to_ini({"a": "b", "c": "d"}) self.assertTrue(value in ('a:b,c:d', 'c:d,a:b')) with self.assertRaises(AssertionError): functest_utils.convert_list_to_ini("")
def test_convert_list_to_ini(self): self.assertEqual( functest_utils.convert_list_to_ini([]), "") self.assertEqual( functest_utils.convert_list_to_ini(["a"]), "a") self.assertEqual( functest_utils.convert_list_to_ini(["a", "b"]), "a,b") with self.assertRaises(AssertionError): functest_utils.convert_list_to_ini("")
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 update_auth_section(self): """Update auth section in tempest.conf""" rconfig = configparser.RawConfigParser() rconfig.read(self.conf_file) if not rconfig.has_section("auth"): rconfig.add_section("auth") if env.get("NEW_USER_ROLE").lower() != "member": tempest_roles = [] if rconfig.has_option("auth", "tempest_roles"): tempest_roles = functest_utils.convert_ini_to_list( rconfig.get("auth", "tempest_roles")) rconfig.set( 'auth', 'tempest_roles', functest_utils.convert_list_to_ini( [env.get("NEW_USER_ROLE")] + tempest_roles)) if not json.loads(env.get("USE_DYNAMIC_CREDENTIALS").lower()): rconfig.set('auth', 'use_dynamic_credentials', False) account_file = os.path.join( getattr(config.CONF, 'dir_functest_data'), 'accounts.yaml') assert os.path.exists( account_file), "{} doesn't exist".format(account_file) rconfig.set('auth', 'test_accounts_file', account_file) if env.get('NO_TENANT_NETWORK').lower() == 'true': rconfig.set('auth', 'create_isolated_networks', False) with open(self.conf_file, 'w') as config_file: rconfig.write(config_file)
def configure_tempest_update_params(tempest_conf_file, image_id=None, flavor_id=None, compute_cnt=1, image_alt_id=None, flavor_alt_id=None, admin_role_name='admin', cidr='192.168.120.0/24', domain_id='default'): # pylint: disable=too-many-branches,too-many-arguments,too-many-statements """ Add/update needed parameters into tempest.conf file """ LOGGER.debug("Updating selected tempest.conf parameters...") rconfig = configparser.RawConfigParser() rconfig.read(tempest_conf_file) rconfig.set('compute', 'volume_device_name', env.get('VOLUME_DEVICE_NAME')) if image_id is not None: rconfig.set('compute', 'image_ref', image_id) if image_alt_id is not None: rconfig.set('compute', 'image_ref_alt', image_alt_id) if flavor_id is not None: rconfig.set('compute', 'flavor_ref', flavor_id) if flavor_alt_id is not None: rconfig.set('compute', 'flavor_ref_alt', flavor_alt_id) if compute_cnt > 1: # enable multinode tests rconfig.set('compute', 'min_compute_nodes', compute_cnt) rconfig.set('compute-feature-enabled', 'live_migration', True) filters = [ 'RetryFilter', 'AvailabilityZoneFilter', 'ComputeFilter', 'ComputeCapabilitiesFilter', 'ImagePropertiesFilter', 'ServerGroupAntiAffinityFilter', 'ServerGroupAffinityFilter' ] rconfig.set('compute-feature-enabled', 'scheduler_available_filters', functest_utils.convert_list_to_ini(filters)) if os.environ.get('OS_REGION_NAME'): rconfig.set('identity', 'region', os.environ.get('OS_REGION_NAME')) if env.get("NEW_USER_ROLE").lower() != "member": rconfig.set( 'auth', 'tempest_roles', functest_utils.convert_list_to_ini([env.get("NEW_USER_ROLE")])) if not json.loads(env.get("USE_DYNAMIC_CREDENTIALS").lower()): rconfig.set('auth', 'use_dynamic_credentials', False) account_file = os.path.join(getattr(config.CONF, 'dir_functest_data'), 'accounts.yaml') assert os.path.exists(account_file), "{} doesn't exist".format( account_file) rconfig.set('auth', 'test_accounts_file', account_file) rconfig.set('identity', 'auth_version', 'v3') rconfig.set('identity', 'admin_role', admin_role_name) rconfig.set('identity', 'admin_domain_scope', True) rconfig.set('identity', 'default_domain_id', domain_id) if not rconfig.has_section('network'): rconfig.add_section('network') rconfig.set('network', 'default_network', cidr) rconfig.set('network', 'project_network_cidr', cidr) rconfig.set('network', 'project_networks_reachable', False) rconfig.set('validation', 'ssh_timeout', getattr(config.CONF, 'tempest_validation_ssh_timeout')) rconfig.set('object-storage', 'operator_role', getattr(config.CONF, 'tempest_object_storage_operator_role')) rconfig.set('identity', 'v3_endpoint_type', os.environ.get('OS_INTERFACE', 'public')) sections = rconfig.sections() services_list = [ 'compute', 'volume', 'image', 'network', 'data-processing', 'object-storage', 'orchestration' ] for service in services_list: if service not in sections: rconfig.add_section(service) rconfig.set(service, 'endpoint_type', os.environ.get('OS_INTERFACE', 'public')) LOGGER.debug('Add/Update required params defined in tempest_conf.yaml ' 'into tempest.conf file') update_tempest_conf_file(tempest_conf_file, rconfig)