---
# ============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_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
      - yardstick:
          build-timeout: 30
          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
      - multijob:
          name: Platform Benchmarking
          condition: ALWAYS
          projects:
            - name: 'kubernetes-release-{environment-type}-yardstick-{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'
