####################################
# Job configuration for bottlenecks
####################################
- project:
    name: bottlenecks
    jobs:
        - 'bottlenecks-verify-{stream}'
        - 'bottlenecks-daily-{installer}-{suite}-{pod}-{stream}'
        - 'bottlenecks-{suite}-upload-artifacts-{stream}'
    pod:
        - lf:
            node: 'opnfv-jump-2'
            installer_type: 'fuel'
            installer_ip: '10.20.0.2'

    installer:
        - 'fuel'

    suite:
        - 'rubbos'
        - 'vstf'

# only master branch is enabled at the moment to keep no of jobs sane
    stream:
        - master:
            branch: '{stream}'
            gs-pathname: ''
        - brahmaputra:
            branch: 'stable/{stream}'
            gs-pathname: '/{stream}'

    project: 'bottlenecks'
###############################
# Job templates
##############################
- job-template:
    name: 'bottlenecks-verify-{stream}'

    parameters:
        - project-parameter:
            project: '{project}'
        - gerrit-parameter:
            branch: '{branch}'
        - 'opnfv-build-defaults'

    scm:
        - gerrit-trigger-scm:
            credentials-id: '{ssh-credentials}'
            refspec: '$GERRIT_REFSPEC'
            choosing-strategy: 'gerrit'

    triggers:
        - gerrit:
            trigger-on:
                - patchset-created-event:
                    exclude-drafts: 'false'
                    exclude-trivial-rebase: 'false'
                    exclude-no-code-change: 'false'
                - draft-published-event
                - comment-added-contains-event:
                    comment-contains-value: 'recheck'
                - comment-added-contains-event:
                    comment-contains-value: 'reverify'
            projects:
              - project-compare-type: 'ANT'
                project-pattern: '{project}'
                branches:
                  - branch-compare-type: 'ANT'
                    branch-pattern: '**/{branch}'
                forbidden-file-paths:
                  - compare-type: ANT
                    pattern: 'docs/**|.gitignore'

    builders:
        - shell: |
            echo "Nothing to verify!"

- job-template:
    name: 'bottlenecks-{suite}-upload-artifacts-{stream}'

    node: ericsson-build

    concurrent: true

    properties:
        - throttle:
            enabled: true
            max-total: 1
            max-per-node: 1

    parameters:
        - project-parameter:
            project: '{project}'
        - 'ericsson-ca-build-1-defaults'
        - bottlenecks-parameter:
            gs-pathname: '{gs-pathname}'
            suite: '{suite}'

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

    builders:
        - 'bottlenecks-builder-upload-artifact'
        - 'bottlenecks-workspace-cleanup'

- job-template:
    name: 'bottlenecks-daily-{installer}-{suite}-{pod}-{stream}'

    disabled: false

    node: '{node}'

    parameters:
        - project-parameter:
            project: '{project}'
        - 'opnfv-jump-2-defaults'
        - string:
            name: POD_NAME
            default: '{pod}'
            description: "POD where the job runs"
        - string:
            name: INSTALLER_TYPE
            default: '{installer_type}'
            description: "Installer name that is used for deployment."
        - string:
            name: INSTALLER_IP
            default: '{installer_ip}'
            description: "Installer IP."
        - string:
            name: GERRIT_REFSPEC_DEBUG
            default: ''
            description: "Gerrit refspec for debug."

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

    wrappers:
        - timeout:
            timeout: 120
            fail: true

    triggers:
        - 'bottlenecks-trigger-{pod}'

    builders:
        - 'bottlenecks-fetch-os-creds'
        - 'bottlenecks-run-{suite}'

    publishers:
        - email:
            recipients: hongbo.tianhongbo@huawei.com matthew.lijun@huawei.com liangqi1@huawei.com liyiting@huawei.com

####################
# parameter macros
####################
- parameter:
    name: bottlenecks-parameter
    parameters:
        - string:
           name: CACHE_DIR
           default: $WORKSPACE/cache/{suite}
           description: "the cache to store packages downloaded from public IP"
        - string:
           name: SUITE_URL
           default: gs://artifacts.opnfv.org/bottlenecks/{suite}{gs-pathname}
           description: "LF artifacts url for storage of bottlenecks packages"
        - string:
           name: PACKAGE_URL
           default: http://205.177.226.237:9999/bottlenecks/{suite}/
           description: "the url where we store the packages used for bottlenecks rubbos"

###################################
#builders for bottlenecks project
###################################
- builder:
    name: bottlenecks-fetch-os-creds
    builders:
        - shell:
            !include-raw: ../../utils/fetch_os_creds.sh

- builder:
    name: bottlenecks-run-rubbos
    builders:
        - shell: |
            #!/bin/bash
            set -o errexit

            echo "Bottlenecks: rubbos running now..."
            cd $WORKSPACE
            ./ci/run.sh $GERRIT_REFSPEC_DEBUG

- builder:
    name: bottlenecks-run-vstf
    builders:
        - shell: |
            #!/bin/bash
            set -o errexit

            echo "Bottlenecks: vstf running now..."
            cd $WORKSPACE
            ./ci/vstf_run.sh $GERRIT_REFSPEC_DEBUG
- builder:
    name: bottlenecks-builder-upload-artifact
    builders:
        - shell: |
            #!/bin/bash
            set -o errexit

            echo "Bottlenecks: upload to artifacts from the public IP"

            [[ -d $CACHE_DIR ]] || mkdir -p $CACHE_DIR

            for file in $(curl -s $PACKAGE_URL |
                               grep href |
                               sed 's/.*href="//' |
                               sed 's/".*//' |
                               grep '^[a-zA-Z].*'); do
                 curl --connect-timeout 10 -o $CACHE_DIR/$file $PACKAGE_URL$file -v
                 echo "bottlenecks: copy file $CACHE_DIR/$file to $SUITE_URL"
                 gsutil cp $CACHE_DIR/$file $SUITE_URL
            done

- builder:
    name: bottlenecks-workspace-cleanup
    builders:
        - shell: |
            #!/bin/bash
            set -o errexit

            echo "Bottlenecks: cleanup cache used for storage downloaded packages"

            /bin/rm -rf $CACHE_DIR

#######################
#trigger macros
#######################
- trigger:
    name: 'bottlenecks-trigger-lf'
    triggers:
#        - timed: '0 6 * * *'
        - gerrit:
            trigger-on:
                - patchset-created-event:
                    exclude-drafts: 'false'
                    exclude-trivial-rebase: 'false'
                    exclude-no-code-change: 'false'
                - draft-published-event
                - comment-added-contains-event:
                    comment-contains-value: 'recheck'
                - comment-added-contains-event:
                    comment-contains-value: 'reverify'
            projects:
              - project-compare-type: 'ANT'
                project-pattern: '{project}'
                branches:
                  - branch-compare-type: 'ANT'
                    branch-pattern: '**/{branch}'
                forbidden-file-paths:
                  - compare-type: ANT
                    pattern: 'docs/**|.gitignore'