diff options
-rw-r--r-- | functest/api/resources/v1/envs.py | 41 | ||||
-rw-r--r-- | functest/api/urls.py | 5 | ||||
-rw-r--r-- | functest/ci/download_images.sh | 4 | ||||
-rw-r--r-- | functest/ci/run_tests.py | 4 | ||||
-rw-r--r-- | functest/ci/testcases.yaml | 6 | ||||
-rw-r--r-- | functest/opnfv_tests/openstack/vping/vping_base.py | 6 | ||||
-rw-r--r-- | requirements.txt | 1 | ||||
-rw-r--r-- | upper-constraints.txt | 1 |
8 files changed, 54 insertions, 14 deletions
diff --git a/functest/api/resources/v1/envs.py b/functest/api/resources/v1/envs.py index 9c455198d..fb76fa63f 100644 --- a/functest/api/resources/v1/envs.py +++ b/functest/api/resources/v1/envs.py @@ -10,11 +10,12 @@ Resources to handle environment related requests """ +import IPy from flask import jsonify from functest.api.base import ApiResource -from functest.cli.commands.cli_env import Env from functest.api.common import api_utils +from functest.cli.commands.cli_env import Env import functest.utils.functest_utils as ft_utils @@ -38,3 +39,41 @@ class V1Envs(ApiResource): return api_utils.result_handler(status=1, data=str(err)) return api_utils.result_handler( status=0, data="Prepare env successfully") + + def update_hosts(self, hosts_info): # pylint: disable=no-self-use + """ Update hosts info """ + + if not isinstance(hosts_info, dict): + return api_utils.result_handler( + status=1, data='Error, args should be a dict') + + for key, value in hosts_info.items(): + if key: + try: + IPy.IP(value) + except Exception: # pylint: disable=broad-except + return api_utils.result_handler( + status=1, data='The IP %s is invalid' % value) + else: + return api_utils.result_handler( + status=1, data='Domain name is absent') + + try: + functest_flag = "# SUT hosts info for Functest" + hosts_list = ('\n{} {} {}'.format(ip, host_name, functest_flag) + for host_name, ip in hosts_info.items()) + + with open("/etc/hosts", 'r') as file_hosts: + origin_lines = [line for line in file_hosts + if functest_flag not in line] + + with open("/etc/hosts", 'w') as file_hosts: + file_hosts.writelines(origin_lines) + file_hosts.write(functest_flag) + file_hosts.writelines(hosts_list) + except Exception: # pylint: disable=broad-except + return api_utils.result_handler( + status=1, data='Error when updating hosts info') + else: + return api_utils.result_handler( + status=0, data='Update hosts info successfully') diff --git a/functest/api/urls.py b/functest/api/urls.py index 72c2c53bb..0cc22f80f 100644 --- a/functest/api/urls.py +++ b/functest/api/urls.py @@ -25,8 +25,9 @@ URLPATTERNS = [ # GET /api/v1/functest/envs => GET environment Url('/api/v1/functest/envs', 'v1_envs'), - # POST /api/v1/functest/envs/action , {"action":"prepare"} - # => Prepare environment + # POST /api/v1/functest/envs/action + # {"action":"prepare"} => Prepare environment + # {"action":"update_hosts", "args": {}} => Update hosts info Url('/api/v1/functest/envs/action', 'v1_envs'), # GET /api/v1/functest/openstack/credentials => GET credentials diff --git a/functest/ci/download_images.sh b/functest/ci/download_images.sh index 88474d3a7..cc0abc142 100644 --- a/functest/ci/download_images.sh +++ b/functest/ci/download_images.sh @@ -20,6 +20,4 @@ https://cloud-images.ubuntu.com/releases/14.04/release/ubuntu-14.04-server-cloud http://cloud.centos.org/altarch/7/images/aarch64/CentOS-7-aarch64-GenericCloud.qcow2.xz EOF -xz --decompress --force ${1:-/home/opnfv/functest/images}/CentOS-7-aarch64-GenericCloud.qcow2.xz - -exit $? +xz --decompress --force --keep ${1:-/home/opnfv/functest/images}/CentOS-7-aarch64-GenericCloud.qcow2.xz diff --git a/functest/ci/run_tests.py b/functest/ci/run_tests.py index 87e3d37ba..feafa89e6 100644 --- a/functest/ci/run_tests.py +++ b/functest/ci/run_tests.py @@ -189,9 +189,9 @@ class Runner(object): def main(self, **kwargs): if 'noclean' in kwargs: - self.clean_flag = False + self.clean_flag = not kwargs['noclean'] if 'report' in kwargs: - self.report_flag = True + self.report_flag = kwargs['report'] try: if 'test' in kwargs: self.source_rc_file() diff --git a/functest/ci/testcases.yaml b/functest/ci/testcases.yaml index fac81267f..ce71c9b6f 100644 --- a/functest/ci/testcases.yaml +++ b/functest/ci/testcases.yaml @@ -324,10 +324,10 @@ tiers: criteria: 100 blocking: false description: >- - Test suite for odl-sfc to test two chains and two SFs + Test suite for odl-sfc to test two chains with one SF and one chain with two SFs dependencies: - installer: '(apex)|(fuel)' - scenario: 'odl_l2-sfc' + installer: '' + scenario: 'odl.*sfc' run: module: 'functest.core.feature' class: 'BashFeature' diff --git a/functest/opnfv_tests/openstack/vping/vping_base.py b/functest/opnfv_tests/openstack/vping/vping_base.py index 40fcb07f0..6e9080654 100644 --- a/functest/opnfv_tests/openstack/vping/vping_base.py +++ b/functest/opnfv_tests/openstack/vping/vping_base.py @@ -113,13 +113,13 @@ class VPingBase(testcase.TestCase): vping_physical_network = None vping_segmentation_id = None - if (hasattr(CONST, 'network_type')): + if (hasattr(CONST, 'vping_network_type')): vping_network_type = CONST.__getattribute__( 'vping_network_type') - if (hasattr(CONST, 'physical_network')): + if (hasattr(CONST, 'vping_physical_network')): vping_physical_network = CONST.__getattribute__( 'vping_physical_network') - if (hasattr(CONST, 'segmentation_id')): + if (hasattr(CONST, 'vping_segmentation_id')): vping_segmentation_id = CONST.__getattribute__( 'vping_segmentation_id') diff --git a/requirements.txt b/requirements.txt index e1d34a36a..ba5d91cb8 100644 --- a/requirements.txt +++ b/requirements.txt @@ -23,6 +23,7 @@ openbaton-cli cloudify_rest_client Flask!=0.11,<1.0,>=0.10 # BSD Flask-RESTful>=0.3.5 # BSD +IPy mock>=2.0 # BSD iniparse==0.4 PrettyTable<0.8,>=0.7.1 # BSD diff --git a/upper-constraints.txt b/upper-constraints.txt index 74d363c50..fae94270c 100644 --- a/upper-constraints.txt +++ b/upper-constraints.txt @@ -14,3 +14,4 @@ robotframework-httplibrary===0.4.2 robotframework-requests===0.4.7 robotframework-sshlibrary===2.1.3;python_version=='2.7' rally===0.9.1 +IPy===0.83 |