Merge "Create results/tempest dir for refstack config"
authorCedric Ollivier <cedric.ollivier@orange.com>
Tue, 5 Sep 2017 09:10:40 +0000 (09:10 +0000)
committerGerrit Code Review <gerrit@opnfv.org>
Tue, 5 Sep 2017 09:10:40 +0000 (09:10 +0000)
docker/Dockerfile
functest/api/resources/v1/envs.py
functest/core/vnf.py
functest/opnfv_tests/openstack/snaps/snaps_utils.py
functest/opnfv_tests/openstack/tempest/conf_utils.py
functest/opnfv_tests/openstack/tempest/tempest.py
functest/opnfv_tests/vnf/ims/cloudify_ims.py
functest/tests/unit/openstack/tempest/test_tempest.py

index 51d28b9..abb9b0d 100644 (file)
@@ -110,3 +110,5 @@ RUN sh -c 'curl -sL https://deb.nodesource.com/setup_4.x | sudo -E bash -' \
     && cd /src/promise/source && npm install
 
 RUN echo ". ${FUNCTEST_DIR}/cli/functest-complete.sh" >> /root/.bashrc
+
+CMD ["functest_restapi"]
index fb76fa6..8020544 100644 (file)
@@ -33,10 +33,11 @@ class V1Envs(ApiResource):
 
     def prepare(self, args):  # pylint: disable=no-self-use, unused-argument
         """ Prepare environment """
-        try:
-            ft_utils.execute_command("prepare_env start")
-        except Exception as err:  # pylint: disable=broad-except
-            return api_utils.result_handler(status=1, data=str(err))
+
+        result_env = ft_utils.execute_command("prepare_env start")
+        if not result_env == 0:
+            return api_utils.result_handler(
+                status=1, data="Failed to prepare env")
         return api_utils.result_handler(
             status=0, data="Prepare env successfully")
 
index bbdd80a..868b8b4 100644 (file)
@@ -120,10 +120,9 @@ class VnfOnBoarding(base.TestCase):
                                          UserSettings(
                                              name=self.tenant_name,
                                              password=self.tenant_name))
-            user_creator.create()
             self.created_object.append(user_creator)
 
-            project_creator.assoc_user(user_creator.user_settings)
+            project_creator.assoc_user(user_creator.create())
 
             self.snaps_creds = user_creator.get_os_creds(self.tenant_name)
 
index 309f9db..956b104 100644 (file)
@@ -5,7 +5,7 @@
 #
 # http://www.apache.org/licenses/LICENSE-2.0
 
-from snaps.openstack.utils import neutron_utils
+from snaps.openstack.utils import neutron_utils, nova_utils
 
 
 def get_ext_net_name(os_creds):
@@ -17,3 +17,14 @@ def get_ext_net_name(os_creds):
     neutron = neutron_utils.neutron_client(os_creds)
     ext_nets = neutron_utils.get_external_networks(neutron)
     return ext_nets[0].name
+
+
+def get_active_compute_cnt(os_creds):
+    """
+    Returns the number of active compute servers
+    :param: os_creds: an instance of snaps OSCreds object
+    :return: the number of active compute servers
+    """
+    nova = nova_utils.nova_client(os_creds)
+    computes = nova_utils.get_availability_zone_hosts(nova, zone_name='nova')
+    return len(computes)
index 6c3e820..72ea5ce 100644 (file)
@@ -137,13 +137,14 @@ def backup_tempest_config(conf_file):
 
 
 def configure_tempest(deployment_dir, image_id=None, flavor_id=None,
-                      mode=None):
+                      compute_cnt=None):
     """
     Calls rally verify and updates the generated tempest.conf with
     given parameters
     """
     conf_file = configure_verifier(deployment_dir)
