---
# -------------------------------
# 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'
          # yamllint disable rule:line-length
          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'
          # yamllint enable rule:line-length
          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:
      # yamllint disable rule:line-length
      - email:
          recipients: fatih.degirmenci@ericsson.com yroblamo@redhat.com mchandras@suse.de jack.morgan@intel.com julienjut@gmail.com
      # yamllint enable rule:line-length
      - 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