aboutsummaryrefslogtreecommitdiffstats
path: root/environments/puppet-ceph.yaml
blob: 57af540a49c74bbe0a26bad1e8b91128e839934c (plain)
1
2
3
4
5
6
7
8
9
10
11
12
###################################
# job configuration for functest
###################################
- project:
    name: functest

    project: '{name}'

#--------------------------------
# BRANCH ANCHORS
#--------------------------------
    master: &master
        stream: master
        branch: '{stream}'
        gs-pathname: ''
    brahmaputra: &brahmaputra
        stream: brahmaputra
        branch: 'stable/{stream}'
        gs-pathname: '/{stream}'
#--------------------------------
# POD, INSTALLER, AND BRANCH MAPPING
#--------------------------------
#        brahmaputra
#--------------------------------
    pod:
        - opnfv-jump-2:
            installer: fuel
            <<: *brahmaputra
        - intel-pod5:
            installer: joid
            <<: *brahmaputra
        - huawei-us-deploy-bare-1:
            installer: compass
            <<: *brahmaputra
        - ericsson-pod1:
            installer: fuel
            <<: *brahmaputra
#--------------------------------
#        master
#--------------------------------
        - intel-pod6:
            installer: joid
            <<: *master
        - intel-pod8:
            installer: compass
            <<: *master
        - opnfv-jump-1:
            installer: apex
            <<: *master
        - ericsson-pod1:
            installer: fuel
            <<: *master
        - ericsson-pod2:
            installer: fuel
            <<: *master
        - orange-test1:
            installer: fuel
            <<: *master
        - orange-pod2:
            installer: joid
            <<: *master
#--------------------------------

    testsuite:
        - 'daily'
        - 'suite'

    jobs:
        - 'functest-{installer}-{pod}-{testsuite}-{stream}'

################################
# job template
################################
- job-template:
    name: 'functest-{installer}-{pod}-{testsuite}-{stream}'

    wrappers:
        - build-name:
            name: '$BUILD_NUMBER Suite: $FUNCTEST_SUITE_NAME Scenario: $DEPLOY_SCENARIO'

    parameters:
        - project-parameter:
            project: '{project}'
        - '{pod}-defaults'
        - '{installer}-defaults'
        - 'functest-{testsuite}-parameter'
        - string:
            name: DEPLOY_SCENARIO
            default: 'os-odl_l2-nofeature-ha'
        - functest-parameter:
            gs-pathname: '{gs-pathname}'

    scm:
        - git-scm:
            credentials-id: '{ssh-credentials}'
            refspec: ''
            branch: '{branch}'

    builders:
        - 'functest-{testsuite}-builder'

########################
# parameter macros
########################
- parameter:
    name: functest-daily-parameter
    parameters:
        - string:
            name: FUNCTEST_SUITE_NAME
            default: 'daily'
            description: "Suite name to run"
- parameter:
    name: functest-suite-parameter
    parameters:
        - choice:
            name: FUNCTEST_SUITE_NAME
            choices:
                - 'tempest'
                - 'rally'
                - 'odl'
                - 'onos'
                - 'ovno'
                - 'promise'
                - 'doctor'
                - 'vims'
                - 'vping'
- parameter:
    name: functest-parameter
    parameters:
        - string:
            name: GS_PATHNAME
            default: '{gs-pathname}'
            description: "Version directory where the opnfv documents will be stored in gs repository"
        - string:
            name: FUNCTEST_REPO_DIR
            default: "/home/opnfv/repos/functest"
            description: "Directory where the Functest repository is cloned"
        - string:
            name: PUSH_RESULTS_TO_DB
            default: "true"
            description: "Push the results of all the tests to the resultDB"
        - string:
            name: CI_DEBUG
            default: 'false'
            description: "Show debug output information"
########################
# trigger macros
########################
- trigger:
    name: 'functest-master'
    triggers:
        - pollscm:
            cron: "H 9 * * *"
########################
# builder macros
########################
- builder:
    name: functest-daily-builder
    builders:
        - 'functest-cleanup'
        - 'set-functest-env'
        - 'functest-all'
        - 'functest-store-results'

- builder:
    name: functest-suite-builder
    builders:
        - shell: |
            #!/bin/bash
            set +e
            flag=""
            if [ "${PUSH_RESULTS_TO_DB}" == "true" ]; then
                flag="-r"
            fi
            echo "Functest: run $FUNCTEST_SUITE_NAME"
            cmd="${FUNCTEST_REPO_DIR}/docker/run_tests.sh --test $FUNCTEST_SUITE_NAME ${flag}"
            container_id=$(docker ps -a | grep opnfv/functest | awk '{print $1}' | head -1)
            docker exec $container_id $cmd

