Create run_test.py using the tier mechanism to run the tests
authorjose.lausuch <jose.lausuch@ericsson.com>
Wed, 27 Apr 2016 22:08:26 +0000 (00:08 +0200)
committerjose.lausuch <jose.lausuch@ericsson.com>
Thu, 28 Apr 2016 13:19:09 +0000 (15:19 +0200)
JIRA: FUNCTEST-227
JIRA: FUNCTEST-190

Change-Id: I5445ad36ec65e62d48c8f5b16352caea2e51e3c9
Signed-off-by: jose.lausuch <jose.lausuch@ericsson.com>
ci/exec_test.sh [new file with mode: 0644]
ci/prepare_env.py
ci/run_tests.py [new file with mode: 0644]
ci/testcases.yaml
ci/tier_builder.py
ci/tier_handler.py
utils/clean_openstack.py
utils/generate_defaults.py

diff --git a/ci/exec_test.sh b/ci/exec_test.sh
new file mode 100644 (file)
index 0000000..2e16fbb
--- /dev/null
@@ -0,0 +1,208 @@
+#!/bin/bash
+
+#
+# Author: Jose Lausuch (jose.lausuch@ericsson.com)
+#         Morgan Richomme (morgan.richomme@orange.com)
+# Installs the Functest framework within the Docker container
+# and run the tests automatically
+#
+#
+# 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
+#
+
+usage="Script to trigger the tests automatically.
+
+usage:
+    bash $(basename "$0") [-h|--help] [-t <test_name>]
+
+where:
+    -h|--help         show this help text
+    -r|--report       push results to database (false by default)
+    -s|--serial       run Tempest tests in one thread
+    -t|--test         run specific test case
+      <test_name>"
+
+
+report=""
+serial=false
+
+# Get the list of runnable tests
+# Check if we are in CI mode
+debug=""
+if [[ "${CI_DEBUG,,}" == "true" ]];then
+    debug="--debug"
+fi
+
+FUNCTEST_REPO_DIR=${repos_dir}/functest/
+FUNCTEST_CONF_DIR=/home/opnfv/functest/conf/
+
+
+function odl_tests(){
+    keystone_ip=$(openstack catalog show identity |grep publicURL| cut -f3 -d"/" | cut -f1 -d":")
+    # historically most of the installers use the same IP for neutron and keystone API
+    neutron_ip=$keystone_ip
+    odl_ip=$(openstack catalog show network | grep publicURL | cut -f3 -d"/" | cut -f1 -d":")
+    usr_name=$(env | grep OS | grep OS_USERNAME | cut -f2 -d'=')
+    password=$(env | grep OS | grep OS_PASSWORD | cut -f2 -d'=')
+    odl_port=8181
+    if [ $INSTALLER_TYPE == "fuel" ]; then
+        odl_port=8282
+    elif [ $INSTALLER_TYPE == "apex" ]; then
+        :
+    elif [ $INSTALLER_TYPE == "joid" ]; then
+        odl_ip=$(env | grep SDN_CONTROLLER | cut -f2 -d'=')
+        neutron_ip=$(openstack catalog show network | grep publicURL | cut -f3 -d"/" | cut -f1 -d":")
+        odl_port=8080
+        :
+    elif [ $INSTALLER_TYPE == "compass" ]; then
+        :
+    else
+        error "INSTALLER_TYPE not valid."
+        exit 1
+    fi
+}
+function run_test(){
+    test_name=$1
+    echo -e "\n\n\n\n"
+    echo "----------------------------------------------"
+    echo "  Running test case: ${test_name}"
+    echo "----------------------------------------------"
+    echo ""
+    serial_flag=""
+    if [ $serial == "true" ]; then
+        serial_flag="-s"
+    fi
+
+    case $test_name in
+        "healthcheck")
+            echo "Running health check test..."
+            ${FUNCTEST_REPO_DIR}/testcases/VIM/OpenStack/CI/libraries/healthcheck.sh
+        ;;
+        "vping_ssh")
+            echo "Running vPing-SSH test..."
+            python ${FUNCTEST_REPO_DIR}/testcases/vPing/CI/libraries/vPing_ssh.py \
+                $debug $report
+        ;;
+        "vping_userdata")
+            echo "Running vPing-userdata test... "
+            python ${FUNCTEST_REPO_DIR}/testcases/vPing/CI/libraries/vPing_userdata.py \
+                $debug $report
+        ;;
+        "odl")
+            echo "Running ODL test..."
+            odl_tests
+            ODL_PORT=$odl_port ODL_IP=$odl_ip KEYSTONE_IP=$keystone_ip NEUTRON_IP=$neutron_ip USR_NAME=$usr_name PASS=$password \
+                ${FUNCTEST_REPO_DIR}/testcases/Controllers/ODL/CI/start_tests.sh
+
+            # push results to the DB in case of CI
+            if [[ -n "$DEPLOY_SCENARIO" && "$DEPLOY_SCENARIO" != "none" ]]; then
+                odl_logs="/home/opnfv/functest/results/odl/logs/2"
+                odl_path="${FUNCTEST_REPO_DIR}/testcases/Controllers/ODL/CI"
+                node_name=$(env | grep NODE_NAME | cut -f2 -d'=')
+                python ${odl_path}/odlreport2db.py -x ${odl_logs}/output.xml -i ${INSTALLER_TYPE} -p ${node_name} -s ${DEPLOY_SCENARIO}
+            fi
+        ;;
+        "tempest")
+            echo "Running Tempest tests..."
+            python ${FUNCTEST_REPO_DIR}/testcases/VIM/OpenStack/CI/libraries/run_tempest.py \
+                $debug $serial_flag $clean_flag -m smoke $report
+            # save tempest.conf for further troubleshooting
+            tempest_conf="${RALLY_VENV_DIR}/tempest/for-deployment-*/tempest.conf"
+            if [ -f ${tempest_conf} ]; then
+                cp $tempest_conf ${FUNCTEST_CONF_DIR}
+            fi
+        ;;
+        "vims")
+            echo "Running vIMS test..."
+            python ${FUNCTEST_REPO_DIR}/testcases/vIMS/CI/vIMS.py \
+                $debug $clean_flag $report
+        ;;
+        "rally")
+            echo "Running Rally benchmark suite..."
+            python ${FUNCTEST_REPO_DIR}/testcases/VIM/OpenStack/CI/libraries/run_rally-cert.py \
+                $debug $clean_flag all $report
+
+        ;;
+        "bgpvpn")
+            echo "Running BGPVPN Tempest test case..."
+            pushd ${repos_dir}/bgpvpn/
+              pip install --no-deps -e .
+            popd
+            tempest_dir=$(ls -t /home/opnfv/.rally/tempest/ |grep for-deploy |tail -1)
+            if [[ $tempest_dir == "" ]]; then
+                error "Make sure tempest was running before"
+            fi
+            tempest_dir=/home/opnfv/.rally/tempest/$tempest_dir
+            pushd $tempest_dir
+              mkdir -p /etc/tempest/
+              cp tempest.conf /etc/tempest/
+              echo "[service_available]
+bgpvpn = True" >> /etc/tempest/tempest.conf
+              ./run_tempest.sh -t -N -- networking_bgpvpn_tempest
+              rm -rf /etc/tempest/tempest.conf
+            popd
+        ;;
+        "onos")
+            echo "Running ONOS test case..."
+            if [ $INSTALLER_TYPE == "joid" ]; then
+                python ${FUNCTEST_REPO_DIR}/testcases/Controllers/ONOS/Teston/CI/onosfunctest.py -i joid
+            else
+                python ${FUNCTEST_REPO_DIR}/testcases/Controllers/ONOS/Teston/CI/onosfunctest.py
+            fi
+      ;;
+        "promise")
+            echo "Running PROMISE test case..."
+            python ${FUNCTEST_REPO_DIR}/testcases/features/promise.py $debug $report
+            sleep 10 # to let the instances terminate
+        ;;
+        "doctor")
+            echo "Running Doctor test..."
+            python ${FUNCTEST_REPO_DIR}/testcases/features/doctor.py
+        ;;
+        "ovno")
+            echo "Running OpenContrail test..."
+            ${repos_dir}/ovno/Testcases/RunTests.sh
+        ;;
+    esac
+}
+
+
+# Parse parameters
+while [[ $# > 0 ]]
+    do
+    key="$1"
+    case $key in
+        -h|--help)
+            echo "$usage"
+            exit 0
+            shift
+        ;;
+        -r|--report)
+            report="-r"
+        ;;
+        -s|--serial)
+            serial=true
+        ;;
+        -t|--test|--tests)
+            TEST="$2"
+            shift
+        ;;
+        *)
+            echo "unknown option $1 $2"
+            exit 1
+        ;;
+    esac
+    shift # past argument or value
+done
+
+
+# Source credentials
+echo "Sourcing Credentials ${FUNCTEST_CONF_DIR}/openstack.creds to run the tests.."
+source ${FUNCTEST_CONF_DIR}/openstack.creds
+
+
+# Run test
+run_test $TEST
index 710a767..b462f96 100644 (file)
@@ -19,7 +19,6 @@ import subprocess
 import sys
 import yaml
 
