---
########################
# Job configuration for joid
########################
- project:

    name: 'joid'

    project: '{name}'

    installer: '{name}'

    # -------------------------------
    # BRANCH ANCHORS
    # -------------------------------
    euphrates: &euphrates
      stream: euphrates
      branch: 'stable/{stream}'
      disabled: false
      gs-pathname: '/{stream}'
    master: &master
      stream: master
      branch: '{stream}'
      disabled: false
      gs-pathname: ''
    # -------------------------------
    # POD, INSTALLER, AND BRANCH MAPPING
    # -------------------------------
    #        CI PODs
    # -------------------------------
    pod:
      - baremetal:
          slave-label: joid-baremetal
          <<: *euphrates
      - baremetal:
          slave-label: joid-baremetal
          <<: *master
    # -------------------------------
    # scenarios
    # -------------------------------
    scenario:
      - 'os-nosdn-nofeature-noha':
          auto-trigger-name: 'joid-{scenario}-{pod}-{stream}-trigger'
      - 'os-nosdn-nofeature-ha':
          auto-trigger-name: 'joid-{scenario}-{pod}-{stream}-trigger'
      - 'os-nosdn-lxd-ha':
          auto-trigger-name: 'joid-{scenario}-{pod}-{stream}-trigger'
      - 'os-nosdn-lxd-noha':
          auto-trigger-name: 'joid-{scenario}-{pod}-{stream}-trigger'
      - 'os-odl_l2-nofeature-ha':
          auto-trigger-name: 'daily-trigger-disabled'
      - 'os-odl_l2-nofeature-noha':
          auto-trigger-name: 'daily-trigger-disabled'
      - 'os-ocl-nofeature-ha':
          auto-trigger-name: 'joid-{scenario}-{pod}-{stream}-trigger'
      - 'os-ocl-nofeature-noha':
          auto-trigger-name: 'joid-{scenario}-{pod}-{stream}-trigger'
      - 'k8-nosdn-nofeature-noha':
          auto-trigger-name: 'daily-trigger-disabled'
      - 'k8-nosdn-lb-noha':
          auto-trigger-name: 'joid-{scenario}-{pod}-{stream}-trigger'
      - 'k8-ovn-lb-noha':
          auto-trigger-name: 'joid-{scenario}-{pod}-{stream}-trigger'
      - 'os-nosdn-openbaton-ha':
          auto-trigger-name: 'joid-{scenario}-{pod}-{stream}-trigger'
      - 'k8-canal-lb-noha':
          auto-trigger-name: 'joid-{scenario}-{pod}-{stream}-trigger'
      - 'k8-nosdn-lb_ceph-noha':
          auto-trigger-name: 'joid-{scenario}-{pod}-{stream}-trigger'
      - 'k8-multus-lb-noha':
          auto-trigger-name: 'daily-trigger-disabled'
      - 'os-ovn-nofeature-ha':
          auto-trigger-name: 'daily-trigger-disabled'

    jobs:
      - 'joid-{scenario}-{pod}-daily-{stream}'
      - 'joid-deploy-{pod}-daily-{stream}'

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

    disabled: '{obj:disabled}'

    concurrent: false

    properties:
      - logrotate-default
      - throttle:
          enabled: true
          max-total: 4
          max-per-node: 1
          option: 'project'
      - build-blocker:
          use-build-blocker: true
          blocking-jobs:
            - 'joid-(os|k8)-.*?-{pod}-daily-.*'
          block-level: 'NODE'

    wrappers:
      - build-name:
          name: '$BUILD_NUMBER - Scenario: $DEPLOY_SCENARIO'

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

    parameters:
      - project-parameter:
          project: '{project}'
          branch: '{branch}'
      - '{installer}-defaults'
      - '{slave-label}-defaults':
          installer: '{installer}'
      - string:
          name: DEPLOY_SCENARIO
          default: '{scenario}'

    builders:
      - description-setter:
          description: "POD: $NODE_NAME"
      - trigger-builds:
          - project: 'joid-deploy-{pod}-daily-{stream}'
            current-parameters: true
            predefined-parameters:
              DEPLOY_SCENARIO={scenario}
            same-node: true
            block: true
      - trigger-builds:
          - project: 'functest-joid-{pod}-daily-{stream}'
            current-parameters: false
            predefined-parameters:
              DEPLOY_SCENARIO={scenario}
            block: true
            same-node: true
            block-thresholds:
              build-step-failure-threshold: 'never'
              failure-threshold: 'never'
              unstable-threshold: 'FAILURE'
      - trigger-builds:
          - project: 'yardstick-joid-{pod}-daily-{stream}'
            current-parameters: false
            predefined-parameters:
              DEPLOY_SCENARIO={scenario}
            block: true
            same-node: true
            block-thresholds:
              build-step-failure-threshold: 'never'
              failure-threshold: 'never'
              unstable-threshold: 'FAILURE'
