- project:
    name: 'apex'
    project: 'apex'
    jobs:
        - 'apex-verify-{stream}'
        - 'apex-verify-gate-{stream}'
        - 'apex-verify-unit-tests-{stream}'
        - 'apex-runner-cperf-{stream}'
        - 'apex-build-{stream}'
        - 'apex-deploy-{platform}-{stream}'
        - 'apex-daily-master'
        - 'apex-daily-danube'
        - 'apex-csit-promote-daily-{stream}'
        - 'apex-fdio-promote-daily-{stream}'
        - 'apex-verify-iso-{stream}'
        - 'apex-run-deploy-test-baremetal-{stream}'
        - 'apex-upload-snapshot'
        - 'apex-create-snapshot'
    # stream:    branch with - in place of / (eg. stable-arno)
    # branch:    branch (eg. stable/arno)
    stream:
        - master:
            branch: 'master'
            gs-pathname: ''
            build-slave: 'apex-build-master'
            virtual-slave: 'apex-virtual-master'
            baremetal-slave: 'apex-baremetal-master'
            verify-scenario: 'os-odl-nofeature-ha'
            concurrent-builds: 3

        - danube:
            branch: 'stable/danube'
            gs-pathname: '/danube'
            build-slave: 'apex-build-danube'
            virtual-slave: 'apex-virtual-danube'
            baremetal-slave: 'apex-baremetal-danube'
            verify-scenario: 'os-odl_l3-nofeature-ha'
            concurrent-builds: 1
            disabled: false

    platform:
         - 'baremetal'
         - 'virtual'

# Unit Test
- job-template:
    name: 'apex-verify-unit-tests-{stream}'

    node: '{build-slave}'

    concurrent: true

    parameters:
        - apex-parameter:
            gs-pathname: '{gs-pathname}'
        - project-parameter:
            project: '{project}'
            branch: '{branch}'

    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: 'apex'
                branches:
                  - branch-compare-type: 'ANT'
                    branch-pattern: '**/{branch}'
                file-paths:
                  - compare-type: ANT
                    pattern: 'tests/**'
    properties:
        - logrotate-default
        - throttle:
            max-per-node: 1
            max-total: 10
            option: 'project'

    builders:
        - shell:
            !include-raw-escape: ./apex-unit-test.sh

# Verify
- job-template:
    name: 'apex-verify-{stream}'

    node: '{virtual-slave}'

    concurrent: true

    project-type: 'multijob'

    parameters:
        - apex-parameter:
            gs-pathname: '{gs-pathname}/dev'
        - project-parameter:
            project: '{project}'
            branch: '{branch}'
        - string:
            name: ARTIFACT_VERSION
            default: dev
            description: "Used for overriding the ARTIFACT_VERSION"
    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: 'apex'
                branches:
                  - branch-compare-type: 'ANT'
                    branch-pattern: '**/{branch}'
                file-paths:
                  - compare-type: ANT
                    pattern: 'ci/**'
                  - compare-type: ANT
                    pattern: 'build/**'
                  - compare-type: ANT
                    pattern: 'lib/**'
                  - compare-type: ANT
                    pattern: 'config/**'

    properties:
        - logrotate-default
        - throttle:
            max-per-node: 3
            max-total: 10
            option: 'project'

    builders:
        - description-setter:
            description: "Built on $NODE_NAME"
        - multijob:
            name: basic
            condition: SUCCESSFUL
            projects:
                - name: 'apex-verify-unit-tests-{stream}'
                  current-parameters: false
                  predefined-parameters: |
                    GERRIT_BRANCH=$GERRIT_BRANCH
                    GERRIT_REFSPEC=$GERRIT_REFSPEC
                    GERRIT_CHANGE_NUMBER=$GERRIT_CHANGE_NUMBER
                    GERRIT_CHANGE_COMMIT_MESSAGE=$GERRIT_CHANGE_COMMIT_MESSAGE
                  node-parameters: false
                  kill-phase-on: FAILURE
                  abort-all-job: true
                  git-revision: true
        - multijob:
            name: build
            condition: SUCCESSFUL
            projects:
                - name: 'apex-build-{stream}'
                  current-parameters: false
                  predefined-parameters: |
                    ARTIFACT_VERSION=$ARTIFACT_VERSION
                    GERRIT_BRANCH=$GERRIT_BRANCH
                    GERRIT_REFSPEC=$GERRIT_REFSPEC
                    GERRIT_CHANGE_NUMBER=$GERRIT_CHANGE_NUMBER
                    GERRIT_CHANGE_COMMIT_MESSAGE=$GERRIT_CHANGE_COMMIT_MESSAGE
                  node-parameters: false
                  kill-phase-on: FAILURE
                  abort-all-job: true
                  git-revision: true
        - multijob:
            name: deploy-virtual
            condition: SUCCESSFUL
            projects:
                - name: 'apex-deploy-virtual-{stream}'
                  current-parameters: false
                  predefined-parameters: |
                    ARTIFACT_VERSION=$ARTIFACT_VERSION
                    DEPLOY_SCENARIO={verify-scenario}
                    OPNFV_CLEAN=yes
                    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
                  git-revision: true
