---
#
# ============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 on cloud
- parameter:
    name: 'onap-parameter-macro'
    parameters:
      - project-parameters:
          project: 'infra/engine'
          branch: 'master'
      - nordix-gerrit-parameters
      - label:
          name: SLAVE_LABEL
          default: 'engine-jumphost-online-ubuntu1804-fra'
          description: 'Slave label to schedule this job on. All slaves have Ubuntu1604 no matter what distro target nodes use'
      - string:
          name: PROVISIONER_TYPE
          default: 'heat'
          description: 'Provisioner to use for provisioning nodes'
      - string:
          name: INSTALLER_TYPE
          default: 'kubespray'
          description: 'Installer to use for deploying the scenario'
      - string:
          name: DEPLOY_SCENARIO
          default: 'k8-calico-onap'
          description: 'Scenario to deploy and test'
      - string:
          name: DEPLOY_TYPE
          default: 'cloud'
          description: 'Type of the deployment'
      - string:
          name: DISTRO
          default: 'ubuntu1804'
          description: 'Distribution to use for configuring target nodes (networking etc.)'
      - string:
          name: ONAP_VERSION
          default: '{onap-version}'
          description: 'ONAP version to deploy'
      - string:
          name: ONAP_PROFILE
          default: 'sdc'
          description: 'ONAP profile to deploy - could be sdc or so.'
      - string:
          name: OPENSTACK_CLOUD_PROVIDER
          default: 'city'
          description: 'Name of the cloud where this job is run'
      - string:
          name: STACK_NAME
          default: 'nordix-cicd-k8-calico-onap-sdc-master'
          description: 'Stack to create'
      - string:
          name: KEYPAIR_NAME
          default: 'keypair-nordix-cicd-k8-calico-onap-sdc-master'
          description: 'Keypair to create and use'
      - string:
          name: HEAT_ENVIRONMENT_FILENAME
          default: 'heat-environment-city-ubuntu1804-sdc.yaml'
          description: 'Heat environment file to use'
      - string:
          name: EXECUTION_MODE
          default: 'online-deployment'
          description: 'Engine execution mode - could be online-deployment or offline-deployment'
      - string:
          name: ENGINE_VERSION
          default: 'master'
          description: 'Development purposes only! Nordix Cloud Infra Engine version to use for deploying ONAP. Could be sha, branch'
      - string:
          name: ENGINE_REFSPEC
          default: 'master'
          description: 'Development purposes only! Nordix Cloud Infra Engine version to use for deploying ONAP. Must be refspec.'
      - string:
          name: DEPLOY_SCENARIO_VERSION
          default: 'master'
          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: 'master'
          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: POD_NAME
          default: 'none'
          description: 'Development purposes only! Set to none for disabling test results DB reporting.'
      - string:
          name: TEST_TYPE
          default: 'oom-healthcheck'
          description: 'Test type to run. Could be oom-healthcheck or onap-healthcheck'
      - string:
          name: NORDIX_ARM_REPO_URL
          default: 'https://artifactory.nordix.org/artifactory'
          description: 'URL to Nordix Artifactory'
      - string:
          name: NORDIX_HARBOR_REPO_URL
          default: 'registry.nordix.org'
          description: 'URL to Nordix Harbor'
      - 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.'

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