# 1.dovetail only euphrates by now, not sync with A/B/C branches
# 2.here the stream means the SUT stream, dovetail stream is defined in
#   its own job
# 3.only debug testsuite here(includes basic testcase,
#   i.e. one tempest smoke ipv6, two vping from functest)
# 4.not used for release criteria or compliance,
#   only to debug the dovetail tool bugs with joid
# - trigger-builds:
#     - project: 'dovetail-joid-{pod}-proposed_tests-{stream}'
#       current-parameters: false
#       predefined-parameters:
#         DEPLOY_SCENARIO={scenario}
#       block: true
#       same-node: true
#       block-thresholds:
#         build-step-failure-threshold: 'never'
#         failure-threshold: 'never'
#         unstable-threshold: 'FAILURE'

- job-template:
    name: 'joid-deploy-{pod}-daily-{stream}'

    disabled: '{obj:disabled}'

    concurrent: true

    properties:
      - logrotate-default
      - throttle:
          enabled: true
          max-total: 4
          max-per-node: 1
          option: 'project'
      - build-blocker:
          use-build-blocker: true
          blocking-jobs:
            - 'joid-deploy-{pod}-daily-.*'
          block-level: 'NODE'

    wrappers:
      - build-name:
          name: '$BUILD_NUMBER - Scenario: $DEPLOY_SCENARIO'
      - timeout:
          timeout: 180
          fail: true

    parameters:
      - project-parameter:
          project: '{project}'
          branch: '{branch}'
      - '{installer}-defaults'
      - '{slave-label}-defaults':
          installer: '{installer}'
      - string:
          name: DEPLOY_SCENARIO
          default: 'os-odl_l2-nofeature-ha'

    scm:
      - git-scm

    builders:
      - description-setter:
          description: "POD: $NODE_NAME"
      - 'builder-macro'
########################
# builder macros
########################
- builder:
    name: 'builder-macro'
    builders:
      - shell: |
          #!/bin/bash
          echo "Running $INSTALLER_TYPE with controller $SDN_CONTROLLER"
          echo
          echo "------ First Executing clean.sh ------"
          cd $WORKSPACE/ci
          ./clean.sh
      - shell:
          !include-raw: ./joid-deploy.sh

########################
# trigger macros
########################
# os-nosdn-nofeature-ha trigger - branch: euphrates
- trigger:
    name: 'joid-os-nosdn-nofeature-ha-baremetal-euphrates-trigger'
    triggers:
      - timed: '5 2 * * *'
# os-nosdn-nofeature-ha trigger - branch: master
- trigger:
    name: 'joid-os-nosdn-nofeature-ha-baremetal-master-trigger'
    triggers:
      - timed: '5 2 * * *'
# os-odl_l2-nofeature-ha trigger - branch: euphrates
- trigger:
    name: 'joid-os-odl_l2-nofeature-ha-baremetal-euphrates-trigger'
    triggers:
      - timed: '5 7 * * *'
# os-odl_l2-nofeature-ha trigger - branch: master
- trigger:
    name: 'joid-os-odl_l2-nofeature-ha-baremetal-master-trigger'
    triggers:
      - timed: '5 7 * * *'
# os-nosdn-lxd-noha trigger - branch: euphrates
- trigger:
    name: 'joid-os-nosdn-lxd-noha-baremetal-euphrates-trigger'
    triggers:
      - timed: '5 22 * * *'
# os-nosdn-lxd-noha trigger - branch: master
- trigger:
    name: 'joid-os-nosdn-lxd-noha-baremetal-master-trigger'
    triggers:
      - timed: '5 22 * * *'
# os-nosdn-lxd-ha trigger - branch: euphrates
- trigger:
    name: 'joid-os-nosdn-lxd-ha-baremetal-euphrates-trigger'
    triggers:
      - timed: '5 10 * * *'
# os-nosdn-lxd-ha trigger - branch: master
- trigger:
    name: 'joid-os-nosdn-lxd-ha-baremetal-master-trigger'
    triggers:
      - timed: '5 10 * * *'
# os-nosdn-nofeature-noha trigger - branch: euphrates
- trigger:
    name: 'joid-os-nosdn-nofeature-noha-baremetal-euphrates-trigger'
    triggers:
      - timed: '5 4 * * *'
