aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorjose.lausuch <jose.lausuch@ericsson.com>2016-04-28 00:08:26 +0200
committerjose.lausuch <jose.lausuch@ericsson.com>2016-04-28 15:19:09 +0200
commitbbf10c2ae8c2205c89065d8d57e3340d9b2efd40 (patch)
tree8b1f93740679ab5d674d7939801ac4be12110b43
parentaab51caef627cb40d78680563d984dd5c1dbbeef (diff)
Create run_test.py using the tier mechanism to run the tests
JIRA: FUNCTEST-227 JIRA: FUNCTEST-190 Change-Id: I5445ad36ec65e62d48c8f5b16352caea2e51e3c9 Signed-off-by: jose.lausuch <jose.lausuch@ericsson.com>
-rw-r--r--ci/exec_test.sh208
-rw-r--r--ci/prepare_env.py11
-rw-r--r--ci/run_tests.py134
-rw-r--r--ci/testcases.yaml37
-rw-r--r--ci/tier_builder.py21
-rw-r--r--ci/tier_handler.py33
-rw-r--r--utils/clean_openstack.py98
-rw-r--r--utils/generate_defaults.py30
8 files changed, 462 insertions, 110 deletions
diff --git a/ci/exec_test.sh b/ci/exec_test.sh
new file mode 100644
index 00000000..2e16fbb3
--- /dev/null
+++ b/ci/exec_test.sh
@@ -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
diff --git a/ci/prepare_env.py b/ci/prepare_env.py
index 710a767e..b462f963 100644
--- a/ci/prepare_env.py
+++ b/ci/prepare_env.py
@@ -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
index 00000000..95bc9802
--- /dev/null
+++ b/ci/run_tests.py
@@ -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()
diff --git a/ci/testcases.yaml b/ci/testcases.yaml
index 42458bbe..8dc22a64 100644
--- a/ci/testcases.yaml
+++ b/ci/testcases.yaml
@@ -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
diff --git a/ci/tier_builder.py b/ci/tier_builder.py
index e66e97a3..82b58cd0 100644
--- a/ci/tier_builder.py
+++ b/ci/tier_builder.py
@@ -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)):
diff --git a/ci/tier_handler.py b/ci/tier_handler.py
index 0b755949..46dbc434 100644
--- a/ci/tier_handler.py
+++ b/ci/tier_handler.py
@@ -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"
diff --git a/utils/clean_openstack.py b/utils/clean_openstack.py
index 838927fa..3d7597e0 100644
--- a/utils/clean_openstack.py
+++ b/utils/clean_openstack.py
@@ -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)
diff --git a/utils/generate_defaults.py b/utils/generate_defaults.py
index 4c2065e4..0a1e498f 100644
--- a/utils/generate_defaults.py
+++ b/utils/generate_defaults.py
@@ -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)