Remove Onos in Functest 29/40229/1
authorMorgan Richomme <morgan.richomme@orange.com>
Fri, 25 Aug 2017 09:53:10 +0000 (11:53 +0200)
committerMorgan Richomme <morgan.richomme@orange.com>
Fri, 25 Aug 2017 09:53:10 +0000 (11:53 +0200)
No feedback from onos projects for Euphrates for MS6

Change-Id: I8d295c65e4b621df87752e15b5f41e04a80b32ca
Signed-off-by: Morgan Richomme <morgan.richomme@orange.com>
23 files changed:
docker/Dockerfile
docs/testing/developer/devguide/index.rst
docs/testing/user/configguide/configguide.rst
docs/testing/user/userguide/runfunctest.rst
docs/testing/user/userguide/test_details.rst
docs/testing/user/userguide/test_overview.rst
functest/ci/config_functest.yaml
functest/ci/testcases.yaml
functest/opnfv_tests/sdn/onos/__init__.py [deleted file]
functest/opnfv_tests/sdn/onos/onos.py [deleted file]
functest/opnfv_tests/sdn/onos/sfc/README.md [deleted file]
functest/opnfv_tests/sdn/onos/sfc/sfc.py [deleted file]
functest/opnfv_tests/sdn/onos/sfc/sfc_onos.py [deleted file]
functest/opnfv_tests/sdn/onos/teston/Readme.txt [deleted file]
functest/opnfv_tests/sdn/onos/teston/__init__.py [deleted file]
functest/opnfv_tests/sdn/onos/teston/adapters/__init__.py [deleted file]
functest/opnfv_tests/sdn/onos/teston/adapters/client.py [deleted file]
functest/opnfv_tests/sdn/onos/teston/adapters/connection.py [deleted file]
functest/opnfv_tests/sdn/onos/teston/adapters/environment.py [deleted file]
functest/opnfv_tests/sdn/onos/teston/adapters/foundation.py [deleted file]
functest/opnfv_tests/sdn/onos/teston/dependencies/onos [deleted file]
functest/opnfv_tests/sdn/onos/teston/log/gitignore [deleted file]
setup.cfg

index 0e896d6..0c67145 100644 (file)
@@ -94,7 +94,6 @@ RUN git clone --depth 1 -b $BRANCH https://gerrit.opnfv.org/gerrit/fds /src/fds
 RUN git clone --depth 1 -b $ODL_TAG https://git.opendaylight.org/gerrit/p/integration/test.git /src/odl_test
 RUN git clone --depth 1 -b $VIMS_TAG https://github.com/boucherv-orange/clearwater-live-test /src/vims-test
 RUN git clone --depth 1 -b $VROUTER_TAG https://github.com/oolorg/opnfv-functest-vrouter.git ${REPOS_VNFS_DIR}/vrouter
-RUN git clone --depth 1 https://github.com/wuwenbin2/OnosSystemTest.git ${REPOS_DIR}/onos
 
 # SFC integration
 RUN /bin/bash -c ". /usr/local/lib/python2.7/dist-packages/sfc/tests/functest/setup_scripts/tacker_client_install.sh"
index 6bc4608..8a8b09c 100644 (file)
@@ -126,7 +126,7 @@ The structure of this repository is detailed in `[1]`_.
 The main internal test cases are in the opnfv_tests subfolder of the
 repository, the internal test cases are:
 
- * sdn: odl, odl_netvirt, odl_fds, onos
+ * sdn: odl, odl_netvirt, odl_fds
  * openstack: api_check, connection_check, snaps_health_check, vping_ssh, vping_userdata, tempest_*, rally_*
  * vnf: cloudify_ims
 
@@ -144,7 +144,6 @@ The external test cases are:
  * bgpvpn
  * doctor
  * domino
- * onos
  * fds
  * orchestra_ims
  * parser
index 716c8a1..d19939a 100644 (file)
@@ -120,7 +120,7 @@ recommended parameters for invoking docker container
        -e "DEPLOY_SCENARIO=os-<controller>-<nfv_feature>-<ha_mode>"
        where:
        os = OpenStack (No other VIM choices currently available)
-       controller is one of ( nosdn | odl_l2 | odl_l3 | onos | ocl)
+       controller is one of ( nosdn | odl_l2 | odl_l3 )
        nfv_feature is one or more of ( ovs | kvm | sfc | bgpvpn | nofeature )
                 If several features are pertinent then use the underscore
                 character '_' to separate each feature (e.g. ovs_kvm)
@@ -319,7 +319,6 @@ should now be in place::
     |   |   |-- images
     |   |   `-- results
     |   `-- repos
-    |       |-- onos
     |       |-- doctor
     |       `-- vnfs
    -- src
@@ -426,8 +425,7 @@ follows::
     │   │   |-- tempest
     │   │   `-- vping
     │   |-- sdn