#        - multijob:
#            name: functest-smoke
#            condition: SUCCESSFUL
#            projects:
#              - name: 'functest-apex-virtual-suite-{stream}'
#                current-parameters: false
#                predefined-parameters: |
#                  DEPLOY_SCENARIO={verify-scenario}
#                  FUNCTEST_SUITE_NAME=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: FAILURE
#                abort-all-job: true
#                git-revision: false

# Verify Scenario Gate
- job-template:
    name: 'apex-verify-gate-{stream}'

    node: '{virtual-slave}'

    concurrent: true

    project-type: 'multijob'

    parameters:
        - apex-parameter:
            gs-pathname: '{gs-pathname}/dev'
        - project-parameter:
            project: '{project}'
            branch: '{branch}'
        - string:
            name: GIT_BASE
            default: https://gerrit.opnfv.org/gerrit/$PROJECT
            description: "Used for overriding the GIT URL coming from parameters macro."
        - string:
            name: ARTIFACT_VERSION
            default: dev
            description: "Used for overriding the ARTIFACT_VERSION"

    scm:
        - git-scm-gerrit

    triggers:
        - gerrit:
            server-name: 'gerrit.opnfv.org'
            trigger-on:
                - comment-added-contains-event:
                    comment-contains-value: '^Patch Set [0-9]+: Code-Review\+2.*start-gate-scenario:.*'
            projects:
              - project-compare-type: 'ANT'
                project-pattern: 'apex'
                branches:
                  - branch-compare-type: 'ANT'
                    branch-pattern: '**/{branch}'
                file-paths:
                  - compare-type: ANT
                    pattern: 'ci/**'
                  - compare-type: ANT
                    pattern: 'build/**'
                  - compare-type: ANT
                    pattern: 'lib/**'
                  - compare-type: ANT
                    pattern: 'config/**'

    properties:
        - logrotate-default
        - throttle:
            max-per-node: 3
            max-total: 10
            option: 'project'

    builders:
        - multijob:
            name: deploy-virtual
            condition: SUCCESSFUL
            projects:
                - name: 'apex-deploy-virtual-{stream}'
                  current-parameters: false
                  predefined-parameters: |
                    ARTIFACT_VERSION=$ARTIFACT_VERSION
                    DEPLOY_SCENARIO=gate
                    OPNFV_CLEAN=yes
                    GERRIT_BRANCH=$GERRIT_BRANCH
                    GERRIT_REFSPEC=$GERRIT_REFSPEC
                    GERRIT_CHANGE_NUMBER=$GERRIT_CHANGE_NUMBER
                    GERRIT_CHANGE_COMMIT_MESSAGE=$GERRIT_CHANGE_COMMIT_MESSAGE
                    GERRIT_EVENT_COMMENT_TEXT=$GERRIT_EVENT_COMMENT_TEXT
                  node-parameters: true
                  kill-phase-on: FAILURE
                  abort-all-job: true
                  git-revision: true
#        - multijob:
#            name: functest-smoke
#            condition: SUCCESSFUL
#            projects:
#              - name: 'functest-apex-virtual-suite-{stream}'
#                current-parameters: false
#                predefined-parameters: |
#                  DEPLOY_SCENARIO={verify-scenario}
#                  FUNCTEST_SUITE_NAME=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: FAILURE
#                abort-all-job: true
#                git-revision: false

- job-template:
    name: 'apex-runner-cperf-{stream}'

    # runner cperf job
    project-type: 'multijob'
    node: 'intel-pod2'

    disabled: false

    parameters:
        - apex-parameter:
            gs-pathname: '{gs-pathname}'
        - project-parameter:
            project: '{project}'
            branch: '{branch}'
        - string:
            name: GIT_BASE
            default: https://gerrit.opnfv.org/gerrit/$PROJECT
            description: "Used for overriding the GIT URL coming from parameters macro."

    scm:
        - git-scm

    properties:
        - logrotate-default
        - build-blocker:
            use-build-blocker: false
            block-level: 'NODE'
            blocking-jobs:
                - 'apex-deploy.*'
        - throttle:
            max-per-node: 1
            max-total: 10
            option: 'project'

    builders:
        - description-setter:
            description: "Deployed on $NODE_NAME"
        - multijob:
            name: 'Baremetal Deploy'
            condition: ALWAYS
            projects:
                - name: 'apex-deploy-baremetal-{stream}'
                  node-parameters: false
                  current-parameters: true
                  predefined-parameters: |
                    GERRIT_BRANCH=$GERRIT_BRANCH
                    GERRIT_REFSPEC=
                    OPNFV_CLEAN=yes
                    DEPLOY_SCENARIO={verify-scenario}
                  kill-phase-on: FAILURE
                  abort-all-job: true
                  git-revision: false
        - multijob:
            name: CPERF
            condition: SUCCESSFUL
            projects:
                - name: 'cperf-apex-intel-pod2-daily-master'
                  node-parameters: true
                  current-parameters: false
                  predefined-parameters:
                    DEPLOY_SCENARIO={verify-scenario}
                  kill-phase-on: NEVER
                  abort-all-job: false
                  git-revision: false

