From 9f7c63ffaf64b3ca81ae86a0b3477e5007916fcd Mon Sep 17 00:00:00 2001 From: Cédric Ollivier Date: Thu, 22 Feb 2018 17:43:35 +0100 Subject: Switch from CONST to CONF MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit It also removes constants.CONST and env.Environment which are now useless. Depends-On: I764a0a2a24447c941d1e726f3116593b29dd1c1e Depends-On: I6cfa832466dcefd737314633d807512e46267a69 Change-Id: Ife41c59d9f2e6ec4e49df38af962039f99554bc5 Signed-off-by: Cédric Ollivier --- functest/opnfv_tests/openstack/rally/rally.py | 42 +++---- .../openstack/snaps/snaps_test_runner.py | 15 +-- .../opnfv_tests/openstack/snaps/snaps_utils.py | 5 +- .../opnfv_tests/openstack/tempest/conf_utils.py | 128 +++++++++++---------- functest/opnfv_tests/openstack/tempest/tempest.py | 50 ++++---- functest/opnfv_tests/openstack/vping/vping_base.py | 49 ++++---- functest/opnfv_tests/openstack/vping/vping_ssh.py | 12 +- functest/opnfv_tests/sdn/odl/odl.py | 6 +- functest/opnfv_tests/vnf/epc/juju_epc.py | 14 +-- .../opnfv_tests/vnf/ims/clearwater_ims_base.py | 8 +- functest/opnfv_tests/vnf/ims/cloudify_ims.py | 4 +- functest/opnfv_tests/vnf/ims/cloudify_ims_perf.py | 4 +- .../opnfv_tests/vnf/ims/orchestra_clearwaterims.py | 8 +- functest/opnfv_tests/vnf/ims/orchestra_openims.py | 17 ++- .../opnfv_tests/vnf/router/cloudify_vrouter.py | 4 +- functest/opnfv_tests/vnf/router/utilvnf.py | 6 +- functest/opnfv_tests/vnf/router/vrouter_base.py | 6 +- 17 files changed, 197 insertions(+), 181 deletions(-) (limited to 'functest/opnfv_tests') diff --git a/functest/opnfv_tests/openstack/rally/rally.py b/functest/opnfv_tests/openstack/rally/rally.py index add0f2437..b2213c941 100644 --- a/functest/opnfv_tests/openstack/rally/rally.py +++ b/functest/opnfv_tests/openstack/rally/rally.py @@ -28,7 +28,7 @@ from functest.core import testcase from functest.energy import energy from functest.opnfv_tests.openstack.snaps import snaps_utils from functest.opnfv_tests.openstack.tempest import conf_utils -from functest.utils.constants import CONST +from functest.utils import config from functest.utils import env from snaps.config.flavor import FlavorConfig @@ -48,19 +48,19 @@ class RallyBase(testcase.TestCase): # pylint: disable=too-many-instance-attributes TESTS = ['authenticate', 'glance', 'ceilometer', 'cinder', 'heat', 'keystone', 'neutron', 'nova', 'quotas', 'vm', 'all'] - GLANCE_IMAGE_NAME = getattr(CONST, 'openstack_image_name') - GLANCE_IMAGE_FILENAME = getattr(CONST, 'openstack_image_file_name') - GLANCE_IMAGE_PATH = os.path.join(getattr(CONST, 'dir_functest_images'), - GLANCE_IMAGE_FILENAME) - GLANCE_IMAGE_FORMAT = getattr(CONST, 'openstack_image_disk_format') - GLANCE_IMAGE_USERNAME = getattr(CONST, 'openstack_image_username') - GLANCE_IMAGE_EXTRA_PROPERTIES = getattr(CONST, - 'openstack_extra_properties', {}) - FLAVOR_NAME = getattr(CONST, 'rally_flavor_name') - FLAVOR_ALT_NAME = getattr(CONST, 'rally_flavor_alt_name') + GLANCE_IMAGE_NAME = getattr(config.CONF, 'openstack_image_name') + GLANCE_IMAGE_FILENAME = getattr(config.CONF, 'openstack_image_file_name') + GLANCE_IMAGE_PATH = os.path.join(getattr( + config.CONF, 'dir_functest_images'), GLANCE_IMAGE_FILENAME) + GLANCE_IMAGE_FORMAT = getattr(config.CONF, 'openstack_image_disk_format') + GLANCE_IMAGE_USERNAME = getattr(config.CONF, 'openstack_image_username') + GLANCE_IMAGE_EXTRA_PROPERTIES = getattr( + config.CONF, 'openstack_extra_properties', {}) + FLAVOR_NAME = getattr(config.CONF, 'rally_flavor_name') + FLAVOR_ALT_NAME = getattr(config.CONF, 'rally_flavor_alt_name') FLAVOR_RAM = 512 FLAVOR_RAM_ALT = 1024 - FLAVOR_EXTRA_SPECS = getattr(CONST, 'flavor_extra_specs', None) + FLAVOR_EXTRA_SPECS = getattr(config.CONF, 'flavor_extra_specs', None) if FLAVOR_EXTRA_SPECS: FLAVOR_RAM = 1024 FLAVOR_RAM_ALT = 2048 @@ -77,14 +77,14 @@ class RallyBase(testcase.TestCase): TENANTS_AMOUNT = 3 ITERATIONS_AMOUNT = 10 CONCURRENCY = 4 - RESULTS_DIR = os.path.join(getattr(CONST, 'dir_results'), 'rally') + RESULTS_DIR = os.path.join(getattr(config.CONF, 'dir_results'), 'rally') BLACKLIST_FILE = os.path.join(RALLY_DIR, "blacklist.txt") TEMP_DIR = os.path.join(RALLY_DIR, "var") - RALLY_PRIVATE_NET_NAME = getattr(CONST, 'rally_network_name') - RALLY_PRIVATE_SUBNET_NAME = getattr(CONST, 'rally_subnet_name') - RALLY_PRIVATE_SUBNET_CIDR = getattr(CONST, 'rally_subnet_cidr') - RALLY_ROUTER_NAME = getattr(CONST, 'rally_router_name') + RALLY_PRIVATE_NET_NAME = getattr(config.CONF, 'rally_network_name') + RALLY_PRIVATE_SUBNET_NAME = getattr(config.CONF, 'rally_subnet_name') + RALLY_PRIVATE_SUBNET_CIDR = getattr(config.CONF, 'rally_subnet_cidr') + RALLY_ROUTER_NAME = getattr(config.CONF, 'rally_router_name') def __init__(self, **kwargs): """Initialize RallyBase object.""" @@ -451,9 +451,11 @@ class RallyBase(testcase.TestCase): LOGGER.debug("Creating network '%s'...", network_name) - rally_network_type = getattr(CONST, 'rally_network_type', None) - rally_physical_network = getattr(CONST, 'rally_physical_network', None) - rally_segmentation_id = getattr(CONST, 'rally_segmentation_id', None) + rally_network_type = getattr(config.CONF, 'rally_network_type', None) + rally_physical_network = getattr( + config.CONF, 'rally_physical_network', None) + rally_segmentation_id = getattr( + config.CONF, 'rally_segmentation_id', None) network_creator = deploy_utils.create_network( self.os_creds, NetworkConfig( diff --git a/functest/opnfv_tests/openstack/snaps/snaps_test_runner.py b/functest/opnfv_tests/openstack/snaps/snaps_test_runner.py index 34d56f70a..4de443718 100644 --- a/functest/opnfv_tests/openstack/snaps/snaps_test_runner.py +++ b/functest/opnfv_tests/openstack/snaps/snaps_test_runner.py @@ -14,7 +14,7 @@ import logging from functest.core import unit from functest.opnfv_tests.openstack.snaps import snaps_utils -from functest.utils.constants import CONST +from functest.utils import config from functest.utils import env from snaps.openstack import create_flavor @@ -37,13 +37,14 @@ class SnapsTestRunner(unit.Suite): self.ext_net_name = snaps_utils.get_ext_net_name(self.os_creds) self.netconf_override = None - if hasattr(CONST, 'snaps_network_config'): - self.netconf_override = getattr(CONST, 'snaps_network_config') + if hasattr(config.CONF, 'snaps_network_config'): + self.netconf_override = getattr( + config.CONF, 'snaps_network_config') self.use_fip = ( - getattr(CONST, 'snaps_use_floating_ips') == 'True') + getattr(config.CONF, 'snaps_use_floating_ips') == 'True') self.use_keystone = ( - getattr(CONST, 'snaps_use_keystone') == 'True') + getattr(config.CONF, 'snaps_use_keystone') == 'True') scenario = env.get('DEPLOY_SCENARIO') self.flavor_metadata = None @@ -53,5 +54,5 @@ class SnapsTestRunner(unit.Suite): self.logger.info("Using flavor metadata '%s'", self.flavor_metadata) self.image_metadata = None - if hasattr(CONST, 'snaps_images'): - self.image_metadata = getattr(CONST, 'snaps_images') + if hasattr(config.CONF, 'snaps_images'): + self.image_metadata = getattr(config.CONF, 'snaps_images') diff --git a/functest/opnfv_tests/openstack/snaps/snaps_utils.py b/functest/opnfv_tests/openstack/snaps/snaps_utils.py index fc03ee9bd..fa1005ea8 100644 --- a/functest/opnfv_tests/openstack/snaps/snaps_utils.py +++ b/functest/opnfv_tests/openstack/snaps/snaps_utils.py @@ -9,6 +9,7 @@ """Some common utils wrapping snaps functions """ +from functest.utils import config from functest.utils import constants from functest.utils import env @@ -52,8 +53,8 @@ def get_credentials(proxy_settings_str=None, ssh_proxy_cmd=None): :return: an instance of snaps OSCreds object """ creds_override = None - if hasattr(constants.CONST, 'snaps_os_creds_override'): - creds_override = getattr(constants.CONST, 'snaps_os_creds_override') + if hasattr(config.CONF, 'snaps_os_creds_override'): + creds_override = getattr(config.CONF, 'snaps_os_creds_override') os_creds = openstack_tests.get_credentials( os_env_file=constants.ENV_FILE, proxy_settings_str=proxy_settings_str, ssh_proxy_cmd=ssh_proxy_cmd, overrides=creds_override) diff --git a/functest/opnfv_tests/openstack/tempest/conf_utils.py b/functest/opnfv_tests/openstack/tempest/conf_utils.py index 875939ecc..4fe05e46b 100644 --- a/functest/opnfv_tests/openstack/tempest/conf_utils.py +++ b/functest/opnfv_tests/openstack/tempest/conf_utils.py @@ -20,7 +20,7 @@ import subprocess import pkg_resources import yaml -from functest.utils.constants import CONST +from functest.utils import config from functest.utils import env import functest.utils.functest_utils as ft_utils @@ -31,9 +31,10 @@ RALLY_CONF_PATH = "/etc/rally/rally.conf" RALLY_AARCH64_PATCH_PATH = pkg_resources.resource_filename( 'functest', 'ci/rally_aarch64_patch.conf') GLANCE_IMAGE_PATH = os.path.join( - getattr(CONST, 'dir_functest_images'), - getattr(CONST, 'openstack_image_file_name')) -TEMPEST_RESULTS_DIR = os.path.join(getattr(CONST, 'dir_results'), 'tempest') + getattr(config.CONF, 'dir_functest_images'), + getattr(config.CONF, 'openstack_image_file_name')) +TEMPEST_RESULTS_DIR = os.path.join( + getattr(config.CONF, 'dir_results'), 'tempest') TEMPEST_CUSTOM = pkg_resources.resource_filename( 'functest', 'opnfv_tests/openstack/tempest/custom_tests/test_list.txt') TEMPEST_BLACKLIST = pkg_resources.resource_filename( @@ -43,7 +44,8 @@ TEMPEST_DEFCORE = pkg_resources.resource_filename( 'opnfv_tests/openstack/tempest/custom_tests/defcore_req.txt') TEMPEST_RAW_LIST = os.path.join(TEMPEST_RESULTS_DIR, 'test_raw_list.txt') TEMPEST_LIST = os.path.join(TEMPEST_RESULTS_DIR, 'test_list.txt') -REFSTACK_RESULTS_DIR = os.path.join(getattr(CONST, 'dir_results'), 'refstack') +REFSTACK_RESULTS_DIR = os.path.join( + getattr(config.CONF, 'dir_results'), 'refstack') TEMPEST_CONF_YAML = pkg_resources.resource_filename( 'functest', 'opnfv_tests/openstack/tempest/custom_tests/tempest_conf.yaml') TEST_ACCOUNTS_FILE = pkg_resources.resource_filename( @@ -77,11 +79,10 @@ def create_rally_deployment(): cmd = "rally deployment destroy opnfv-rally" ft_utils.execute_command(cmd, error_msg=( "Deployment %s does not exist." - % getattr(CONST, 'rally_deployment_name')), - verbose=False) + % getattr(config.CONF, 'rally_deployment_name')), verbose=False) cmd = ("rally deployment create --fromenv --name={0}" - .format(getattr(CONST, 'rally_deployment_name'))) + .format(getattr(config.CONF, 'rally_deployment_name'))) error_msg = "Problem while creating Rally deployment" ft_utils.execute_command_raise(cmd, error_msg=error_msg) @@ -94,15 +95,15 @@ def create_verifier(): """Create new verifier""" LOGGER.info("Create verifier from existing repo...") cmd = ("rally verify delete-verifier --id '{0}' --force").format( - getattr(CONST, 'tempest_verifier_name')) + getattr(config.CONF, 'tempest_verifier_name')) ft_utils.execute_command(cmd, error_msg=( "Verifier %s does not exist." - % getattr(CONST, 'tempest_verifier_name')), + % getattr(config.CONF, 'tempest_verifier_name')), verbose=False) cmd = ("rally verify create-verifier --source {0} " "--name {1} --type tempest --system-wide" - .format(getattr(CONST, 'dir_repo_tempest'), - getattr(CONST, 'tempest_verifier_name'))) + .format(getattr(config.CONF, 'dir_repo_tempest'), + getattr(config.CONF, 'tempest_verifier_name'))) ft_utils.execute_command_raise(cmd, error_msg='Problem while creating verifier') @@ -114,7 +115,7 @@ def get_verifier_id(): create_rally_deployment() create_verifier() cmd = ("rally verify list-verifiers | awk '/" + - getattr(CONST, 'tempest_verifier_name') + + getattr(config.CONF, 'tempest_verifier_name') + "/ {print $2}'") proc = subprocess.Popen(cmd, shell=True, stdout=subprocess.PIPE, @@ -131,7 +132,7 @@ def get_verifier_deployment_id(): Returns deployment id for active Rally deployment """ cmd = ("rally deployment list | awk '/" + - getattr(CONST, 'rally_deployment_name') + + getattr(config.CONF, 'rally_deployment_name') + "/ {print $2}'") proc = subprocess.Popen(cmd, shell=True, stdout=subprocess.PIPE, @@ -150,7 +151,7 @@ def get_verifier_repo_dir(verifier_id): if not verifier_id: verifier_id = get_verifier_id() - return os.path.join(getattr(CONST, 'dir_rally_inst'), + return os.path.join(getattr(config.CONF, 'dir_rally_inst'), 'verification', 'verifier-{}'.format(verifier_id), 'repo') @@ -166,7 +167,7 @@ def get_verifier_deployment_dir(verifier_id, deployment_id): if not deployment_id: deployment_id = get_verifier_deployment_id() - return os.path.join(getattr(CONST, 'dir_rally_inst'), + return os.path.join(getattr(config.CONF, 'dir_rally_inst'), 'verification', 'verifier-{}'.format(verifier_id), 'for-deployment-{}'.format(deployment_id)) @@ -205,22 +206,22 @@ def configure_tempest_defcore(deployment_dir, network_name, image_id, flavor_id) LOGGER.debug("Updating selected tempest.conf parameters for defcore...") - config = ConfigParser.RawConfigParser() - config.read(conf_file) - config.set('DEFAULT', 'log_file', '{}/tempest.log'.format(deployment_dir)) - config.set('oslo_concurrency', 'lock_path', - '{}/lock_files'.format(deployment_dir)) + rconfig = ConfigParser.RawConfigParser() + rconfig.read(conf_file) + rconfig.set('DEFAULT', 'log_file', '{}/tempest.log'.format(deployment_dir)) + rconfig.set('oslo_concurrency', 'lock_path', + '{}/lock_files'.format(deployment_dir)) generate_test_accounts_file(tenant_id=tenant_id) - config.set('auth', 'test_accounts_file', TEST_ACCOUNTS_FILE) - config.set('scenario', 'img_dir', '{}'.format(deployment_dir)) - config.set('scenario', 'img_file', 'tempest-image') - config.set('compute', 'image_ref', image_id) - config.set('compute', 'image_ref_alt', image_id_alt) - config.set('compute', 'flavor_ref', flavor_id) - config.set('compute', 'flavor_ref_alt', flavor_id_alt) + rconfig.set('auth', 'test_accounts_file', TEST_ACCOUNTS_FILE) + rconfig.set('scenario', 'img_dir', '{}'.format(deployment_dir)) + rconfig.set('scenario', 'img_file', 'tempest-image') + rconfig.set('compute', 'image_ref', image_id) + rconfig.set('compute', 'image_ref_alt', image_id_alt) + rconfig.set('compute', 'flavor_ref', flavor_id) + rconfig.set('compute', 'flavor_ref_alt', flavor_id_alt) with open(conf_file, 'wb') as config_file: - config.write(config_file) + rconfig.write(config_file) confpath = pkg_resources.resource_filename( 'functest', @@ -236,10 +237,11 @@ def generate_test_accounts_file(tenant_id): LOGGER.debug("Add needed params into test_accounts.yaml...") accounts_list = [ { - 'tenant_name': getattr(CONST, 'tempest_identity_tenant_name'), + 'tenant_name': getattr( + config.CONF, 'tempest_identity_tenant_name'), 'tenant_id': str(tenant_id), - 'username': getattr(CONST, 'tempest_identity_user_name'), - 'password': getattr(CONST, 'tempest_identity_user_password') + 'username': getattr(config.CONF, 'tempest_identity_user_name'), + 'password': getattr(config.CONF, 'tempest_identity_user_password') } ] @@ -247,21 +249,21 @@ def generate_test_accounts_file(tenant_id): yaml.dump(accounts_list, tfile, default_flow_style=False) -def update_tempest_conf_file(conf_file, config): +def update_tempest_conf_file(conf_file, rconfig): """Update defined paramters into tempest config file""" with open(TEMPEST_CONF_YAML) as yfile: conf_yaml = yaml.safe_load(yfile) if conf_yaml: - sections = config.sections() + sections = rconfig.sections() for section in conf_yaml: if section not in sections: - config.add_section(section) + rconfig.add_section(section) sub_conf = conf_yaml.get(section) for key, value in sub_conf.items(): - config.set(section, key, value) + rconfig.set(section, key, value) with open(conf_file, 'wb') as config_file: - config.write(config_file) + rconfig.write(config_file) def configure_tempest_update_params(tempest_conf_file, network_name=None, @@ -271,47 +273,47 @@ def configure_tempest_update_params(tempest_conf_file, network_name=None, Add/update needed parameters into tempest.conf file """ LOGGER.debug("Updating selected tempest.conf parameters...") - config = ConfigParser.RawConfigParser() - config.read(tempest_conf_file) - config.set('compute', 'fixed_network_name', network_name) - config.set('compute', 'volume_device_name', - getattr(CONST, 'tempest_volume_device_name')) + rconfig = ConfigParser.RawConfigParser() + rconfig.read(tempest_conf_file) + rconfig.set('compute', 'fixed_network_name', network_name) + rconfig.set('compute', 'volume_device_name', + getattr(config.CONF, 'tempest_volume_device_name')) if image_id is not None: - config.set('compute', 'image_ref', image_id) + rconfig.set('compute', 'image_ref', image_id) if IMAGE_ID_ALT is not None: - config.set('compute', 'image_ref_alt', IMAGE_ID_ALT) - if getattr(CONST, 'tempest_use_custom_flavors'): + rconfig.set('compute', 'image_ref_alt', IMAGE_ID_ALT) + if getattr(config.CONF, 'tempest_use_custom_flavors'): if flavor_id is not None: - config.set('compute', 'flavor_ref', flavor_id) + rconfig.set('compute', 'flavor_ref', flavor_id) if FLAVOR_ID_ALT is not None: - config.set('compute', 'flavor_ref_alt', FLAVOR_ID_ALT) + rconfig.set('compute', 'flavor_ref_alt', FLAVOR_ID_ALT) if compute_cnt > 1: # enable multinode tests - config.set('compute', 'min_compute_nodes', compute_cnt) - config.set('compute-feature-enabled', 'live_migration', True) + rconfig.set('compute', 'min_compute_nodes', compute_cnt) + rconfig.set('compute-feature-enabled', 'live_migration', True) - config.set('identity', 'region', 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", os.environ.get("IDENTITY_API_VERSION")) if identity_api_version == '3': auth_version = 'v3' - config.set('identity-feature-enabled', 'api_v2', False) + rconfig.set('identity-feature-enabled', 'api_v2', False) else: auth_version = 'v2' - config.set('identity', 'auth_version', auth_version) - config.set( + rconfig.set('identity', 'auth_version', auth_version) + rconfig.set( 'validation', 'ssh_timeout', - getattr(CONST, 'tempest_validation_ssh_timeout')) - config.set('object-storage', 'operator_role', - getattr(CONST, 'tempest_object_storage_operator_role')) + getattr(config.CONF, 'tempest_validation_ssh_timeout')) + rconfig.set('object-storage', 'operator_role', + getattr(config.CONF, 'tempest_object_storage_operator_role')) if os.environ.get('OS_ENDPOINT_TYPE') is not None: - config.set('identity', 'v3_endpoint_type', - os.environ.get('OS_ENDPOINT_TYPE')) + rconfig.set('identity', 'v3_endpoint_type', + os.environ.get('OS_ENDPOINT_TYPE')) if os.environ.get('OS_ENDPOINT_TYPE') is not None: - sections = config.sections() + sections = rconfig.sections() services_list = ['compute', 'volume', 'image', @@ -321,13 +323,13 @@ def configure_tempest_update_params(tempest_conf_file, network_name=None, 'orchestration'] for service in services_list: if service not in sections: - config.add_section(service) - config.set(service, 'endpoint_type', - os.environ.get('OS_ENDPOINT_TYPE')) + rconfig.add_section(service) + rconfig.set(service, 'endpoint_type', + os.environ.get('OS_ENDPOINT_TYPE')) LOGGER.debug('Add/Update required params defined in tempest_conf.yaml ' 'into tempest.conf file') - update_tempest_conf_file(tempest_conf_file, config) + update_tempest_conf_file(tempest_conf_file, rconfig) backup_tempest_config(tempest_conf_file) diff --git a/functest/opnfv_tests/openstack/tempest/tempest.py b/functest/opnfv_tests/openstack/tempest/tempest.py index d474ec3a9..a13b6dc59 100644 --- a/functest/opnfv_tests/openstack/tempest/tempest.py +++ b/functest/opnfv_tests/openstack/tempest/tempest.py @@ -25,7 +25,7 @@ import yaml from functest.core import testcase from functest.opnfv_tests.openstack.snaps import snaps_utils from functest.opnfv_tests.openstack.tempest import conf_utils -from functest.utils.constants import CONST +from functest.utils import config from functest.utils import env import functest.utils.functest_utils as ft_utils @@ -330,16 +330,17 @@ class TempestResourcesManager(object): self.os_creds = kwargs.get('os_creds') or snaps_utils.get_credentials() self.guid = '-' + str(uuid.uuid4()) self.creators = list() - self.cirros_image_config = getattr(CONST, 'snaps_images_cirros', None) + self.cirros_image_config = getattr( + config.CONF, 'snaps_images_cirros', None) def _create_project(self): """Create project for tests.""" project_creator = deploy_utils.create_project( self.os_creds, ProjectConfig( name=getattr( - CONST, 'tempest_identity_tenant_name') + self.guid, + config.CONF, 'tempest_identity_tenant_name') + self.guid, description=getattr( - CONST, 'tempest_identity_tenant_description'))) + config.CONF, 'tempest_identity_tenant_description'))) if project_creator is None or project_creator.get_project() is None: raise Exception("Failed to create tenant") self.creators.append(project_creator) @@ -350,11 +351,11 @@ class TempestResourcesManager(object): user_creator = deploy_utils.create_user( self.os_creds, UserConfig( name=getattr( - CONST, 'tempest_identity_user_name') + self.guid, + config.CONF, 'tempest_identity_user_name') + self.guid, password=getattr( - CONST, 'tempest_identity_user_password'), + config.CONF, 'tempest_identity_user_password'), project_name=getattr( - CONST, 'tempest_identity_tenant_name') + self.guid)) + config.CONF, 'tempest_identity_tenant_name') + self.guid)) if user_creator is None or user_creator.get_user() is None: raise Exception("Failed to create user") self.creators.append(user_creator) @@ -367,13 +368,13 @@ class TempestResourcesManager(object): tempest_segmentation_id = None tempest_network_type = getattr( - CONST, 'tempest_network_type', None) + config.CONF, 'tempest_network_type', None) tempest_physical_network = getattr( - CONST, 'tempest_physical_network', None) + config.CONF, 'tempest_physical_network', None) tempest_segmentation_id = getattr( - CONST, 'tempest_segmentation_id', None) + config.CONF, 'tempest_segmentation_id', None) tempest_net_name = getattr( - CONST, 'tempest_private_net_name') + self.guid + config.CONF, 'tempest_private_net_name') + self.guid network_creator = deploy_utils.create_network( self.os_creds, NetworkConfig( @@ -384,10 +385,11 @@ class TempestResourcesManager(object): segmentation_id=tempest_segmentation_id, subnet_settings=[SubnetConfig( name=getattr( - CONST, 'tempest_private_subnet_name') + self.guid, + config.CONF, + 'tempest_private_subnet_name') + self.guid, project_name=project_name, cidr=getattr( - CONST, 'tempest_private_subnet_cidr'))])) + config.CONF, 'tempest_private_subnet_cidr'))])) if network_creator is None or network_creator.get_network() is None: raise Exception("Failed to create private network") self.creators.append(network_creator) @@ -414,9 +416,9 @@ class TempestResourcesManager(object): flavor_creator = OpenStackFlavor( self.os_creds, FlavorConfig( name=name, - ram=getattr(CONST, 'openstack_flavor_ram'), - disk=getattr(CONST, 'openstack_flavor_disk'), - vcpus=getattr(CONST, 'openstack_flavor_vcpus'), + ram=getattr(config.CONF, 'openstack_flavor_ram'), + disk=getattr(config.CONF, 'openstack_flavor_disk'), + vcpus=getattr(config.CONF, 'openstack_flavor_vcpus'), metadata=flavor_metadata)) flavor = flavor_creator.create() if flavor is None: @@ -439,7 +441,7 @@ class TempestResourcesManager(object): if create_project: LOGGER.debug("Creating project and user for Tempest suite") project_name = getattr( - CONST, 'tempest_identity_tenant_name') + self.guid + config.CONF, 'tempest_identity_tenant_name') + self.guid result['project_id'] = self._create_project() result['user_id'] = self._create_user() result['tenant_id'] = result['project_id'] # for compatibility @@ -448,26 +450,28 @@ class TempestResourcesManager(object): result['tempest_net_name'] = self._create_network(project_name) LOGGER.debug("Creating image for Tempest suite") - image_name = getattr(CONST, 'openstack_image_name') + self.guid + image_name = getattr(config.CONF, 'openstack_image_name') + self.guid result['image_id'] = self._create_image(image_name) if use_custom_images: LOGGER.debug("Creating 2nd image for Tempest suite") - image_name = getattr(CONST, 'openstack_image_name_alt') + self.guid + image_name = getattr( + config.CONF, 'openstack_image_name_alt') + self.guid result['image_id_alt'] = self._create_image(image_name) - if (getattr(CONST, 'tempest_use_custom_flavors') == 'True' or + if (getattr(config.CONF, 'tempest_use_custom_flavors') == 'True' or use_custom_flavors): LOGGER.info("Creating flavor for Tempest suite") - name = getattr(CONST, 'openstack_flavor_name') + self.guid + name = getattr(config.CONF, 'openstack_flavor_name') + self.guid result['flavor_id'] = self._create_flavor(name) if use_custom_flavors: LOGGER.info("Creating 2nd flavor for Tempest suite") scenario = env.get('DEPLOY_SCENARIO') if 'ovs' in scenario or 'fdio' in scenario: - setattr(CONST, 'openstack_flavor_ram', 1024) - name = getattr(CONST, 'openstack_flavor_name_alt') + self.guid + setattr(config.CONF, 'openstack_flavor_ram', 1024) + name = getattr( + config.CONF, 'openstack_flavor_name_alt') + self.guid result['flavor_id_alt'] = self._create_flavor(name) return result diff --git a/functest/opnfv_tests/openstack/vping/vping_base.py b/functest/opnfv_tests/openstack/vping/vping_base.py index fae5db2d4..586b8d655 100644 --- a/functest/opnfv_tests/openstack/vping/vping_base.py +++ b/functest/opnfv_tests/openstack/vping/vping_base.py @@ -17,7 +17,7 @@ import uuid from functest.core import testcase from functest.opnfv_tests.openstack.snaps import snaps_utils -from functest.utils.constants import CONST +from functest.utils import config from functest.utils import env from snaps.config.flavor import FlavorConfig @@ -52,20 +52,24 @@ class VPingBase(testcase.TestCase): # Shared metadata self.guid = '-' + str(uuid.uuid4()) - self.router_name = getattr(CONST, 'vping_router_name') + self.guid - self.vm1_name = getattr(CONST, 'vping_vm_name_1') + self.guid - self.vm2_name = getattr(CONST, 'vping_vm_name_2') + self.guid + self.router_name = getattr( + config.CONF, 'vping_router_name') + self.guid + self.vm1_name = getattr( + config.CONF, 'vping_vm_name_1') + self.guid + self.vm2_name = getattr(config.CONF, 'vping_vm_name_2') + self.guid - self.vm_boot_timeout = getattr(CONST, 'vping_vm_boot_timeout') - self.vm_delete_timeout = getattr(CONST, 'vping_vm_delete_timeout') + self.vm_boot_timeout = getattr(config.CONF, 'vping_vm_boot_timeout') + self.vm_delete_timeout = getattr( + config.CONF, 'vping_vm_delete_timeout') self.vm_ssh_connect_timeout = getattr( - CONST, 'vping_vm_ssh_connect_timeout') - self.ping_timeout = getattr(CONST, 'vping_ping_timeout') + config.CONF, 'vping_vm_ssh_connect_timeout') + self.ping_timeout = getattr(config.CONF, 'vping_ping_timeout') self.flavor_name = 'vping-flavor' + self.guid # Move this configuration option up for all tests to leverage - if hasattr(CONST, 'snaps_images_cirros'): - self.cirros_image_config = getattr(CONST, 'snaps_images_cirros') + if hasattr(config.CONF, 'snaps_images_cirros'): + self.cirros_image_config = getattr( + config.CONF, 'snaps_images_cirros') else: self.cirros_image_config = None @@ -82,7 +86,7 @@ class VPingBase(testcase.TestCase): '%Y-%m-%d %H:%M:%S')) image_base_name = '{}-{}'.format( - getattr(CONST, 'vping_image_name'), + getattr(config.CONF, 'vping_image_name'), str(self.guid)) os_image_settings = openstack_tests.cirros_image_settings( image_base_name, image_metadata=self.cirros_image_config) @@ -92,21 +96,24 @@ class VPingBase(testcase.TestCase): self.os_creds, os_image_settings) self.creators.append(self.image_creator) - private_net_name = getattr(CONST, 'vping_private_net_name') + self.guid + private_net_name = getattr( + config.CONF, 'vping_private_net_name') + self.guid private_subnet_name = getattr( - CONST, 'vping_private_subnet_name') + self.guid - private_subnet_cidr = getattr(CONST, 'vping_private_subnet_cidr') + config.CONF, 'vping_private_subnet_name') + self.guid + private_subnet_cidr = getattr(config.CONF, 'vping_private_subnet_cidr') vping_network_type = None vping_physical_network = None vping_segmentation_id = None - if hasattr(CONST, 'vping_network_type'): - vping_network_type = getattr(CONST, 'vping_network_type') - if hasattr(CONST, 'vping_physical_network'): - vping_physical_network = getattr(CONST, 'vping_physical_network') - if hasattr(CONST, 'vping_segmentation_id'): - vping_segmentation_id = getattr(CONST, 'vping_segmentation_id') + if hasattr(config.CONF, 'vping_network_type'): + vping_network_type = getattr(config.CONF, 'vping_network_type') + if hasattr(config.CONF, 'vping_physical_network'): + vping_physical_network = getattr( + config.CONF, 'vping_physical_network') + if hasattr(config.CONF, 'vping_segmentation_id'): + vping_segmentation_id = getattr( + config.CONF, 'vping_segmentation_id') self.logger.info( "Creating network with name: '%s'", private_net_name) @@ -179,7 +186,7 @@ class VPingBase(testcase.TestCase): Cleanup all OpenStack objects. Should be called on completion :return: """ - if getattr(CONST, 'vping_cleanup_objects') == 'True': + if getattr(config.CONF, 'vping_cleanup_objects') == 'True': for creator in reversed(self.creators): try: creator.clean() diff --git a/functest/opnfv_tests/openstack/vping/vping_ssh.py b/functest/opnfv_tests/openstack/vping/vping_ssh.py index 0964d8464..e6c6bf351 100644 --- a/functest/opnfv_tests/openstack/vping/vping_ssh.py +++ b/functest/opnfv_tests/openstack/vping/vping_ssh.py @@ -17,7 +17,7 @@ import pkg_resources from functest.core.testcase import TestCase from functest.energy import energy from functest.opnfv_tests.openstack.vping import vping_base -from functest.utils.constants import CONST +from functest.utils import config from snaps.config.keypair import KeypairConfig from snaps.config.network import PortConfig @@ -42,11 +42,11 @@ class VPingSSH(vping_base.VPingBase): kwargs["case_name"] = "vping_ssh" super(VPingSSH, self).__init__(**kwargs) - self.kp_name = getattr(CONST, 'vping_keypair_name') + self.guid - self.kp_priv_file = getattr(CONST, 'vping_keypair_priv_file') - self.kp_pub_file = getattr(CONST, 'vping_keypair_pub_file') - self.sg_name = getattr(CONST, 'vping_sg_name') + self.guid - self.sg_desc = getattr(CONST, 'vping_sg_desc') + self.kp_name = getattr(config.CONF, 'vping_keypair_name') + self.guid + self.kp_priv_file = getattr(config.CONF, 'vping_keypair_priv_file') + self.kp_pub_file = getattr(config.CONF, 'vping_keypair_pub_file') + self.sg_name = getattr(config.CONF, 'vping_sg_name') + self.guid + self.sg_desc = getattr(config.CONF, 'vping_sg_desc') @energy.enable_recording def run(self, **kwargs): diff --git a/functest/opnfv_tests/sdn/odl/odl.py b/functest/opnfv_tests/sdn/odl/odl.py index 705f39dab..7283be57f 100644 --- a/functest/opnfv_tests/sdn/odl/odl.py +++ b/functest/opnfv_tests/sdn/odl/odl.py @@ -30,7 +30,7 @@ from snaps.openstack.utils import keystone_utils from functest.core import robotframework from functest.opnfv_tests.openstack.snaps import snaps_utils -from functest.utils import constants +from functest.utils import config from functest.utils import env __author__ = "Cedric Ollivier " @@ -39,7 +39,7 @@ __author__ = "Cedric Ollivier " class ODLTests(robotframework.RobotFramework): """ODL test runner.""" - odl_test_repo = getattr(constants.CONST, 'dir_repo_odl_test') + odl_test_repo = getattr(config.CONF, 'dir_repo_odl_test') neutron_suite_dir = os.path.join( odl_test_repo, "csit/suites/openstack/neutron") basic_suite_dir = os.path.join( @@ -52,7 +52,7 @@ class ODLTests(robotframework.RobotFramework): def __init__(self, **kwargs): super(ODLTests, self).__init__(**kwargs) self.res_dir = os.path.join( - getattr(constants.CONST, 'dir_results'), 'odl') + getattr(config.CONF, 'dir_results'), 'odl') self.xml_file = os.path.join(self.res_dir, 'output.xml') @classmethod diff --git a/functest/opnfv_tests/vnf/epc/juju_epc.py b/functest/opnfv_tests/vnf/epc/juju_epc.py index 689791862..3b62a9a1c 100644 --- a/functest/opnfv_tests/vnf/epc/juju_epc.py +++ b/functest/opnfv_tests/vnf/epc/juju_epc.py @@ -22,7 +22,7 @@ import yaml from functest.core import vnf from functest.opnfv_tests.openstack.snaps import snaps_utils -from functest.utils.constants import CONST +from functest.utils import config from snaps.config.flavor import FlavorConfig from snaps.config.image import ImageConfig @@ -89,7 +89,7 @@ class JujuEpc(vnf.VnfOnBoarding): 'functest', 'opnfv_tests/vnf/epc') try: self.config = getattr( - CONST, 'vnf_{}_config'.format(self.case_name)) + config.CONF, 'vnf_{}_config'.format(self.case_name)) except Exception: raise Exception("VNF config file not found") self.config_file = os.path.join(self.case_dir, self.config) @@ -123,7 +123,7 @@ class JujuEpc(vnf.VnfOnBoarding): self.public_auth_url = None self.res_dir = os.path.join( - getattr(CONST, 'dir_results'), self.case_name) + getattr(config.CONF, 'dir_results'), self.case_name) def _bypass_juju_network_discovery_bug(self, name): user_creator = OpenStackUser( @@ -228,13 +228,13 @@ class JujuEpc(vnf.VnfOnBoarding): """ self.__logger.info("Deployed Orchestrator") private_net_name = getattr( - CONST, 'vnf_{}_private_net_name'.format(self.case_name)) + config.CONF, 'vnf_{}_private_net_name'.format(self.case_name)) private_subnet_name = getattr( - CONST, 'vnf_{}_private_subnet_name'.format(self.case_name)) + config.CONF, 'vnf_{}_private_subnet_name'.format(self.case_name)) private_subnet_cidr = getattr( - CONST, 'vnf_{}_private_subnet_cidr'.format(self.case_name)) + config.CONF, 'vnf_{}_private_subnet_cidr'.format(self.case_name)) abot_router = getattr( - CONST, 'vnf_{}_external_router'.format(self.case_name)) + config.CONF, 'vnf_{}_external_router'.format(self.case_name)) self.__logger.info("Creating full network ...") subnet_settings = SubnetConfig( diff --git a/functest/opnfv_tests/vnf/ims/clearwater_ims_base.py b/functest/opnfv_tests/vnf/ims/clearwater_ims_base.py index f3f2e1d7c..7e1d5bb2d 100644 --- a/functest/opnfv_tests/vnf/ims/clearwater_ims_base.py +++ b/functest/opnfv_tests/vnf/ims/clearwater_ims_base.py @@ -18,7 +18,7 @@ import pkg_resources import requests import functest.core.vnf as vnf -from functest.utils.constants import CONST +from functest.utils import config import functest.utils.functest_utils as ft_utils __author__ = ("Valentin Boucher , " @@ -33,10 +33,10 @@ class ClearwaterOnBoardingBase(vnf.VnfOnBoarding): super(ClearwaterOnBoardingBase, self).__init__(**kwargs) self.case_dir = pkg_resources.resource_filename( 'functest', 'opnfv_tests/vnf/ims') - self.data_dir = getattr(CONST, 'dir_ims_data') - self.result_dir = os.path.join(getattr(CONST, 'dir_results'), + self.data_dir = getattr(config.CONF, 'dir_ims_data') + self.result_dir = os.path.join(getattr(config.CONF, 'dir_results'), self.case_name) - self.test_dir = getattr(CONST, 'dir_repo_vims_test') + self.test_dir = getattr(config.CONF, 'dir_repo_vims_test') if not os.path.exists(self.data_dir): os.makedirs(self.data_dir) diff --git a/functest/opnfv_tests/vnf/ims/cloudify_ims.py b/functest/opnfv_tests/vnf/ims/cloudify_ims.py index aa1256aba..39bbb7678 100644 --- a/functest/opnfv_tests/vnf/ims/cloudify_ims.py +++ b/functest/opnfv_tests/vnf/ims/cloudify_ims.py @@ -21,7 +21,7 @@ import yaml from functest.energy import energy from functest.opnfv_tests.openstack.snaps import snaps_utils import functest.opnfv_tests.vnf.ims.clearwater_ims_base as clearwater_ims_base -from functest.utils.constants import CONST +from functest.utils import config from snaps.config.flavor import FlavorConfig from snaps.config.image import ImageConfig @@ -59,7 +59,7 @@ class CloudifyIms(clearwater_ims_base.ClearwaterOnBoardingBase): # Retrieve the configuration try: self.config = getattr( - CONST, 'vnf_{}_config'.format(self.case_name)) + config.CONF, 'vnf_{}_config'.format(self.case_name)) except Exception: raise Exception("VNF config file not found") diff --git a/functest/opnfv_tests/vnf/ims/cloudify_ims_perf.py b/functest/opnfv_tests/vnf/ims/cloudify_ims_perf.py index 72e1e447e..cdf1edc0a 100644 --- a/functest/opnfv_tests/vnf/ims/cloudify_ims_perf.py +++ b/functest/opnfv_tests/vnf/ims/cloudify_ims_perf.py @@ -25,7 +25,7 @@ from functest.opnfv_tests.vnf.ims import cloudify_ims from functest.opnfv_tests.vnf.ims.ixia.utils import IxChassisUtils from functest.opnfv_tests.vnf.ims.ixia.utils import IxLoadUtils from functest.opnfv_tests.vnf.ims.ixia.utils import IxRestUtils -from functest.utils.constants import CONST +from functest.utils import config from snaps.config.flavor import FlavorConfig from snaps.config.image import ImageConfig @@ -58,7 +58,7 @@ class CloudifyImsPerf(cloudify_ims.CloudifyIms): # Retrieve the configuration try: self.config = getattr( - CONST, 'vnf_{}_config'.format(self.case_name)) + config.CONF, 'vnf_{}_config'.format(self.case_name)) except Exception: raise Exception("VNF config file not found") diff --git a/functest/opnfv_tests/vnf/ims/orchestra_clearwaterims.py b/functest/opnfv_tests/vnf/ims/orchestra_clearwaterims.py index e1b7f3ab0..85c55ec5f 100644 --- a/functest/opnfv_tests/vnf/ims/orchestra_clearwaterims.py +++ b/functest/opnfv_tests/vnf/ims/orchestra_clearwaterims.py @@ -20,7 +20,7 @@ import yaml import functest.core.vnf as vnf import functest.utils.openstack_utils as os_utils from functest.opnfv_tests.openstack.snaps import snaps_utils -from functest.utils.constants import CONST +from functest.utils import config from org.openbaton.cli.errors.errors import NfvoException from org.openbaton.cli.agents.agents import MainAgent @@ -150,14 +150,14 @@ class ClearwaterImsVnf(vnf.VnfOnBoarding): self.case_dir = pkg_resources.resource_filename( 'functest', 'opnfv_tests/vnf/ims/') - self.data_dir = getattr(CONST, 'dir_ims_data') - self.test_dir = getattr(CONST, 'dir_repo_vims_test') + self.data_dir = getattr(config.CONF, 'dir_ims_data') + self.test_dir = getattr(config.CONF, 'dir_repo_vims_test') self.created_resources = [] self.logger.info("%s VNF onboarding test starting", self.case_name) try: self.config = getattr( - CONST, 'vnf_{}_config'.format(self.case_name)) + config.CONF, 'vnf_{}_config'.format(self.case_name)) except BaseException: raise Exception("Orchestra VNF config file not found") diff --git a/functest/opnfv_tests/vnf/ims/orchestra_openims.py b/functest/opnfv_tests/vnf/ims/orchestra_openims.py index c35ec8c18..a8a276caf 100644 --- a/functest/opnfv_tests/vnf/ims/orchestra_openims.py +++ b/functest/opnfv_tests/vnf/ims/orchestra_openims.py @@ -19,7 +19,7 @@ import yaml import functest.core.vnf as vnf import functest.utils.openstack_utils as os_utils -from functest.utils.constants import CONST +from functest.utils import config from org.openbaton.cli.errors.errors import NfvoException from org.openbaton.cli.agents.agents import MainAgent @@ -151,14 +151,14 @@ class OpenImsVnf(vnf.VnfOnBoarding): self.case_dir = pkg_resources.resource_filename( 'functest', 'opnfv_tests/vnf/ims/') - self.data_dir = getattr(CONST, 'dir_ims_data') - self.test_dir = getattr(CONST, 'dir_repo_vims_test') + self.data_dir = getattr(config.CONF, 'dir_ims_data') + self.test_dir = getattr(config.CONF, 'dir_repo_vims_test') self.created_resources = [] self.logger.info("%s VNF onboarding test starting", self.case_name) try: self.config = getattr( - CONST, 'vnf_{}_config'.format(self.case_name)) + config.CONF, 'vnf_{}_config'.format(self.case_name)) except BaseException: raise Exception("Orchestra VNF config file not found") config_file = self.case_dir + self.config @@ -206,11 +206,10 @@ class OpenImsVnf(vnf.VnfOnBoarding): self.logger.info("Additional pre-configuration steps") self.creds = { - "tenant": self.snaps_creds.project_name, - "username": self.snaps_creds.username, - "password": self.snaps_creds.password, - "auth_url": public_auth_url - } + "tenant": self.snaps_creds.project_name, + "username": self.snaps_creds.username, + "password": self.snaps_creds.password, + "auth_url": public_auth_url} self.prepare_images() self.prepare_flavor() self.prepare_security_groups() diff --git a/functest/opnfv_tests/vnf/router/cloudify_vrouter.py b/functest/opnfv_tests/vnf/router/cloudify_vrouter.py index eb1c4050c..18acce6f7 100644 --- a/functest/opnfv_tests/vnf/router/cloudify_vrouter.py +++ b/functest/opnfv_tests/vnf/router/cloudify_vrouter.py @@ -23,7 +23,7 @@ from scp import SCPClient from functest.opnfv_tests.openstack.snaps import snaps_utils import functest.opnfv_tests.vnf.router.vrouter_base as vrouter_base from functest.opnfv_tests.vnf.router.utilvnf import Utilvnf -from functest.utils.constants import CONST +from functest.utils import config from functest.utils import functest_utils from git import Repo @@ -69,7 +69,7 @@ class CloudifyVrouter(vrouter_base.VrouterOnBoardingBase): # Retrieve the configuration try: self.config = getattr( - CONST, 'vnf_{}_config'.format(self.case_name)) + config.CONF, 'vnf_{}_config'.format(self.case_name)) except Exception: raise Exception("VNF config file not found") diff --git a/functest/opnfv_tests/vnf/router/utilvnf.py b/functest/opnfv_tests/vnf/router/utilvnf.py index d18e9375c..6861b3865 100644 --- a/functest/opnfv_tests/vnf/router/utilvnf.py +++ b/functest/opnfv_tests/vnf/router/utilvnf.py @@ -18,7 +18,7 @@ import pkg_resources import requests import yaml -from functest.utils.constants import CONST +from functest.utils import config from git import Repo from requests.auth import HTTPBasicAuth from snaps.openstack.utils import nova_utils @@ -55,7 +55,7 @@ class Utilvnf(object): # pylint: disable=too-many-instance-attributes def __init__(self): self.snaps_creds = "" - self.vnf_data_dir = getattr(CONST, 'dir_router_data') + self.vnf_data_dir = getattr(config.CONF, 'dir_router_data') self.opnfv_vnf_data_dir = "opnfv-vnf-data/" self.command_template_dir = "command_template/" self.test_scenario_yaml = "test_scenario.yaml" @@ -76,7 +76,7 @@ class Utilvnf(object): # pylint: disable=too-many-instance-attributes 'functest', 'opnfv_tests/vnf/router') config_file_name = getattr( - CONST, 'vnf_{}_config'.format("vyos_vrouter")) + config.CONF, 'vnf_{}_config'.format("vyos_vrouter")) config_file = os.path.join(case_dir, config_file_name) diff --git a/functest/opnfv_tests/vnf/router/vrouter_base.py b/functest/opnfv_tests/vnf/router/vrouter_base.py index 84cd51e51..8818032da 100644 --- a/functest/opnfv_tests/vnf/router/vrouter_base.py +++ b/functest/opnfv_tests/vnf/router/vrouter_base.py @@ -20,7 +20,7 @@ import time import pkg_resources import functest.core.vnf as vnf -from functest.utils.constants import CONST +from functest.utils import config from functest.opnfv_tests.vnf.router.test_controller import function_test_exec from functest.opnfv_tests.vnf.router.utilvnf import Utilvnf @@ -37,8 +37,8 @@ class VrouterOnBoardingBase(vnf.VnfOnBoarding): super(VrouterOnBoardingBase, self).__init__(**kwargs) self.case_dir = pkg_resources.resource_filename( 'functest', 'opnfv_tests/vnf/router') - self.data_dir = getattr(CONST, 'dir_router_data') - self.result_dir = os.path.join(getattr(CONST, 'dir_results'), + self.data_dir = getattr(config.CONF, 'dir_router_data') + self.result_dir = os.path.join(getattr(config.CONF, 'dir_results'), self.case_name) self.util = Utilvnf() self.util_info = {} -- cgit 1.2.3-korg