---
- project:
    name: 'opnfv-xci-verify'

    project: releng-xci
    # -------------------------------
    # branches
    # -------------------------------
    stream:
      - master:
          branch: '{stream}'
    # -------------------------------
    # distros
    # -------------------------------
    distro:
      - ubuntu:
          disabled: false
          successful: false
          failed: false
          unstable: false
          notbuilt: false
      - centos:
          disabled: false
          successful: true
          failed: true
          unstable: true
          notbuilt: true
      - opensuse:
          disabled: false
          successful: false
          failed: false
          unstable: false
          notbuilt: false
    # -------------------------------
    # type
    # -------------------------------
    type:
      - virtual
    # -------------------------------
    # patch verification phases
    # -------------------------------
    phase:
      - 'deploy'
      - 'healthcheck'
    # -------------------------------
    # jobs
    # -------------------------------
    jobs:
      - 'xci-verify-{distro}-{type}-{stream}'
      - 'xci-verify-{distro}-{phase}-{type}-{stream}'
# -------------------------------
# job templates
# -------------------------------
- job-template:
    name: 'xci-verify-{distro}-{type}-{stream}'

    project-type: multijob

    disabled: '{obj:disabled}'

    concurrent: true

    properties:
      - logrotate-default
      - build-blocker:
          use-build-blocker: true
          blocking-jobs:
            - 'xci-verify-{distro}-.*'
            - 'xci-.*-{distro}-merge-.*'
            - 'openstack-bifrost-verify-{distro}-.*'
            - 'xci-osa-verify-{distro}-.*'
            - 'xci-osa-periodic-{distro}-.*'
          block-level: 'NODE'
      - throttle:
          max-per-node: 2
          max-total: 10
          categories:
            - xci-verify-virtual
          option: category

    wrappers:
      - ssh-agent-wrapper
      - build-timeout:
          timeout: 240
      - fix-workspace-permissions

    scm:
      - git-scm-gerrit

    triggers:
      - gerrit:
          server-name: 'gerrit.opnfv.org'
          trigger-on:
            - patchset-created-event:
                exclude-drafts: 'false'
                exclude-trivial-rebase: 'false'
                exclude-no-code-change: 'true'
            - 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}'
              disable-strict-forbidden-file-verification: 'false'
              forbidden-file-paths:
                - compare-type: ANT
                  pattern: 'xci/scripts/vm/**'
          readable-message: true
          custom-url: '* $JOB_NAME $BUILD_URL'
          skip-vote:
            successful: '{obj:successful}'
            failed: '{obj:failed}'
            unstable: '{obj:unstable}'
            notbuilt: '{obj:notbuilt}'

    parameters:
      - project-parameter:
          project: '{project}'
          branch: '{branch}'
      - label:
          name: SLAVE_LABEL
          default: 'xci-virtual'
      - string:
          name: CLEAN_DIB_IMAGES
          default: 'true'
      - string:
          name: GIT_BASE
          default: https://gerrit.opnfv.org/gerrit/$PROJECT
          description: 'Git URL to use on this Jenkins Slave'

    builders:
      - description-setter:
          description: "Built on $NODE_NAME"
      - multijob:
          name: deploy
          condition: SUCCESSFUL
          projects:
            - name: 'xci-verify-{distro}-deploy-{type}-{stream}'
              current-parameters: true
              predefined-parameters: |
                DISTRO={distro}
                DEPLOY_SCENARIO=os-nosdn-nofeature
                CLEAN_DIB_IMAGES=$CLEAN_DIB_IMAGES
                GERRIT_BRANCH=$GERRIT_BRANCH
                GERRIT_REFSPEC=$GERRIT_REFSPEC
                GERRIT_CHANGE_NUMBER=$GERRIT_CHANGE_NUMBER
                GERRIT_CHANGE_COMMIT_MESSAGE=$GERRIT_CHANGE_COMMIT_MESSAGE
              node-parameters: true
              kill-phase-on: FAILURE
              abort-all-job: true
      - multijob:
          name: healthcheck
          condition: SUCCESSFUL
          projects:
            - name: 'xci-verify-{distro}-healthcheck-{type}-{stream}'
              current-parameters: true
              predefined-parameters: |
                DISTRO={distro}
                DEPLOY_SCENARIO=os-nosdn-nofeature
                CLEAN_DIB_IMAGES=$CLEAN_DIB_IMAGES
                FUNCTEST_MODE=tier
                FUNCTEST_TIER=healthcheck
                GERRIT_BRANCH=$GERRIT_BRANCH
                GERRIT_REFSPEC=$GERRIT_REFSPEC
                GERRIT_CHANGE_NUMBER=$GERRIT_CHANGE_NUMBER
                GERRIT_CHANGE_COMMIT_MESSAGE=$GERRIT_CHANGE_COMMIT_MESSAGE
              node-parameters: true
              kill-phase-on: NEVER
              abort-all-job: true

- job-template:
    name: 'xci-verify-{distro}-{phase}-{type}-{stream}'

    disabled: false

    concurrent: true

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

    parameters:
      - string:
          name: PROJECT
          default: 'releng-xci'
      - string:
          name: DISTRO
          default: 'ubuntu'
      - string:
          name: DEPLOY_SCENARIO
          default: 'os-nosdn-nofeature'
      - string:
          name: FUNCTEST_MODE
          default: 'tier'
      - string:
          name: FUNCTEST_SUITE_NAME
          default: 'healthcheck'
      - string:
          name: XCI_FLAVOR
          default: 'mini'
      - string:
          name: CLEAN_DIB_IMAGES
          default: 'true'
      - string:
          name: OPNFV_RELENG_DEV_PATH
          default: $WORKSPACE/
      - string:
          name: INSTALLER_TYPE
          default: 'osa'
      - string:
          name: GIT_BASE
          default: https://gerrit.opnfv.org/gerrit/$PROJECT
          description: 'Git URL to use on this Jenkins Slave'

    wrappers:
      - ssh-agent-wrapper
      - build-timeout:
          timeout: 240
      - fix-workspace-permissions

    scm:
      - git-scm-gerrit

    builders:
      - description-setter:
          description: "Built on $NODE_NAME"
      - 'xci-verify-{phase}-macro'

# -------------------------------
# builder macros
# -------------------------------
- builder:
    name: 'xci-verify-deploy-macro'
    builders:
      - shell:
          !include-raw: ./xci-start-new-vm.sh

      - shell:
          !include-raw: ./xci-start-deployment.sh

- builder:
    name: 'xci-verify-healthcheck-macro'
    builders:
      - shell:
          !include-raw: ./xci-cleanup.sh