# Build phase
- job-template:
    name: 'apex-build-{stream}'

    # Job template for builds
    #
    # Required Variables:
    #     stream:    branch with - in place of / (eg. stable)
    #     branch:    branch (eg. stable)
    node: '{build-slave}'

    disabled: false

    concurrent: true

    parameters:
        - '{project}-defaults'
        - project-parameter:
            project: '{project}'
            branch: '{branch}'
        - apex-parameter:
            gs-pathname: '{gs-pathname}'

    scm:
        - git-scm-gerrit

    wrappers:
        - timeout:
            timeout: 150
            fail: true

    properties:
        - logrotate-default
        - throttle:
            max-per-node: {concurrent-builds}
            max-total: 10
            option: 'project'
        - build-blocker:
            use-build-blocker: true
            block-level: 'NODE'
            blocking-jobs:
                - 'apex-verify-iso-{stream}'

    builders:
        - 'apex-build'
        - inject:
           properties-content: ARTIFACT_TYPE=rpm
        - 'apex-upload-artifact'

# ISO verify job
- job-template:
    name: 'apex-verify-iso-{stream}'

    # Job template for builds
    #
    # Required Variables:
    #     stream:    branch with - in place of / (eg. stable)
    #     branch:    branch (eg. stable)
    node: '{virtual-slave}'

    disabled: false

    concurrent: true

    parameters:
        - project-parameter:
            project: '{project}'
            branch: '{branch}'
        - apex-parameter:
            gs-pathname: '{gs-pathname}'
        - string:
            name: GIT_BASE
            default: https://gerrit.opnfv.org/gerrit/$PROJECT
            description: "Used for overriding the GIT URL coming from parameters macro."

    scm:
        - git-scm

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

    builders:
        - 'apex-iso-verify'
        - inject:
           properties-content: ARTIFACT_TYPE=iso
        - 'apex-upload-artifact'

# Deploy job
- job-template:
    name: 'apex-deploy-{platform}-{stream}'

    # Job template for virtual deployment
    #
    # Required Variables:
    #     stream:    branch with - in place of / (eg. stable)
    #     branch:    branch (eg. stable)
    node: 'apex-{platform}-{stream}'

    concurrent: true

    disabled: false

    scm:
        - git-scm-gerrit

    wrappers:
        - timeout:
            timeout: 120
            fail: true

    parameters:
        - project-parameter:
            project: '{project}'
            branch: '{branch}'
        - apex-parameter:
            gs-pathname: '{gs-pathname}'
        - string:
            name: DEPLOY_SCENARIO
            default: '{verify-scenario}'
            description: "Scenario to deploy with."
        - string:
            name: OPNFV_CLEAN
            default: 'no'
            description: "Use yes in lower case to invoke clean. Indicates if the deploy environment should be cleaned before deployment"

    properties:
        - logrotate-default
        - build-blocker:
            use-build-blocker: true
            block-level: 'NODE'
            blocking-jobs:
                - 'apex-deploy.*'
                - 'functest.*'
                - 'yardstick.*'
        - throttle:
            max-per-node: 1
            max-total: 10
            option: 'project'

    builders:
        - description-setter:
            description: "Deployed on $NODE_NAME - Scenario: $DEPLOY_SCENARIO"
        - 'apex-download-artifact'
        - 'apex-deploy'
        - 'apex-workspace-cleanup'


