# Copyright 2019 AT&T Intellectual Property. All rights reserved.
#
# 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.

# The variable $BUILD will be generated dynamically when this file is sourced

RANDOM_STRING=`cat /dev/urandom | env LC_CTYPE=C tr -cd 'a-zA-Z0-9' | head -c 4`
BUILD="ONAP$RANDOM_STRING"

# GLOBAL PARAMS
LOCATION="westus2"
USER_PUBLIC_IP_PREFIX="10.0.0.0/8 192.168.100.0/24"
BUILD_DIR=/home/username/$BUILD

# AKS PARAMS
AKS_RESOURCE_GROUP_NAME=$BUILD"-AKSRG"
AKS_NAME=$BUILD"-AKS"
AKS_K8_VERSION="1.14.6"
AKS_NODE_COUNT="7"
AKS_NODE_SIZE="Standard_DS4_v2"
AKS_VNET_NAME="$BUILD"-AKSVNET""
AKS_DNS_PREFIX=$BUILD"-dns"
AKS_POD_CIDR="10.244.0.0/16"
AKS_NODE_CIDR="169.1.0.0/16"
AKS_SERVICE_CIDR="170.1.0.0/16"
AKS_DNS_IP="170.1.0.10"
AKS_ADMIN_USER="onap_user"

# NFS PARAMS
NFS_NAME=$BUILD"-NFS"
NFS_RG=$BUILD"-NFS-RG"
NFS_VM_SIZE=$AKS_NODE_SIZE
NFS_LOCATION=$LOCATION
NFS_CIDR="173.163.0.0/28"
NFS_ADMIN_USER="onap_user"
NFS_VNET_NAME=$BUILD"-NFSVNET"
NFS_SUBNET_NAME=$BUILD"-NFSSUBNET"
NFS_DISK_SIZE=512

# DEVSTACK PARAMS
DEVSTACK_NAME=$BUILD"-DEVSTACK"
DEVSTACK_RG=$BUILD"-DEVSTACK-RG"
DEVSTACK_VM_SIZE="Standard_D16s_v3"
DEVSTACK_LOCATION=$LOCATION
DEVSTACK_CIDR="10.0.200.0/24"
DEVSTACK_PRIVATE_IP="10.0.200.4"
DEVSTACK_ADMIN_USER="onap_user"
DEVSTACK_VNET_NAME=$BUILD"-DEVSTACKVNET"
DEVSTACK_SUBNET_NAME=$BUILD"-DEVSTACKSUBNET"
DEVSTACK_DISK_SIZE=512
OPENSTACK_USER="onap_user"
OPENSTACK_PASS="supersecret"
OPENSTACK_TENANT="onap_project"
OPENSTACK_REGION="RegionOne"
IMAGE_LIST="https://cloud-images.ubuntu.com/xenial/current/xenial-server-cloudimg-amd64-disk1.img https://cloud-images.ubuntu.com/trusty/current/trusty-server-cloudimg-amd64-disk1.img"

# ONAP PARAMS
CLLI="testclli1"
CLOUD_OWNER="ONAPOWNER"
CLOUD_REGION="ONAPREGION"
CUSTOMER="ONAPCUSTOMER"
SUBSCRIBER="ONAPSUBSCRIBER"
SERVICE_TYPE="ONAPSERVICE"
AZ="nova"
OE="testentity"
LOB="testlob"
PROJECT="testproject"
PLATFORM="testplatform"
OS_ID="OnapOpenstack"
OS_TENANT_ROLE="admin"
OS_KEYSTONE="KEYSTONE_V3"
OOM_BRANCH="master"
CHART_VERSION="5.0.0"
OOM_OVERRIDES=""
DOCKER_REPOSITORY="nexus3.onap.org:10001"