-import functest.ci.tier_builder as tb
 import functest.utils.functest_logger as ft_logger
 import functest.utils.functest_utils as ft_utils
 import functest.utils.generate_defaults as gen_def
@@ -248,15 +247,6 @@ def generate_os_defaults():
     gen_def.main()
 
 
-def generate_tiers():
-    print_separator()
-    logger.info("Generating Tiers and test cases...")
-    file = FUNCTEST_REPO + "/ci/testcases.yaml"
-
-    t = tb.TierBuilder(CI_INSTALLER_TYPE, CI_SCENARIO, file)
-    logger.info("Tiers and tests to be executed:\n\n%s" % t)
-
-
 def check_environment():
     msg_not_active = "The Functest environment is not installed."
     if not os.path.isfile(ENV_FILE):
@@ -285,7 +275,6 @@ def main():
         verify_deployment()
         install_rally()
         generate_os_defaults()
-        generate_tiers()
 
         with open(ENV_FILE, "w") as env_file:
             env_file.write("1")
diff --git a/ci/run_tests.py b/ci/run_tests.py
new file mode 100644 (file)
index 0000000..95bc980
--- /dev/null
@@ -0,0 +1,134 @@
+#!/bin/bash
+#
+# Author: Jose Lausuch (jose.lausuch@ericsson.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 argparse
+import os
+import sys
+
+import functest.ci.tier_builder as tb
+import functest.utils.functest_logger as ft_logger
+import functest.utils.clean_openstack as clean_os
+
+
+""" arguments """
+parser = argparse.ArgumentParser()
+parser.add_argument("-t", "--test", dest="test", action='store',
+                    help="Test case or tier (group of tests) to be executed. "
+                    "It will run all the test if not specified.")
+parser.add_argument("-n", "--noclean", help="Do not clean OpenStack resources"
+                    " after running each test (default=false).",
+                    action="store_true")
+parser.add_argument("-r", "--report", help="Push results to database "
+                    "(default=false).", action="store_true")
+args = parser.parse_args()
+
+
+""" logging configuration """
+logger = ft_logger.Logger("run_test").getLogger()
+
+
+""" global variables """
+REPOS_DIR = os.getenv('repos_dir')
+FUNCTEST_REPO = ("%s/functest/" % REPOS_DIR)
+EXEC_SCRIPT = ("%sci/exec_test.sh" % FUNCTEST_REPO)
+CLEAN_FLAG = True
+REPORT_FLAG = False
+
+
+def print_separator(str, count=45):
+    line = ""
+    for i in range(0, count - 1):
+        line += str
+
+    logger.info("%s" % line)
+
+
+def cleanup():
+    print_separator("+")
+    logger.info("Cleaning OpenStack resources...")
+    print_separator("+")
+    clean_os.main()
+    print_separator("")
+
+
+def run_test(test):
+    test_name = test.get_name()
+    print_separator("")
+    print_separator("=")
+    logger.info("Running test case '%s'..." % test_name)
+    print_separator("=")
+    logger.debug("\n%s" % test)
+    flags = (" -t %s" % (test_name))
+    if REPORT_FLAG:
+        flags += " -r"
+
+    cmd = ("%s%s" % (EXEC_SCRIPT, flags))
+    logger.debug("Executing command %s" % cmd)
+
+    print_separator("")
+
+    if CLEAN_FLAG:
+        cleanup()
+
+
+def run_tier(tier):
+    print_separator("#")
+    logger.info("Running tier '%s'" % tier.get_name())
+    print_separator("#")
+    logger.debug("\n%s" % tier)
+    for test in tier.get_tests():
+        run_test(test)
+
+
+def run_all(tiers):
+    logger.debug("Tiers to be executed:\n\n%s" % tiers)
+    for tier in tiers.get_tiers():
+        run_tier(tier)
+
+
+def main():
+    global CLEAN_FLAG
+    global REPORT_FLAG
+
+    CI_INSTALLER_TYPE = os.getenv('INSTALLER_TYPE')
+    CI_SCENARIO = os.getenv('DEPLOY_SCENARIO')
+
+    file = FUNCTEST_REPO + "/ci/testcases.yaml"
+    _tiers = tb.TierBuilder(CI_INSTALLER_TYPE, CI_SCENARIO, file)
+
+    if args.noclean:
+        CLEAN_FLAG = False
+
+    if args.report:
+        REPORT_FLAG = True
+
+    if args.test:
+        if _tiers.get_tier(args.test):
+            run_tier(_tiers.get_tier(args.test))
+
+        elif _tiers.get_test(args.test):
+            run_test(_tiers.get_test(args.test))
+
+        elif args.test == "all":
+            run_all(_tiers)
+
+        else:
+            logger.error("Unknown test case or tier '%s', or not supported by "
+                         "the given scenario '%s'."
+                         % (args.test, CI_SCENARIO))
+            logger.debug("Available tiers are:\n\n%s"
+                         % _tiers)
+    else:
+        run_all(_tiers)
+
+    sys.exit(0)
+
+if __name__ == '__main__':
+    main()
index 42458bb..8dc22a6 100644 (file)
@@ -4,7 +4,7 @@ tiers:
         order: 0
         ci: daily
         description : >-
