&& cd /src/promise/source && npm install
RUN echo ". ${FUNCTEST_DIR}/cli/functest-complete.sh" >> /root/.bashrc
+
+CMD ["functest_restapi"]
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")
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)
#
# 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):
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)
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,
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
"""
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'
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
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()
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")
@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):
@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):