# Baremetal Deploy and Test
- job-template:
    name: 'apex-run-deploy-test-baremetal-{stream}'

    # Job template for daily build
    #
    # Required Variables:
    #     stream:    branch with - in place of / (eg. stable)
    #     branch:    branch (eg. stable)
    project-type: 'multijob'

    disabled: false

    scm:
        - git-scm

    parameters:
        - '{project}-defaults'
        - '{project}-baremetal-{stream}-defaults'
        - project-parameter:
            project: '{project}'
            branch: '{branch}'
        - apex-parameter:
            gs-pathname: '{gs-pathname}'
        - string:
            name: DEPLOY_SCENARIO
            default: '{verify-scenario}'
            description: "Scenario to deploy with."
    properties:
        - logrotate-default
        - build-blocker:
            use-build-blocker: true
            block-level: 'NODE'
            blocking-jobs:
                - 'apex-verify.*'
                - 'apex-runner.*'
                - 'apex-.*-promote.*'
                - 'apex-run.*'
    builders:
        - description-setter:
            description: "Deployed on $NODE_NAME - Scenario: $DEPLOY_SCENARIO"
        - multijob:
            name: 'Baremetal Deploy'
            condition: ALWAYS
            projects:
                - name: 'apex-deploy-baremetal-{stream}'
                  node-parameters: true
                  current-parameters: true
                  predefined-parameters: |
                    OPNFV_CLEAN=yes
                    GERRIT_BRANCH=$GERRIT_BRANCH
                    GERRIT_REFSPEC=
                    DEPLOY_SCENARIO=$DEPLOY_SCENARIO
                  kill-phase-on: FAILURE
                  abort-all-job: true
                  git-revision: false
        - multijob:
            name: Functest
            condition: ALWAYS
            projects:
                - name: 'functest-apex-baremetal-daily-{stream}'
                  node-parameters: true
                  current-parameters: false
                  predefined-parameters:
                    DEPLOY_SCENARIO=$DEPLOY_SCENARIO
                  kill-phase-on: NEVER
                  abort-all-job: false
                  git-revision: false
        - multijob:
            name: Yardstick
            condition: ALWAYS
            projects:
                - name: 'yardstick-apex-baremetal-daily-{stream}'
                  node-parameters: true
                  current-parameters: false
                  predefined-parameters:
                    DEPLOY_SCENARIO=$DEPLOY_SCENARIO
                  kill-phase-on: NEVER
                  abort-all-job: false
                  git-revision: false