- builder:
    name: functest-all
    builders:
        - shell: |
            #!/bin/bash
            set +e
            flag=""
            if [ "${PUSH_RESULTS_TO_DB}" == "true" ]; then
                flag="-r"
            fi
            echo "Functest: running all the tests"
            cmd="${FUNCTEST_REPO_DIR}/docker/run_tests.sh ${flag}"
            container_id=$(docker ps -a | grep opnfv/functest | awk '{print $1}' | head -1)
            docker exec $container_id $cmd

- builder:
    name: set-functest-env
    builders:
        - shell: |
            #!/bin/bash
            set +e
            [[ $CI_DEBUG == true ]] && redirect="/dev/stdout" || redirect="/dev/null"
            # labconfig is used only for joid
            labconfig=""
            if [[ ${INSTALLER_TYPE} == 'apex' ]]; then
                instack_mac=$(sudo virsh domiflist instack | grep default | \
                              grep -Eo "[0-9a-f]+:[0-9a-f]+:[0-9a-f]+:[0-9a-f]+:[0-9a-f]+:[0-9a-f]+")
                INSTALLER_IP=$(/usr/sbin/arp -e | grep ${instack_mac} | awk {'print $1'})
                sshkey="-v /root/.ssh/id_rsa:/root/.ssh/id_rsa"
                sudo iptables -D FORWARD -o virbr0 -j REJECT --reject-with icmp-port-unreachable
                sudo iptables -D FORWARD -i virbr0 -j REJECT --reject-with icmp-port-unreachable
            elif [[ ${INSTALLER_TYPE} == 'joid' ]]; then
                # If production lab then creds may be retrieved dynamically
                # creds are on the jumphost, always in the same folder
                labconfig="-v $LAB_CONFIG/admin-openrc:/home/opnfv/functest/conf/openstack.creds"
                # If dev lab, credentials may not be the default ones, just provide a path to put them into docker
                # replace the default one by the customized one provided by jenkins config
            fi
            echo "Functest: Start Docker and prepare environment"
            envs="-e INSTALLER_TYPE=${INSTALLER_TYPE} -e INSTALLER_IP=${INSTALLER_IP} \
                -e NODE_NAME=${NODE_NAME} -e DEPLOY_SCENARIO=${DEPLOY_SCENARIO} \
                -e CI_DEBUG=${CI_DEBUG}"

            dir_result="${HOME}/opnfv/functest/reports"
            mkdir -p ${dir_result}
            sudo rm -rf ${dir_result}/*
            res_volume="-v ${dir_result}:/home/opnfv/functest/results"

            docker pull opnfv/functest:latest_stable >$redirect
            cmd="sudo docker run --privileged=true -id ${envs} ${labconfig} ${sshkey} ${res_volume} opnfv/functest:latest_stable /bin/bash"
            echo "Functest: Running docker run command: ${cmd}"
            ${cmd}
            docker ps -a
            sleep 5
            container_id=$(docker ps | grep 'opnfv/functest:latest_stable' | awk '{print $1}' | head -1)
            echo "Container ID=${container_id}"
            if [ -z ${container_id} ]; then
                echo "Cannot find opnfv/functest container ID ${container_id}. Please check if it is existing."
                docker ps -a
                exit 1
            fi
            echo "Starting the container: docker start ${container_id}"
            docker start ${container_id}
            sleep 5
            docker ps
            if [ $(docker ps | grep 'opnfv/functest:latest_stable' | wc -l) == 0 ]; then
                echo "The container opnfv/functest with ID=${container_id} has not been properly started. Exiting..."
                exit 1
            fi
            cmd="${FUNCTEST_REPO_DIR}/docker/prepare_env.sh"
            echo "Executing command inside the docker: ${cmd}"
            docker exec ${container_id} ${cmd}

- builder:
    name: functest-store-results
    builders:
        - shell:
            !include-raw: res-build.sh

- builder:
    name: functest-cleanup
    builders:
        - shell: |
            #!/bin/bash
            [[ $CI_DEBUG == true ]] && redirect="/dev/stdout" || redirect="/dev/null"

            echo "Cleaning up docker containers/images..."
            # Remove previous running containers if exist
            if [[ ! -z $(docker ps -a | grep opnfv/functest) ]]; then
                echo "Removing existing opnfv/functest containers..."
                docker ps -a | grep opnfv/functest | awk '{print $1}' | xargs docker rm -f >$redirect
            fi

            # Remove existing images if exist
            if [[ ! -z $(docker images | grep opnfv/functest) ]]; then
                echo "Docker images to remove:"
                docker images | head -1 && docker images | grep opnfv/functest
                image_tags=($(docker images | grep opnfv/functest | awk '{print $2}'))
                for tag in "${image_tags[@]}"; do
                    echo "Removing docker image opnfv/functest:$tag..."
                    docker rmi opnfv/functest:$tag >$redirect
                done
            fi