#######################################################################################
# Copyright ETSI Contributors and Others.
#
# 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.
#######################################################################################

export ASSUME_YES=""
export APT_PROXY_URL=""
export K8S_CLUSTER_ENGINE="k3s"
export DEBUG_INSTALL=""
export RELEASE="testing-daily"
export INSTALL_AUX_CLUSTER="y"
export INSTALL_MGMT_CLUSTER="y"
export OSM_NAMESPACE=osm
export OSM_HELM_RELEASE=osm
export OSM_DOCKER_TAG="testing-daily"
export DOCKER_USER="opensourcemano"
export DOCKER_REGISTRY_USER=
export DOCKER_REGISTRY_PASSWORD=
export DOCKER_REGISTRY_URL=
export DOCKER_PROXY_URL=
export MODULES_FOR_TESTING=
export MODULE_DOCKER_TAG=
export OSM_CLIENT_VERSION="master"
export OSM_IM_VERSION="master"
export OSM_HOME_DIR=${OSM_HOME_DIR:-"$HOME/.osm"}
export CREDENTIALS_DIR="${OSM_HOME_DIR}/.credentials"
export WORK_REPOS_DIR="${OSM_HOME_DIR}/repos"
export INSTALL_MINIO=${INSTALL_MINIO:-"y"}
export KUBECONFIG_AUX_CLUSTER=
export KUBECONFIG_MGMT_CLUSTER=
export KUBECONFIG_OSM_CLUSTER=
export OSM_BEHIND_PROXY=
export OPENSHIFT_MGMT_CLUSTER=
export MGMT_CLUSTER_CA_FILE=
export OSM_BASE_DOMAIN=
export OSM_HELM_TIMEOUT=
export OSM_CLUSTER_INGRESS_CLASS=
export AUX_CLUSTER_INGRESS_CLASS=