###################################################
# Non-ci jobs for Bottlenecks project
# They will only be enabled on request by projects!
###################################################
- project:
    name: bottlenecks-project-jobs

    project: 'bottlenecks'

    jobs:
        - 'bottlenecks-verify-{stream}'
        - 'bottlenecks-merge-{stream}'
        - 'bottlenecks-{suite}-upload-artifacts-{stream}'

    stream:
        - master:
            branch: '{stream}'
            #This is used for common project file storage
            gs-pathname: ''
            #This is used for different test suite dependent packages storage
            gs-packagepath: '/{suite}'
        - brahmaputra:
            branch: 'stable/{stream}'
            gs-pathname: '/{stream}'
            gs-packagepath: '/{stream}/{suite}'

    suite:
        - 'rubbos'
        - 'vstf'

################################
# 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}'
    builders:
         - shell: |
             echo "bottlenecks: verify job"
         #TO DO: this should be changed when the unittest ready

- job-template:
    name: 'bottlenecks-merge-{stream}'

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

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

    triggers:
        - gerrit:
            trigger-on:
                - change-merged-event
                - comment-added-contains-event:
                    comment-contains-value: 'remerge'
            projects:
              - project-compare-type: 'ANT'
                project-pattern: '{project}'
                branches:
                    - branch-compare-type: 'ANT'
                      branch-pattern: '**/{branch}'

    builders:
         - shell: |
             echo "bottlenecks: merge"

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

    concurrent: true

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

    parameters:
        - project-parameter:
            project: '{project}'
        - 'ericsson-build-defaults'
        - bottlenecks-parameter:
            gs-packagepath: '{gs-packagepath}'

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

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

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

####################################
#builders for bottlenecks project
####################################
- 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