Refactor tempest using new constants provider 09/26409/3
authorSerenaFeng <feng.xiaowei@zte.com.cn>
Thu, 22 Dec 2016 05:00:49 +0000 (13:00 +0800)
committerSerenaFeng <feng.xiaowei@zte.com.cn>
Thu, 22 Dec 2016 10:08:11 +0000 (18:08 +0800)
JIRA: FUNCTEST-673

Change-Id: Ibc274edd6bc9e8aea9e124fae84d7dec481982ab
Signed-off-by: SerenaFeng <feng.xiaowei@zte.com.cn>
functest/ci/config_functest.yaml
functest/opnfv_tests/openstack/tempest/conf_utils.py
functest/opnfv_tests/openstack/tempest/tempest.py
functest/utils/env.py
functest/utils/functest_constants.py
functest/utils/functest_utils.py

index 6be73d9..a983531 100755 (executable)
@@ -1,10 +1,10 @@
 general:
     dir:
         # Relative to the path where the repo is cloned:
-        vping:         functest/opnfv_tests/openstack/vping
+        vping:             functest/opnfv_tests/openstack/vping
         dir_odl:           functest/opnfv_tests/sdn/odl
         dir_rally:         functest/opnfv_tests/openstack/rally
-        dir_tempest_cases: functest/opnfv_tests/openstack/tempest/custom_tests
+        tempest_cases:     functest/opnfv_tests/openstack/tempest/custom_tests
         dir_vIMS:          functest/opnfv_tests/vnf/ims
         dir_onos:          functest/opnfv_tests/sdn/onos/teston
         dir_onos_sfc:      functest/opnfv_tests/sdn/onos/sfc
@@ -33,7 +33,7 @@ general:
         functest_conf:      /home/opnfv/functest/conf
         functest_data:      /home/opnfv/functest/data
         dir_vIMS_data:      /home/opnfv/functest/data/vIMS/
-        dir_rally_inst:     /home/opnfv/.rally
+        rally_inst:         /home/opnfv/.rally
 
     openstack:
         creds: /home/opnfv/functest/conf/openstack.creds
@@ -174,10 +174,10 @@ ONOS:
         installer_master_username: 'root'
         installer_master_password: 'r00tme'
 multisite:
-    fuel_environment:
+    fuel:
         installer_username: 'root'
         installer_password: 'r00tme'
-    compass_environment:
+    compass:
         installer_username: 'root'
         installer_password: 'root'
         multisite_controller_ip: '10.1.0.50'
index 38b97e7..5295ff3 100644 (file)
@@ -12,18 +12,18 @@ import os
 import re
 import shutil
 
-import functest.utils.functest_constants as ft_constants
-import functest.utils.functest_utils as ft_utils
 import opnfv.utils.constants as releng_constants
 
+import functest.utils.functest_utils as ft_utils
+from functest.utils.constants import CONST
 
 IMAGE_ID_ALT = None
 FLAVOR_ID_ALT = None
