---
# ============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: 'kubernetes-deploy-test'

    project: 'kubernetes-deploy-test'

    stream:
      - 'master':
          branch: 'master'
          deploy-scenario: 'k8-multus-plugins'
      - '1_20':
          branch: '1.20'
          deploy-scenario: 'k8-multus-plugins'
      - '1_19':
          branch: '1.19'
          deploy-scenario: 'k8-multus-plugins'
      - '1_18':
          branch: '1.18'
          deploy-scenario: 'k8-multus-plugins'
      - '1_17':
          branch: '1.17'
          deploy-scenario: 'k8-multus-plugins'
      - '1_16':
          branch: '1.16'
          deploy-scenario: 'k8-calico-nofeature'
      - '1_15':
          branch: '1.15'
          deploy-scenario: 'k8-calico-nofeature'

    distro:
      - ubuntu1804

    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'
          openrc-credentials-file: 'est-jenkins-openrcfile-city-frankfurt-cicd'

    phase:
      - deploy:
          build-timeout: 60
          execution-mode: offline-deployment
      - functest:
          build-timeout: 210
          execution-mode: online-test

    jobs:
      - 'kubernetes-release-{environment-type}-deploy-test-{distro}-baremetal-{stream}'
      - 'kubernetes-release-{environment-type}-{phase}-{distro}-baremetal-{stream}'

- job-template:
    name: 'kubernetes-release-{environment-type}-deploy-test-{distro}-baremetal-{stream}'

    project-type: multijob

    disabled: '{obj:disabled}'

    node: baremetal-deploy

    concurrent: false

    parameters:
      - string:
          name: EXECUTION_MODE
          default: 'offline-deployment'
          description: 'Engine execution mode'
      - string:
          name: PDF
          default: '{pdf}/${{NODE_NAME}}-pdf.yml'
          description: 'PDF file to use for deployment. DO NOT MODIFY!'
      - string:
          name: IDF
          default: '{idf}/${{NODE_NAME}}-idf.yml'
          description: 'IDF file to use for deployment. DO NOT MODIFY!'
      - string:
          name: SLAVE_LABEL
          default: 'baremetal-deploy'
          description: 'Type of the slave'

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

    wrappers:
      - build-timeout:
          timeout: 300
      - mask-passwords
      - pre-scm-buildstep:
          failOnError: true
          buildsteps:
            - shell: |
                #!/bin/bash
                sudo chown -R $USER:$USER $WORKSPACE || exit 1
                # offline nodes can not resolve Nordix Artifactory and Gerrit
                if [[ "$EXECUTION_MODE" == "offline-deployment" ]]; then
                  echo "Info  : Offline deployment. Adding City OpenStack Endpoint, Nordix Artifactory and Gerrit Public IP to /etc/hosts"
                  sudo sed -i 's/^search/# search/' /etc/resolv.conf
                  sudo bash -c "cat << EOF >> /etc/hosts
                # managed by engine
                91.106.198.25 artifactory.nordix.org
                91.106.198.142 gerrit.nordix.org
                86.107.242.50 fra1.citycloud.com
                # managed by engine
                EOF"
                  # we need to get rid of search domain as well
                  sudo sed -i 's/^search/# search/' /etc/resolv.conf
                fi

    scm:
      - git:
          url: https://gerrit.nordix.org/infra/engine.git
          branches:
            - master
          timeout: 15
          wipe-workspace: true

    builders:
      - description-setter:
          description: $DEPLOY_SCENARIO
      - 'download-deploy-artifact-macro'
      - multijob:
          name: "Offline Deployment on Baremetal using {deploy-scenario}"
          condition: SUCCESSFUL
          execution-type: PARALLEL
          projects:
            - name: 'kubernetes-release-{environment-type}-deploy-{distro}-baremetal-{stream}'
              current-parameters: true
              git-revision: true
              node-parameters: true
              kill-phase-on: FAILURE
              abort-all-job: true
      - multijob:
          name: Functional Testing
          condition: ALWAYS
          projects:
            - name: 'kubernetes-release-{environment-type}-functest-{distro}-baremetal-{stream}'
              current-parameters: true
              git-revision: false
              node-parameters: true
              kill-phase-on: FAILURE
              abort-all-job: true

- job-template:
    name: 'kubernetes-release-{environment-type}-{phase}-{distro}-baremetal-{stream}'

    disabled: '{obj:disabled}'

    parameters:
      - string:
          name: EXECUTION_MODE
          default: '{execution-mode}'
          description: 'Execution mode'
      - 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: 'file'
          description: 'Dispatcher to use for Yardstick reporting'

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

    wrappers:
      - build-timeout:
          timeout: '{build-timeout}'
      - mask-passwords
      - fix-workspace-permissions
      - credentials-binding:
          - file:
              credential-id: '{openrc-credentials-file}'
              variable: OPENRC_FILE

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