############################################
# dovetail upload artifacts job
############################################
- project:
    name: dovetail-artifacts-upload

    project: 'dovetail'

    jobs:
        - 'dovetail-{image}-artifacts-upload-{stream}'

    stream:
        - master:
            branch: '{stream}'
            gs-pathname: ''
            disabled: false

    image:
        - 'dovetail'
        - 'functest'
        - 'yardstick'

#############################################
# job template
#############################################

- job-template:
    name: 'dovetail-{image}-artifacts-upload-{stream}'


    disabled: '{obj:disabled}'

    concurrent: true

    properties:
        - logrotate-default
        - throttle:
            enabled: true
            max-total: 1
            max-per-node: 1
            option: 'project'

    parameters:
        - project-parameter:
            project: '{project}'
            branch: '{branch}'
        - 'opnfv-build-ubuntu-defaults'
        - dovetail-parameter:
            gs-pathname: '{gs-pathname}'
            image: '{image}'
            branch: '{branch}'

    scm:
        - git-scm

    builders:
        - 'dovetail-builder-artifacts-upload'
        - 'dovetail-workspace-cleanup'

####################
# parameter macros
####################
- parameter:
    name: dovetail-parameter
    parameters:
        - string:
            name: CACHE_DIR
            default: $WORKSPACE/cache{gs-pathname}
            description: "the cache to store packages downloaded"
        - string:
            name: STORE_URL
            default: gs://artifacts.opnfv.org/dovetail{gs-pathname}
            description: "LF artifacts url for storage of dovetail packages"
        - string:
            name: DOCKER_REPO_NAME
            default: opnfv/{image}
            description: "docker repo name"
        - string:
            name: DOCKER_TAG
            default: latest
            description: "docker image tag of which will be uploaded to artifacts"
        - string:
            name: STORE_FILE_NAME
            default: image_{image}_{branch}_$BUILD_ID.docker
            description: "stored file name"

####################################
#builders for dovetail project
####################################
- builder:
    name: dovetail-builder-artifacts-upload
    builders:
        - shell:
            !include-raw: ./dovetail-artifacts-upload.sh

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

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

            /bin/rm -rf $CACHE_DIR

            # Remove previous running containers if exist
            if [[ -n "$(docker ps -a | grep $DOCKER_REPO_NAME)" ]]; then
                echo "Removing existing $DOCKER_REPO_NAME containers..."
                docker ps -a | grep $DOCKER_REPO_NAME | awk '{print $1}' | xargs docker rm -f
                t=60
                # Wait max 60 sec for containers to be removed
                while [[ $t -gt 0 ]] && [[ -n "$(docker ps| grep $DOCKER_REPO_NAME)" ]]; do
                    sleep 1
                    let t=t-1
                done
            fi

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