-    configure_tempest_update_params(conf_file, image_id, flavor_id)
+    configure_tempest_update_params(conf_file, image_id, flavor_id,
+                                    compute_cnt)
 
 
 def configure_tempest_defcore(deployment_dir, image_id, flavor_id,
@@ -199,8 +200,8 @@ def generate_test_accounts_file(tenant_id):
         yaml.dump(accounts_list, f, default_flow_style=False)
 
 
-def configure_tempest_update_params(tempest_conf_file,
-                                    image_id=None, flavor_id=None):
+def configure_tempest_update_params(tempest_conf_file, image_id=None,
+                                    flavor_id=None, compute_cnt=1):
     """
     Add/update needed parameters into tempest.conf file
     """
@@ -223,6 +224,10 @@ def configure_tempest_update_params(tempest_conf_file,
             config.set('compute', 'flavor_ref', flavor_id)
         if FLAVOR_ID_ALT is not None:
             config.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('identity', 'region', 'RegionOne')
     if os_utils.is_keystone_v3():
         auth_version = 'v3'
index b8a4e9a..c204d52 100644 (file)
@@ -20,6 +20,7 @@ import time
 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
 import functest.utils.functest_utils as ft_utils
@@ -234,11 +235,13 @@ class TempestCommon(testcase.TestCase):
             if not os.path.exists(conf_utils.TEMPEST_RESULTS_DIR):
                 os.makedirs(conf_utils.TEMPEST_RESULTS_DIR)
             resources = self.resources.create()
+            compute_cnt = snaps_utils.get_active_compute_cnt(
+                self.resources.os_creds)
             conf_utils.configure_tempest(
                 self.DEPLOYMENT_DIR,
                 image_id=resources.get("image_id"),
                 flavor_id=resources.get("flavor_id"),
-                mode=self.MODE)
+                compute_cnt=compute_cnt)
             self.generate_test_list(self.VERIFIER_REPO_DIR)
             self.apply_tempest_blacklist()
             self.run_verifier_tests()
index b98cbe9..c8c2c50 100644 (file)
@@ -103,15 +103,15 @@ class CloudifyIms(clearwater_ims_base.ClearwaterOnBoardingBase):
         network_quotas = self.os_project.get_network_quotas()
 
         for key, value in (
-                self.orchestrator['requirements']['compute_quotas'].items()):
+                self.vnf['requirements']['compute_quotas'].items()):
             setattr(compute_quotas, key, value)
 
         for key, value in (
-                self.orchestrator['requirements']['network_quotas'].items()):
+                self.vnf['requirements']['network_quotas'].items()):
             setattr(network_quotas, key, value)
 
-        compute_quotas = self.project_ims.update_compute_quotas(compute_quotas)
-        network_quotas = self.project_ims.update_network_quotas(network_quotas)
+        compute_quotas = self.os_project.update_compute_quotas(compute_quotas)
+        network_quotas = self.os_project.update_network_quotas(network_quotas)
 
         # needs some images
         self.__logger.info("Upload some OS images if it doesn't exist")
index 54d7d49..6fe103f 100644 (file)
@@ -171,6 +171,19 @@ class OSTempestTesting(unittest.TestCase):
     @mock.patch('functest.opnfv_tests.openstack.tempest.tempest.os.makedirs')
     @mock.patch('functest.opnfv_tests.openstack.tempest.tempest.'
                 'TempestResourcesManager.create', return_value={})
+    @mock.patch('functest.opnfv_tests.openstack.snaps.snaps_utils.'
+                'get_active_compute_cnt', side_effect=Exception)
+    def test_run_get_active_compute_cnt_ko(self, *args):
+        self.assertEqual(self.tempestcommon.run(),
+                         testcase.TestCase.EX_RUN_ERROR)
+
+    @mock.patch('functest.opnfv_tests.openstack.tempest.tempest.'
+                'os.path.exists', return_value=False)
+    @mock.patch('functest.opnfv_tests.openstack.tempest.tempest.os.makedirs')
+    @mock.patch('functest.opnfv_tests.openstack.tempest.tempest.'
+                'TempestResourcesManager.create', return_value={})
+    @mock.patch('functest.opnfv_tests.openstack.snaps.snaps_utils.'
+                'get_active_compute_cnt', return_value=2)
     @mock.patch('functest.opnfv_tests.openstack.tempest.tempest.'
                 'conf_utils.configure_tempest', side_effect=Exception)
     def test_run_configure_tempest_ko(self, *args):
@@ -182,6 +195,8 @@ class OSTempestTesting(unittest.TestCase):
     @mock.patch('functest.opnfv_tests.openstack.tempest.tempest.os.makedirs')
     @mock.patch('functest.opnfv_tests.openstack.tempest.tempest.'
                 'TempestResourcesManager.create', return_value={})
+    @mock.patch('functest.opnfv_tests.openstack.snaps.snaps_utils.'
+                'get_active_compute_cnt', return_value=2)
     @mock.patch('functest.opnfv_tests.openstack.tempest.tempest.'
                 'conf_utils.configure_tempest')
     def _test_run(self, status, *args):