コード例 #1
0
 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("")
コード例 #2
0
 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("")
コード例 #3
0
 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({})
コード例 #4
0
ファイル: tempest.py プロジェクト: collivier/functest
 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)
コード例 #5
0
ファイル: conf_utils.py プロジェクト: cherubHM/functest
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)