-REPO_PATH = ft_constants.FUNCTEST_REPO_DIR
-GLANCE_IMAGE_PATH = os.path.join(ft_constants.FUNCTEST_DATA_DIR,
-                                 ft_constants.GLANCE_IMAGE_FILENAME)
-TEMPEST_TEST_LIST_DIR = ft_constants.TEMPEST_TEST_LIST_DIR
-TEMPEST_RESULTS_DIR = os.path.join(ft_constants.FUNCTEST_RESULTS_DIR,
+REPO_PATH = CONST.dir_repo_functest
+GLANCE_IMAGE_PATH = os.path.join(CONST.dir_functest_data,
+                                 CONST.openstack_image_file_name)
+TEMPEST_TEST_LIST_DIR = CONST.dir_tempest_cases
+TEMPEST_RESULTS_DIR = os.path.join(CONST.dir_results,
                                    'tempest')
 TEMPEST_CUSTOM = os.path.join(REPO_PATH, TEMPEST_TEST_LIST_DIR,
                               'test_list.txt')
@@ -34,8 +34,8 @@ TEMPEST_DEFCORE = os.path.join(REPO_PATH, TEMPEST_TEST_LIST_DIR,
 TEMPEST_RAW_LIST = os.path.join(TEMPEST_RESULTS_DIR, 'test_raw_list.txt')
 TEMPEST_LIST = os.path.join(TEMPEST_RESULTS_DIR, 'test_list.txt')
 
-CI_INSTALLER_TYPE = ft_constants.CI_INSTALLER_TYPE
-CI_INSTALLER_IP = ft_constants.CI_INSTALLER_IP
+CI_INSTALLER_TYPE = CONST.INSTALLER_TYPE
+CI_INSTALLER_IP = CONST.INSTALLER_IP
 
 
 def configure_tempest(logger, deployment_dir, IMAGE_ID=None, FLAVOR_ID=None):
@@ -63,24 +63,24 @@ def configure_tempest(logger, deployment_dir, IMAGE_ID=None, FLAVOR_ID=None):
     config.set(
         'compute',
         'fixed_network_name',
-        ft_constants.TEMPEST_PRIVATE_NET_NAME)
-    if ft_constants.TEMPEST_USE_CUSTOM_IMAGES:
+        CONST.tempest_private_net_name)
+    if CONST.tempest_use_custom_images:
         if IMAGE_ID is not None:
             config.set('compute', 'image_ref', IMAGE_ID)
         if IMAGE_ID_ALT is not None:
             config.set('compute', 'image_ref_alt', IMAGE_ID_ALT)
-    if ft_constants.TEMPEST_USE_CUSTOM_FLAVORS:
+    if CONST.tempest_use_custom_flavors:
         if FLAVOR_ID is not None:
             config.set('compute', 'flavor_ref', FLAVOR_ID)
         if FLAVOR_ID_ALT is not None:
             config.set('compute', 'flavor_ref_alt', FLAVOR_ID_ALT)
-    config.set('identity', 'tenant_name', ft_constants.TEMPEST_TENANT_NAME)
-    config.set('identity', 'username', ft_constants.TEMPEST_USER_NAME)
-    config.set('identity', 'password', ft_constants.TEMPEST_USER_PASSWORD)
+    config.set('identity', 'tenant_name', CONST.tempest_identity_tenant_name)
+    config.set('identity', 'username', CONST.tempest_identity_user_name)
+    config.set('identity', 'password', CONST.tempest_identity_user_password)
     config.set(
-        'validation', 'ssh_timeout', ft_constants.TEMPEST_SSH_TIMEOUT)
+        'validation', 'ssh_timeout', CONST.tempest_validation_ssh_timeout)
 
-    if ft_constants.OS_ENDPOINT_TYPE is not None:
+    if CONST.OS_ENDPOINT_TYPE is not None:
         services_list = ['compute',
                          'volume',
                          'image',
@@ -93,7 +93,7 @@ def configure_tempest(logger, deployment_dir, IMAGE_ID=None, FLAVOR_ID=None):
             if service not in sections:
                 config.add_section(service)
             config.set(service, 'endpoint_type',
-                       ft_constants.OS_ENDPOINT_TYPE)
+                       CONST.OS_ENDPOINT_TYPE)
 
     with open(tempest_conf_file, 'wb') as config_file:
         config.write(config_file)
@@ -138,12 +138,10 @@ def configure_tempest_multisite(logger, deployment_dir):
         kingbird_conf_path = "/etc/kingbird/kingbird.conf"
         installer_type = CI_INSTALLER_TYPE
         installer_ip = CI_INSTALLER_IP
-        installer_username = ft_utils.get_functest_config(
-            "multisite." + installer_type +
-            "_environment.installer_username")
-        installer_password = ft_utils.get_functest_config(
-            "multisite." + installer_type +
-            "_environment.installer_password")
+        installer_username = CONST.__getattribute__(
+            'multisite_{}_installer_username'.format(installer_type))
+        installer_password = CONST.__getattribute__(
+            'multisite_{}_installer_password'.format(installer_type))
 
         ssh_options = ("-o UserKnownHostsFile=/dev/null -o "
                        "StrictHostKeyChecking=no")
index ec0ca76..6ad5533 100644 (file)
@@ -14,6 +14,7 @@ import shutil
 import subprocess
 import time
 
+import opnfv.utils.constants as releng_constants
 import yaml
 
 import conf_utils
@@ -21,8 +22,7 @@ import functest.core.testcase_base as testcase_base
 import functest.utils.functest_logger as ft_logger
 import functest.utils.functest_utils as ft_utils
 import functest.utils.openstack_utils as os_utils
-import functest.utils.functest_constants as ft_constants
-import opnfv.utils.constants as releng_constants
+from functest.utils.constants import CONST
 
 """ logging configuration """
 logger = ft_logger.Logger("Tempest").getLogger()
@@ -36,9 +36,28 @@ class TempestCommon(testcase_base.TestcaseBase):
         self.OPTION = ""
         self.FLAVOR_ID = None
         self.IMAGE_ID = None
