---
# ============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: 'engine-periodic-offline-deploy-test'

    project: 'engine-periodic-offline-deploy-test'

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

    distro:
      - ubuntu1804

    deploy-scenario:
      - k8-calico-nofeature
      - k8-multus-nofeature


    type:
      - baremetal:
          pod-name: est-baremetal
          provisioner-type: bifrost
          installer-type: kubespray
          slave-label: baremetal-deploy
          yardstick-dispatcher: 'file'

    environment-type:
      - offline:
          disabled: false
          execution-mode: offline-deployment
          pdf: 'file:///opt/engine/offline/git/hwconfig/pods'
          idf: 'file:///opt/engine/offline/git/hwconfig/pods'

    phase:
      - deploy:
          build-timeout: 60
      - functest:
          build-timeout: 210
      - yardstick:
          build-timeout: 30

    jobs:
      - '{deploy-scenario}-{environment-type}-{distro}-{type}-periodic'
      - 'kubernetes-{environment-type}-{phase}-{distro}-{type}-periodic'

- job-template:
    name: '{deploy-scenario}-{environment-type}-{distro}-{type}-periodic'

    project-type: multijob

    disabled: '{obj:disabled}'

    concurrent: true

    parameters:
      - label:
          name: SLAVE_LABEL
          default: '{slave-label}'
          description: 'Slave label to schedule this job on.'
      - string:
          name: PROVISIONER_TYPE
          default: '{provisioner-type}'
          description: 'Provisioner type to use'
      - string:
          name: INSTALLER_TYPE
          default: '{installer-type}'
          description: 'Installer type to use'
      - string:
          name: DEPLOY_SCENARIO
          default: '{deploy-scenario}'
          description: 'Scenario to deploy and test'
      - string:
          name: PDF
          default: '{pdf}/${{NODE_NAME}}-pdf.yml'
          description: 'PDF file to use for deployment'
      - string:
          name: IDF
          default: '{idf}/${{NODE_NAME}}-idf.yml'
          description: 'IDF file to use for deployment'

    properties:
      - logrotate
      - throttle:
          max-per-node: 1
          max-total: 3
          option: project

    wrappers:
      - build-timeout:
          timeout: 300
      - mask-passwords
      - fix-workspace-permissions

    builders:
      - description-setter:
          description: $DEPLOY_SCENARIO | $PROVISIONER_TYPE | $INSTALLER_TYPE
      - 'download-artifact-macro'
      - multijob:
          name: "Offline Deployment on {type}"
          condition: SUCCESSFUL
          execution-type: PARALLEL
          projects:
            - name: 'kubernetes-{environment-type}-deploy-{distro}-{type}-periodic'
              current-parameters: true
              node-parameters: true
              kill-phase-on: FAILURE
              abort-all-job: true
      - multijob:
          name: functest
          condition: ALWAYS
          projects:
            - name: 'kubernetes-{environment-type}-functest-{distro}-{type}-periodic'
              current-parameters: true
              node-parameters: true
              kill-phase-on: FAILURE
              abort-all-job: true
      - multijob:
          name: yardstick
          condition: ALWAYS
          projects:
            - name: 'kubernetes-{environment-type}-yardstick-{distro}-{type}-periodic'
              current-parameters: true
              node-parameters: true
              kill-phase-on: FAILURE
              abort-all-job: true

- job-template:
    name: 'kubernetes-{environment-type}-{phase}-{distro}-{type}-periodic'

    disabled: '{obj:disabled}'

    parameters:
      - string:
          name: TEST_REPO_URL
          default: 'https://gerrit.nordix.org/infra/test.git'
          description: 'URL to clone the test repo from'
      - string:
          name: TEST_FW
          default: '{phase}'
          description: 'Test framework to use'
      - string:
          name: TEST_SUITE
          default: 'smoke'
          description: 'Test suite to run'
      - string:
          name: YARDSTICK_DISPATCHER
          default: '{yardstick-dispatcher}'
          description: 'Dispatcher to use for Yardstick reporting'

    properties:
      - logrotate
      - throttle:
          max-per-node: 1
          max-total: 3
          option: project

    wrappers:
      - build-timeout:
          timeout: '{build-timeout}'
      - mask-passwords
      - fix-workspace-permissions

    builders:
      - description-setter:
          description: $DEPLOY_SCENARIO | $PROVISIONER_TYPE | $INSTALLER_TYPE
      - '{phase}-macro'