# danube Daily
- job-template:
    name: 'apex-daily-danube'

    # Job template for daily build
    #
    # Required Variables:
    #     stream:    branch with - in place of / (eg. stable)
    #     branch:    branch (eg. stable)
    project-type: 'multijob'

    node: 'apex-baremetal-danube'

    disabled: false

    scm:
        - git-scm

    parameters:
        - '{project}-defaults'
        - '{project}-baremetal-danube-defaults'
        - project-parameter:
            project: '{project}'
            branch: 'stable/danube'
        - apex-parameter:
            gs-pathname: '/danube'

    properties:
        - logrotate-default

    triggers:
        - 'apex-danube'

    builders:
        - multijob:
            name: build
            condition: SUCCESSFUL
            projects:
                - name: 'apex-build-danube'
                  current-parameters: false
                  predefined-parameters: |
                    GERRIT_BRANCH=$GERRIT_BRANCH
                    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
                  git-revision: true
        - multijob:
            name: 'Verify and upload ISO'
            condition: SUCCESSFUL
            projects:
                - name: 'apex-verify-iso-danube'
                  current-parameters: false
                  predefined-parameters: |
                    BUILD_DIRECTORY=$WORKSPACE/../apex-build-danube/.build
                    GERRIT_BRANCH=$GERRIT_BRANCH
                    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
                  git-revision: true
        - multijob:
            name: Baremetal Deploy and Test Phase
            condition: SUCCESSFUL
            projects:

                - name: 'apex-run-deploy-test-baremetal-danube'
                  node-parameters: false
                  current-parameters: false
                  predefined-parameters: |
                    DEPLOY_SCENARIO=os-nosdn-nofeature-noha
                    OPNFV_CLEAN=yes
                  kill-phase-on: NEVER
                  abort-all-job: true
                  git-revision: false

                - name: 'apex-run-deploy-test-baremetal-danube'
                  node-parameters: false
                  current-parameters: false
                  predefined-parameters: |
                    DEPLOY_SCENARIO=os-nosdn-nofeature-ha
                    OPNFV_CLEAN=yes
                  kill-phase-on: NEVER
                  abort-all-job: true
                  git-revision: false

                - name: 'apex-run-deploy-test-baremetal-danube'
                  node-parameters: false
                  current-parameters: false
                  predefined-parameters: |
                    DEPLOY_SCENARIO=os-nosdn-nofeature-ha-ipv6
                    OPNFV_CLEAN=yes
                  kill-phase-on: NEVER
                  abort-all-job: true
                  git-revision: false

                - name: 'apex-run-deploy-test-baremetal-danube'
                  node-parameters: false
                  current-parameters: false
                  predefined-parameters: |
                    DEPLOY_SCENARIO=os-nosdn-ovs-noha
                    OPNFV_CLEAN=yes
                  kill-phase-on: NEVER
                  abort-all-job: true
                  git-revision: false

                - name: 'apex-run-deploy-test-baremetal-danube'
                  node-parameters: false
                  current-parameters: false
                  predefined-parameters: |
                    DEPLOY_SCENARIO=os-nosdn-ovs-ha
                    OPNFV_CLEAN=yes
                  kill-phase-on: NEVER
                  abort-all-job: true
                  git-revision: false

                - name: 'apex-run-deploy-test-baremetal-danube'
                  node-parameters: false
                  current-parameters: false
                  predefined-parameters: |
                    DEPLOY_SCENARIO=os-nosdn-fdio-noha
                    OPNFV_CLEAN=yes
                  kill-phase-on: NEVER
                  abort-all-job: true
                  git-revision: false

                - name: 'apex-run-deploy-test-baremetal-danube'
                  node-parameters: false
                  current-parameters: false
                  predefined-parameters: |
                    DEPLOY_SCENARIO=os-nosdn-fdio-ha
                    OPNFV_CLEAN=yes
                  kill-phase-on: NEVER
                  abort-all-job: true
                  git-revision: false

                - name: 'apex-run-deploy-test-baremetal-danube'
                  node-parameters: false
                  current-parameters: false
                  predefined-parameters: |
                    DEPLOY_SCENARIO=os-nosdn-kvm-ha
                    OPNFV_CLEAN=yes
                  kill-phase-on: NEVER
                  abort-all-job: true
                  git-revision: false

                - name: 'apex-run-deploy-test-baremetal-danube'
                  node-parameters: false
                  current-parameters: false
                  predefined-parameters: |
                    DEPLOY_SCENARIO=os-nosdn-kvm-noha
                    OPNFV_CLEAN=yes
                  kill-phase-on: NEVER
                  abort-all-job: true
                  git-revision: false

                - name: 'apex-run-deploy-test-baremetal-danube'
                  node-parameters: false
                  current-parameters: false
                  predefined-parameters: |
                    DEPLOY_SCENARIO=os-odl_l2-fdio-noha
                    OPNFV_CLEAN=yes
                  kill-phase-on: NEVER
                  abort-all-job: true
                  git-revision: false

                - name: 'apex-run-deploy-test-baremetal-danube'
                  node-parameters: false
                  current-parameters: false
                  predefined-parameters: |
                    DEPLOY_SCENARIO=os-odl_l2-fdio-ha
                    OPNFV_CLEAN=yes
                  kill-phase-on: NEVER
                  abort-all-job: true
                  git-revision: false

                - name: 'apex-run-deploy-test-baremetal-danube'
                  node-parameters: false
                  current-parameters: false
                  predefined-parameters: |
                    DEPLOY_SCENARIO=os-odl_netvirt-fdio-noha
                    OPNFV_CLEAN=yes
                  kill-phase-on: NEVER
                  abort-all-job: true
                  git-revision: false

                - name: 'apex-run-deploy-test-baremetal-danube'
                  node-parameters: false
                  current-parameters: false
                  predefined-parameters: |
                    DEPLOY_SCENARIO=os-odl_l2-sfc-noha
                    OPNFV_CLEAN=yes
                  kill-phase-on: NEVER
                  abort-all-job: true
                  git-revision: false

                - name: 'apex-run-deploy-test-baremetal-danube'
                  node-parameters: false
                  current-parameters: false
                  predefined-parameters: |
                    DEPLOY_SCENARIO=os-odl_l3-nofeature-noha
                    OPNFV_CLEAN=yes
                  kill-phase-on: NEVER
                  abort-all-job: true
                  git-revision: false

                - name: 'apex-run-deploy-test-baremetal-danube'
                  node-parameters: false
                  current-parameters: false
                  predefined-parameters: |
                    DEPLOY_SCENARIO=os-odl_l3-nofeature-ha
                    OPNFV_CLEAN=yes
                  kill-phase-on: NEVER
                  abort-all-job: true
                  git-revision: false

                - name: 'apex-run-deploy-test-baremetal-danube'
                  node-parameters: false
                  current-parameters: false
                  predefined-parameters: |
                    DEPLOY_SCENARIO=os-odl_l3-ovs-noha
                    OPNFV_CLEAN=yes
                  kill-phase-on: NEVER
                  abort-all-job: true
                  git-revision: false

                - name: 'apex-run-deploy-test-baremetal-danube'
                  node-parameters: false
                  current-parameters: false
                  predefined-parameters: |
                    DEPLOY_SCENARIO=os-odl_l3-ovs-ha
                    OPNFV_CLEAN=yes
                  kill-phase-on: NEVER
                  abort-all-job: true
                  git-revision: false

                - name: 'apex-run-deploy-test-baremetal-danube'
                  node-parameters: false
                  current-parameters: false
                  predefined-parameters: |
                    DEPLOY_SCENARIO=os-odl-bgpvpn-ha
                    OPNFV_CLEAN=yes
                  kill-phase-on: NEVER
                  abort-all-job: true
                  git-revision: false

                - name: 'apex-run-deploy-test-baremetal-danube'
                  node-parameters: false
                  current-parameters: false
                  predefined-parameters: |
                    DEPLOY_SCENARIO=os-odl-gluon-noha
                    OPNFV_CLEAN=yes
                  kill-phase-on: NEVER
                  abort-all-job: true
                  git-revision: false

                - name: 'apex-run-deploy-test-baremetal-danube'
                  node-parameters: false
                  current-parameters: false
                  predefined-parameters: |
                    DEPLOY_SCENARIO=os-odl_l3-fdio-noha
                    OPNFV_CLEAN=yes
                  kill-phase-on: NEVER
                  abort-all-job: true
                  git-revision: false

                - name: 'apex-run-deploy-test-baremetal-danube'
                  node-parameters: false
                  current-parameters: false
                  predefined-parameters: |
                    DEPLOY_SCENARIO=os-odl_l3-fdio-ha
                    OPNFV_CLEAN=yes
                  kill-phase-on: NEVER
                  abort-all-job: true
                  git-revision: false

                - name: 'apex-run-deploy-test-baremetal-danube'
                  node-parameters: false
                  current-parameters: false
                  predefined-parameters: |
                    DEPLOY_SCENARIO=os-odl_l3-fdio_dvr-noha
                    OPNFV_CLEAN=yes
                  kill-phase-on: NEVER
                  abort-all-job: true
                  git-revision: false

                - name: 'apex-run-deploy-test-baremetal-danube'
                  node-parameters: false
                  current-parameters: false
                  predefined-parameters: |
                    DEPLOY_SCENARIO=os-odl_l3-fdio_dvr-ha
                    OPNFV_CLEAN=yes
                  kill-phase-on: NEVER
                  abort-all-job: true
                  git-revision: false

                - name: 'apex-run-deploy-test-baremetal-danube'
                  node-parameters: false
                  current-parameters: false
                  predefined-parameters: |
                    DEPLOY_SCENARIO=os-odl_l3-csit-noha
                    OPNFV_CLEAN=yes
                  kill-phase-on: NEVER
                  abort-all-job: true
                  git-revision: false

                - name: 'apex-run-deploy-test-baremetal-danube'
                  node-parameters: false
                  current-parameters: false
                  predefined-parameters: |
                    DEPLOY_SCENARIO=os-onos-nofeature-ha
                    OPNFV_CLEAN=yes
                  kill-phase-on: NEVER
                  abort-all-job: true
                  git-revision: false

                - name: 'apex-run-deploy-test-baremetal-danube'
                  node-parameters: false
                  current-parameters: false
                  predefined-parameters: |
                    DEPLOY_SCENARIO=os-ovn-nofeature-noha
                    OPNFV_CLEAN=yes
                  kill-phase-on: NEVER
                  abort-all-job: true
                  git-revision: false