-    │   │   |-- odl
-    │   │   `-- onos
+    │   │    `-- odl
     │   `-- vnf
     │       |-- aaa
     │       |-- ims
index c8db6ff..83e603b 100644 (file)
@@ -256,7 +256,7 @@ variables:
  * Installer IP of the engine or VM running the actual deployment, stored in INSTALLER_IP
  * The scenario [controller]-[feature]-[mode], stored in DEPLOY_SCENARIO with
 
-   * controller = (odl|ocl|nosdn|onos)
+   * controller = (odl|ocl|nosdn)
    * feature = (ovs(dpdk)|kvm|sfc|bgpvpn|ovs_dpdk_bar)
    * mode = (ha|noha)
 
index 5f5be41..f23abc5 100644 (file)
@@ -376,51 +376,6 @@ Note: the checks in OpenDaylight are based on the returned HTTP status
 code returned by OpenDaylight.
 
 
-ONOS
-^^^^
-
-TestON Framework is used to test the ONOS SDN controller functions.
-The test cases deal with L2 and L3 functions.
-The ONOS test suite can be run on any ONOS compliant scenario.
-
-The test cases are described as follows:
-
- * onosfunctest: The main executable file contains the initialization of
-   the docker environment and functions called by FUNCvirNetNB and
-   FUNCvirNetNBL3
-
- * FUNCvirNetNB
-
-   * Create Network: Post Network data and check it in ONOS
-   * Update Network: Update the Network and compare it in ONOS
-   * Delete Network: Delete the Network and check if it's NULL in ONOS or
-     not
-   * Create Subnet: Post Subnet data and check it in ONOS
-   * Update Subnet: Update the Subnet and compare it in ONOS
-   * Delete Subnet: Delete the Subnet and check if it's NULL in ONOS or not
-   * Create Port: Post Port data and check it in ONOS
-   * Update Port: Update the Port and compare it in ONOS
-   * Delete Port: Delete the Port and check if it's NULL in ONOS or not
-
- * FUNCvirNetNBL3
-
-   * Create Router: Post data for create Router and check it in ONOS
-   * Update Router: Update the Router and compare it in ONOS
-   * Delete Router: Delete the Router data and check it in ONOS
-   * Create RouterInterface: Post Router Interface data to an existing Router
-     and check it in ONOS
-   * Delete RouterInterface: Delete the RouterInterface and check the Router
-   * Create FloatingIp: Post data for create FloatingIp and check it in ONOS
-   * Update FloatingIp: Update the FloatingIp and compare it in ONOS
-   * Delete FloatingIp: Delete the FloatingIp and check that it is 'NULL' in
-     ONOS
-   * Create External Gateway: Post data to create an External Gateway for an
-     existing Router and check it in ONOS
-   * Update External Gateway: Update the External Gateway and compare the change
-   * Delete External Gateway: Delete the External Gateway and check that it is
-     'NULL' in ONOS
-
-
 Features
 --------
 
index 6aae282..b9faa24 100644 (file)
@@ -86,11 +86,6 @@ validate the scenario for the release.
 |             |               |                | upstream testcases. See below    |
 |             |               |                | for details                      |
 |             |               +----------------+----------------------------------+
-|             |               | onos           | Test suite of ONOS L2 and L3     |
-|             |               |                | functions.                       |
-|             |               |                | See `ONOSFW User Guide`_  for    |
-|             |               |                | details.                         |
-|             |               +----------------+----------------------------------+
 |             |               | odl_netvirt    | Test Suite for the OpenDaylight  |
 |             |               |                | SDN Controller when the NetVirt  |
 |             |               |                | features are installed. It       |
@@ -245,7 +240,6 @@ section `Executing the functest suites`_ of this document.
 .. _`[3]`: https://rally.readthedocs.org/en/latest/index.html
 .. _`Doctor User Guide`: http://artifacts.opnfv.org/doctor/colorado/userguide/index.html
 .. _`Promise User Guide`: http://artifacts.opnfv.org/promise/colorado/docs/userguide/index.html
-.. _`ONOSFW User Guide`: http://artifacts.opnfv.org/onosfw/colorado/userguide/index.html
 .. _`SDNVPN User Guide`: http://artifacts.opnfv.org/sdnvpn/colorado/docs/userguide/index.html
 .. _`Domino User Guide`: http://artifacts.opnfv.org/domino/docs/userguide-single/index.html
 .. _`Parser User Guide`: http://artifacts.opnfv.org/parser/colorado/docs/userguide/index.html
index cf63e1e..a04a599 100644 (file)
@@ -6,7 +6,6 @@ general:
         repo_tempest:       /src/tempest
         dir_repo_releng:    /home/opnfv/repos/releng
         repo_vims_test:     /src/vims-test
-        repo_onos:          /home/opnfv/repos/onos
         repo_barometer:     /home/opnfv/repos/barometer
         repo_doctor:        /home/opnfv/repos/doctor
         repo_odl_test:      /src/odl_test
@@ -105,11 +104,6 @@ vping:
     cleanup_objects: True
     unique_names: True
 
-onos_sfc:
-    image_base_url: http://artifacts.opnfv.org/sfc/demo
-    image_name: TestSfcVm
-    image_file_name: firewall_block_image.img
-
 odl_sfc:
     image_base_url: "http://artifacts.opnfv.org/sfc/images"
     image_name: sfc_nsh_danube
@@ -160,23 +154,6 @@ vnf:
         tenant_description: Clearwater IMS deployed with Open Baton
         config: orchestra.yaml
 
-ONOS:
-    general:
-        onosbench_username: 'root'
-        onosbench_password: 'root'
-        onoscli_username: 'root'
-        onoscli_password: 'root'
-        runtimeout: 300
-    environment:
-        OCT: '10.20.0.1'
-        OC1: '10.20.0.7'
-        OC2: '10.20.0.7'
-        OC3: '10.20.0.7'
-        OCN: '10.20.0.4'
-        OCN2: '10.20.0.5'
-        installer_master: '10.20.0.2'
-        installer_master_username: 'root'
-        installer_master_password: 'r00tme'
 promise:
     tenant_name: promise
     tenant_description: promise Functionality Testing
index fac8126..629499e 100644 (file)
@@ -206,22 +206,6 @@ tiers:
                         suites:
                             -  /src/fds/testing/robot
 
-            -
-                case_name: onos
-                project_name: functest
-                criteria: 100
-                blocking: true
-                description: >-
-                    Test Suite for the ONOS SDN Controller. It integrates
-                    some test suites from upstream using TestON as the test
-                    framework.
-                dependencies:
-                    installer: ''
-                    scenario: 'onos'
-                run:
-                    module: 'functest.opnfv_tests.sdn.onos.onos'
-                    class: 'Onos'
-
             -
                 case_name: snaps_smoke
                 project_name: functest
@@ -334,21 +318,6 @@ tiers:
                     args:
                         cmd: 'run_sfc_tests.py'
 
-            -
-                case_name: onos_sfc
-                enabled: false
-                project_name: functest
-                criteria: 100
-                blocking: true
-                description: >-
-                    Test Suite for onos-sfc to test sfc function.
-                dependencies:
-                    installer: ''
-                    scenario: 'onos-sfc'
-                run:
-                    module: 'functest.opnfv_tests.sdn.onos.onos'
-                    class: 'OnosSfc'
-
             -
                 case_name: parser-basics
                 enabled: false
diff --git a/functest/opnfv_tests/sdn/onos/__init__.py b/functest/opnfv_tests/sdn/onos/__init__.py
deleted file mode 100644 (file)
index e69de29..0000000
diff --git a/functest/opnfv_tests/sdn/onos/onos.py b/functest/opnfv_tests/sdn/onos/onos.py
deleted file mode 100644 (file)
index 08ba4da..0000000
+++ /dev/null
@@ -1,232 +0,0 @@
-#!/usr/bin/env python
-
-# Copyright (c) 2017 HUAWEI TECHNOLOGIES CO.,LTD and others.
-#
-# All rights reserved. This program and the accompanying materials
-# are made available under the terms of the Apache License, Version 2.0
-# which accompanies this distribution, and is available at
-# http://www.apache.org/licenses/LICENSE-2.0
-
-import logging
-import os
-import pkg_resources
-import re
-import subprocess
-import shutil
-import time
-import urlparse
-
-from functest.core import testcase
-from functest.utils.constants import CONST
-import functest.utils.functest_utils as ft_utils
-import functest.utils.openstack_utils as openstack_utils
-
-
-class OnosBase(testcase.TestCase):
-    onos_repo_path = CONST.__getattribute__('dir_repo_onos')
-    onos_sfc_image_name = CONST.__getattribute__('onos_sfc_image_name')
-    onos_sfc_image_path = os.path.join(
-        CONST.__getattribute__('dir_functest_images'),
-        CONST.__getattribute__('onos_sfc_image_file_name'))
-    onos_sfc_path = pkg_resources.resource_filename(
-        'functest', 'opnfv_tests/sdn/onos/sfc')
-    installer_type = CONST.__getattribute__('INSTALLER_TYPE')
-    logger = logging.getLogger(__name__)
-
-    def __init__(self, **kwargs):
-        if "case_name" not in kwargs:
-            kwargs["case_name"] = "onos_base"
-        super(OnosBase, self).__init__(**kwargs)
-
-    def run(self):
-        self.start_time = time.time()
-        try:
-            self._run()
-            res = testcase.TestCase.EX_OK
-        except Exception as e:
-            self.logger.error('Error with run: %s', e)
-            res = testcase.TestCase.EX_RUN_ERROR
-
-        self.stop_time = time.time()
-        return res
-
-    def _run(self):
-        raise NotImplementedError('_run is not implemented')
-
-
-class Onos(OnosBase):
-    def __init__(self, **kwargs):
-        if "case_name" not in kwargs:
-            kwargs["case_name"] = "onos"
-        super(Onos, self).__init__(**kwargs)
-        self.log_path = os.path.join(self.onos_repo_path, 'TestON/logs')
-
-    def set_onos_ip(self):
-        if (self.installer_type and
-                self.installer_type.lower() == 'joid'):
-            sdn_controller_env = os.getenv('SDN_CONTROLLER')
-            OC1 = re.search(r"\d+\.\d+\.\d+\.\d+", sdn_controller_env).group()
-        else:
-            neutron_url = openstack_utils.get_endpoint(service_type='network')
-            OC1 = urlparse.urlparse(neutron_url).hostname
-        os.environ['OC1'] = OC1
-        self.logger.debug("ONOS IP is %s", OC1)
-
-    def run_onos_script(self, testname):
-        cli_dir = os.path.join(self.onos_repo_path, 'TestON/bin/cli.py')
-        cmd = '{0} run {1}'.format(cli_dir, testname)
-        self.logger.debug("Run script: %s", testname)
-        ft_utils.execute_command_raise(
-            cmd,
-            error_msg=('Error when running ONOS script: %s'
-                       % (testname)))
-
-    def clean_existing_logs(self):
-        log_dir = [f for f in os.listdir(self.log_path)]
-        for log in log_dir:
-            try:
-                if os.path.isdir(log):
-                    shutil.rmtree(log)
-                elif os.path.isfile(log):
-                    os.remove(log)
-            except OSError as e:
-                self.logger.error('Error with deleting file %s: %s',
-                                  log, e.strerror)
-
-    def get_result(self):
-        cmd = 'grep -rnh Fail {0}'.format(self.log_path)
-        p = subprocess.Popen(cmd,
-                             shell=True,
-                             stdout=subprocess.PIPE,
-                             stderr=subprocess.STDOUT)
-
-        for line in p.stdout:
-            self.logger.debug(line)
-            if re.search("\s+[1-9]+\s+", line):
-                self.logger.debug("Testcase Fails\n" + line)
-
-        cmd = "grep -rnh 'Execution Time' {0}".format(self.log_path)
-        result_buffer = os.popen(cmd).read()
-        time1 = result_buffer[114:128]
-        time2 = result_buffer[28:42]
-        cmd = "grep -rnh 'Success Percentage' {0}".format(
-            os.path.join(self.log_path, "FUNCvirNetNB_*"))
-        result_buffer = os.popen(cmd).read()
-        if result_buffer.find('100%') >= 0:
-            result1 = 'Success'
-        else:
-            result1 = 'Failed'
-        cmd = "grep -rnh 'Success Percentage' {0}".format(
-            os.path.join(self.log_path, "FUNCvirNetNBL3*"))
-        result_buffer = os.popen(cmd).read()
-        if result_buffer.find('100%') >= 0:
-            result2 = 'Success'
-        else:
-            result2 = 'Failed'
-        status1 = []
-        status2 = []
-        cmd = "grep -rnh 'h3' {0}".format(
-            os.path.join(self.log_path, "FUNCvirNetNB_*"))
-        result_buffer = os.popen(cmd).read()
-        pattern = re.compile("<h3>([^-]+) - ([^-]+) - (\S*)</h3>")
-        # res = pattern.search(result_buffer).groups()
-        res = pattern.findall(result_buffer)
-        i = 0
-        for index in range(len(res)):
-            status1.append({'Case name:': res[i][0] + res[i][1],
-                            'Case result': res[i][2]})
-            i = i + 1
-        cmd = "grep -rnh 'h3' {0}".format(
-            os.path.join(self.log_path, "FUNCvirNetNBL3*"))
-        result_buffer = os.popen(cmd).read()
-        pattern = re.compile("<h3>([^-]+) - ([^-]+) - (\S*)</h3>")
-        res = pattern.findall(result_buffer)
-        i = 0
-        for index in range(len(res)):
-            status2.append({'Case name:': res[i][0] + res[i][1],
-                            'Case result': res[i][2]})
-            i = i + 1
-        payload = {'FUNCvirNet': {'duration': time1,
-                                  'result': result1,
-                                  'status': status1},
-                   'FUNCvirNetL3': {'duration': time2,
-                                    'result': result2,
-                                    'status': status2}}
-        return payload
-
-    def parse_result(self):
-        result = self.get_result()
-        status = "FAIL"
-        try:
-            if (result['FUNCvirNet']['result'] == "Success" and
-                    result['FUNCvirNetL3']['result'] == "Success"):
-                status = "PASS"
-        except Exception:
-            self.logger.error("Unable to set ONOS result")
-
-        self.result = status
-        self.details = result
-
-    def _run(self):
-        self.clean_existing_logs()
-        self.set_onos_ip()
-        self.run_onos_script('FUNCvirNetNB')
-        self.run_onos_script('FUNCvirNetNBL3')
-        self.parse_result()
-
-
-class OnosSfc(OnosBase):
-    def __init__(self, **kwargs):
-        if "case_name" not in kwargs:
-            kwargs["case_name"] = "onos_sfc"
-        super(OnosSfc, self).__init__(**kwargs)
-
-    def get_ip(self, type):
-        url = openstack_utils.get_endpoint(service_type=type)
-        self.logger.debug('get_ip for %s: %s', type, url)
-        return urlparse.urlparse(url).hostname
-
-    def update_sfc_onos_file(self, before, after):
-        file_dir = os.path.join(self.onos_sfc_path, "sfc_onos.py")
-        cmd = "sed -i 's/{0}/{1}/g' {2}".format(before,
-                                                after,
-                                                file_dir)
-        ft_utils.execute_command_raise(
-            cmd,
-            error_msg=('Error with replacing %s with %s'
-                       % (before, after)))
-
-    def create_image(self):
-        self.logger.warn('inside create_image')
-        glance_client = openstack_utils.get_glance_client()
-        image_id = openstack_utils.create_glance_image(
-            glance_client,
-            self.onos_sfc_image_name,
-            self.onos_sfc_image_path)
-        if image_id is None:
-            raise Exception('Failed to create image')
-
-        self.logger.debug("Image '%s' with ID=%s is created successfully.",
-                          self.onos_sfc_image_name, image_id)
-
-    def set_sfc_conf(self):
-        self.update_sfc_onos_file("keystone_ip", self.get_ip("identity"))
-        self.update_sfc_onos_file("neutron_ip", self.get_ip("network"))
-        self.update_sfc_onos_file("nova_ip", self.get_ip("compute"))
-        self.update_sfc_onos_file("glance_ip", self.get_ip("image"))
-        self.update_sfc_onos_file("console",
-                                  CONST.__getattribute__('OS_PASSWORD'))
-        neutron_client = openstack_utils.get_neutron_client()
-        ext_net = openstack_utils.get_external_net(neutron_client)
-        self.update_sfc_onos_file("admin_floating_net", ext_net)
-        self.logger.debug("SFC configuration is modified")
-
-    def sfc_test(self):
-        cmd = 'python {0}'.format(os.path.join(self.onos_sfc_path, 'sfc.py'))
-        ft_utils.execute_command_raise(cmd,
-                                       error_msg='Error with testing SFC')
-
-    def _run(self):
-        self.create_image()
-        self.set_sfc_conf()
-        self.sfc_test()
diff --git a/functest/opnfv_tests/sdn/onos/sfc/README.md b/functest/opnfv_tests/sdn/onos/sfc/README.md
deleted file mode 100644 (file)
index ae63ee2..0000000
+++ /dev/null
@@ -1,21 +0,0 @@
-SFC Script ReadMe File
-**********************
-
-Topology
----------
-
-Validated with the Fuel Enviroment.
-
-
-Things to Remember :
---------------------
-
-1] This Script basically Tests the SFC functionality with ONOS controller.
-2] Ip address of Openstack and ONOS are got dynamically.
-3] Initally this sfc script can be used for ONOS and on Request , if need will modify for other controllers.
-
-
-Contact Details :
------------------
-
-email-id : antonysilvester@gmail.com
diff --git a/functest/opnfv_tests/sdn/onos/sfc/sfc.py b/functest/opnfv_tests/sdn/onos/sfc/sfc.py
deleted file mode 100644 (file)
index 2bb9082..0000000
+++ /dev/null
@@ -1,174 +0,0 @@
-#!/usr/bin/env python
-#
-# Copyright (c) CREATED5 All rights reserved
-# This program and the accompanying materials
-# are made available under the terms of the Apache License, Version 2.0
-# which accompanies this distribution, and is available at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# ###########################################################################
-#                          OPNFV SFC Script
-# **** Scripted by Antony Silvester  - antony.silvester@huawei.com ******
-# ###########################################################################
-
-# Testcase 1 : Prerequisites configuration for SFC
-# Testcase 2 : Creation of 3 VNF Nodes and Attaching Ports
-# Testcase 3 : Configure  SFC [Port pair,Port Group ,Flow classifer
-# Testcase 4 : Configure Port Chain and verify the flows are added.
-# Testcase 5 : Verify  traffic with VNF node.
-# Testcase 6 : Remove the Port Chain and Verify the traffic.
-# Testcase 7 : Cleanup
-# ###########################################################################
-#
-"""Script to Test the SFC scenarios in ONOS."""
-
-import logging
-import time
-import functest.utils.functest_utils as ft_utils
-from sfc_onos import SfcOnos
-
-logger = logging.getLogger(__name__)
-Sfc_obj = SfcOnos()
-
-OK = 200
-CREATED = 201
-ACCEPTED = 202
-NO_CONTENT = 204
-
-start_time = time.time()
-
-
-def PreConfig():
-    logger.info("Testcase 1 : Prerequisites configuration for SFC")
-    logger.info("1.1 Creation of Auth-Token")
-    check(Sfc_obj.getToken, OK, "Creation of Token")
-    logger.info("1.2 Creation of Network")
-    check(Sfc_obj.createNetworks, CREATED, "Creation of network")
-    logger.info("1.3 Creation of Subnetwork")
-    check(Sfc_obj.createSubnets, CREATED, "Creation of Subnetwork")
-
-
-def CreateNodes():
-    logger.info("Testcase 2 : Creation of 3 VNF Nodes and Attaching Ports")
-    logger.info("2.1 Creation of Ports")
-    check(Sfc_obj.createPorts, CREATED, "Creation of Port")
-    logger.info("2.2 Creation of VM-Compute-Node")
-    check(Sfc_obj.createVm, ACCEPTED, "Creation of VM")
-    logger.info("2.3 Check VM Status")
-    check(Sfc_obj.checkVmState, OK, "Vm statue check")
-    logger.info("2.4 Router Creation")
-    check(Sfc_obj.createRouter, CREATED, "Creation of Router")
-    logger.info("2.5 Attachement of Interface to VM")
-    check(Sfc_obj.attachInterface, OK, "Interface attached to VM")
-    logger.info("2.6 Attachement of FLoating Ip to VM")
-    check(Sfc_obj.addFloatingIp, ACCEPTED, "Floating Ip attached to VM")
-
-
-def ConfigSfc():
-    logger.info(
-        "Testcase 3 : Configure SFC [Portair,PortGroup,Flow classifer]")
-    logger.info("3.1 Creation of Port Pair")
-    check(Sfc_obj.createPortPair, CREATED, "Creation of Port Pair")
-    logger.info("3.2 Getting the  Port Pair ID")
-    check(Sfc_obj.getPortPair, OK, "Getting Port Pair ID")
-    logger.info("3.3 Creation of Port Pair Group")
-    check(Sfc_obj.createPortGroup, CREATED, "Creation of Port Pair Group")
-    logger.info("3.4 Getting Port Pair Group ID ")
-    check(Sfc_obj.getPortGroup, OK, "Getting Port Pair Group ID")
-    logger.info("3.5 Creation of Flow Classifier")
-    check(Sfc_obj.createFlowClassifier, CREATED, "Creation of Flow Classifier")
-    logger.info(
-        "Testcase 4 : Configure Port Chain and verify flows are added")
-    logger.info("4.1 Creation of Port Chain")
-    check(Sfc_obj.createPortChain, CREATED, "Creation of Port Chain")
-
-
-def VerifySfcTraffic():
-    status = "PASS"
-    logger.info("Testcase 5 : Verify  traffic with VNF node.")
-    if (Sfc_obj.loginToVM() == "1"):
-        logger.info("SFC function Working")
-    else:
-        logger.error("SFC function not working")
-        status = "FAIL"
-
-    logger.info("Testcase 6 : Remove the Port Chain and Verify the traffic")
-    if (Sfc_obj.deletePortChain() == NO_CONTENT):
-        if (Sfc_obj.loginToVM() == "0"):
-            logger.info("SFC function is removed Successfully")
-        else:
-            logger.error("SFC function not Removed. Have some problem")
-            status = "FAIL"
-        if (Sfc_obj.deleteFlowClassifier() == NO_CONTENT):
-            if (Sfc_obj.deletePortGroup() == NO_CONTENT):
-                if (Sfc_obj.deletePortPair() == NO_CONTENT):
-                    logger.info(
-                        "SFC configuration is deleted successfully")
-                else:
-                    logger.error("Port pair is deleted successfully")
-                    status = "FAIL"
-            else:
-                logger.error("Port Group is NOT deleted successfully")
-                status = "FAIL"
-        else:
-            logger.error("Flow classifier is NOT deleted successfully")
-            status = "FAIL"
-    else:
-        logger.error("PortChain configuration is NOT deleted successfully")
-        status = "FAIL"
-    if (status == "FAIL"):
-        fail("Traffic for SFC is NOT verified successfully")
-
-
-def CleanUp():
-    logger.info("Testcase 7 : Cleanup")
-    if (Sfc_obj.cleanup() == NO_CONTENT):
-        logger.info("CleanUp is successfull")
-    else:
-        logger.error("CleanUp is NOT successfull")
-
-
-def check(method, criteria, msg):
-    if (method() == criteria):
-        logger.info(msg + 'is Successful')
-    else:
-        fail(msg + 'is not successful')
-
-
-def fail(fail_info):
-    logger.error(fail_info)
-    CleanUp()
-    PushDB("FAIL", fail_info)
-    exit(-1)
-
-
-def PushDB(status, info):
-    logger.info("Summary :")
-    try:
-        logger.debug("Push ONOS SFC results into DB")
-        stop_time = time.time()
-
-        # ONOS SFC success criteria = all tests OK
-        duration = round(stop_time - start_time, 1)
-        logger.info("Result is " + status)
-        ft_utils.push_results_to_db("functest",
-                                    "onos_sfc",
-                                    start_time,
-                                    stop_time,
-                                    status,
-                                    details={'duration': duration,
-                                             'error': info})
-    except:
-        logger.error("Error pushing results into Database")
-
-
-def main():
-    """Script to Test the SFC scenarios in ONOS."""
-    logging.basicConfig()
-    PreConfig()
-    CreateNodes()
-    ConfigSfc()
-    VerifySfcTraffic()
-    CleanUp()
-    PushDB("PASS", "")
diff --git a/functest/opnfv_tests/sdn/onos/sfc/sfc_onos.py b/functest/opnfv_tests/sdn/onos/sfc/sfc_onos.py
deleted file mode 100644 (file)
index 4e93c13..0000000
+++ /dev/null
@@ -1,887 +0,0 @@
-import logging
-import os
-import re
-import time
-import json
-import requests
-
-from multiprocessing import Process
-from multiprocessing import Queue
-from pexpect import pxssh
-
-from functest.utils.constants import CONST
-
-OK = 200
-CREATED = 201
-ACCEPTED = 202
-NO_CONTENT = 204
-
-
-class SfcOnos(object):
-    """Defines all the def function of SFC."""
-
-    def __init__(self):
-        """Initialization of variables."""
-        self.logger = logging.getLogger(__name__)
-        self.osver = "v2.0"
-        self.token_id = 0
-        self.net_id = 0
-        self.image_id = 0
-        self.keystone_hostname = 'keystone_ip'
-        self.neutron_hostname = 'neutron_ip'
-        self.nova_hostname = 'nova_ip'
-        self.glance_hostname = 'glance_ip'
-        self.onos_hostname = 'onos_ip'
-        # Network variables #######
-        self.netname = "test_nw"
-        self.admin_state_up = True
-        self.tenant_id = 0
-        self.subnetId = 0
-        # #########################
-        # SubNet variables#########
-        self.ip_version = 4
-        self.cidr = "20.20.20.0/24"
-        self.subnetname = "test_nw_subnets"
-        # ###############################
-        # Port variable
-        self.port = "port"
-        self.port_num = []
-        self.vm_id = 0
-        self.port_ip = []
-        self.count = 0
-        self.i = 0
-        self.numTerms = 3
-        self.security_groups = []
-        self.port_security_enabled = False
-        # ###############################
-        # VM creation variable
-        self.container_format = "bare"
-        self.disk_format = "qcow2"
-        self.imagename = "TestSfcVm"
-        self.createImage = ("/home/root1/devstack/files/images/"
-                            "firewall_block_image.img")
-
-        self.vm_name = "vm"
-        self.imageRef = "test"
-        self.flavorRef = "1"
-        self.max_count = "1"
-        self.min_count = "1"
-        self.org_nw_port = []
-        self.image_id = 0
-        self.routername = "router1"
-        self.router_id = 0
-        # #####################################
-        # Port pair
-        self.port_pair_ingress = 0
-        self.port_pair_egress = 0
-        self.port_pair_name = "PP"
-        self.port_pair_id = []
-        # ####################################
-        # Port Group
-        self.port_group_name = "PG"
-        self.port_grp_id = []
-        # ####################################
-        # FlowClassifier
-        self.source_ip_prefix = "20.20.20.0/24"
-        self.destination_ip_prefix = "20.20.20.0/24"
-        self.logical_source_port = 0
-        self.fcname = "FC"
-        self.ethertype = "IPv4"
-        # #####################################
-        self.flow_class_if = 0
-        # #####################################
-        # Port Chain variables
-        self.pcname = 'PC'
-        self.PC_id = 0
-        # #####################################
-        # Port Chain variables
-        self.flowadd = ''
-        # #####################################
-        self.ip_pool = 0
-        self.vm_public_ip = []
-        self.vm_public_id = []
-        self.cirros_username = CONST.__getattribute__(
-            'openstack_image_username')
-        self.cirros_password = CONST.__getattribute__(
-            'openstack_image_password')
-        self.net_id1 = 0
-        self.vm = []
-        self.address = 0
-        self.value = 0
-        self.pub_net_id = 0
-
-    def getToken(self):
-        """Get the keystone token value from Openstack ."""
-        url = 'http://%s:5000/%s/tokens' % (self.keystone_hostname,
-                                            self.osver)
-        data = ('{"auth": {"tenantName": "admin", "passwordCredentials":'
-                '{ "username": "admin", "password": "console"}}}')
-        headers = {"Accept": "application/json"}
-        response = requests.post(url, headers=headers, data=data)
-        if (response.status_code == OK):
-            json1_data = json.loads(response.content)
-            self.logger.debug(response.status_code)
-            self.logger.debug(response.content)
-            self.logger.debug(json1_data)
-            self.token_id = json1_data['access']['token']['id']
-            self.tenant_id = json1_data['access']['token']['tenant']['id']
-            return(response.status_code)
-        else:
-            return(response.status_code)
-
-    def createNetworks(self):
-        """Creation of networks."""
-        Dicdata = {}
-        if self.netname != '':
-            Dicdata['name'] = self.netname
-        if self.admin_state_up != '':
-            Dicdata['admin_state_up'] = self.admin_state_up
-        Dicdata = {'network': Dicdata}
-        data = json.dumps(Dicdata, indent=4)
-        url = 'http://%s:9696/%s/networks' % (self.neutron_hostname,
-                                              self.osver)
-        headers = {"Accept": "application/json",
-                   "X-Auth-Token": self.token_id}
-        response = requests.post(url, headers=headers, data=data)
-        if (response.status_code == CREATED):
-            self.logger.debug(response.status_code)
-            self.logger.debug(response.content)
-
-            json1_data = json.loads(response.content)
-            self.logger.debug(json1_data)
-            self.net_id = json1_data['network']['id']
-            return(response.status_code)
-        else:
-            return(response.status_code)
-
-    def createSubnets(self):
-        """Creation of SubNets."""
-        Dicdata = {}
-        if self.net_id != 0:
-            Dicdata['network_id'] = self.net_id
-        if self.ip_version != '':
-            Dicdata['ip_version'] = self.ip_version
-        if self.cidr != '':
-            Dicdata['cidr'] = self.cidr
-        if self.subnetname != '':
-            Dicdata['name'] = self.subnetname
-
-        Dicdata = {'subnet': Dicdata}
-        data = json.dumps(Dicdata, indent=4)
-        url = 'http://%s:9696/%s/subnets' % (self.neutron_hostname,
-                                             self.osver)
-        headers = {"Accept": "application/json",
-                   "X-Auth-Token": self.token_id}
-        response = requests.post(url, headers=headers, data=data)
-
-        if (response.status_code == CREATED):
-            self.logger.debug(response.status_code)
-            self.logger.debug(response.content)
-            json1_data = json.loads(response.content)
-            self.logger.debug(json1_data)
-            self.subnetId = json1_data['subnet']['id']
-            return(response.status_code)
-        else:
-            return(response.status_code)
-
-    def createPorts(self):
-        """Creation of Ports."""
-        for x in range(self.i, self.numTerms):
-            Dicdata = {}
-            if self.net_id != '':
-                Dicdata['network_id'] = self.net_id
-            if self.port != '':
-                Dicdata['name'] = "port" + str(x)
-            if self.admin_state_up != '':
-                Dicdata['admin_state_up'] = self.admin_state_up
-            if self.security_groups != '':
-                Dicdata['security_groups'] = self.security_groups
-            # if self.port_security_enabled != '':
-            #    Dicdata['port_security_enabled'] = self.port_security_enabled
-
-            Dicdata = {'port': Dicdata}
-            data = json.dumps(Dicdata, indent=4)
-            url = 'http://%s:9696/%s/ports' % (self.neutron_hostname,
-                                               self.osver)
-            headers = {"Accept": "application/json",
-                       "X-Auth-Token": self.token_id}
-            response = requests.post(url, headers=headers, data=data)
-
-            if (response.status_code == CREATED):
-                self.logger.debug(response.status_code)
-                self.logger.debug(response.content)
-
-                json1_data = json.loads(response.content)
-                self.logger.debug(json1_data)
-                self.port_num.append(json1_data['port']['id'])
-                self.port_ip.append(json1_data['port']['fixed_ips'][0]
-                                    ['ip_address'])
-            else:
-                return(response.status_code)
-        return(response.status_code)
-
-    def createVm(self):
-        """Creation of Instance, using  firewall image."""
-        url = ("http://%s:9292/v2/images?"
-               "name=TestSfcVm" % (self.glance_hostname))
-        headers = {"Accept": "application/json",
-                   "Content-Type": "application/octet-stream",
-                   "X-Auth-Token": self.token_id}
-        response = requests.get(url, headers=headers)
-        if (response.status_code == OK):
-            self.logger.debug(response.status_code)
-            self.logger.debug(response.content)
-            self.logger.info("FireWall Image is available")
-            json1_data = json.loads(response.content)
-            self.logger.debug(json1_data)
-            self.image_id = json1_data['images'][0]['id']
-        else:
-            return(response.status_code)
-
-        url = ("http://%s:8774/v2.1/%s/flavors?"
-               "name=m1.tiny" % (self.nova_hostname, self.tenant_id))
-        headers = {"Accept": "application/json", "Content-Type":
-                   "application/json", "X-Auth-Token": self.token_id}
-        response = requests.get(url, headers=headers)
-
-        if (response.status_code == OK):
-            self.logger.debug(response.status_code)
-            self.logger.debug(response.content)
-            self.logger.info("Flavor is available")
-            json1_data = json.loads(response.content)
-            self.logger.debug(json1_data)
-            self.flavorRef = json1_data['flavors'][0]['id']
-        else:
-            return(response.status_code)
-
-        for y in range(0, 3):
-            Dicdata = {}
-            org_nw_port = []
-            org_nw_port.append({'port': self.port_num[y]})
-            if self.vm_name != '':
-                Dicdata['name'] = "vm" + str(y)
-            if self.imageRef != '':
-                Dicdata['imageRef'] = self.image_id
-            if self.flavorRef != '':
-                Dicdata['flavorRef'] = self.flavorRef
-            if self.max_count != '':
-                Dicdata['max_count'] = self.max_count
-            if self.min_count != '':
-                Dicdata['min_count'] = self.min_count
-            if self.org_nw_port != '':
-                Dicdata['networks'] = org_nw_port
-            Dicdata = {'server': Dicdata}
-            data = json.dumps(Dicdata, indent=4)
-            url = 'http://%s:8774/v2.1/%s/servers' % (self.nova_hostname,
-                                                      self.tenant_id)
-            headers = {"Accept": "application/json", "Content-Type":
-                       "application/json", "X-Auth-Token": self.token_id}
-            response = requests.post(url, headers=headers, data=data)
-            if (response.status_code == ACCEPTED):
-                self.logger.debug(response.status_code)
-                self.logger.debug(response.content)
-                info = "Creation of VM" + str(y) + " is successfull"
-                self.logger.debug(info)
-
-                json1_data = json.loads(response.content)
-                self.logger.debug(json1_data)
-                self.vm_id = json1_data['server']['id']
-                self.vm.append(json1_data['server']['id'])
-            else:
-                return(response.status_code)
-
-        return(response.status_code)
-
-    def checkVmState(self):
-        """Checking the Status of the Instance."""
-        time.sleep(10)
-        for y in range(0, 3):
-            url = ("http://%s:8774/v2.1/servers/"
-                   "detail?name=vm" + str(y)) % (self.neutron_hostname)
-            headers = {"Accept": "application/json",
-                       "X-Auth-Token": self.token_id}
-            response = requests.get(url, headers=headers)
-            if (response.status_code == OK):
-                self.logger.debug(response.status_code)
-                self.logger.debug(response.content)
-                json1_data = json.loads(response.content)
-                self.logger.debug(json1_data)
-                self.vm_active = json1_data['servers'][0]['status']
-                if (self.vm_active == "ACTIVE"):
-                    info = "VM" + str(y) + " is Active : " + self.vm_active
-                else:
-                    info = "VM" + str(y) + " is NOT Active : " + self.vm_active
-                self.logger.debug(info)
-            else:
-                return(response.status_code)
-        return(response.status_code)
-        time.sleep(10)
-
-    def createPortPair(self):
-        """Creation of Port Pair."""
-        for p in range(1, 2):
-            Dicdata = {}
-            if self.port_pair_ingress != '':
-                Dicdata['ingress'] = self.port_num[p]
-            if self.port_pair_egress != '':
-                egress = p
-                Dicdata['egress'] = self.port_num[egress]
-            if self.port_pair_name != '':
-                Dicdata['name'] = "PP" + str(p)
-
-            Dicdata = {'port_pair': Dicdata}
-            data = json.dumps(Dicdata, indent=4)
-            url = 'http://%s:9696/%s/sfc/port_pairs' % (self.neutron_hostname,
-                                                        self.osver)
-            headers = {"Accept": "application/json", "X-Auth-Token":
-                       self.token_id}
-            response = requests.post(url, headers=headers, data=data)
-            if (response.status_code == CREATED):
-                info = ("Creation of Port Pair PP" + str(p) +
-                        " is successful")
-                self.logger.debug(info)
-            else:
-                return(response.status_code)
-
-        return(response.status_code)
-
-    def getPortPair(self):
-        """Query the Portpair id value."""
-        for p in range(0, 1):
-            url = ("http://%s:9696/%s/"
-                   "sfc/port_pairs?name=PP1" % (self.neutron_hostname,
-                                                self.osver))
-            headers = {"Accept": "application/json",
-                       "X-Auth-Token": self.token_id}
-            response = requests.get(url, headers=headers)
-
-            if (response.status_code == OK):
-                self.logger.debug(response.status_code)
-                self.logger.debug(response.content)
-                json1_data = json.loads(response.content)
-                self.logger.debug(json1_data)
-                self.port_pair_id.append(json1_data['port_pairs'][0]['id'])
-            else:
-                return(response.status_code)
-        return(response.status_code)
-
-    def createPortGroup(self):
-        """Creation of PortGroup."""
-        for p in range(0, 1):
-            Dicdata = {}
-            port_pair_list = []
-            port_pair_list.append(self.port_pair_id[p])
-            if self.port_group_name != '':
-                Dicdata['name'] = "PG" + str(p)
-            if self.port_pair_id != '':
-                Dicdata['port_pairs'] = port_pair_list
-
-            Dicdata = {'port_pair_group': Dicdata}
-            data = json.dumps(Dicdata, indent=4)
-            url = ("http://%s:9696/%s/"
-                   "sfc/port_pair_groups" % (self.neutron_hostname,
-                                             self.osver))
-            headers = {"Accept": "application/json", "X-Auth-Token":
-                       self.token_id}
-            response = requests.post(url, headers=headers, data=data)
-            if (response.status_code == CREATED):
-                info = ("Creation of Port Group PG" + str(p) +
-                        "is successful")
-                self.logger.debug(info)
-            else:
-                return(response.status_code)
-
-        return(response.status_code)
-
-    def getPortGroup(self):
-        """Query the PortGroup id."""
-        for p in range(0, 1):
-            url = ("http://%s:9696/%s/sfc/port_pair_groups"
-                   "?name=PG" + str(p)) % (self.neutron_hostname,
-                                           self.osver)
-            headers = {"Accept": "application/json", "X-Auth-Token":
-                       self.token_id}
-            response = requests.get(url, headers=headers)
-
-            if (response.status_code == OK):
-                self.logger.debug(response.status_code)
-                self.logger.debug(response.content)
-                json1_data = json.loads(response.content)
-                self.port_grp_id.append(json1_data['port_pair_groups']
-                                        [0]['id'])
-            else:
-                return(response.status_code)
-        return(response.status_code)
-
-    def createFlowClassifier(self):
-        """Creation of Flow Classifier."""
-        Dicdata = {}
-        if self.source_ip_prefix != '':
-            Dicdata['source_ip_prefix'] = self.source_ip_prefix
-        if self.destination_ip_prefix != '':
-            Dicdata['destination_ip_prefix'] = self.destination_ip_prefix
-        if self.logical_source_port != '':
-            Dicdata['logical_source_port'] = self.port_num[0]
-        if self.fcname != '':
-            Dicdata['name'] = "FC1"
-        if self.ethertype != '':
-            Dicdata['ethertype'] = self.ethertype
-
-        Dicdata = {'flow_classifier': Dicdata}
-        data = json.dumps(Dicdata, indent=4)
-        url = ("http://%s:9696/%s/"
-               "sfc/flow_classifiers" % (self.neutron_hostname,
-                                         self.osver))
-        headers = {"Accept": "application/json",
-                   "X-Auth-Token": self.token_id}
-        response = requests.post(url, headers=headers, data=data)
-        if (response.status_code == CREATED):
-            json1_data = json.loads(response.content)
-            self.flow_class_if = json1_data['flow_classifier']['id']
-            self.logger.debug("Creation of Flow Classifier is successful")
-            return(response.status_code)
-        else:
-            return(response.status_code)
-
-    def createPortChain(self):
-        """Creation of PortChain."""
-        Dicdata = {}
-        flow_class_list = []
-        flow_class_list.append(self.flow_class_if)
-        port_pair_groups_list = []
-        port_pair_groups_list.append(self.port_grp_id[0])
-
-        if flow_class_list != '':
-            Dicdata['flow_classifiers'] = flow_class_list
-        if self.pcname != '':
-            Dicdata['name'] = "PC1"
-        if port_pair_groups_list != '':
-            Dicdata['port_pair_groups'] = port_pair_groups_list
-
-        Dicdata = {'port_chain': Dicdata}
-        data = json.dumps(Dicdata, indent=4)
-        url = 'http://%s:9696/%s/sfc/port_chains' % (self.neutron_hostname,
-                                                     self.osver)
-        headers = {"Accept": "application/json",
-                   "Content-Type": "application/json",
-                   "X-Auth-Token": self.token_id}
-        response = requests.post(url, headers=headers, data=data)
-        if (response.status_code == CREATED):
-            self.logger.debug("Creation of PORT CHAIN is successful")
-            json1_data = json.loads(response.content)
-            self.PC_id = json1_data['port_chain']['id']
-            return(response.status_code)
-        else:
-            return(response.status_code)
-
-    def checkFlowAdded(self):
-        """Check whether the Flows are downloaded successfully."""
-        time.sleep(5)
-        response = requests.get('http://' + self.onos_hostname +
-                                ':8181/onos/v1/flows',
-                                auth=("karaf", "karaf"))
-        if (response.status_code == OK):
-            self.logger.debug("Flow is successfully Queries")
-            json1_data = json.loads(response.content)
-            self.flowadd = json1_data['flows'][0]['state']
-
-            if (self.flowadd == "ADDED"):
-                self.logger.info("Flow is successfully added to OVS")
-                return(response.status_code)
-            else:
-                return(404)
-        else:
-            return(response.status_code)
-####################################################################
-
-    def createRouter(self):
-        """Creation of Router."""
-        Dicdata = {}
-        if self.routername != '':
-            Dicdata['name'] = "router1"
-        if self.admin_state_up != '':
-            Dicdata['admin_state_up'] = self.admin_state_up
-
-        Dicdata = {'router': Dicdata}
-        data = json.dumps(Dicdata, indent=4)
-        url = 'http://%s:9696/%s/routers.json' % (self.neutron_hostname,
-                                                  self.osver)
-        headers = {"Accept": "application/json",
-                   "X-Auth-Token": self.token_id}
-        response = requests.post(url, headers=headers, data=data)
-        if (response.status_code == CREATED):
-            self.logger.debug(response.status_code)
-            self.logger.debug(response.content)
-            self.logger.debug("Creation of Router is successfull")
-            json1_data = json.loads(response.content)
-            self.logger.debug(json1_data)
-            self.router_id = json1_data['router']['id']
-            return(response.status_code)
-        else:
-            return(response.status_code)
-
-    def attachInterface(self):
-        """Attachment of instance ports to the Router."""
-        url = ("http://%s:9696/%s/networks"
-               "?name=admin_floating_net" % (self.neutron_hostname,
-                                             self.osver))
-        headers = {"Accept": "application/json", "X-Auth-Token": self.token_id}
-        response = requests.get(url, headers=headers)
-        if (response.status_code == OK):
-            self.logger.debug(response.status_code)
-            self.logger.debug(response.content)
-            json1_data = json.loads(response.content)
-            self.logger.debug(json1_data)
-            self.net_name = json1_data['networks'][0]['name']
-            if (self.net_name == "admin_floating_net"):
-                self.pub_net_id = json1_data['networks'][0]['id']
-            else:
-                return(response.status_code)
-        ############################################################
-
-        self.logger.info("Attachment of Instance interface to Router")
-        Dicdata = {}
-        if self.subnetId != '':
-            Dicdata['subnet_id'] = self.subnetId
-
-        data = json.dumps(Dicdata, indent=4)
-        url = ("http://%s:9696/%s/routers"
-               "/%s/add_router_interface" % (self.neutron_hostname,
-                                             self.osver,
-                                             self.router_id))
-        headers = {"Accept": "application/json",
-                   "X-Auth-Token": self.token_id}
-        response = requests.put(url, headers=headers, data=data)
-        if (response.status_code == OK):
-            self.logger.debug(response.status_code)
-            self.logger.debug(response.content)
-            self.logger.info("Interface attached successfull")
-        else:
-            return(response.status_code)
-        ############################################################
-        self.logger.info("Attachment of Gateway to Router")
-
-        Dicdata1 = {}
-        if self.pub_net_id != 0:
-            Dicdata1['network_id'] = self.pub_net_id
-
-        Dicdata1 = {'external_gateway_info': Dicdata1}
-        Dicdata1 = {'router': Dicdata1}
-        data = json.dumps(Dicdata1, indent=4)
-        url = 'http://%s:9696/%s/routers/%s' % (self.neutron_hostname,
-                                                self.osver,
-                                                self.router_id)
-        headers = {"Accept": "application/json",
-                   "X-Auth-Token": self.token_id}
-        response = requests.put(url, headers=headers, data=data)
-        if (response.status_code == OK):
-            self.logger.debug(response.status_code)
-            self.logger.debug(response.content)
-            self.logger.info("Gateway Interface attached successfull")
-            return(response.status_code)
-        else:
-            return(response.status_code)
-
-    def addFloatingIp(self):
-        """Attachment of Floating Ip to the Router."""
-        for ip_num in range(0, 2):
-            Dicdata = {}
-            Dicdata['pool'] = "admin_floating_net"
-
-            data = json.dumps(Dicdata, indent=4)
-            url = ("http://%s:8774/v2.1/"
-                   "os-floating-ips" % (self.nova_hostname))
-            headers = {"Accept": "application/json",
-                       "X-Auth-Token": self.token_id}
-            response = requests.post(url, headers=headers, data=data)
-            if (response.status_code == OK):
-                self.logger.debug(response.status_code)
-                self.logger.debug(response.content)
-                self.logger.info("Floating ip created successfully")
-                json1_data = json.loads(response.content)
-                self.logger.debug(json1_data)
-                self.vm_public_ip.append(json1_data['floating_ip']['ip'])
-                self.vm_public_id.append(json1_data['floating_ip']['id'])
-            else:
-                self.logger.error("Floating ip NOT created successfully")
-
-            Dicdata1 = {}
-            if self.address != '':
-                Dicdata1['address'] = self.vm_public_ip[ip_num]
-
-            Dicdata1 = {'addFloatingIp': Dicdata1}
-            data = json.dumps(Dicdata1, indent=4)
-            url = ("http://%s:8774/v2.1/"
-                   "servers/%s/action" % (self.nova_hostname,
-                                          self.vm[ip_num]))
-
-            headers = {"Accept": "application/json",
-                       "X-Auth-Token": self.token_id}
-            response = requests.post(url, headers=headers, data=data)
-            if(response.status_code == ACCEPTED):
-                self.logger.debug(response.status_code)
-                self.logger.debug(response.content)
-                self.logger.info("Public Ip successfully added to VM")
-            else:
-                return(response.status_code)
-        return(response.status_code)
-
-    def loginToVM(self):
-        """Login to the VM to check NSH packets are received."""
-        queue1 = "0"
-
-        def vm0():
-
-            s = pxssh.pxssh()
-            hostname = self.vm_public_ip[0]
-            s.login(hostname, self.cirros_username, self.cirros_password)
-            s.sendline("ping -c 5 " + str(self.port_ip[2]))
-            s.prompt()             # match the prompt
-
-            ping_re = re.search("transmitted.*received", s.before).group()
-            x = re.split('\s+', ping_re)
-            if (x[1] >= "1"):
-                self.logger.info("Ping is Successfull")
-            else:
-                self.logger.info("Ping is NOT Successfull")
-
-        def vm1(queue1):
-            s = pxssh.pxssh()
-            hostname = self.vm_public_ip[1]
-            s.login(hostname, self.cirros_username, self.cirros_password)
-            s.sendline('sudo ./firewall')
-            s.prompt()
-            output_pack = s.before
-
-            if(output_pack.find("nshc") != -1):
-                self.logger.info("The packet has reached VM2 Instance")
-                queue1.put("1")
-            else:
-                self.logger.info("Packet not received in Instance")
-                queue1.put("0")
-
-        def ping(ip, timeout=300):
-            while True:
-                time.sleep(1)
-                self.logger.debug("Pinging %s. Waiting for response..." % ip)
-                response = os.system("ping -c 1 " + ip + " >/dev/null 2>&1")
-                if response == 0:
-                    self.logger.info("Ping " + ip + " detected!")
-                    return 0
-
-                elif timeout == 0:
-                    self.logger.info("Ping " + ip + " timeout reached.")
-                    return 1
-                timeout -= 1
-
-        result0 = ping(self.vm_public_ip[0])
-        result1 = ping(self.vm_public_ip[1])
-        if result0 == 0 and result1 == 0:
-            time.sleep(300)
-            queue1 = Queue()
-            p1 = Process(target=vm1, args=(queue1, ))
-            p1.start()
-            p2 = Process(target=vm0)
-            p2.start()
-            p1.join(10)
-            return (queue1.get())
-        else:
-            self.logger.error("Thread didnt run")
-
-    """##################################################################"""
-    """ ########################  Stats Functions ################# #####"""
-
-    def portChainDeviceMap(self):
-        """Check the PC Device Stats in the ONOS."""
-        response = requests.get('http://' + self.onos_hostname +
-                                ':8181/onos/vtn/portChainDeviceMap/' +
-                                self.PC_id, auth=("karaf", "karaf"))
-        if (response.status_code == OK):
-            self.logger.info("PortChainDeviceMap is successfully Queries")
-            return(response.status_code)
-        else:
-            return(response.status_code)
-
-    def portChainSfMap(self):
-        """Check the PC SF Map Stats in the ONOS."""
-        response = requests.get('http://' + self.onos_hostname +
-                                ':8181/onos/vtn/portChainSfMap/' +
-                                self.PC_id, auth=("karaf", "karaf"))
-        if (response.status_code == OK):
-            self.logger.info("portChainSfMap is successfully Queries")
-            return(response.status_code)
-        else:
-            return(response.status_code)
-
-    """###################################################################"""
-
-    def deletePortChain(self):
-        """Deletion of PortChain."""
-        url = ('http://' + self.neutron_hostname + ':9696/' +
-               self.osver + '/sfc/port_chains/' + self.PC_id)
-        headers = {"Accept": "application/json", "Content-Type":
-                   "application/json", "X-Auth-Token": self.token_id}
-        response = requests.delete(url, headers=headers)
-        if (response.status_code == OK):
-            self.logger.debug(response.status_code)
-            self.logger.debug(response.content)
-            return(response.status_code)
-        else:
-            return(response.status_code)
-
-    def deleteFlowClassifier(self):
-        """Deletion of Flow Classifier."""
-        url = ("http://%s:9696/%s/sfc/"
-               "flow_classifiers/%s" % (self.neutron_hostname,
-                                        self.osver,
-                                        self.flow_class_if))
-        headers = {"Accept": "application/json",
-                   "X-Auth-Token": self.token_id}
-        response = requests.delete(url, headers=headers)
-        if (response.status_code == OK):
-            self.logger.debug(response.status_code)
-            self.logger.debug(response.content)
-            return(response.status_code)
-        else:
-            return(response.status_code)
-
-    def deletePortGroup(self):
-        """Deletion of PortGroup."""
-        for p in range(0, 1):
-            url = ("http://%s:9696/%s/sfc/"
-                   "port_pair_groups/%s" % (self.neutron_hostname,
-                                            self.osver,
-                                            self.port_grp_id[p]))
-            headers = {"Accept": "application/json", "X-Auth-Token":
-                       self.token_id}
-            response = requests.delete(url, headers=headers)
-            if (response.status_code == NO_CONTENT):
-                self.logger.debug(response.status_code)
-                self.logger.debug(response.content)
-            else:
-                return(response.status_code)
-        return(response.status_code)
-
-    def deletePortPair(self):
-        """Deletion of Portpair."""
-        for p in range(1, 2):
-            url = ("http://%s:9696/%s/sfc/"
-                   "port_pairs/%s" % (self.neutron_hostname,
-                                      self.osver,
-                                      self.port_pair_id[0]))
-            headers = {"Accept": "application/json",
-                       "X-Auth-Token": self.token_id}
-            response = requests.delete(url, headers=headers)
-            if (response.status_code == NO_CONTENT):
-                self.logger.debug(response.status_code)
-                self.logger.debug(response.content)
-            else:
-                return(response.status_code)
-        return(response.status_code)
-
-    def cleanup(self):
-        """Cleanup."""
-        self.logger.info("Deleting VMs")
-        for y in range(0, 3):
-            url = ("http://%s:8774/v2.1/"
-                   "/servers/%s" % (self.nova_hostname,
-                                    self.vm[y]))
-            headers = {"Accept": "application/json",
-                       "X-Auth-Token": self.token_id}
-            response = requests.delete(url, headers=headers)
-            if (response.status_code == NO_CONTENT):
-                self.logger.debug(response.status_code)
-                self.logger.debug(response.content)
-                self.logger.debug("VM" + str(y) + " is Deleted : ")
-                time.sleep(10)
-            else:
-                return(response.status_code)
-        self.logger.info("Deleting Ports")
-        for x in range(self.i, self.numTerms):
-            url = ('http://' + self.neutron_hostname + ':9696/' +
-                   self.osver + '/ports/' + self.port_num[x])
-            headers = {"Accept": "application/json", "X-Auth-Token":
-                       self.token_id}
-            response = requests.delete(url, headers=headers)
-
-            if (response.status_code == NO_CONTENT):
-                self.logger.debug(response.status_code)
-                self.logger.debug(response.content)
-                self.logger.debug("Port" + str(x) + "  Deleted")
-            else:
-                return(response.status_code)
-        self.logger.info("Deleting Router")
-
-        Dicdata = {}
-        Dicdata['external_gateway_info'] = {}
-        Dicdata = {'router': Dicdata}
-        data = json.dumps(Dicdata, indent=4)
-        url = ("http://%s:9696/%s/"
-               "/routers/%s" % (self.neutron_hostname,
-                                self.osver,
-                                self.router_id))
-        headers = {"Accept": "application/json",
-                   "X-Auth-Token": self.token_id}
-        response = requests.put(url, headers=headers, data=data)
-        if (response.status_code == OK):
-            self.logger.debug(response.status_code)
-            self.logger.debug(response.content)
-            Dicdata1 = {}
-            if self.subnetId != '':
-                Dicdata1['subnet_id'] = self.subnetId
-            data = json.dumps(Dicdata1, indent=4)
-            url = ("http://%s:9696/%s/routers/%s"
-                   "/remove_router_interface.json" % (self.neutron_hostname,
-                                                      self.osver,
-                                                      self.router_id))
-            headers = {"Accept": "application/json",
-                       "X-Auth-Token": self.token_id}
-            response = requests.put(url, headers=headers, data=data)
-            if (response.status_code == OK):
-                url = ("http://%s:9696/%s/"
-                       "routers/%s" % (self.neutron_hostname,
-                                       self.osver,
-                                       self.router_id))
-                headers = {"Accept": "application/json",
-                           "X-Auth-Token": self.token_id}
-                response = requests.delete(url, headers=headers)
-                if (response.status_code == NO_CONTENT):
-                    self.logger.debug(response.status_code)
-                    self.logger.debug(response.content)
-                else:
-                    return(response.status_code)
-            else:
-                return(response.status_code)
-        else:
-            return(response.status_code)
-
-        self.logger.info("Deleting Network")
-        url = "http://%s:9696/%s/networks/%s" % (self.neutron_hostname,
-                                                 self.osver,
-                                                 self.net_id)
-
-        headers = {"Accept": "application/json",
-                   "X-Auth-Token": self.token_id}
-        response = requests.delete(url, headers=headers)
-        if (response.status_code == NO_CONTENT):
-            self.logger.debug(response.status_code)
-            self.logger.debug(response.content)
-        else:
-            return(response.status_code)
-
-        self.logger.info("Deleting Floating ip")
-        for ip_num in range(0, 2):
-            url = ("http://%s:9696/%s/floatingips"
-                   "/%s" % (self.neutron_hostname,
-                            self.osver,
-                            self.vm_public_id[ip_num]))
-
-            headers = {"Accept": "application/json", "X-Auth-Token":
-                       self.token_id}
-            response = requests.delete(url, headers=headers)
-            if (response.status_code == NO_CONTENT):
-                self.logger.debug(response.status_code)
-                self.logger.debug(response.content)
-            else:
-                return(response.status_code)
-        return(response.status_code)
diff --git a/functest/opnfv_tests/sdn/onos/teston/Readme.txt b/functest/opnfv_tests/sdn/onos/teston/Readme.txt
deleted file mode 100644 (file)
index 7393f59..0000000
+++ /dev/null
@@ -1,5 +0,0 @@
-1.This is a basic test run about onos,we will make them better and better
-2.This test include two suites:
-(1)Test northbound(network/subnet/ports create/update/delete)
-(2)Ovsdb test,default configuration,openflow connection,vm go onlines.
-3.Later we will make a framework to do this test
\ No newline at end of file
diff --git a/functest/opnfv_tests/sdn/onos/teston/__init__.py b/functest/opnfv_tests/sdn/onos/teston/__init__.py
deleted file mode 100644 (file)
index e69de29..0000000
diff --git a/functest/opnfv_tests/sdn/onos/teston/adapters/__init__.py b/functest/opnfv_tests/sdn/onos/teston/adapters/__init__.py
deleted file mode 100644 (file)
index e69de29..0000000
diff --git a/functest/opnfv_tests/sdn/onos/teston/adapters/client.py b/functest/opnfv_tests/sdn/onos/teston/adapters/client.py
deleted file mode 100644 (file)
index a88d2f0..0000000
+++ /dev/null
@@ -1,92 +0,0 @@
-"""
-Description:
-    This file is used to run testcase
-    lanqinglong@huawei.com
-
-#
-# All rights reserved. This program and the accompanying materials
-# are made available under the terms of the Apache License, Version 2.0
-# which accompanies this distribution, and is available at
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-"""
-import json
-import logging
-import pexpect
-import requests
-import time
-
-from environment import Environment
-
-
-class Client(Environment):
-
-    logger = logging.getLogger(__name__)
-
-    def __init__(self):
-        Environment.__init__(self)
-        self.loginfo = Environment()
-        self.testcase = ''
-
-    def RunScript(self, handle, testname, timeout=300):
-        """
-        Run ONOS Test Script
-        Parameters:
-        testname: ONOS Testcase Name
-        masterusername: The server username of running ONOS
-        masterpassword: The server password of running ONOS
-        """
-        self.testcase = testname
-        self.ChangeTestCasePara(testname, self.masterusername,
-                                self.masterpassword)
-        runhandle = handle
-        runtest = (self.home + "/OnosSystemTest/TestON/bin/cli.py run " +
-                   testname)
-        runhandle.sendline(runtest)
-        circletime = 0
-        lastshowscreeninfo = ''
-        while True:
-            Result = runhandle.expect(["PEXPECT]#", pexpect.EOF,
-                                       pexpect.TIMEOUT])
-            curshowscreeninfo = runhandle.before
-            if(len(lastshowscreeninfo) != len(curshowscreeninfo)):
-                self.loginfo.log(str(curshowscreeninfo)
-                                 [len(lastshowscreeninfo)::])
-                lastshowscreeninfo = curshowscreeninfo
-            if Result == 0:
-                self.logger.info("Done!")
-                return
-            time.sleep(1)
-            circletime += 1
-            if circletime > timeout:
-                break
-        self.loginfo.log("Timeout when running the test, please check!")
-
-    def onosstart(self):
-        # This is the compass run machine user&pass,you need to modify
-
-        self.logger.info("Test Begin.....")
-        self.OnosConnectionSet()
-        masterhandle = self.SSHlogin(self.localhost, self.masterusername,
-                                     self.masterpassword)
-        self.OnosEnvSetup(masterhandle)
-        return masterhandle
-
-    def onosclean(self, handle):
-        self.SSHRelease(handle)
-        self.loginfo.log('Release onos handle Successful')
-
-    def push_results_to_db(self, payload, pushornot=1):
-        if pushornot != 1:
-            return 1
-        url = self.Result_DB + "/results"
-        params = {"project_name": "functest", "case_name": "ONOS-" +
-                  self.testcase, "pod_name": 'huawei-build-2',
-                  "details": payload}
-
-        headers = {'Content-Type': 'application/json'}
-        try:
-            r = requests.post(url, data=json.dumps(params), headers=headers)
-            self.loginfo.log(r)
-        except:
-            self.loginfo.log('Error pushing results into Database')
diff --git a/functest/opnfv_tests/sdn/onos/teston/adapters/connection.py b/functest/opnfv_tests/sdn/onos/teston/adapters/connection.py
deleted file mode 100644 (file)
index a6d192e..0000000
+++ /dev/null
@@ -1,200 +0,0 @@
-"""
-Description:
-    This file is used to make connections
-    Include ssh & exchange public-key to each other so that
-    it can run without password
-
-    lanqinglong@huawei.com
-
-#
-# All rights reserved. This program and the accompanying materials
-# are made available under the terms of the Apache License, Version 2.0
-# which accompanies this distribution, and is available at
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-"""
-import logging
-import os
-import pexpect
-import re
-
-from foundation import Foundation
-
-
-class Connection(Foundation):
-
-    logger = logging.getLogger(__name__)
-
-    def __init__(self):
-        Foundation.__init__(self)
-        self.loginfo = Foundation()
-
-    def AddKnownHost(self, handle, ipaddr, username, password):
-        """
-        Add an user to known host,so that onos can login in with onos $ipaddr.
-        parameters:
-        ipaddr:   ip address
-        username: login user name
-        password: login password
-        """
-        self.logger.info("Now Adding an user to known hosts " + ipaddr)
-        login = handle
-        login.sendline("ssh -l %s -p 8101 %s" % (username, ipaddr))
-        index = 0
-        while index != 2:
-            index = login.expect(['assword:', 'yes/no', pexpect.EOF,
-                                  pexpect.TIMEOUT])
-            if index == 0:
-                login.sendline(password)
-                login.sendline("logout")
-                index = login.expect(["closed", pexpect.EOF])
-                if index == 0:
-                    self.loginfo.log("Add SSH Known Host Success!")
-                    break
-                else:
-                    self.loginfo.log("Add SSH Known Host Failed! "
-                                     "Please Check!")
-                    break
-                login.prompt()
-
-            if index == 1:
-                login.sendline('yes')
-
-    def GetEnvValue(self, handle, envname):
-        """
-        os.getenv only returns current user value
-        GetEnvValue returns a environment value of
-        current handle
-        eg: GetEnvValue(handle,'HOME')
-        """
-        envhandle = handle
-        envhandle.sendline('echo $' + envname)
-        envhandle.prompt()
-        reg = envname + '\r\n(.*)\r'
-        envaluereg = re.compile(reg)
-        envalue = envaluereg.search(envhandle.before)
-        if envalue:
-            return envalue.groups()[0]
-        else:
-            return None
-
-    def Gensshkey(self, handle):
-        """
-        Generate ssh keys, used for some server have no sshkey.
-        """
-        self.logger.info("Now Generating SSH keys...")
-        # Here file name may be id_rsa or id_ecdsa or others
-        # So here will have a judgement
-        keysub = handle
-        filepath = self.GetEnvValue(keysub, 'HOME') + '/.ssh'
-        filelist = os.listdir(filepath)
-        for item in filelist:
-            if 'id' in item:
-                self.loginfo.log("SSH keys are exsit in ssh directory.")
-                return True
-        keysub.sendline("ssh-keygen -t rsa")
-        Result = 0
-        while Result != 2:
-            Result = keysub.expect(["Overwrite", "Enter", pexpect.EOF,
-                                    'PEXPECT]#', pexpect.TIMEOUT])
-            if Result == 0:
-                keysub.sendline("y")
-            if Result == 1 or Result == 2:
-                keysub.sendline("\n")
-            if Result == 3:
-                self.loginfo.log("Generate SSH key success.")
-                keysub.prompt()
-                break
-            if Result == 4:
-                self.loginfo.log("Generate SSH key failed.")
-                keysub.prompt()
-                break
-
-    def GetRootAuth(self, password):
-        """
-        Get root user
-        parameters:
-        password: root login password
-        """
-        self.logger.info("Now changing to user root")
-        login = pexpect.spawn("su - root")
-        index = 0
-        while index != 2:
-            index = login.expect(['assword:', "failure",
-                                  pexpect.EOF, pexpect.TIMEOUT])
-            if index == 0:
-                login.sendline(password)
-            if index == 1:
-                self.loginfo.log("Change user to root failed.")
-
-        login.interact()
-
-    def ReleaseRootAuth(self):
-        """
-        Exit root user.
-        """
-        self.logger.info("Now Release user root")
-        login = pexpect.spawn("exit")
-        index = login.expect(['logout', pexpect.EOF, pexpect.TIMEOUT])
-        if index == 0:
-            self.loginfo.log("Release root user success.")
-        if index == 1:
-            self.loginfo.log("Release root user failed.")
-
-        login.interact()
-
-    def AddEnvIntoBashrc(self, envalue):
-        """
-        Add Env var into /etc/profile.
-        parameters:
-        envalue: environment value to add
-        """
-        self.logger.info("Now Adding bash environment")
-        fileopen = open("/etc/profile", 'r')
-        findContext = 1
-        while findContext:
-            findContext = fileopen.readline()
-            result = findContext.find(envalue)
-            if result != -1:
-                break
-        fileopen.close
-        if result == -1:
-            envAdd = open("/etc/profile", 'a+')
-            envAdd.writelines("\n" + envalue)
-            envAdd.close()
-        self.loginfo.log("Add env to bashrc success!")
-
-    def OnosRootPathChange(self, onospath):
-        """
-        Change ONOS root path in file:bash_profile
-        onospath: path of onos root
-        """
-        self.logger.info("Now Changing ONOS Root Path")
-        filepath = onospath + 'onos/tools/dev/bash_profile'
-        line = open(filepath, 'r').readlines()
-        lenall = len(line) - 1
-        for i in range(lenall):
-            if "export ONOS_ROOT" in line[i]:
-                line[i] = 'export ONOS_ROOT=' + onospath + 'onos\n'
-        NewFile = open(filepath, 'w')
-        NewFile.writelines(line)
-        NewFile.close
-        self.logger.info("Done!")
-
-    def OnosConnectionSet(self):
-        """
-        Intergrate for ONOS connection setup
-        """
-        if self.masterusername == 'root':
-            filepath = '/root/'
-        else:
-            filepath = '/home/' + self.masterusername + '/'
-        filepath = os.path.join(filepath, "onos/tools/dev/bash_profile")
-        self.AddEnvIntoBashrc("source " + filepath + "\n")
-        self.AddEnvIntoBashrc("export OCT=" + self.OCT)
-        self.AddEnvIntoBashrc("export OC1=" + self.OC1)
-        self.AddEnvIntoBashrc("export OC2=" + self.OC2)
-        self.AddEnvIntoBashrc("export OC3=" + self.OC3)
-        self.AddEnvIntoBashrc("export OCN=" + self.OCN)
-        self.AddEnvIntoBashrc("export OCN2=" + self.OCN2)
-        self.AddEnvIntoBashrc("export localhost=" + self.localhost)
diff --git a/functest/opnfv_tests/sdn/onos/teston/adapters/environment.py b/functest/opnfv_tests/sdn/onos/teston/adapters/environment.py
deleted file mode 100644 (file)
index 875a2dc..0000000
+++ /dev/null
@@ -1,286 +0,0 @@
-"""
-Description:
-This file is used to setup the running environment
-Include Download code,setup environment variable
-Set onos running config
-Set user name/password
-Onos-push-keys and so on
-lanqinglong@huawei.com
-
-#
-# All rights reserved. This program and the accompanying materials
-# are made available under the terms of the Apache License, Version 2.0
-# which accompanies this distribution, and is available at
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-"""
-
-import logging
-import pexpect
-from pexpect import pxssh
-import re
-import os
-import sys
-import time
-
-from connection import Connection
-
-
-class Environment(Connection):
-
-    logger = logging.getLogger(__name__)
-
-    def __init__(self):
-        Connection.__init__(self)
-        self.loginfo = Connection()
-        self.masterhandle = ''
-        self.home = ''
-
-    def DownLoadCode(self, handle, codeurl):
-        """
-        Download Code use 'git clone'
-        parameters:
-        handle:  current working handle
-        codeurl: clone code url
-        """
-        self.logger.info("Now loading test codes! Please wait in patient...")
-        originalfolder = sys.path[0]
-        self.logger.info(originalfolder)
-        gitclone = handle
-        gitclone.sendline("git clone " + codeurl)
-        index = 0
-        # increment = 0
-        while index != 1 or index != 4:
-            index = gitclone.expect(['already exists',
-                                     'esolving deltas: 100%',
-                                     'eceiving objects',
-                                     'Already up-to-date',
-                                     'npacking objects: 100%', pexpect.EOF])
-
-            filefolder = self.home + '/' + codeurl.split('/')[-1].split('.')[0]
-            if index == 0:
-                os.chdir(filefolder)
-                os.system('git pull')
-                os.chdir(originalfolder)
-                self.loginfo.log('Download code success!')
-                break
-            elif index == 1 or index == 4:
-                self.loginfo.log('Download code success!')
-                gitclone.sendline("mkdir onos")
-                gitclone.prompt()
-                gitclone.sendline("cp -rf " + filefolder + "/tools onos/")
-                gitclone.prompt()
-                break
-            elif index == 2:
-                os.write(1, gitclone.before)
-                sys.stdout.flush()
-            else:
-                self.loginfo.log('Download code failed!')
-                self.loginfo.log('Information before' + gitclone.before)
-                break
-        gitclone.prompt()
-
-    def InstallDefaultSoftware(self, handle):
-        """
-        Install default software
-        parameters:
-        handle(input): current working handle
-        """
-        self.logger.info("Now Cleaning test environment")
-        handle.sendline("sudo apt-get install -y mininet")
-        handle.prompt()
-        handle.sendline("sudo pip install configobj")
-        handle.prompt()
-        handle.sendline("sudo apt-get install -y sshpass")
-        handle.prompt()
-        handle.sendline("OnosSystemTest/TestON/bin/cleanup.sh")
-        handle.prompt()
-        time.sleep(5)
-        self.loginfo.log('Clean environment success!')
-
-    def OnosPushKeys(self, handle, cmd, password):
-        """
-        Using onos-push-keys to make ssh device without password
-        parameters:
-        handle(input): working handle
-        cmd(input): onos-push-keys xxx(xxx is device)
-        password(input): login in password
-        """
-        self.logger.info("Now Pushing Onos Keys:" + cmd)
-        Pushkeys = handle
-        Pushkeys.sendline(cmd)
-        Result = 0
-        while Result != 2:
-            Result = Pushkeys.expect(["(yes/no)", "assword:", "PEXPECT]#",
-                                      pexpect.EOF, pexpect.TIMEOUT])
-            if(Result == 0):
-                Pushkeys.sendline("yes")
-            if(Result == 1):
-                Pushkeys.sendline(password)
-            if(Result == 2):
-                self.loginfo.log("ONOS Push keys Success!")
-                break
-            if(Result == 3):
-                self.loginfo.log("ONOS Push keys Error!")
-                break
-            time.sleep(2)
-        Pushkeys.prompt()
-        self.logger.info("Done!")
-
-    def SetOnosEnvVar(self, handle, masterpass, agentpass):
-        """
-        Setup onos pushkeys to all devices(3+2)
-        parameters:
-        handle(input): current working handle
-        masterpass: scripts running server's password
-        agentpass: onos cluster&compute node password
-        """
-        self.logger.info("Now Setting test environment")
-        for host in self.hosts:
-            self.logger.info("try to connect " + str(host))
-            result = self.CheckSshNoPasswd(host)
-            if not result:
-                self.logger.info(
-                    "ssh login failed,try to copy master publickey" +
-                    "to agent " + str(host))
-                self.CopyPublicKey(host)
-        self.OnosPushKeys(handle, "onos-push-keys " + self.OCT, masterpass)
-        self.OnosPushKeys(handle, "onos-push-keys " + self.OC1, agentpass)
-        self.OnosPushKeys(handle, "onos-push-keys " + self.OC2, agentpass)
-        self.OnosPushKeys(handle, "onos-push-keys " + self.OC3, agentpass)
-        self.OnosPushKeys(handle, "onos-push-keys " + self.OCN, agentpass)
-        self.OnosPushKeys(handle, "onos-push-keys " + self.OCN2, agentpass)
-
-    def CheckSshNoPasswd(self, host):
-        """
-        Check master can connect agent with no password
-        """
-        login = pexpect.spawn("ssh " + str(host))
-        index = 4
-        while index == 4:
-            index = login.expect(['(yes/no)', '>|#|\$',
-                                  pexpect.EOF, pexpect.TIMEOUT])
-            if index == 0:
-                login.sendline("yes")
-                index = 4
-            if index == 1:
-                self.loginfo.log("ssh connect to " + str(host) +
-                                 " success,no need to copy ssh public key")
-                return True
-        login.interact()
-        return False
-
-    def ChangeOnosName(self, user, password):
-        """
-        Change onos name in envDefault file
-        Because some command depend on this
-        parameters:
-        user: onos&compute node user
-        password: onos&compute node password
-        """
-        self.logger.info("Now Changing ONOS name&password")
-        filepath = self.home + '/onos/tools/build/envDefaults'
-        line = open(filepath, 'r').readlines()
-        lenall = len(line) - 1
-        for i in range(lenall):
-            if "ONOS_USER=" in line[i]:
-                line[i] = line[i].replace("sdn", user)
-            if "ONOS_GROUP" in line[i]:
-                line[i] = line[i].replace("sdn", user)
-            if "ONOS_PWD" in line[i]:
-                line[i] = line[i].replace("rocks", password)
-        NewFile = open(filepath, 'w')
-        NewFile.writelines(line)
-        NewFile.close
-        self.logger.info("Done!")
-
-    def ChangeTestCasePara(self, testcase, user, password):
-        """
-        When running test script, there\'s something need
-        to change in every test folder\'s \*.param & \*.topo files
-        user: onos\&compute node user
-        password: onos\&compute node password
-        """
-        self.logger.info("Now Changing " + testcase + " name&password")
-        if self.masterusername == 'root':
-            filepath = '/root/'
-        else:
-            filepath = '/home/' + self.masterusername + '/'
-        filepath = (filepath + "OnosSystemTest/TestON/tests/" +
-                    testcase + "/" + testcase + ".topo")
-        line = open(filepath, 'r').readlines()
-        lenall = len(line) - 1
-        for i in range(lenall - 2):
-            if("localhost" in line[i]) or ("OCT" in line[i]):
-                line[i + 1] = re.sub(">\w+", ">" + user, line[i + 1])
-                line[i + 2] = re.sub(">\w+", ">" + password, line[i + 2])
-            if ("OC1" in line[i] or "OC2" in line[i] or "OC3" in line[i] or
-                    "OCN" in line[i] or "OCN2" in line[i]):
-                line[i + 1] = re.sub(">\w+", ">root", line[i + 1])
-                line[i + 2] = re.sub(">\w+", ">root", line[i + 2])
-        NewFile = open(filepath, 'w')
-        NewFile.writelines(line)
-        NewFile.close
-
-    def SSHlogin(self, ipaddr, username, password):
-        """
-        SSH login provide a connection to destination.
-        parameters:
-        ipaddr:   ip address
-        username: login user name
-        password: login password
-        return: handle
-        """
-        login = pxssh.pxssh()
-        login.login(ipaddr, username, password, original_prompt='[$#>]')
-        # send command ls -l
-        login.sendline('ls -l')
-        # match prompt
-        login.prompt()
-        self.logger.info("SSH login " + ipaddr + " success!")
-        return login
-
-    def SSHRelease(self, handle):
-        # Release ssh
-        handle.logout()
-
-    def CopyOnostoTestbin(self):
-        sourcefile = self.cipath + '/dependencies/onos'
-        destifile = self.home + '/onos/tools/test/bin/'
-        os.system('pwd')
-        runcommand = 'cp ' + sourcefile + ' ' + destifile
-        os.system(runcommand)
-
-    def CopyPublicKey(self, host):
-        output = os.popen('cat /root/.ssh/id_rsa.pub')
-        publickey = output.read().strip('\n')
-        tmphandle = self.SSHlogin(self.installer_master,
-                                  self.installer_master_username,
-                                  self.installer_master_password)
-        tmphandle.sendline("ssh " + host + " -T \'echo " +
-                           str(publickey) + ">>/root/.ssh/authorized_keys\'")
-        tmphandle.prompt()
-        self.SSHRelease(tmphandle)
-        self.logger.info("Add OCT PublicKey to " + host + " success")
-
-    def OnosEnvSetup(self, handle):
-        """
-        Onos Environment Setup function
-        """
-        self.Gensshkey(handle)
-        self.home = self.GetEnvValue(handle, 'HOME')
-        self.AddKnownHost(handle, self.OC1, "karaf", "karaf")
-        self.AddKnownHost(handle, self.OC2, "karaf", "karaf")
-        self.AddKnownHost(handle, self.OC3, "karaf", "karaf")
-        self.DownLoadCode(handle,
-                          'https://github.com/wuwenbin2/OnosSystemTest.git')
-        # self.DownLoadCode(handle, 'https://gerrit.onosproject.org/onos')
-        if self.masterusername == 'root':
-            filepath = '/root/'
-        else:
-            filepath = '/home/' + self.masterusername + '/'
-        self.OnosRootPathChange(filepath)
-        self.CopyOnostoTestbin()
-        self.ChangeOnosName(self.agentusername, self.agentpassword)
-        self.InstallDefaultSoftware(handle)
-        self.SetOnosEnvVar(handle, self.masterpassword, self.agentpassword)
diff --git a/functest/opnfv_tests/sdn/onos/teston/adapters/foundation.py b/functest/opnfv_tests/sdn/onos/teston/adapters/foundation.py
deleted file mode 100644 (file)
index aed98ee..0000000
+++ /dev/null
@@ -1,95 +0,0 @@
-"""
-Description:
-    This file include basis functions
-    lanqinglong@huawei.com
-
-#
-# All rights reserved. This program and the accompanying materials
-# are made available under the terms of the Apache License, Version 2.0
-# which accompanies this distribution, and is available at
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-"""
-
-import datetime
-import logging
-import os
-import re
-import time
-
-from functest.utils.constants import CONST
-
-
-class Foundation(object):
-
-    def __init__(self):
-
-        # currentpath = os.getcwd()
-        currentpath = ('{0}/sdn/onos/teston/ci'
-                       .format(CONST.__getattribute__('dir_functest_data')))
-        self.cipath = currentpath
-        self.logdir = os.path.join(currentpath, 'log')
-        self.workhome = currentpath[0: currentpath.rfind('opnfv_tests') - 1]
-        self.Result_DB = ''
-        filename = time.strftime('%Y-%m-%d-%H-%M-%S') + '.log'
-        self.logfilepath = os.path.join(self.logdir, filename)
-        self.starttime = datetime.datetime.now()
-
-    def log(self, loginfo):
-        """
-        Record log in log directory for deploying test environment
-        parameters:
-        loginfo(input): record info
-        """
-        logging.basicConfig(level=logging.INFO,
-                            format='%(asctime)s %(filename)s:%(message)s',
-                            datefmt='%d %b %Y %H:%M:%S',
-                            filename=self.logfilepath,
-                            filemode='w')
-        filelog = logging.FileHandler(self.logfilepath)
-        logging.getLogger('Functest').addHandler(filelog)
-        logging.info(loginfo)
-
-    def getdefaultpara(self):
-        """
-        Get Default Parameters value
-        """
-        self.Result_DB = CONST.__getattribute__("results_test_db_url")
-        self.masterusername = CONST.__getattribute__('ONOS_onosbench_username')
-        self.masterpassword = CONST.__getattribute__('ONOS_onosbench_password')
-        self.agentusername = CONST.__getattribute__('ONOS_onoscli_username')
-        self.agentpassword = CONST.__getattribute__('ONOS_onoscli_password')
-        self.runtimeout = CONST.__getattribute__('ONOS_runtimeout')
-        self.OCT = CONST.__getattribute__('ONOS_environment_OCT')
-        self.OC1 = CONST.__getattribute__('ONOS_environment_OC1')
-        self.OC2 = CONST.__getattribute__('ONOS_environment_OC2')
-        self.OC3 = CONST.__getattribute__('ONOS_environment_OC3')
-        self.OCN = CONST.__getattribute__('ONOS_environment_OCN')
-        self.OCN2 = CONST.__getattribute__('ONOS_environment_OCN2')
-        self.installer_master = CONST.__getattribute__(
-            'ONOS_environment_installer_master')
-        self.installer_master_username = (
-            CONST.__getattribute__(
-                'ONOS_environment_installer_master_username'))
-        self.installer_master_password = (
-            CONST.__getattribute__(
-                'ONOS_environment_installer_master_password'))
-        self.hosts = [self.OC1, self.OCN, self.OCN2]
-        self.localhost = self.OCT
-
-    def GetResult(self):
-        cmd = "cat " + self.logfilepath + " | grep Fail"
-        Resultbuffer = os.popen(cmd).read()
-        duration = datetime.datetime.now() - self.starttime
-        time.sleep(2)
-
-        if re.search("[1-9]+", Resultbuffer):
-            self.log("Testcase Fails\n" + Resultbuffer)
-            Result = "POK"
-        else:
-            self.log("Testcases Pass")
-            Result = "OK"
-        payload = {'timestart': str(self.starttime),
-                   'duration': str(duration), 'status': Result}
-
-        return payload
diff --git a/functest/opnfv_tests/sdn/onos/teston/dependencies/onos b/functest/opnfv_tests/sdn/onos/teston/dependencies/onos
deleted file mode 100644 (file)
index bb02fa8..0000000
+++ /dev/null
@@ -1,29 +0,0 @@
-#!/bin/bash
-# -----------------------------------------------------------------------------
-# ONOS remote command-line client.
-# -----------------------------------------------------------------------------
-#
-# All rights reserved. This program and the accompanying materials
-# are made available under the terms of the Apache License, Version 2.0
-# which accompanies this distribution, and is available at
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-
-[ ! -d "$ONOS_ROOT" ] && echo "ONOS_ROOT is not defined" >&2 && exit 1
-. /root/.bashrc
-. $ONOS_ROOT/tools/build/envDefaults
-. $ONOS_ROOT/tools/test/bin/find-node.sh
-
-[ "$1" = "-w" ] && shift && onos-wait-for-start $1
-
-[ -n "$1" ] && OCI=$(find_node $1) && shift
-
-if which client 1>/dev/null 2>&1 && [ -z "$ONOS_USE_SSH" ]; then
-    # Use Karaf client only if we can and are allowed to
-    unset KARAF_HOME
-    client -h $OCI -u karaf "$@" 2>/dev/null
-else
-    # Otherwise use raw ssh; strict checking is off for dev environments only
-    #ssh -p 8101 -o StrictHostKeyChecking=no $OCI "$@"
-    sshpass -p karaf ssh -l karaf -p 8101 $OCI "$@"
-fi
diff --git a/functest/opnfv_tests/sdn/onos/teston/log/gitignore b/functest/opnfv_tests/sdn/onos/teston/log/gitignore
deleted file mode 100644 (file)
index e69de29..0000000
index 89aa033..d39d648 100644 (file)
--- a/setup.cfg
+++ b/setup.cfg
@@ -14,7 +14,6 @@ scripts =
 console_scripts =
     functest = functest.cli.cli_base:cli
     functest_odl = functest.opnfv_tests.sdn.odl.odl:main
-    functest_onos_sfc = functest.opnfv_tests.sdn.onos.sfc.sfc:main
     functest_refstack_client = functest.opnfv_tests.openstack.refstack_client.refstack_client:main
     functest_tempest_conf = functest.opnfv_tests.openstack.refstack_client.tempest_conf:main
     openstack_snapshot = functest.utils.openstack_snapshot:main