summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--jjb/genesis/genesis-foreman.yml59
1 files changed, 59 insertions, 0 deletions
diff --git a/jjb/genesis/genesis-foreman.yml b/jjb/genesis/genesis-foreman.yml
index 5c2ec99a9..c24633677 100644
--- a/jjb/genesis/genesis-foreman.yml
+++ b/jjb/genesis/genesis-foreman.yml
@@ -9,6 +9,7 @@
- 'genesis-foreman-verify'
- 'genesis-foreman-merge'
- 'genesis-foreman-daily-{stream}'
+ - 'genesis-foreman-deploy'
# stream: branch with - in place of / (eg. stable-helium)
# branch: branch (eg. stable/helium)
@@ -198,6 +199,51 @@
- 'foreman-daily-master'
+- job-template:
+ name: 'genesis-foreman-deploy'
+
+ project-type: freestyle
+
+ node: opnfv-jump-2
+
+ logrotate:
+ daysToKeep: 30
+ numToKeep: 10
+ artifactDaysToKeep: -1
+ artifactNumToKeep: -1
+
+ parameters:
+ - string:
+ name: BUILD_DIRECTORY
+ default: $WORKSPACE/build_output
+ - string:
+ name: GIT_BASE
+ default: https://github.com/trozet/bgs_vagrant.git
+ description: "This is a temporary location to clone the needed scripts. Will be replaced with OPNFV Git URL."
+ - string:
+ name: GERRIT_BRANCH
+ default: origin/master
+ description: "Branch to build, deploy and test."
+ - string:
+ name: GERRIT_REFSPEC
+ default: refs/heads/master
+ description: "Refspec to retrieve."
+
+ scm:
+ - git:
+ skip-tag: true
+ url: $GIT_BASE
+ branches:
+ - $GERRIT_BRANCH
+ refspec: $GERRIT_REFSPEC
+
+ wrappers:
+ - ssh-agent-credentials:
+ user: '{ssh-credentials}'
+
+ builders:
+ - 'foreman-deploy'
+
########################
# builder macros
########################
@@ -341,3 +387,16 @@
# remove the BUILD_DIRECTORY and downlaoded artifact to reclaim some space
/bin/rm -rf $BUILD_DIRECTORY
/bin/rm -rf $WORKSPACE/opnfv.iso
+
+- builder:
+ name: foreman-deploy
+ builders:
+ - shell: |
+ #!/bin/bash
+ set -o errexit
+ set -o nounset
+ set -o pipefail
+ set -x
+
+ cd $WORKSPACE
+ ls -al
>174
#!/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", "")