#--------------------------------
# These jobs run on a daily basis and deploy OpenStack
# using the pinned versions of opnfv/releng, openstack/bifrost
# and openstack/openstack-ansible. Due to this, there is no
# version/branch is set/passed to jobs and instead the versions
# are checked out based on what is configured.
#--------------------------------
- project:
    project: 'releng-xci'

    name: 'xci-daily'
#--------------------------------
# Branch Anchors
#--------------------------------
    master: &master
        stream: master
        opnfv-releng-version: master
        gs-pathname: ''
#--------------------------------
# Scenarios
#--------------------------------
    scenario:
        - 'os-nosdn-nofeature-ha':
            auto-trigger-name: 'daily-trigger-disabled'
            xci-flavor: 'ha'
        - 'os-nosdn-nofeature-noha':
            auto-trigger-name: 'daily-trigger-disabled'
            xci-flavor: 'noha'
        - 'os-odl-sfc-ha':
            auto-trigger-name: 'daily-trigger-disabled'
            xci-flavor: 'ha'
        - 'os-odl-sfc-noha':
            auto-trigger-name: 'daily-trigger-disabled'
            xci-flavor: 'noha'
#--------------------------------
# XCI PODs
#--------------------------------
    pod:
        - virtual:
            <<: *master
#--------------------------------
# Supported Distros
#--------------------------------
    distro:
        - 'xenial':
            disabled: false
            slave-label: xci-xenial-virtual
            dib-os-release: 'xenial'
            dib-os-element: 'ubuntu-minimal'
            dib-os-packages: 'vlan,vim,less,bridge-utils,sudo,language-pack-en,iputils-ping,rsyslog,curl,python,debootstrap,ifenslave,ifenslave-2.6,lsof,lvm2,tcpdump,nfs-kernel-server,chrony,iptabls'
            extra-dib-elements: 'openssh-server'
        - 'centos7':
            disabled: true
            slave-label: xci-centos7-virtual
            dib-os-release: '7'
            dib-os-element: 'centos7'
            dib-os-packages: 'vim,less,bridge-utils,iputils,rsyslog,curl'
            extra-dib-elements: 'openssh-server'
        - 'suse':
            disabled: true
            slave-label: xci-suse-virtual
            dib-os-release: '42.3'
            dib-os-element: 'opensuse-minimal'
            dib-os-packages: 'vim,less,bridge-utils,iputils,rsyslog,curl'
            extra-dib-elements: 'openssh-server'

#--------------------------------
#        Phases
#--------------------------------
    phase:
        - 'deploy'
        - 'functest'
#--------------------------------
# jobs
#--------------------------------
    jobs:
        - 'xci-{scenario}-{pod}-{distro}-daily-{stream}'
        - 'xci-{phase}-{pod}-{distro}-daily-{stream}'

#--------------------------------
# job templates
#--------------------------------
- job-template:
    name: 'xci-{scenario}-{pod}-{distro}-daily-{stream}'

    disabled: '{obj:disabled}'

    concurrent: false

    properties:
        - build-blocker:
            use-build-blocker: true
            blocking-jobs:
                - '^xci-os.*'
                - '^xci-deploy.*'
                - '^xci-functest.*'
                - '^bifrost-.*periodic.*'
                - '^osa-.*periodic.*'
            block-level: 'NODE'
        - logrotate-default

    parameters:
        - string:
            name: DEPLOY_SCENARIO
            default: '{scenario}'
        - string:
            name: XCI_FLAVOR
            default: '{xci-flavor}'
        - label:
            name: SLAVE_LABEL
            default: '{slave-label}'
        - string:
            name: XCI_LOOP
            default: 'daily'

    triggers:
        - '{auto-trigger-name}'

    wrappers:
        - fix-workspace-permissions

    builders:
        - description-setter:
            description: "Built on $NODE_NAME"
        - trigger-builds:
            - project: 'xci-deploy-{pod}-{distro}-daily-{stream}'
              current-parameters: false
              predefined-parameters: |
                DEPLOY_SCENARIO=$DEPLOY_SCENARIO
                XCI_FLAVOR=$XCI_FLAVOR
                XCI_LOOP=$XCI_LOOP
              same-node: true
              block: true
        - trigger-builds:
            - project: 'xci-functest-{pod}-{distro}-daily-{stream}'
              current-parameters: false
              predefined-parameters: |
                DEPLOY_SCENARIO=$DEPLOY_SCENARIO
                XCI_FLAVOR=$XCI_FLAVOR
                XCI_LOOP=$XCI_LOOP
              same-node: true
              block: true
              block-thresholds:
                build-step-failure-threshold: 'never'
                failure-threshold: 'never'
                unstable-threshold: 'FAILURE'

    publishers:
        - email:
            recipients: fatih.degirmenci@ericsson.com yroblamo@redhat.com mchandras@suse.de jack.morgan@intel.com julienjut@gmail.com
        - email-jenkins-admins-on-failure

- job-template:
    name: 'xci-{phase}-{pod}-{distro}-daily-{stream}'

    disabled: '{obj:disabled}'

    concurrent: false

    properties:
        - build-blocker:
            use-build-blocker: true
            blocking-jobs:
                - '^xci-deploy.*'
                - '^xci-functest.*'
                - '^bifrost-.*periodic.*'
                - '^osa-.*periodic.*'
            block-level: 'NODE'
        - logrotate-default

    wrappers:
        - fix-workspace-permissions

    scm:
        - git-scm

    parameters:
        - project-parameter:
            project: '{project}'
            branch: '{opnfv-releng-version}'
        - string:
            name: GIT_BASE
            default: https://gerrit.opnfv.org/gerrit/$PROJECT
        - string:
            name: DEPLOY_SCENARIO
            default: 'os-nosdn-nofeature-ha'
        - string:
            name: XCI_FLAVOR
            default: 'ha'
        - string:
            name: DISTRO
            default: '{distro}'
        - string:
            name: DIB_OS_RELEASE
            default: '{dib-os-release}'
        - string:
            name: DIB_OS_ELEMENT
            default: '{dib-os-element}'
        - string:
            name: DIB_OS_PACKAGES
            default: '{dib-os-packages}'
        - string:
            name: EXTRA_DIB_ELEMENTS
            default: '{extra-dib-elements}'
        - string:
            name: CLEAN_DIB_IMAGES
            default: 'true'
        - label:
            name: SLAVE_LABEL
            default: '{slave-label}'
        - string:
            name: XCI_LOOP
            default: 'daily'
        - string:
            name: INSTALLER_TYPE
            default: 'osa'
        - string:
            name: FUNCTEST_MODE
            default: 'daily'
        - string:
            name: FUNCTEST_SUITE_NAME
            default: 'daily'
            description: "Daily suite name to run"
    builders:
        - description-setter:
            description: "Built on $NODE_NAME - Scenario: $DEPLOY_SCENARIO"
        - 'xci-{phase}-builder'

#---------------------------
# builder macros
#---------------------------
- builder:
    name: xci-deploy-builder
    builders:
        - shell:
            !include-raw: ./xci-deploy.sh

- builder:
    name: xci-functest-builder
    builders:
        - shell: |
            #!/bin/bash

            echo "Hello World!"

# this will be enabled once the xci is prepared
#- builder:
#    name: xci-functest-builder
#    builders:
#        - shell:
#            !include-raw:
#                - ../../utils/fetch_os_creds.sh
#                - ../functest/functest-alpine.sh