diff options
Diffstat (limited to 'functest/opnfv_tests/openstack/tempest')
-rw-r--r-- | functest/opnfv_tests/openstack/tempest/conf_utils.py | 54 | ||||
-rw-r--r-- | functest/opnfv_tests/openstack/tempest/tempest.py | 38 |
2 files changed, 57 insertions, 35 deletions
diff --git a/functest/opnfv_tests/openstack/tempest/conf_utils.py b/functest/opnfv_tests/openstack/tempest/conf_utils.py index 80f78e979..fc36a72ed 100644 --- a/functest/opnfv_tests/openstack/tempest/conf_utils.py +++ b/functest/opnfv_tests/openstack/tempest/conf_utils.py @@ -81,6 +81,7 @@ def create_rally_deployment(environ=None): cmd = ['rally', 'deployment', 'check'] output = subprocess.check_output(cmd) LOGGER.info("%s\n%s", " ".join(cmd), output) + return get_verifier_deployment_id() def create_verifier(): @@ -101,6 +102,7 @@ def create_verifier(): '--type', 'tempest', '--system-wide'] output = subprocess.check_output(cmd) LOGGER.info("%s\n%s", " ".join(cmd), output) + return get_verifier_id() def get_verifier_id(): @@ -114,9 +116,6 @@ def get_verifier_id(): stdout=subprocess.PIPE, stderr=subprocess.STDOUT) verifier_uuid = proc.stdout.readline().rstrip() - if verifier_uuid == "": - LOGGER.error("Tempest verifier not found.") - raise Exception('Error with command:%s' % cmd) return verifier_uuid @@ -131,9 +130,6 @@ def get_verifier_deployment_id(): stdout=subprocess.PIPE, stderr=subprocess.STDOUT) deployment_uuid = proc.stdout.readline().rstrip() - if deployment_uuid == "": - LOGGER.error("Rally deployment not found.") - raise Exception('Error with command:%s' % cmd) return deployment_uuid @@ -175,17 +171,17 @@ def update_tempest_conf_file(conf_file, rconfig): def configure_tempest_update_params( - tempest_conf_file, network_name=None, image_id=None, flavor_id=None, + tempest_conf_file, image_id=None, flavor_id=None, compute_cnt=1, image_alt_id=None, flavor_alt_id=None, - domain_name="Default"): - # pylint: disable=too-many-branches, too-many-arguments + 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', 'fixed_network_name', network_name) rconfig.set('compute', 'volume_device_name', env.get('VOLUME_DEVICE_NAME')) if image_id is not None: rconfig.set('compute', 'image_ref', image_id) @@ -200,16 +196,14 @@ def configure_tempest_update_params( rconfig.set('compute', 'min_compute_nodes', compute_cnt) rconfig.set('compute-feature-enabled', 'live_migration', True) rconfig.set('compute-feature-enabled', 'shelve', False) + filters = ['RetryFilter', 'AvailabilityZoneFilter', 'ComputeFilter', + 'ComputeCapabilitiesFilter', 'ImagePropertiesFilter', + 'ServerGroupAntiAffinityFilter', 'ServerGroupAffinityFilter'] + rconfig.set( + 'compute-feature-enabled', 'scheduler_available_filters', + convert_list_to_ini(filters)) if os.environ.get('OS_REGION_NAME'): rconfig.set('identity', 'region', os.environ.get('OS_REGION_NAME')) - identity_api_version = os.environ.get("OS_IDENTITY_API_VERSION", '3') - rconfig.set('auth', 'admin_domain_scope', True) - rconfig.set('auth', 'default_credentials_domain_name', domain_name) - if identity_api_version == '3': - auth_version = 'v3' - rconfig.set('identity-feature-enabled', 'api_v2', False) - else: - auth_version = 'v2' if env.get("NEW_USER_ROLE").lower() != "member": rconfig.set( 'auth', 'tempest_roles', @@ -221,13 +215,25 @@ def configure_tempest_update_params( 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', auth_version) + 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) + rconfig.set('identity-feature-enabled', 'api_v2', False) + rconfig.set('identity-feature-enabled', 'api_v2_admin', False) + 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')) - + if not rconfig.has_section('volume'): + rconfig.add_section('volume') + rconfig.set('volume', 'storage_protocol', env.get('STORAGE_PROTOCOL')) rconfig.set( 'identity', 'v3_endpoint_type', os.environ.get('OS_INTERFACE', 'public')) @@ -261,16 +267,14 @@ def configure_verifier(deployment_dir): if not os.path.isfile(tempest_conf_file): LOGGER.error("Tempest configuration file %s NOT found.", tempest_conf_file) - raise Exception("Tempest configuration file %s NOT found." - % tempest_conf_file) - else: - return tempest_conf_file + return None + return tempest_conf_file def convert_dict_to_ini(value): "Convert dict to oslo.conf input" assert isinstance(value, dict) - return ",".join("{}={}".format( + return ",".join("{}:{}".format( key, val) for (key, val) in six.iteritems(value)) diff --git a/functest/opnfv_tests/openstack/tempest/tempest.py b/functest/opnfv_tests/openstack/tempest/tempest.py index ddd0d640d..4c5308bdf 100644 --- a/functest/opnfv_tests/openstack/tempest/tempest.py +++ b/functest/opnfv_tests/openstack/tempest/tempest.py @@ -36,7 +36,6 @@ class TempestCommon(singlevm.VmReady2): """TempestCommon testcases implementation class.""" visibility = 'public' - shared_network = True filename_alt = '/home/opnfv/functest/images/cirros-0.4.0-x86_64-disk.img' def __init__(self, **kwargs): @@ -47,27 +46,38 @@ class TempestCommon(singlevm.VmReady2): assert self.cloud assert self.project if self.orig_cloud.get_role("admin"): - role_name = "admin" + self.role_name = "admin" elif self.orig_cloud.get_role("Admin"): - role_name = "Admin" + self.role_name = "Admin" else: raise Exception("Cannot detect neither admin nor Admin") self.orig_cloud.grant_role( - role_name, user=self.project.user.id, + self.role_name, user=self.project.user.id, project=self.project.project.id, domain=self.project.domain.id) + self.orig_cloud.grant_role( + self.role_name, user=self.project.user.id, + domain=self.project.domain.id) environ = dict( os.environ, OS_USERNAME=self.project.user.name, OS_PROJECT_NAME=self.project.project.name, OS_PROJECT_ID=self.project.project.id, OS_PASSWORD=self.project.password) - conf_utils.create_rally_deployment(environ=environ) - conf_utils.create_verifier() - self.verifier_id = conf_utils.get_verifier_id() + try: + del environ['OS_TENANT_NAME'] + del environ['OS_TENANT_ID'] + except Exception: # pylint: disable=broad-except + pass + self.deployment_id = conf_utils.create_rally_deployment( + environ=environ) + if not self.deployment_id: + raise Exception("Deployment create failed") + self.verifier_id = conf_utils.create_verifier() + if not self.verifier_id: + raise Exception("Verifier create failed") self.verifier_repo_dir = conf_utils.get_verifier_repo_dir( self.verifier_id) - self.deployment_id = conf_utils.get_verifier_deployment_id() self.deployment_dir = conf_utils.get_verifier_deployment_dir( self.verifier_id, self.deployment_id) self.verification_id = None @@ -90,6 +100,9 @@ class TempestCommon(singlevm.VmReady2): except Exception: # pylint: disable=broad-except pass + def create_network_resources(self): + pass + def check_services(self): """Check the mandatory services.""" for service in self.services: @@ -112,6 +125,8 @@ class TempestCommon(singlevm.VmReady2): def check_requirements(self): self.check_services() self.check_extensions() + if self.is_skipped: + self.project.clean() @staticmethod def read_file(filename): @@ -394,14 +409,17 @@ class TempestCommon(singlevm.VmReady2): LOGGER.debug("flavor: %s", self.flavor_alt) self.conf_file = conf_utils.configure_verifier(self.deployment_dir) + if not self.conf_file: + raise Exception("Tempest verifier configuring failed") conf_utils.configure_tempest_update_params( - self.conf_file, network_name=self.network.name, + self.conf_file, image_id=self.image.id, flavor_id=self.flavor.id, compute_cnt=compute_cnt, image_alt_id=self.image_alt.id, flavor_alt_id=self.flavor_alt.id, - domain_name=self.cloud.auth.get("project_domain_name", "Default")) + admin_role_name=self.role_name, cidr=self.cidr, + domain_id=self.project.domain.id) self.update_scenario_section() self.backup_tempest_config(self.conf_file, self.res_dir) |