###################################
# job configuration for functest
###################################
- project:
    name: yardstick

    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
#--------------------------------
#        master
#--------------------------------
        - ericsson-pod1:
            installer: fuel
            <<: *master
        - ericsson-pod2:
            installer: fuel
            <<: *master
        - intel-pod6:
            installer: joid
            <<: *master
        - intel-pod8:
            installer: compass
            <<: *master
        - zte-build-1:
            installer: fuel
            <<: *master
        - orange-pod2:
            installer: joid
            <<: *master
#--------------------------------
    loop:
        - daily

    jobs:
        - 'yardstick-{installer}-{pod}-{loop}-{stream}'

################################
# job templates
################################
- job-template:
    name: 'yardstick-{installer}-{pod}-{loop}-{stream}'

    disabled: false

    wrappers:
        - build-name:
            name: '$BUILD_NUMBER - SDN: $SDN_CONTROLLER Scenario: $DEPLOY_SCENARIO'

    parameters:
        - project-parameter:
            project: '{project}'
        - '{pod}-defaults'
        - '{installer}-defaults'
        - 'yardstick-params-{pod}'
        - string:
            name: YARDSTICK_SUITE_NAME
            default: opnfv_${{NODE_NAME}}_{loop}.yaml
            description: 'Path to test suite'

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

    builders:
        - 'yardstick-cleanup'
        - 'yardstick-fetch-os-creds'
        - 'yardstick-daily'

    publishers:
        - email:
            recipients: ana.cunha@ericsson.com jorgen.w.karlsson@ericsson.com

########################
# builder macros
########################
- builder:
    name: yardstick-daily
    builders:
        - shell: |
            #!/bin/bash
            set -o errexit

            echo "Yardstick: Run benchmark test suites ..."

            # Pull the latest image
            docker pull opnfv/yardstick

            docker run \
               --privileged=true \
                --rm \
                -t \
                -e "INSTALLER_TYPE=${INSTALLER_TYPE}" \
                -e "INSTALLER_IP=${INSTALLER_IP}" \
                -e "POD_NAME=${NODE_NAME}" \
                -e "EXTERNAL_NETWORK=${EXTERNAL_NETWORK}" \
                -e "YARDSTICK_BRANCH=${GERRIT_BRANCH}" \
                opnfv/yardstick \
                run_tests.sh $YARDSTICK_DB_BACKEND \
                $YARDSTICK_SUITE_NAME

            echo "Yardstick: done!"

- builder:
    name: yardstick-fetch-os-creds
    builders:
        - shell:
            !include-raw ../../utils/fetch_os_creds.sh

- builder:
    name: yardstick-cleanup
    builders:
        - shell: |
            #!/bin/bash

            echo "Cleaning up docker containers/images..."

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

            # Remove existing images if exist
            if [[ ! -z $(docker images | grep opnfv/yardstick) ]]; then
                echo "Docker images to remove:"
                docker images | head -1 && docker images | grep opnfv/yardstick
                image_tags=($(docker images | grep opnfv/yardstick | awk '{print $2}'))
                for tag in "${image_tags[@]}"; do
                    echo "Removing docker image opnfv/yardstick:$tag..."
                    docker rmi opnfv/yardstick:$tag
                done
            fi
########################
# parameter macros
########################
- parameter:
    name: 'yardstick-params-intel-pod5'
    parameters:
        - string:
            name: YARDSTICK_DB_BACKEND
            default: ''
            description: 'Arguments to use in order to choose the backend DB'

- parameter:
    name: 'yardstick-params-intel-pod6'
    parameters:
        - string:
            name: YARDSTICK_DB_BACKEND
            default: ''
            description: 'Arguments to use in order to choose the backend DB'

- parameter:
    name: 'yardstick-params-intel-pod8'
    parameters:
        - string:
            name: YARDSTICK_DB_BACKEND
            default: ''
            description: 'Arguments to use in order to choose the backend DB'

- parameter:
    name: 'yardstick-params-ericsson-pod1'
    parameters:
        - string:
            name: YARDSTICK_DB_BACKEND
            default: ''
            description: 'Arguments to use in order to choose the backend DB'

- parameter:
    name: 'yardstick-params-ericsson-pod2'
    parameters:
        - string:
            name: YARDSTICK_DB_BACKEND
            default: ''
            description: 'Arguments to use in order to choose the backend DB'

- parameter:
    name: 'yardstick-params-opnfv-jump-2'
    parameters:
        - string:
            name: YARDSTICK_DB_BACKEND
            default: '-r 213.77.62.197'
            description: 'Arguments to use in order to choose the backend DB'

- parameter:
    name: 'yardstick-params-huawei-us-deploy-bare-1'
    parameters:
        - string:
            name: YARDSTICK_DB_BACKEND
            default: ''
            description: 'Arguments to use in order to choose the backend DB'

- parameter:
    name: 'yardstick-params-zte-build-1'
    parameters:
        - string:
            name: YARDSTICK_DB_BACKEND
            default: ''
            description: 'Arguments to use in order to choose the backend DB'

- parameter:
    name: 'yardstick-params-orange-pod2'
    parameters:
        - string:
            name: YARDSTICK_DB_BACKEND
            default: ''
            description: 'Arguments to use in order to choose the backend DB'