# os-nosdn-nofeature-noha trigger - branch: master
- trigger:
    name: 'joid-os-nosdn-nofeature-noha-baremetal-master-trigger'
    triggers:
      - timed: '5 4 * * *'
# k8-nosdn-nofeature-noha trigger - branch: euphrates
- trigger:
    name: 'joid-k8-nosdn-nofeature-noha-baremetal-euphrates-trigger'
    triggers:
      - timed: '5 15 * * *'
# k8-nosdn-nofeature-noha trigger - branch: master
- trigger:
    name: 'joid-k8-nosdn-nofeature-noha-baremetal-master-trigger'
    triggers:
      - timed: '5 15 * * *'
# k8-nosdn-lb-noha trigger - branch: euphrates
- trigger:
    name: 'joid-k8-nosdn-lb-noha-baremetal-euphrates-trigger'
    triggers:
      - timed: '5 20 * * *'
# k8-nosdn-lb-noha trigger - branch: master
- trigger:
    name: 'joid-k8-nosdn-lb-noha-baremetal-master-trigger'
    triggers:
      - timed: '5 20 * * *'
# k8-ovn-lb-noha trigger - branch: euphrates
- trigger:
    name: 'joid-k8-ovn-lb-noha-baremetal-euphrates-trigger'
    triggers:
      - timed: '5 17 * * *'
# k8-ovn-lb-noha trigger - branch: master
- trigger:
    name: 'joid-k8-ovn-lb-noha-baremetal-master-trigger'
    triggers:
      - timed: '5 17 * * *'
# os-nosdn-openbaton-ha trigger - branch: euphrates
- trigger:
    name: 'joid-os-nosdn-openbaton-ha-baremetal-euphrates-trigger'
    triggers:
      - timed: '5 23 * * *'
# os-nosdn-openbaton-ha trigger - branch: master
- trigger:
    name: 'joid-os-nosdn-openbaton-ha-baremetal-master-trigger'
    triggers:
      - timed: '5 23 * * *'
# os-ocl-nofeature-ha trigger - branch: euphrates
- trigger:
    name: 'joid-os-ocl-nofeature-ha-baremetal-euphrates-trigger'
    triggers:
      - timed: '5 13 * * *'
# os-ocl-nofeature-ha trigger - branch: master
- trigger:
    name: 'joid-os-ocl-nofeature-ha-baremetal-master-trigger'
    triggers:
      - timed: '5 13 * * *'
# os-ocl-nofeature-noha trigger - branch: euphrates
- trigger:
    name: 'joid-os-ocl-nofeature-noha-baremetal-euphrates-trigger'
    triggers:
      - timed: '5 16 * * *'
# os-ocl-nofeature-noha trigger - branch: master
- trigger:
    name: 'joid-os-ocl-nofeature-noha-baremetal-master-trigger'
    triggers:
      - timed: '5 16 * * *'
# k8-canal-lb-noha trigger - branch: euphrates
- trigger:
    name: 'joid-k8-canal-lb-noha-baremetal-euphrates-trigger'
    triggers:
      - timed: '5 14 * * *'
# k8-canal-lb-noha trigger - branch: master
- trigger:
    name: 'joid-k8-canal-lb-noha-baremetal-master-trigger'
    triggers:
      - timed: '5 14 * * *'
# k8-multus-lb-noha trigger - branch: euphrates
- trigger:
    name: 'joid-k8-multus-lb-noha-baremetal-euphrates-trigger'
    triggers:
      - timed: '5 18 * * *'
# k8-multus-lb-noha trigger - branch: master
- trigger:
    name: 'joid-k8-multus-lb-noha-baremetal-master-trigger'
    triggers:
      - timed: '5 18 * * *'
# k8-nosdn-lb_ceph-noha trigger - branch: euphrates
- trigger:
    name: 'joid-k8-nosdn-lb_ceph-noha-baremetal-euphrates-trigger'
    triggers:
      - timed: '5 18 * * *'
# k8-nosdn-lb_ceph-noha trigger - branch: master
- trigger:
    name: 'joid-k8-nosdn-lb_ceph-noha-baremetal-master-trigger'
    triggers:
      - timed: '5 18 * * *'
# os-ovn-nofeature-ha trigger - branch: euphrates
- trigger:
    name: 'joid-os-ovn-nofeature-ha-baremetal-euphrates-trigger'
    triggers:
      - timed: '5 19 * * *'
# os-ovn-nofeature-ha trigger - branch: master
- trigger:
    name: 'joid-os-ovn-nofeature-ha-baremetal-master-trigger'
    triggers:
      - timed: '5 19 * * *'