---
- project:
    name: 'opnfv-osa-periodic'

    project: openstack-ansible
    # -------------------------------
    # branches
    # -------------------------------
    stream:
      - master:
          branch: '{stream}'
    # -------------------------------
    # distros
    # -------------------------------
    distro:
      - ubuntu:
          disabled: false
      - centos:
          disabled: false
      - opensuse:
          disabled: false
    # -------------------------------
    # type
    # -------------------------------
    type:
      - virtual
    # -------------------------------
    # periodic deploy & test phases
    # -------------------------------
    phase:
      - 'deploy'
      - 'healthcheck'
    # -------------------------------
    # jobs
    # -------------------------------
    jobs:
      - 'xci-osa-periodic-{distro}-{type}-{stream}'
      - 'xci-osa-periodic-{distro}-{phase}-{type}-{stream}'
# -------------------------------
# job templates
# -------------------------------
- job-template:
    name: 'xci-osa-periodic-{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}-.*'
            - 'bifrost-verify-{distro}-.*'
            - 'bifrost-periodic-{distro}-.*'
            - 'xci-osa-verify-{distro}-.*'
            - 'xci-osa-periodic-{distro}-.*'
          blocking-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-openstack

    parameters:
      - project-parameter:
          project: '{project}'
          branch: '{branch}'
      - label:
          name: SLAVE_LABEL
          default: 'xci-virtual'
          all-nodes: false
          node-eligibility: 'ignore-offline'
      - string:
          name: OPENSTACK_OSA_VERSION
          default: 'master'
      - string:
          name: CLEAN_DIB_IMAGES
          default: 'true'
      - string:
          name: GIT_BASE
          default: 'https://git.openstack.org/openstack/$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-osa-periodic-{distro}-deploy-{type}-{stream}'
              current-parameters: true
              predefined-parameters: |
                DISTRO={distro}
                DEPLOY_SCENARIO=os-nosdn-nofeature-noha
                OPENSTACK_OSA_VERSION=$OPENSTACK_OSA_VERSION
                CLEAN_DIB_IMAGES=$CLEAN_DIB_IMAGES
                BRANCH=$BRANCH
              node-parameters: true
              kill-phase-on: FAILURE
              abort-all-job: true
              git-revision: true
      - multijob:
          name: healthcheck
          condition: SUCCESSFUL
          projects:
            - name: 'xci-osa-periodic-{distro}-healthcheck-{type}-{stream}'
              current-parameters: true
              predefined-parameters: |
                DISTRO={distro}
                DEPLOY_SCENARIO=os-nosdn-nofeature-noha
                OPENSTACK_OSA_VERSION=$OPENSTACK_OSA_VERSION
                CLEAN_DIB_IMAGES=$CLEAN_DIB_IMAGES
                FUNCTEST_MODE=tier
                FUNCTEST_TIER=healthcheck
                BRANCH=$BRANCH
              node-parameters: true
              kill-phase-on: NEVER
              abort-all-job: true

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

    disabled: false

    concurrent: true

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

    parameters:
      - project-parameter:
          project: '{project}'
          branch: '{branch}'
      - string:
          name: DISTRO
          default: 'ubuntu'
      - string:
          name: DEPLOY_SCENARIO
          default: 'os-nosdn-nofeature-noha'
      - string:
          name: OPENSTACK_OSA_VERSION
          default: 'master'
      - 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: INSTALLER_TYPE
          default: 'osa'
      - string:
          name: GIT_BASE
          default: 'https://git.openstack.org/openstack/$PROJECT'
          description: 'Git URL to use on this Jenkins Slave'

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

    scm:
      - git-scm-openstack

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

# -------------------------------
# builder macros
# -------------------------------
- builder:
    name: 'xci-osa-periodic-deploy-macro'
    builders:
      - shell: |
          #!/bin/bash

          cd $WORKSPACE

          # The start-new-vm.sh script will copy the entire releng-xci directory
          # so lets prepare the test script now so it can be copied by the script.
          # Please do not move it elsewhere or you would have to move it to the VM
          # yourself.
          cat > xci_test.sh<<EOF
          #!/bin/bash
          export DISTRO=$DISTRO
          export DEPLOY_SCENARIO=$DEPLOY_SCENARIO
          export OPENSTACK_OSA_VERSION=$OPENSTACK_OSA_VERSION
          export FUNCTEST_MODE=$FUNCTEST_MODE
          export FUNCTEST_SUITE_NAME=$FUNCTEST_SUITE_NAME
          export XCI_FLAVOR=$XCI_FLAVOR
          export CORE_OPENSTACK_INSTALL=true
          export CLEAN_DIB_IMAGES=$CLEAN_DIB_IMAGES
          export OPNFV_RELENG_DEV_PATH=/home/devuser/releng-xci/
          export INSTALLER_TYPE=$INSTALLER_TYPE
          export GIT_BASE=$GIT_BASE
          export JENKINS_HOME=$JENKINS_HOME

          cd xci
          ./xci-deploy.sh
          EOF
          chmod a+x xci_test.sh

          export XCI_BUILD_CLEAN_VM_OS=false
          export XCI_UPDATE_CLEAN_VM_OS=true

          ./xci/scripts/vm/start-new-vm.sh $DISTRO
      - shell: |
          #!/bin/bash

          ssh -F $HOME/.ssh/${DISTRO}-xci-vm-config ${DISTRO}_xci_vm "cd releng-xci && ./xci_test.sh"


- builder:
    name: 'xci-osa-periodic-healthcheck-macro'
    builders:
      - shell: |
          #!/bin/bash

          echo "Hello World!"
      - shell: |
          #!/bin/bash

          sudo virsh destroy ${DISTRO}_xci_vm || true
          sudo virsh undefine ${DISTRO}_xci_vm || true

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