---
#
# ============LICENSE_START=======================================================
#  Copyright (C) 2019 Nordix Foundation.
# ================================================================================
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
#      http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
#
# SPDX-License-Identifier: Apache-2.0
# ============LICENSE_END=========================================================

- project:
    name: 'cloud-infra-verify'

    project: 'infra/engine'

    stream:
      - 'master':
          branch: '{stream}'
          disabled: 'false'

    os:
      - ubuntu1604:
          disabled: 'true'
          distribution: 'ubuntu16'
          ipa_dib_os_element: 'fedora'
          dib_os_release: 'xenial'
          dib_os_element: 'ubuntu-minimal'
      - ubuntu1804:
          disabled: 'false'
          distribution: 'ubuntu18'
          ipa_dib_os_element: 'fedora'
          dib_os_release: 'bionic'
          dib_os_element: 'ubuntu-minimal'
      - centos7:
          disabled: 'true'
          distribution: 'centos7'
          ipa_dib_os_element: 'fedora'
          dib_os_release: '7'
          dib_os_element: 'centos-minimal'

    type:
      - virtual

    phase:
      - deploy
      - test

    jobs:
      - 'cloud-infra-verify-{os}-{type}-{stream}'
      - 'cloud-infra-verify-{os}-{phase}-{type}-{stream}'

- job-template:
    name: 'cloud-infra-verify-{os}-{type}-{stream}'

    project-type: multijob

    disabled: '{obj:disabled}'

    concurrent: true

    parameters:
      - project-parameters:
          project: '{project}'
          branch: '{branch}'
      - nordix-gerrit-parameters
      - label:
          name: SLAVE_LABEL
          default: 'vpod-deploy-{os}'
          description: 'Slave label to schedule this job on. All slaves have Ubuntu1604 no matter what distro target nodes use'
      - string:
          name: DISTRIBUTION
          default: '{distribution}'
          description: 'Distribution to use for configuring target nodes (networking etc.)'
      - string:
          name: IPA_DIB_OS_ELEMENT
          default: '{ipa_dib_os_element}'
          description: 'DIB OS Element to use for building the ramdisk image'
      - string:
          name: DIB_OS_RELEASE
          default: '{dib_os_release}'
          description: 'DIB OS Release to use for building the deployment image to provision target nodes with'
      - string:
          name: DIB_OS_ELEMENT
          default: '{dib_os_element}'
          description: 'DIB OS Element to use for building the deployment image to provision target nodes with'
      - string:
          name: CLEANUP
          default: 'true'
          description: 'Cleanup leftovers of the previous run'

    properties:
      - logrotate
      - build-blocker:
          use-build-blocker: true
          blocking-jobs:
            - 'cloud-infra-verify-{os}-.*'
            - 'cloud-infra-os-.*'
            - 'cloud-infra-k8-.*'
          block-level: 'NODE'
      - throttle:
          max-per-node: 1
          max-total: 3
          option: project

    wrappers:
      - build-timeout:
          timeout: 120
      - fix-workspace-permissions
      - openstack:
          single-use: True

    scm:
      - git-scm-gerrit:
          ssh-credentials-id: nordixinfra-nordix-gerrit-ssh
          branch: '{branch}'
          refspec: $GERRIT_REFSPEC

    triggers:
      - nordix-gerrit-trigger-patchset-created:
          project: 'infra\/engine|infra\/swconfig'
          branch: '{branch}'
          files: '**'

    builders:
      - multijob:
          name: deploy
          condition: SUCCESSFUL
          projects:
            - name: 'cloud-infra-verify-{os}-deploy-{type}-{stream}'
              current-parameters: true
              predefined-parameters: |
                DISTRIBUTION=$DISTRIBUTION
                IPA_DIB_OS_ELEMENT=$IPA_DIB_OS_ELEMENT
                DIB_OS_RELEASE=$DIB_OS_RELEASE
                DIB_OS_ELEMENT=$DIB_OS_ELEMENT
                CLEANUP=$CLEANUP
                GERRIT_PROJECT=$GERRIT_PROJECT
                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: test
          condition: SUCCESSFUL
          projects:
            - name: 'cloud-infra-verify-{os}-test-{type}-{stream}'
              current-parameters: true
              predefined-parameters: |
                DISTRIBUTION=$DISTRIBUTION
                IPA_DIB_OS_ELEMENT=$IPA_DIB_OS_ELEMENT
                DIB_OS_RELEASE=$DIB_OS_RELEASE
                DIB_OS_ELEMENT=$DIB_OS_ELEMENT
                CLEANUP=$CLEANUP
                GERRIT_PROJECT=$GERRIT_PROJECT
                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: test
              abort-all-job: true

- job-template:
    name: 'cloud-infra-verify-{os}-{phase}-{type}-{stream}'

    disabled: false

    concurrent: true

    properties:
      - logrotate

    parameters:
      - string:
          name: PROJECT
          default: $GERRIT_PROJECT
      - string:
          name: DISTRIBUTION
          default: 'ubuntu18'
          description: 'Distribution to use for configuring target nodes (networking etc.). Overriden by upstream job.'
      - string:
          name: IPA_DIB_OS_ELEMENT
          default: 'fedora'
          description: 'DIB OS Element to use for building the ramdisk image. Overriden by upstream job.'
      - string:
          name: DIB_OS_RELEASE
          default: 'bionic'
          description: 'DIB OS Release to use for building the deployment image to provision target nodes with. Overriden by upstream job.'
      - string:
          name: DIB_OS_ELEMENT
          default: 'ubuntu-minimal'
          description: 'DIB OS Element to use for building the deployment image to provision target nodes with. Overriden by upstream job.'
      - string:
          name: CLEANUP
          default: 'false'

    wrappers:
      - build-timeout:
          timeout: 120
      - fix-workspace-permissions

    scm:
      - git-scm-gerrit:
          ssh-credentials-id: nordixinfra-nordix-gerrit-ssh
          branch: '{branch}'
          refspec: $GERRIT_REFSPEC

    builders:
      - 'cloud-infra-verify-{phase}-macro'

# -------------------------------
# builder macros
# -------------------------------

- builder:
    name: 'cloud-infra-verify-deploy-macro'
    builders:
      - shell: |
          #!/bin/bash

          # it takes some time before the OpenStack slave becomes fully operational
          # so we give it some more time before doing anything
          sleep 30
      - shell:
          !include-raw: ./cloud-infra-deploy.sh

- builder:
    name: 'cloud-infra-verify-test-macro'
    builders:
      - shell:
          !include-raw: ./cloud-infra-test.sh

# vim: set ts=2 sw=2 expandtab:
