# Environment settings
# used by docker-compose AND by other shell scripts

# Following are ALSO used in demo/boot/portal_vm_init.sh
EP_IMG_NAME=onap/portal-apps
DB_IMG_NAME=onap/portal-db
WMS_IMG_NAME=onap/portal-wms
# Deployed with portal; built elsewhere
CLI_IMG_NAME=onap/cli

# Tag all images with this
PORTAL_TAG=1.3.0

# Name of directory in apps container (NOT host)
WEBAPPS_DIR=/opt/apache-tomcat-8.0.37/webapps

# Required settings with default values.
# Export shell environment variables on ALL hosts.
LOGS_DIR=./logs
PROPS_DIR=./properties_rackspace

# Optional settings with no defaults.
EXTRA_HOST_IP=""
EXTRA_HOST_NAME=""
# Export shell environment variables on hosts with no DNS;
# a line is added to docker container's /etc/hosts.
# For example:
#EXTRA_HOST_IP="-i 135.207.161.163"
#EXTRA_HOST_NAME="-n portal.api.simpledemo.openecomp.org"
