From: Cédric Ollivier Date: Wed, 5 Sep 2018 13:17:04 +0000 (+0200) Subject: Update scenario section in tempest.conf X-Git-Url: https://gerrit.opnfv.org/gerrit/gitweb?a=commitdiff_plain;h=6a8a15f5bd5ec8ef2163d9b25e6c1c935eca42aa;p=functest.git Update scenario section in tempest.conf It's required at least by Barbican tempest plugin. Change-Id: I46a65ee5fee044917c5375adaa8ebb529efe86ec Signed-off-by: Cédric Ollivier (cherry picked from commit 9ec639526ed32d4b05168627c5c016fb66b7d008) --- diff --git a/functest/opnfv_tests/openstack/tempest/conf_utils.py b/functest/opnfv_tests/openstack/tempest/conf_utils.py index 56c36a5c7..7034792d2 100644 --- a/functest/opnfv_tests/openstack/tempest/conf_utils.py +++ b/functest/opnfv_tests/openstack/tempest/conf_utils.py @@ -19,6 +19,7 @@ import os import subprocess import pkg_resources +import six from six.moves import configparser import yaml @@ -209,7 +210,9 @@ def configure_tempest_update_params( else: auth_version = 'v2' if env.get("NEW_USER_ROLE").lower() != "member": - rconfig.set('auth', 'tempest_roles', env.get("NEW_USER_ROLE")) + rconfig.set( + 'auth', 'tempest_roles', + 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( @@ -261,3 +264,16 @@ def configure_verifier(deployment_dir): % tempest_conf_file) else: return tempest_conf_file + + +def convert_dict_to_ini(value): + "Convert dict to oslo.conf input" + assert isinstance(value, dict) + return ",".join("{}={}".format( + key, val) for (key, val) in six.iteritems(value)) + + +def convert_list_to_ini(value): + "Convert list to oslo.conf input" + assert isinstance(value, list) + return ",".join("{}".format(val) for val in value) diff --git a/functest/opnfv_tests/openstack/tempest/tempest.py b/functest/opnfv_tests/openstack/tempest/tempest.py index 9b4a48287..6692a6e10 100644 --- a/functest/opnfv_tests/openstack/tempest/tempest.py +++ b/functest/opnfv_tests/openstack/tempest/tempest.py @@ -299,6 +299,29 @@ class TempestCommon(singlevm.VmReady2): with open(rally_conf, 'wb') as config_file: rconfig.write(config_file) + 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() + extra_properties.update( + getattr(config.CONF, '{}_extra_properties'.format( + self.case_name), {})) + rconfig.set( + 'scenario', 'img_properties', + conf_utils.convert_dict_to_ini(extra_properties)) + with open(self.conf_file, 'wb') as config_file: + rconfig.write(config_file) + def configure(self, **kwargs): # pylint: disable=unused-argument """ Create all openstack resources for tempest-based testcases and write @@ -321,6 +344,7 @@ class TempestCommon(singlevm.VmReady2): image_alt_id=self.image_alt.id, flavor_alt_id=self.flavor_alt.id, domain_name=self.cloud.auth.get("project_domain_name", "Default")) + self.update_scenario_section() self.backup_tempest_config(self.conf_file, self.res_dir) def run(self, **kwargs): diff --git a/functest/tests/unit/openstack/tempest/test_conf_utils.py b/functest/tests/unit/openstack/tempest/test_conf_utils.py index 7d94b88cc..7c493372f 100644 --- a/functest/tests/unit/openstack/tempest/test_conf_utils.py +++ b/functest/tests/unit/openstack/tempest/test_conf_utils.py @@ -182,6 +182,26 @@ class OSTempestConfUtilsTesting(unittest.TestCase): ['rally', 'verify', 'configure-verifier', '--reconfigure', '--id', str(getattr(config.CONF, 'tempest_verifier_name'))]) + def test_convert_dict_to_ini(self): + self.assertEqual( + conf_utils.convert_dict_to_ini({}), "") + self.assertEqual( + conf_utils.convert_dict_to_ini({"a": "b"}), "a=b") + value = conf_utils.convert_dict_to_ini({"a": "b", "c": "d"}) + self.assertTrue(value == "a=b,c=d" or value == "c=d,a=b") + with self.assertRaises(AssertionError): + conf_utils.convert_list_to_ini("") + + def test_convert_list_to_ini(self): + self.assertEqual( + conf_utils.convert_list_to_ini([]), "") + self.assertEqual( + conf_utils.convert_list_to_ini(["a"]), "a") + self.assertEqual( + conf_utils.convert_list_to_ini(["a", "b"]), "a,b") + with self.assertRaises(AssertionError): + conf_utils.convert_list_to_ini("") + if __name__ == "__main__": logging.disable(logging.CRITICAL)