-        self.DEPLOYMENT_DIR = ft_utils.get_deployment_dir()
-
-    def read_file(self, filename):
+        self.DEPLOYMENT_DIR = self.get_deployment_dir()
+
+    @staticmethod
+    def get_deployment_dir():
+        """
+        Returns current Rally deployment directory
+        """
+        cmd = ("rally deployment list | awk '/" +
+               CONST.rally_deployment_name +
+               "/ {print $2}'")
+        p = subprocess.Popen(cmd, shell=True,
+                             stdout=subprocess.PIPE,
+                             stderr=subprocess.STDOUT)
+        deployment_uuid = p.stdout.readline().rstrip()
+        if deployment_uuid == "":
+            logger.error("Rally deployment not found.")
+            exit(-1)
+        return os.path.join(CONST.dir_rally_inst,
+                            "tempest/for-deployment-" + deployment_uuid)
+
+    @staticmethod
+    def read_file(filename):
         with open(filename) as src:
             return [line.strip() for line in src.readlines()]
 
@@ -48,47 +67,47 @@ class TempestCommon(testcase_base.TestcaseBase):
         logger.debug("Creating tenant and user for Tempest suite")
         tenant_id = os_utils.create_tenant(
             keystone_client,
-            ft_constants.TEMPEST_TENANT_NAME,
-            ft_constants.TEMPEST_TENANT_DESCRIPTION)
+            CONST.tempest_identity_tenant_name,
+            CONST.tempest_identity_tenant_description)
         if not tenant_id:
             logger.error("Error : Failed to create %s tenant"
-                         % ft_constants.TEMPEST_TENANT_NAME)
+                         % CONST.tempest_identity_tenant_name)
 
         user_id = os_utils.create_user(keystone_client,
-                                       ft_constants.TEMPEST_USER_NAME,
-                                       ft_constants.TEMPEST_USER_PASSWORD,
+                                       CONST.tempest_identity_user_name,
+                                       CONST.tempest_identity_user_password,
                                        None, tenant_id)
         if not user_id:
             logger.error("Error : Failed to create %s user" %
-                         ft_constants.TEMPEST_USER_NAME)
+                         CONST.tempest_identity_user_name)
 
         logger.debug("Creating private network for Tempest suite")
         network_dic = \
             os_utils.create_shared_network_full(
-                ft_constants.TEMPEST_PRIVATE_NET_NAME,
-                ft_constants.TEMPEST_PRIVATE_SUBNET_NAME,
-                ft_constants.TEMPEST_ROUTER_NAME,
-                ft_constants.TEMPEST_PRIVATE_SUBNET_CIDR)
+                CONST.tempest_private_net_name,
+                CONST.tempest_private_subnet_name,
+                CONST.tempest_router_name,
+                CONST.tempest_private_subnet_cidr)
         if not network_dic:
             return releng_constants.EXIT_RUN_ERROR
 
-        if ft_constants.TEMPEST_USE_CUSTOM_IMAGES:
+        if CONST.tempest_use_custom_images:
             # adding alternative image should be trivial should we need it
             logger.debug("Creating image for Tempest suite")
             _, self.IMAGE_ID = os_utils.get_or_create_image(
-                ft_constants.GLANCE_IMAGE_NAME, conf_utils.GLANCE_IMAGE_PATH,
-                ft_constants.GLANCE_IMAGE_FORMAT)
+                CONST.openstack_image_name, conf_utils.GLANCE_IMAGE_PATH,
+                CONST.openstack_image_disk_format)
             if not self.IMAGE_ID:
                 return releng_constants.EXIT_RUN_ERROR
 
-        if ft_constants.TEMPEST_USE_CUSTOM_FLAVORS:
+        if CONST.tempest_use_custom_flavors:
             # adding alternative flavor should be trivial should we need it
             logger.debug("Creating flavor for Tempest suite")
             _, self.FLAVOR_ID = os_utils.get_or_create_flavor(
-                ft_constants.FLAVOR_NAME,
-                ft_constants.FLAVOR_RAM,
-                ft_constants.FLAVOR_DISK,
-                ft_constants.FLAVOR_VCPUS)
+                CONST.openstack_flavor_name,
+                CONST.openstack_flavor_ram,
+                CONST.openstack_flavor_disk,
+                CONST.openstack_flavor_vcpus)
             if not self.FLAVOR_ID:
                 return releng_constants.EXIT_RUN_ERROR
 
@@ -128,8 +147,8 @@ class TempestCommon(testcase_base.TestcaseBase):
         result_file = open(conf_utils.TEMPEST_LIST, 'w')
         black_tests = []
         try:
-            installer_type = ft_constants.CI_INSTALLER_TYPE
-            deploy_scenario = ft_constants.CI_SCENARIO
+            installer_type = CONST.INSTALLER_TYPE
+            deploy_scenario = CONST.DEPLOY_SCENARIO
             if (bool(installer_type) * bool(deploy_scenario)):
                 # if INSTALLER_TYPE and DEPLOY_SCENARIO are set we read the
                 # file
@@ -189,9 +208,9 @@ class TempestCommon(testcase_base.TestcaseBase):
 
         header = ("Tempest environment:\n"
                   "  Installer: %s\n  Scenario: %s\n  Node: %s\n  Date: %s\n" %
-                  (ft_constants.CI_INSTALLER_TYPE,
-                   ft_constants.CI_SCENARIO,
-                   ft_constants.CI_NODE,
+                  (CONST.INSTALLER_TYPE,
+                   CONST.DEPLOY_SCENARIO,
+                   CONST.NODE_NAME,
                    time.strftime("%a %b %d %H:%M:%S %Z %Y")))
 
         f_stdout = open(conf_utils.TEMPEST_RESULTS_DIR + "/tempest.log", 'w+')
index 19c6099..360f41d 100644 (file)
@@ -8,7 +8,8 @@ default_envs = {
     'DEPLOY_TYPE': 'virt',
     'INSTALLER_TYPE': None,
     'INSTALLER_IP': None,
-    'BUILD_TAG': None
+    'BUILD_TAG': None,
+    'OS_ENDPOINT_TYPE': None
 }
 
 
index 991a297..de7e970 100644 (file)
@@ -111,7 +111,7 @@ RALLY_PRIVATE_SUBNET_NAME = get_value('rally.subnet_name',
 RALLY_PRIVATE_SUBNET_CIDR = get_value('rally.subnet_cidr',
                                       'RALLY_PRIVATE_SUBNET_CIDR')
 RALLY_ROUTER_NAME = get_value('rally.router_name', 'RALLY_ROUTER_NAME')
-RALLY_INSTALLATION_DIR = get_value('general.dir.dir_rally_inst',
+RALLY_INSTALLATION_DIR = get_value('general.dir.rally_inst',
                                    'RALLY_INSTALLATION_DIR')
 GLANCE_IMAGE_NAME = get_value('general.openstack.image_name',
                               'GLANCE_IMAGE_NAME')
@@ -149,7 +149,7 @@ TEMPEST_USE_CUSTOM_IMAGES = get_value('tempest.use_custom_images',
                                       'TEMPEST_USE_CUSTOM_IMAGES')
 TEMPEST_USE_CUSTOM_FLAVORS = get_value('tempest.use_custom_flavors',
                                        'TEMPEST_USE_CUSTOM_FLAVORS')
-TEMPEST_TEST_LIST_DIR = get_value('general.dir.dir_tempest_cases',
+TEMPEST_TEST_LIST_DIR = get_value('general.dir.tempest_cases',
                                   'TEMPEST_TEST_LIST_DIR')
 NAME_VM_1 = get_value('vping.vm_name_1', 'NAME_VM_1')
 NAME_VM_2 = get_value('vping.vm_name_2', 'NAME_VM_2')
index e4845c6..3145f57 100644 (file)
@@ -321,26 +321,6 @@ def execute_command(cmd, info=False, error_msg="",
     return returncode
 
 
-def get_deployment_dir():
-    """
-    Returns current Rally deployment directory
-    """
-    deployment_name = get_functest_config('rally.deployment_name')
-    rally_dir = get_functest_config('general.dir.dir_rally_inst')
-    cmd = ("rally deployment list | awk '/" + deployment_name +
-           "/ {print $2}'")
-    p = subprocess.Popen(cmd, shell=True,
-                         stdout=subprocess.PIPE,
-                         stderr=subprocess.STDOUT)
-    deployment_uuid = p.stdout.readline().rstrip()
-    if deployment_uuid == "":
-        logger.error("Rally deployment not found.")
-        exit(-1)
-    deployment_dir = (rally_dir + "/tempest/for-deployment-" +
-                      deployment_uuid)
-    return deployment_dir
-
-
 def get_dict_by_test(testname):
     with open(get_testcases_file_dir()) as f:
         testcases_yaml = yaml.safe_load(f)