---
#
# ============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=========================================================

# macros used by all job types
- parameter:
    name: 'onap-parameter-macro'
    parameters:
      - project-parameters:
          project: '{project}'
          branch: '{nordix-branch}'
      - nordix-gerrit-parameters
      - label:
          name: SLAVE_LABEL
          default: '{slave-label}'
          description: 'Slave label to schedule this job on. All slaves have Ubuntu1604 no matter what distro target nodes use'
      - string:
          name: DISTRO
          default: '{distro}'
          description: 'Distribution to use for configuring target nodes (networking etc.)'
      - string:
          name: PROVISIONER_TYPE
          default: '{provisioner-type}'
          description: 'Provisioner to use for provisioning nodes'
      - string:
          name: INSTALLER_TYPE
          default: '{installer-type}'
          description: 'Installer to use for deploying the scenario'
      - string:
          name: DEPLOY_SCENARIO
          default: '{deploy-scenario}'
          description: 'Scenario to deploy and test'
      - string:
          name: DEPLOY_TYPE
          default: '{type}'
          description: 'Type of the deployment'
      - string:
          name: HEAT_ENVIRONMENT_FILE
          default: "file://$WORKSPACE/.cache/repos/swconfig/scenarios/$DEPLOY_SCENARIO/$INSTALLER_TYPE/role/$DEPLOY_SCENARIO/files/heat-environment-full.yaml"
          description: 'Type of the deployment'
      - string:
          name: ONAP_VERSION
          default: '{onap-version}'
          description: 'ONAP version to deploy'
      - string:
          name: ONAP_FLAVOR
          default: 'full'
          description: 'ONAP flavor to deploy - could be core, small, medium, full. Also used for xtesting as run_type.'
      - string:
          name: TEST_TYPE
          default: 'oom-healthcheck'
          description: 'Test type to run. Could be oom-healthcheck or onap-healthcheck'
      - string:
          name: ENGINE_VERSION
          default: '{engine-version}'
          description: 'Development purposes only! Nordix Cloud Infra Engine version to use for deploying ONAP. Could be sha, branch'
      - string:
          name: ENGINE_REFSPEC
          default: '{engine-refspec}'
          description: 'Development purposes only! Nordix Cloud Infra Engine version to use for deploying ONAP. Must be refspec.'
      - string:
          name: DEPLOY_SCENARIO_VERSION
          default: '{deploy-scenario-version}'
          description: 'Development purposes only! Nordix Cloud Infra Scenario version to use for deploying ONAP. Depends on DEPLOY_SCENARIO_REFSPEC and could be sha, branch.'
      - string:
          name: DEPLOY_SCENARIO_REFSPEC
          default: '{deploy-scenario-refspec}'
          description: 'Development purposes only! Nordix Cloud Infra Scenario version to use for deploying ONAP. Depends on DEPLOY_SCENARIO_VERSION and must be refspec.'
      - string:
          name: XTESTING_REPO_URL
          default: 'https://gerrit.nordix.org/opnfv/xtesting-onap.git'
          description: 'URL to Nordix xtesting-onap repository'
      - string:
          name: ENGINE_ANSIBLE_PARAMS
          default: ''
          description: 'Extra parameters that can be added when run the play books.'
      - string:
          name: CLEANUP
          default: 'true'
          description: 'Cleanup leftovers of the previous run'
- builder:
    name: 'onap-deploy-macro'
    builders:
      - shell:
          !include-raw: ./wait-for-pkg-manager.sh
      - shell:
          !include-raw: ./onap-deploy.sh

- builder:
    name: 'oom-healthcheck-macro'
    builders:
      - shell:
          !include-raw: ./oom-healthcheck.sh

- builder:
    name: 'onap-healthcheck-macro'
    builders:
      - shell:
          !include-raw: ./onap-healthcheck.sh

- builder:
    name: 'promote-onap-macro'
    builders:
      - shell:
          !include-raw: ./promote-onap.sh

- builder:
    name: 'delete-stack-macro'
    builders:
      - shell:
          !include-raw: ./delete-stack.sh

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