-            This is the first tier to be executed to verify the basic
+            First tier to be executed to verify the basic
             operations in the VIM.
         testcases:
             -
@@ -22,8 +22,7 @@ tiers:
         order: 1
         ci: daily
         description : >-
-            This is the second tier in Functest and consist of a set of basic
-            Functional tests to validate the OpenStack deployment.
+            Set of basic Functional tests to validate the OpenStack deployment.
         testcases:
             -
                 name: vping_ssh
@@ -65,22 +64,22 @@ tiers:
                     installer: ''
                     scenario: ''
 
-            -
-                name: security_groups
-                description: >-
-                    This test case verifies the functionality of the OpenStack
-                    security groups and that the port rules created are
-                    fullfilled.
-                dependencies:
-                    installer: ''
-                    scenario: ''
+            #-
+            #    name: security_groups
+            #    description: >-
+            #        This test case verifies the functionality of the OpenStack
+            #        security groups and that the port rules created are
+            #        fullfilled.
+            #    dependencies:
+            #        installer: ''
+            #        scenario: ''
 
     -
         name: sdn_suites
         order: 2
         ci: daily
         description : >-
-            This tier contains the test suites corresponding to the different
+            Test suites corresponding to the different
             SDN Controllers existing in OPNFV.
         testcases:
             -