# master Daily
- job-template:
    name: 'apex-daily-master'

    # Job template for daily build
    #
    # Required Variables:
    #     stream:    branch with - in place of / (eg. stable)
    #     branch:    branch (eg. stable)
    project-type: 'multijob'

    node: 'apex-baremetal-master'

    disabled: false

    scm:
        - git-scm

    parameters:
        - '{project}-defaults'
        - '{project}-baremetal-master-defaults'
        - project-parameter:
            project: '{project}'
            branch: 'master'
        - apex-parameter:
            gs-pathname: ''

    properties:
        - logrotate-default

    triggers:
        - 'apex-master'

    builders:
        - multijob:
            name: build
            condition: SUCCESSFUL
            projects:
                - name: 'apex-build-master'
                  current-parameters: false
                  predefined-parameters: |
                    GERRIT_BRANCH=$GERRIT_BRANCH
                    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
                  git-revision: true
        - multijob:
            name: 'Verify and upload ISO'
            condition: SUCCESSFUL
            projects:
                - name: 'apex-verify-iso-master'
                  current-parameters: false
                  predefined-parameters: |
                    BUILD_DIRECTORY=$WORKSPACE/../apex-build-master/.build
                    GERRIT_BRANCH=$GERRIT_BRANCH
                    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
                  git-revision: true
        - multijob:
            name: Baremetal Deploy and Test Phase
            condition: SUCCESSFUL
            projects:

                - name: 'apex-run-deploy-test-baremetal-master'
                  node-parameters: false
                  current-parameters: false
                  predefined-parameters: |
                    DEPLOY_SCENARIO=os-nosdn-nofeature-noha
                    OPNFV_CLEAN=yes
                  kill-phase-on: NEVER
                  abort-all-job: true
                  git-revision: false

                - name: 'apex-run-deploy-test-baremetal-master'
                  node-parameters: false
                  current-parameters: false
                  predefined-parameters: |
                    DEPLOY_SCENARIO=os-nosdn-nofeature-ha
                    OPNFV_CLEAN=yes
                  kill-phase-on: NEVER
                  abort-all-job: true
                  git-revision: false

                - name: 'apex-run-deploy-test-baremetal-master'
                  node-parameters: false
                  current-parameters: false
                  predefined-parameters: |
                    DEPLOY_SCENARIO=os-odl-nofeature-ha
                    OPNFV_CLEAN=yes
                  kill-phase-on: NEVER
                  abort-all-job: true
                  git-revision: false

                - name: 'apex-run-deploy-test-baremetal-master'
                  node-parameters: false
                  current-parameters: false
                  predefined-parameters: |
                    DEPLOY_SCENARIO=os-odl-nofeature-noha
                    OPNFV_CLEAN=yes
                  kill-phase-on: NEVER
                  abort-all-job: true
                  git-revision: false



