---
# ============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-verify-offline-deploy-test'

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

    stream:
      - 'master':
          branch: '{stream}'
          pdf: 'file:///opt/engine/offline/git/hwconfig/pods/nordix-vpod1-pdf.yml'
          idf: 'file:///opt/engine/offline/git/hwconfig/pods/nordix-vpod1-idf.yml'

    phase:
      - deploy
      - functest

    type:
      - virtual:
          provisioner-type: 'bifrost'
          slave-type: 'vpod'
      - cloud:
          provisioner-type: 'heat'
          slave-type: 'jumphost'

    distro:
      - ubuntu1804

    cloud:
      - city:
          openrc-credentials-file: 'est-jenkins-openrcfile-city-karlskrona-onap'

    jobs:
      - 'engine-verify-offline-deploy-test-{distro}-{cloud}-{type}-{stream}'
      - 'engine-verify-offline-{phase}-{distro}-{cloud}-{type}-{stream}'

- job-template:
    name: 'engine-verify-offline-deploy-test-{distro}-{cloud}-{type}-{stream}'

    project-type: multijob

    disabled: '{obj:disabled}'

    concurrent: true

    parameters:
      - project-parameters:
          project: $GERRIT_PROJECT
          branch: '{branch}'
          description: 'The project and branch which the change is proposed for'
      - label:
          name: SLAVE_LABEL
          default: 'engine-{slave-type}-offline-{distro}'
          description: 'Slave label to schedule this job on.'
      - string:
          name: PROVISIONER_TYPE
          default: '{provisioner-type}'
          description: 'Provisioner type to use'
      - string:
          name: PDF
          default: '{pdf}'
          description: 'PDF file to use for deployment'
      - string:
          name: IDF
          default: '{idf}'
          description: 'IDF file to use for deployment'
      - string:
          name: HEAT_ENVIRONMENT_FILENAME
          default: 'heat-environment-{cloud}-{distro}.yaml'
          description: 'Name of heat-environment file to use.'
      - string:
          name: STACK_NAME
          default: "nordix-cicd-verify-engine-offline-{distro}-$GERRIT_CHANGE_NUMBER"
          description: 'Name of the created stack'
      - string:
          name: KEYPAIR_NAME
          default: "keypair-nordix-cicd-verify-engine-offline-{distro}-$GERRIT_CHANGE_NUMBER"
          description: 'Name of the created keypair'
      - string:
          name: USE_PREBUILT_DEPLOYMENT_IMAGE
          default: 'true'
          description: 'Use prebuilt deployment image while running as part of CI/CD'
      - 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: 'functest'
          description: 'Test framework to use'
      - string:
          name: TEST_SUITE
          default: 'healthcheck'
          description: 'Test suite to run'
      - string:
          name: YARDSTICK_DISPATCHER
          default: 'file'
          description: 'Dispatcher to use for Yardstick reporting'
      - string:
          name: DELETE_STACK
          default: 'true'
          description: 'Delete the stack upon completion of the build'

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

    wrappers:
      - build-timeout:
          timeout: 180
      - credentials-binding:
          - file:
              credential-id: '{openrc-credentials-file}'
              variable: OPENRC_FILE
          - username-password-separated:
              credential-id: 'nordix-cicd-arm-credentials'
              username: NORDIX_ARM_USERNAME
              password: NORDIX_ARM_TOKEN
      - mask-passwords
      - fix-workspace-permissions
      - openstack:
          single-use: True

    builders:
      - shell: |
          #!/bin/bash
          sudo sed -i 's/^search/# search/' /etc/resolv.conf
      - 'download-artifact-macro'
      - 'generate-ssh-keypair-macro'
      - 'wait-pkg-mgr-macro'
      - multijob:
          name: "offline deployment on {type} instances"
          condition: SUCCESSFUL
          execution-type: PARALLEL
          projects:
            - name: 'engine-verify-offline-deploy-{distro}-city-{type}-master'
              current-parameters: true
              node-parameters: true
              kill-phase-on: FAILURE
              abort-all-job: false
      - multijob:
          name: "offline testing on {type} instances"
          condition: SUCCESSFUL
          execution-type: PARALLEL
          projects:
            - name: 'engine-verify-offline-functest-{distro}-city-{type}-master'
              current-parameters: true
              node-parameters: true
              kill-phase-on: FAILURE
              abort-all-job: false

    publishers:
      - postbuildscript:
          builders:
            - role: SLAVE
              build-on:
                - SUCCESS
                - FAILURE
                - ABORTED
                - NOT_BUILT
                - UNSTABLE
              build-steps:
                - 'wait-pkg-mgr-macro'
                - 'delete-stack-macro'

- job-template:
    name: 'engine-verify-offline-{phase}-{distro}-{cloud}-{type}-{stream}'

    disabled: '{obj:disabled}'

    concurrent: true

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

    wrappers:
      - build-timeout:
          timeout: 180
      - credentials-binding:
          - file:
              credential-id: '{openrc-credentials-file}'
              variable: OPENRC_FILE
          - username-password-separated:
              credential-id: 'nordix-cicd-arm-credentials'
              username: NORDIX_ARM_USERNAME
              password: NORDIX_ARM_TOKEN
      - mask-passwords
      - fix-workspace-permissions

    builders:
      - '{phase}-macro'
