From 0e3995a63d1a82fbc508dbb3ff591da2b8c0f22a Mon Sep 17 00:00:00 2001 From: wuwb1989 Date: Mon, 4 Jul 2016 10:55:44 +0800 Subject: Add interface to run sfc functests. Varified only in fuel. Prerequisite: no floating ip exists. Change-Id: If6ef4c395992ba1544559b47c5c97f7cd5ce004c Signed-off-by: wuwb1989 --- testcases/Controllers/ONOS/Teston/onosfunctest.py | 76 +++++++++++++++++++++-- 1 file changed, 70 insertions(+), 6 deletions(-) (limited to 'testcases/Controllers') diff --git a/testcases/Controllers/ONOS/Teston/onosfunctest.py b/testcases/Controllers/ONOS/Teston/onosfunctest.py index f97d415d..780e36c9 100644 --- a/testcases/Controllers/ONOS/Teston/onosfunctest.py +++ b/testcases/Controllers/ONOS/Teston/onosfunctest.py @@ -14,19 +14,23 @@ lanqinglong@huawei.com # """ -import argparse +# import argparse import datetime import os import re import time import yaml +from keystoneclient.v2_0 import client as keystoneclient +from glanceclient import client as glanceclient + import functest.utils.functest_logger as ft_logger import functest.utils.functest_utils as functest_utils +import functest.utils.openstack_utils as openstack_utils -parser = argparse.ArgumentParser() -parser.add_argument("-i", "--installer", help="Installer type") -args = parser.parse_args() +# parser = argparse.ArgumentParser() +# parser.add_argument("-i", "--installer", help="Installer type") +# args = parser.parse_args() """ logging configuration """ logger = ft_logger.Logger("onos").getLogger() @@ -49,6 +53,17 @@ ONOSCI_PATH = ONOS_REPO_PATH + "/" starttime = datetime.datetime.now() HOME = os.environ['HOME'] + "/" +INSTALLER_TYPE = os.environ['INSTALLER_TYPE'] +DEPLOY_SCENARIO = os.environ['DEPLOY_SCENARIO'] +ONOSCI_PATH = ONOS_REPO_PATH + "/" +GLANCE_IMAGE_NAME = functest_yaml.get("onos_sfc").get("image_name") +GLANCE_IMAGE_FILENAME = functest_yaml.get("onos_sfc").get("image_file_name") +GLANCE_IMAGE_FORMAT = functest_yaml.get("general").get("openstack").get( + "image_disk_format") +GLANCE_IMAGE_PATH = functest_yaml.get("general").get("directories").get( + "dir_functest_data") + "/" + GLANCE_IMAGE_FILENAME +SFC_PATH = REPO_PATH + functest_yaml.get("general").get("directories").get( + "dir_onos_sfc") def RunScript(testname): @@ -163,18 +178,67 @@ def CleanOnosTest(): logger.debug("Clean ONOS Teston") +def CreateImage(): + creds_keystone = openstack_utils.get_credentials("keystone") + keystone_client = keystoneclient.Client(**creds_keystone) + glance_endpoint = keystone_client.service_catalog.url_for( + service_type='image', endpoint_type='publicURL') + glance_client = glanceclient.Client(1, glance_endpoint, + token=keystone_client.auth_token) + EXIT_CODE = -1 + # Check if the given image exists + image_id = openstack_utils.get_image_id(glance_client, GLANCE_IMAGE_NAME) + if image_id != '': + logger.info("Using existing image '%s'..." % GLANCE_IMAGE_NAME) + global image_exists + image_exists = True + else: + logger.info("Creating image '%s' from '%s'..." % (GLANCE_IMAGE_NAME, + GLANCE_IMAGE_PATH)) + image_id = openstack_utils.create_glance_image(glance_client, + GLANCE_IMAGE_NAME, + GLANCE_IMAGE_PATH) + if not image_id: + logger.error("Failed to create a Glance image...") + return(EXIT_CODE) + logger.debug("Image '%s' with ID=%s created successfully." + % (GLANCE_IMAGE_NAME, image_id)) + + +def SfcTest(): + cmd = "python " + SFC_PATH + "Sfc.py" + logger.debug("Run sfc tests") + os.system(cmd) + + +def SetSfcIp(): + cmd = "openstack catalog show network | grep publicURL" + cmd_output = os.popen(cmd).read() + ip = re.search(r"\d+\.\d+\.\d+\.\d+", cmd_output).group() + cmd_onos_ip = "sed -i 's/onos_ip/" + ip + "/g' " + SFC_PATH + "Sfc_fun.py" + cmd_openstack_ip = "sed -i 's/openstack_ip/" + ip\ + + "/g' " + SFC_PATH + "Sfc_fun.py" + logger.info("Modify ip for SFC") + os.system(cmd_onos_ip) + os.system(cmd_openstack_ip) + + def main(): start_time = time.time() stop_time = start_time # DownloadCodes() - if args.installer == "joid": + # if args.installer == "joid": + if INSTALLER_TYPE == "joid": logger.debug("Installer is Joid") SetOnosIpForJoid() else: SetOnosIp() RunScript("FUNCvirNetNB") RunScript("FUNCvirNetNBL3") - + if DEPLOY_SCENARIO == "os-onos-sfc-ha": + CreateImage() + SetSfcIp() + SfcTest() try: logger.debug("Push ONOS results into DB") # TODO check path result for the file -- cgit 1.2.3-korg