# snapshot create
- job-template:
    name: 'apex-create-snapshot'

    # Job template for clean
    #
    # Required Variables:
    #     stream:    branch with - in place of / (eg. stable)

    disabled: false

    builders:
        - shell:
            !include-raw-escape: ./apex-snapshot-create.sh

# snapshot upload
- job-template:
    name: 'apex-upload-snapshot'

    # Job template for clean
    #
    # Required Variables:
    #     stream:    branch with - in place of / (eg. stable)

    disabled: false

    builders:
        - inject:
           properties-content: ARTIFACT_TYPE=snapshot
        - 'apex-upload-artifact'

# CSIT promote
- job-template:
    name: 'apex-csit-promote-daily-{stream}'

    # Job template for promoting CSIT Snapshots
    #
    # Required Variables:
    #     stream:    branch with - in place of / (eg. stable)
    #     branch:    branch (eg. stable)
    node: '{virtual-slave}'
    project-type: 'multijob'
    disabled: false

    scm:
        - git-scm

    parameters:
        - project-parameter:
            project: '{project}'
            branch: '{branch}'
        - apex-parameter:
            gs-pathname: '{gs-pathname}'

    properties:
        - build-blocker:
            use-build-blocker: true
            block-level: 'NODE'
            blocking-jobs:
                - 'apex-verify.*'
                - 'apex-deploy.*'
                - 'apex-runner.*'
                - 'apex-daily.*'

    triggers:
        - timed: '0 12 * * 0'

    builders:
        - multijob:
            name: build
            condition: SUCCESSFUL
            projects:
                - name: 'apex-build-{stream}'
                  current-parameters: false
                  predefined-parameters: |
                    GERRIT_BRANCH=$GERRIT_BRANCH
                    GERRIT_REFSPEC=$GERRIT_REFSPEC
                    GERRIT_CHANGE_NUMBER=$GERRIT_CHANGE_NUMBER
                    GERRIT_CHANGE_COMMIT_MESSAGE=$GERRIT_CHANGE_COMMIT_MESSAGE
                  node-parameters: false
                  kill-phase-on: FAILURE
                  abort-all-job: true
                  git-revision: true
        - multijob:
            name: deploy-virtual
            condition: SUCCESSFUL
            projects:
                - name: 'apex-deploy-virtual-{stream}'
                  current-parameters: false
                  predefined-parameters: |
                    DEPLOY_SCENARIO=os-odl_l3-csit-noha
                    OPNFV_CLEAN=yes
                    GERRIT_BRANCH=$GERRIT_BRANCH
                    GERRIT_REFSPEC=$GERRIT_REFSPEC
                    GERRIT_CHANGE_NUMBER=$GERRIT_CHANGE_NUMBER
                    GERRIT_CHANGE_COMMIT_MESSAGE=$GERRIT_CHANGE_COMMIT_MESSAGE
                    PROMOTE=True
                  node-parameters: true
                  kill-phase-on: FAILURE
                  abort-all-job: true
                  git-revision: false
        - multijob:
            name: functest-smoke
            condition: SUCCESSFUL
            projects:
              - name: 'functest-apex-virtual-suite-{stream}'
                current-parameters: false
                predefined-parameters: |
                  DEPLOY_SCENARIO=os-odl_l3-nofeature-noha
                  FUNCTEST_SUITE_NAME=tempest_smoke_serial
                  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
                git-revision: false
        - multijob:
            name: create snapshot
            condition: SUCCESSFUL
            projects:
              - name: 'apex-create-snapshot'
                current-parameters: false
                predefined-parameters: |
                  SNAP_TYPE=csit
                node-parameters: true
                kill-phase-on: FAILURE
                abort-all-job: true
                git-revision: false
        - multijob:
            name: upload snapshot
            condition: SUCCESSFUL
            projects:
              - name: 'apex-upload-snapshot'
                current-parameters: false
                predefined-parameters: |
                  SNAP_TYPE=csit
                node-parameters: true
                kill-phase-on: FAILURE
                abort-all-job: true
                git-revision: false