@@ -117,7 +116,7 @@ tiers:
         order: 3
         ci: daily
         description : >-
-            This tier contains the test suites from feature projects
+            Test suites from feature projects
             integrated in functest
         testcases:
             -
@@ -149,14 +148,12 @@ tiers:
         order: 4
         ci: weekly
         description : >-
-            This tier contains the test suites from feature projects
-            integrated in functest
+            This test case runs the full set of the OpenStack Tempest suite.
         testcases:
             -
                 name: tempest_full_parallel
                 description: >-
-                    This test case runs the full set of the OpenStack
-                    Tempest suite. The list of test cases is generated by
+                    The list of test cases is generated by
                     Tempest automatically and depend on the parameters of
                     the OpenStack deplopyment.
                 dependencies:
@@ -168,7 +165,7 @@ tiers:
         order: 5
         ci: weekly
         description : >-
-            This tier contains the Rally suite from the OpenStack community.
+            Rally suite from the OpenStack community.
         testcases:
             -
                 name: rally_full
@@ -184,7 +181,7 @@ tiers:
         order: 6
         ci: weekly
         description : >-
-            This tier contains a collection of VNF test cases.
+            Collection of VNF test cases.
         testcases:
             -
                 name: vims
index e66e97a..82b58cd 100644 (file)
@@ -54,6 +54,27 @@ class TierBuilder:
 
             self.tier_objects.append(tier)
 
+    def get_tiers(self):
+        return self.tier_objects
+
+    def get_tier(self, tier_name):
+        for i in range(0, len(self.tier_objects)):
+            if self.tier_objects[i].get_name() == tier_name:
+                return self.tier_objects[i]
+        return None
+
+    def get_test(self, test_name):
+        for i in range(0, len(self.tier_objects)):
+            if self.tier_objects[i].is_test(test_name):
+                return self.tier_objects[i].get_test(test_name)
+        return None
+
+    def get_tests(self, tier_name):
+        for i in range(0, len(self.tier_objects)):
+            if self.tier_objects[i].get_name() == tier_name:
+                return self.tier_objects[i].get_tests()
+        return None
+
     def __str__(self):
         output = ""
         for i in range(0, len(self.tier_objects)):
index 0b75594..46dbc43 100644 (file)
@@ -23,17 +23,39 @@ class Tier:
         self.tests_array.append(testcase)
 
     def get_tests(self):
-        array_str = []
+        array_tests = []
         for test in self.tests_array:
-            array_str.append(test.name)
-        return array_str
+            array_tests.append(test)
+        return array_tests
+
+    def get_test_names(self):
+        array_tests = []
+        for test in self.tests_array:
+            array_tests.append(test.get_name())
+        return array_tests
+
+    def get_test(self, test_name):
+        if self.is_test(test_name):
+            for test in self.tests_array:
+                if test.get_name() == test_name:
+                    return test
+        return None
+
+    def is_test(self, test_name):
+        for test in self.tests_array:
+            if test.get_name() == test_name:
+                return True
+        return False
+
+    def get_name(self):
+        return self.name
 
     def __str__(self):
         return ("Tier info:\n"
                 "    Name: " + self.name + "\n"
                 "    Description: " + self.description + "\n"
                 "    Order: " + str(self.order) + "\n"
-                "    Test cases: " + str(self.get_tests()) + "\n")
+                "    Test cases: " + str(self.get_test_names()) + "\n")
 
 
 class TestCase:
@@ -51,6 +73,9 @@ class TestCase:
 
         return True
 
+    def get_name(self):
+        return self.name
+
     def __str__(self):
         return ("Testcase info:\n"
                 "    Name: " + self.name + "\n"
index 838927f..3d7597e 100644 (file)
@@ -20,8 +20,6 @@
 # http://www.apache.org/licenses/LICENSE-2.0
 #
 
-import argparse
-import logging
 import os
 import time
 import yaml
@@ -31,27 +29,12 @@ from neutronclient.v2_0 import client as neutronclient
 from keystoneclient.v2_0 import client as keystoneclient
 from cinderclient import client as cinderclient
 
-import openstack_utils
-
-parser = argparse.ArgumentParser()
-parser.add_argument("-d", "--debug", help="Debug mode", action="store_true")
-args = parser.parse_args()
+import functest.utils.functest_logger as ft_logger
+import functest.utils.openstack_utils as os_utils
 
 
 """ logging configuration """
-logger = logging.getLogger('clean_openstack')
-logger.setLevel(logging.DEBUG)
-
-ch = logging.StreamHandler()
-if args.debug:
-    ch.setLevel(logging.DEBUG)
-else:
-    ch.setLevel(logging.INFO)
-
-formatter = logging.Formatter('%(asctime)s - %(name)s - '
-                              '%(levelname)s - %(message)s')
-ch.setFormatter(formatter)
-logger.addHandler(ch)
+logger = ft_logger.Logger("run_rally").getLogger()
 
 REPO_PATH = os.environ['repos_dir'] + '/functest/'
 
@@ -83,7 +66,7 @@ def separator():
 
 def remove_instances(nova_client):
     logger.info("Removing Nova instances...")
-    instances = openstack_utils.get_instances(nova_client)
+    instances = os_utils.get_instances(nova_client)
     if instances is None or len(instances) == 0:
         logger.debug("No instances found.")
         return
@@ -93,7 +76,7 @@ def remove_instances(nova_client):
         instance_id = getattr(instance, 'id')
         logger.debug("Removing instance '%s', ID=%s ..."
                      % (instance_name, instance_id))
-        if openstack_utils.delete_instance(nova_client, instance_id):
+        if os_utils.delete_instance(nova_client, instance_id):
             logger.debug("  > Done!")
         else:
             logger.error("There has been a problem removing the "
@@ -101,7 +84,7 @@ def remove_instances(nova_client):
 
     timeout = 50
     while timeout > 0:
-        instances = openstack_utils.get_instances(nova_client)
+        instances = os_utils.get_instances(nova_client)
         if instances is None or len(instances) == 0:
             break
         else:
@@ -112,7 +95,7 @@ def remove_instances(nova_client):
 
 def remove_images(nova_client):
     logger.info("Removing Glance images...")
-    images = openstack_utils.get_images(nova_client)
+    images = os_utils.get_images(nova_client)
     if images is None or len(images) == 0:
         logger.debug("No images found.")
         return
@@ -124,7 +107,7 @@ def remove_images(nova_client):
         if image_id not in default_images:
             logger.debug("Removing image '%s', ID=%s ..."
                          % (image_name, image_id))
-            if openstack_utils.delete_glance_image(nova_client, image_id):
+            if os_utils.delete_glance_image(nova_client, image_id):
                 logger.debug("  > Done!")
             else:
                 logger.error("There has been a problem removing the"
@@ -136,7 +119,7 @@ def remove_images(nova_client):
 
 def remove_volumes(cinder_client):
     logger.info("Removing Cinder volumes...")
-    volumes = openstack_utils.get_volumes(cinder_client)
+    volumes = os_utils.get_volumes(cinder_client)
     if volumes is None or len(volumes) == 0:
         logger.debug("No volumes found.")
         return
@@ -147,13 +130,13 @@ def remove_volumes(cinder_client):
         logger.debug("'%s', ID=%s " % (volume_name, volume_id))
         if volume_id not in default_volumes:
             logger.debug("Removing cinder volume %s ..." % volume_id)
-            if openstack_utils.delete_volume(cinder_client, volume_id):
+            if os_utils.delete_volume(cinder_client, volume_id):
                 logger.debug("  > Done!")
             else:
                 logger.debug("Trying forced removal...")
-                if openstack_utils.delete_volume(cinder_client,
-                                                 volume_id,
-                                                 forced=True):
+                if os_utils.delete_volume(cinder_client,
+                                          volume_id,
+                                          forced=True):
                     logger.debug("  > Done!")
                 else:
                     logger.error("There has been a problem removing the "
@@ -165,7 +148,7 @@ def remove_volumes(cinder_client):
 
 def remove_floatingips(nova_client):
     logger.info("Removing floating IPs...")
-    floatingips = openstack_utils.get_floating_ips(nova_client)
+    floatingips = os_utils.get_floating_ips(nova_client)
     if floatingips is None or len(floatingips) == 0:
         logger.debug("No floating IPs found.")
         return
@@ -178,7 +161,7 @@ def remove_floatingips(nova_client):
         logger.debug("'%s', ID=%s " % (fip_ip, fip_id))
         if fip_id not in default_floatingips:
             logger.debug("Removing floating IP %s ..." % fip_id)
-            if openstack_utils.delete_floating_ip(nova_client, fip_id):
+            if os_utils.delete_floating_ip(nova_client, fip_id):
                 logger.debug("  > Done!")
                 deleted += 1
             else:
@@ -190,7 +173,7 @@ def remove_floatingips(nova_client):
 
     timeout = 50
     while timeout > 0:
-        floatingips = openstack_utils.get_floating_ips(nova_client)
+        floatingips = os_utils.get_floating_ips(nova_client)
         if floatingips is None or len(floatingips) == (init_len - deleted):
             break
         else:
@@ -202,7 +185,7 @@ def remove_floatingips(nova_client):
 def remove_networks(neutron_client):
     logger.info("Removing Neutron objects")
     network_ids = []
-    networks = openstack_utils.get_network_list(neutron_client)
+    networks = os_utils.get_network_list(neutron_client)
     if networks is None:
         logger.debug("There are no networks in the deployment. ")
     else:
@@ -222,14 +205,14 @@ def remove_networks(neutron_client):
                 network_ids.append(net_id)
 
     # delete ports
-    ports = openstack_utils.get_port_list(neutron_client)
+    ports = os_utils.get_port_list(neutron_client)
     if ports is None:
         logger.debug("There are no ports in the deployment. ")
     else:
         remove_ports(neutron_client, ports, network_ids)
 
     # remove routers
-    routers = openstack_utils.get_router_list(neutron_client)
+    routers = os_utils.get_router_list(neutron_client)
     if routers is None:
         logger.debug("There are no routers in the deployment. ")
     else:
@@ -239,7 +222,7 @@ def remove_networks(neutron_client):
     if network_ids is not None:
         for net_id in network_ids:
             logger.debug("Removing network %s ..." % net_id)
-            if openstack_utils.delete_neutron_net(neutron_client, net_id):
+            if os_utils.delete_neutron_net(neutron_client, net_id):
                 logger.debug("  > Done!")
             else:
                 logger.error("There has been a problem removing the "
@@ -259,8 +242,7 @@ def remove_ports(neutron_client, ports, network_ids):
             router_id = port['device_id']
             if len(port['fixed_ips']) == 0 and router_id == '':
                 logger.debug("Removing port %s ..." % port_id)
-                if (openstack_utils.delete_neutron_port(neutron_client,
-                                                        port_id)):
+                if (os_utils.delete_neutron_port(neutron_client, port_id)):
                     logger.debug("  > Done!")
                 else:
                     logger.error("There has been a problem removing the "
@@ -270,7 +252,7 @@ def remove_ports(neutron_client, ports, network_ids):
             elif port['device_owner'] == 'network:router_interface':
                 logger.debug("Detaching port %s (subnet %s) from router %s ..."
                              % (port_id, subnet_id, router_id))
-                if openstack_utils.remove_interface_router(
+                if os_utils.remove_interface_router(
                         neutron_client, router_id, subnet_id):
                     time.sleep(5)  # leave 5 seconds to detach
                     logger.debug("  > Done!")
@@ -285,11 +267,10 @@ def remove_ports(neutron_client, ports, network_ids):
 
 def force_remove_port(neutron_client, port_id):
     logger.debug("Clearing device_owner for port %s ..." % port_id)
-    openstack_utils.update_neutron_port(neutron_client,
-                                        port_id,
-                                        device_owner='clear')
+    os_utils.update_neutron_port(neutron_client, port_id,
+                                 device_owner='clear')
     logger.debug("Removing port %s ..." % port_id)
-    if openstack_utils.delete_neutron_port(neutron_client, port_id):
+    if os_utils.delete_neutron_port(neutron_client, port_id):
         logger.debug("  > Done!")
     else:
         logger.error("There has been a problem removing the port %s..."
@@ -306,8 +287,7 @@ def remove_routers(neutron_client, routers):
             if router['external_gateway_info'] is not None:
                 logger.debug("Router has gateway to external network."
                              "Removing link...")
-                if openstack_utils.remove_gateway_router(neutron_client,
-                                                         router_id):
+                if os_utils.remove_gateway_router(neutron_client, router_id):
                     logger.debug("  > Done!")
                 else:
                     logger.error("There has been a problem removing "
@@ -317,8 +297,7 @@ def remove_routers(neutron_client, routers):
                              "Ready to remove...")
             logger.debug("Removing router %s(%s) ..."
                          % (router_name, router_id))
-            if openstack_utils.delete_neutron_router(neutron_client,
-                                                     router_id):
+            if os_utils.delete_neutron_router(neutron_client, router_id):
                 logger.debug("  > Done!")
             else:
                 logger.error("There has been a problem removing the "
@@ -327,7 +306,7 @@ def remove_routers(neutron_client, routers):
 
 def remove_security_groups(neutron_client):
     logger.info("Removing Security groups...")
-    secgroups = openstack_utils.get_security_groups(neutron_client)
+    secgroups = os_utils.get_security_groups(neutron_client)
     if secgroups is None or len(secgroups) == 0:
         logger.debug("No security groups found.")
         return
@@ -338,8 +317,7 @@ def remove_security_groups(neutron_client):
         logger.debug("'%s', ID=%s " % (secgroup_name, secgroup_id))
         if secgroup_id not in default_security_groups:
             logger.debug(" Removing '%s'..." % secgroup_name)
-            if openstack_utils.delete_security_group(neutron_client,
-                                                     secgroup_id):
+            if os_utils.delete_security_group(neutron_client, secgroup_id):
                 logger.debug("  > Done!")
             else:
                 logger.error("There has been a problem removing the "
@@ -351,7 +329,7 @@ def remove_security_groups(neutron_client):
 
 def remove_users(keystone_client):
     logger.info("Removing Users...")
-    users = openstack_utils.get_users(keystone_client)
+    users = os_utils.get_users(keystone_client)
     if users is None:
         logger.debug("There are no users in the deployment. ")
         return
@@ -362,7 +340,7 @@ def remove_users(keystone_client):
         logger.debug("'%s', ID=%s " % (user_name, user_id))
         if user_id not in default_users:
             logger.debug(" Removing '%s'..." % user_name)
-            if openstack_utils.delete_user(keystone_client, user_id):
+            if os_utils.delete_user(keystone_client, user_id):
                 logger.debug("  > Done!")
             else:
                 logger.error("There has been a problem removing the "
@@ -374,7 +352,7 @@ def remove_users(keystone_client):
 
 def remove_tenants(keystone_client):
     logger.info("Removing Tenants...")
-    tenants = openstack_utils.get_tenants(keystone_client)
+    tenants = os_utils.get_tenants(keystone_client)
     if tenants is None:
         logger.debug("There are no tenants in the deployment. ")
         return
@@ -385,7 +363,7 @@ def remove_tenants(keystone_client):
         logger.debug("'%s', ID=%s " % (tenant_name, tenant_id))
         if tenant_id not in default_tenants:
             logger.debug(" Removing '%s'..." % tenant_name)
-            if openstack_utils.delete_tenant(keystone_client, tenant_id):
+            if os_utils.delete_tenant(keystone_client, tenant_id):
                 logger.debug("  > Done!")
             else:
                 logger.error("There has been a problem removing the "
@@ -396,16 +374,16 @@ def remove_tenants(keystone_client):
 
 
 def main():
-    creds_nova = openstack_utils.get_credentials("nova")
+    creds_nova = os_utils.get_credentials("nova")
     nova_client = novaclient.Client('2', **creds_nova)
 
-    creds_neutron = openstack_utils.get_credentials("neutron")
+    creds_neutron = os_utils.get_credentials("neutron")
     neutron_client = neutronclient.Client(**creds_neutron)
 
-    creds_keystone = openstack_utils.get_credentials("keystone")
+    creds_keystone = os_utils.get_credentials("keystone")
     keystone_client = keystoneclient.Client(**creds_keystone)
 
-    creds_cinder = openstack_utils.get_credentials("cinder")
+    creds_cinder = os_utils.get_credentials("cinder")
     # cinder_client = cinderclient.Client(**creds_cinder)
     cinder_client = cinderclient.Client('1', creds_cinder['username'],
                                         creds_cinder['api_key'],
@@ -413,7 +391,7 @@ def main():
                                         creds_cinder['auth_url'],
                                         service_type="volume")
 
-    if not openstack_utils.check_credentials():
+    if not os_utils.check_credentials():
         logger.error("Please source the openrc credentials and run "
                      "the script again.")
         exit(-1)
index 4c2065e..0a1e498 100644 (file)
@@ -28,7 +28,7 @@ from neutronclient.v2_0 import client as neutronclient
 from keystoneclient.v2_0 import client as keystoneclient
 from cinderclient import client as cinderclient
 
-import functest.utils.openstack_utils as openstack_utils
+import functest.utils.openstack_utils as os_utils
 import functest.utils.functest_logger as ft_logger
 
 """ logging configuration """
@@ -50,7 +50,7 @@ def separator():
 def get_instances(nova_client):
     logger.debug("Getting instances...")
     dic_instances = {}
-    instances = openstack_utils.get_instances(nova_client)
+    instances = os_utils.get_instances(nova_client)
     if not (instances is None or len(instances) == 0):
         for instance in instances:
             dic_instances.update({getattr(instance, 'id'): getattr(instance,
@@ -61,7 +61,7 @@ def get_instances(nova_client):
 def get_images(nova_client):
     logger.debug("Getting images...")
     dic_images = {}
-    images = openstack_utils.get_images(nova_client)
+    images = os_utils.get_images(nova_client)
     if not (images is None or len(images) == 0):
         for image in images:
             dic_images.update({getattr(image, 'id'): getattr(image, 'name')})
@@ -71,7 +71,7 @@ def get_images(nova_client):
 def get_volumes(cinder_client):
     logger.debug("Getting volumes...")
     dic_volumes = {}
-    volumes = openstack_utils.get_volumes(cinder_client)
+    volumes = os_utils.get_volumes(cinder_client)
     if volumes is not None:
         for volume in volumes:
             dic_volumes.update({volume.id: volume.display_name})
@@ -81,7 +81,7 @@ def get_volumes(cinder_client):
 def get_networks(neutron_client):
     logger.debug("Getting networks")
     dic_networks = {}
-    networks = openstack_utils.get_network_list(neutron_client)
+    networks = os_utils.get_network_list(neutron_client)
     if networks is not None:
         for network in networks:
             dic_networks.update({network['id']: network['name']})
@@ -91,7 +91,7 @@ def get_networks(neutron_client):
 def get_routers(neutron_client):
     logger.debug("Getting routers")
     dic_routers = {}
-    routers = openstack_utils.get_router_list(neutron_client)
+    routers = os_utils.get_router_list(neutron_client)
     if routers is not None:
         for router in routers:
             dic_routers.update({router['id']: router['name']})
@@ -101,7 +101,7 @@ def get_routers(neutron_client):
 def get_security_groups(neutron_client):
     logger.debug("Getting Security groups...")
     dic_secgroups = {}
-    secgroups = openstack_utils.get_security_groups(neutron_client)
+    secgroups = os_utils.get_security_groups(neutron_client)
     if not (secgroups is None or len(secgroups) == 0):
         for secgroup in secgroups:
             dic_secgroups.update({secgroup['id']: secgroup['name']})
@@ -111,7 +111,7 @@ def get_security_groups(neutron_client):
 def get_floatinips(nova_client):
     logger.debug("Getting Floating IPs...")
     dic_floatingips = {}
-    floatingips = openstack_utils.get_floating_ips(nova_client)
+    floatingips = os_utils.get_floating_ips(nova_client)
     if not (floatingips is None or len(floatingips) == 0):
         for floatingip in floatingips:
             dic_floatingips.update({floatingip.id: floatingip.ip})
@@ -121,7 +121,7 @@ def get_floatinips(nova_client):
 def get_users(keystone_client):
     logger.debug("Getting users...")
     dic_users = {}
-    users = openstack_utils.get_users(keystone_client)
+    users = os_utils.get_users(keystone_client)
     if not (users is None or len(users) == 0):
         for user in users:
             dic_users.update({getattr(user, 'id'): getattr(user, 'name')})
@@ -131,7 +131,7 @@ def get_users(keystone_client):
 def get_tenants(keystone_client):
     logger.debug("Getting users...")
     dic_tenants = {}
-    tenants = openstack_utils.get_tenants(keystone_client)
+    tenants = os_utils.get_tenants(keystone_client)
     if not (tenants is None or len(tenants) == 0):
         for tenant in tenants:
             dic_tenants.update({getattr(tenant, 'id'):
@@ -140,23 +140,23 @@ def get_tenants(keystone_client):
 
 
 def main():
-    creds_nova = openstack_utils.get_credentials("nova")
+    creds_nova = os_utils.get_credentials("nova")
     nova_client = novaclient.Client('2', **creds_nova)
 
-    creds_neutron = openstack_utils.get_credentials("neutron")
+    creds_neutron = os_utils.get_credentials("neutron")
     neutron_client = neutronclient.Client(**creds_neutron)
 
-    creds_keystone = openstack_utils.get_credentials("keystone")
+    creds_keystone = os_utils.get_credentials("keystone")
     keystone_client = keystoneclient.Client(**creds_keystone)
 
-    creds_cinder = openstack_utils.get_credentials("cinder")
+    creds_cinder = os_utils.get_credentials("cinder")
     cinder_client = cinderclient.Client('1', creds_cinder['username'],
                                         creds_cinder['api_key'],
                                         creds_cinder['project_id'],
                                         creds_cinder['auth_url'],
                                         service_type="volume")
 
-    if not openstack_utils.check_credentials():
+    if not os_utils.check_credentials():
         logger.error("Please source the openrc credentials and run the" +
                      "script again.")
         exit(-1)