# FDIO promote
- job-template:
    name: 'apex-fdio-promote-daily-{stream}'

    # Job template for promoting CSIT Snapshots
    #
    # Required Variables:
    #     stream:    branch with - in place of / (eg. stable)
    #     branch:    branch (eg. stable)
    node: '{virtual-slave}'
    project-type: 'multijob'
    disabled: false

    scm:
        - git-scm

    parameters:
        - project-parameter:
            project: '{project}'
            branch: '{branch}'
        - apex-parameter:
            gs-pathname: '{gs-pathname}'

    properties:
        - build-blocker:
            use-build-blocker: true
            block-level: 'NODE'
            blocking-jobs:
                - 'apex-verify.*'
                - 'apex-deploy.*'
                - 'apex-runner.*'
                - 'apex-daily.*'

    builders:
        - multijob:
            name: build
            condition: SUCCESSFUL
            projects:
                - name: 'apex-build-{stream}'
                  current-parameters: false
                  predefined-parameters: |
                    GERRIT_BRANCH=$GERRIT_BRANCH
                    GERRIT_REFSPEC=$GERRIT_REFSPEC
                    GERRIT_CHANGE_NUMBER=$GERRIT_CHANGE_NUMBER
                    GERRIT_CHANGE_COMMIT_MESSAGE=$GERRIT_CHANGE_COMMIT_MESSAGE
                  node-parameters: false
                  kill-phase-on: FAILURE
                  abort-all-job: true
                  git-revision: true
        - multijob:
            name: deploy-virtual
            condition: SUCCESSFUL
            projects:
                - name: 'apex-deploy-virtual-{stream}'
                  current-parameters: false
                  predefined-parameters: |
                    DEPLOY_SCENARIO=os-odl_netvirt-fdio-noha
                    OPNFV_CLEAN=yes
                    GERRIT_BRANCH=$GERRIT_BRANCH
                    GERRIT_REFSPEC=$GERRIT_REFSPEC
                    GERRIT_CHANGE_NUMBER=$GERRIT_CHANGE_NUMBER
                    GERRIT_CHANGE_COMMIT_MESSAGE=$GERRIT_CHANGE_COMMIT_MESSAGE
                    PROMOTE=True
                  node-parameters: true
                  kill-phase-on: FAILURE
                  abort-all-job: true
                  git-revision: false
        - multijob:
            name: create snapshot
            condition: SUCCESSFUL
            projects:
              - name: 'apex-create-snapshot'
                current-parameters: false
                predefined-parameters: |
                  SNAP_TYPE=fdio
                node-parameters: true
                kill-phase-on: FAILURE
                abort-all-job: true
                git-revision: false
        - multijob:
            name: upload snapshot
            condition: SUCCESSFUL
            projects:
              - name: 'apex-upload-snapshot'
                current-parameters: false
                predefined-parameters: |
                  SNAP_TYPE=fdio
                node-parameters: true
                kill-phase-on: FAILURE
                abort-all-job: true
                git-revision: false

########################
# parameter macros
########################
- parameter:
    name: apex-parameter
    parameters:
        - string:
            name: ARTIFACT_NAME
            default: 'latest'
            description: "RPM Artifact name that will be appended to GS_URL to deploy a specific artifact"
        - string:
            name: ARTIFACT_VERSION
            default: 'daily'
            description: "Artifact version type"
        - string:
            name: BUILD_DIRECTORY
            default: $WORKSPACE/.build
            description: "Directory where the build artifact will be located upon the completion of the build."
        - string:
            name: CACHE_DIRECTORY
            default: $HOME/opnfv/apex-cache{gs-pathname}
            description: "Directory where the cache to be used during the build is located."
        - string:
            name: GIT_BASE
            default: https://gerrit.opnfv.org/gerrit/$PROJECT
            description: "Used for overriding the GIT URL coming from Global Jenkins configuration in case if the stuff is done on none-LF HW."
        - string:
            name: GS_PATHNAME
            default: '{gs-pathname}'
            description: "Version directory where opnfv artifacts are stored in gs repository"
        - string:
            name: GS_URL
            default: $GS_BASE{gs-pathname}
            description: "URL to Google Storage."
        - string:
            name: PROMOTE
            default: 'False'
            description: "Flag to know if we should promote/upload snapshot artifacts."

########################
# builder macros
########################
- builder:
    name: 'apex-unit-test'
    builders:
        - shell:
            !include-raw: ./apex-unit-test.sh

- builder:
    name: 'apex-build'
    builders:
        - shell:
            !include-raw: ./apex-build.sh

- builder:
    name: 'apex-workspace-cleanup'
    builders:
        - shell:
            !include-raw: ./apex-workspace-cleanup.sh

- builder:
    name: 'apex-iso-verify'
    builders:
        - shell:
            !include-raw: ./apex-iso-verify.sh


- builder:
    name: 'apex-upload-artifact'
    builders:
        - shell:
            !include-raw: ./apex-upload-artifact.sh

- builder:
    name: 'apex-download-artifact'
    builders:
        - shell:
            !include-raw: ./apex-download-artifact.sh

- builder:
    name: 'apex-deploy'
    builders:
        - shell:
            !include-raw: ./apex-deploy.sh

#######################
# trigger macros
########################
- trigger:
    name: 'apex-master'
    triggers:
        - timed: '0 3 1 1 7'
- trigger:
    name: 'apex-danube'
    triggers:
        - timed: '0 12 * * *'