#!/bin/bash # Starts docker containers for ONAP Portal # This version for Amsterdam/R1 of Portal, uses docker-compose. # Temporarily maintained in portal/deliveries area; # replicated from the ONAP demo/boot area due to release concerns. # Start Xvfb echo -e "Starting Xvfb on display ${DISPLAY} with res ${RES}" Xvfb ${DISPLAY} -ac -screen 0 ${RES} +extension RANDR & XVFBPID=$! # Get pid of this spawned process to make sure we kill the correct process later #Get current IP of VM HOST_IP=$(ip route get 8.8.8.8 | awk '/8.8.8.8/ {print $NF}') export HOST_IP=${HOST_IP} if ! ifconfig docker0; then if ! ifconfig ens3; then echo "Could not determine IP address" exit 1 fi export DOCKER_IP_IP=`ifconfig ens3 | awk -F: '/inet addr/ {gsub(/ .*/,"",$2); print $2}'` else export DOCKER_IP=`ifconfig docker0 | awk -F: '/inet addr/ {gsub(/ .*/,"",$2); print $2}'` fi echo $DOCKER_IP # Pass any variables required by Robot test suites in ROBOT_VARIABLES #ROBOT_VARIABLES="-v MOCK_IP:${MOCK_IP} -v IP:${IP} -v POLICY_IP:${POLICY_IP} -v DOCKER_IP:${DOCKER_IP}" #export PORTAL_IP=${PORTAL_IP} ROBOT_VARIABLES="-v MOCK_IP:${MOCK_IP} -v IP:${IP} -v DOCKER_IP:${DOCKER_IP}" export DOCKER_IP=${DOCKER_IP} # be verbose set -x # Establish environment variables NEXUS_USERNAME=docker NEXUS_PASSWD=docker NEXUS_DOCKER_REPO=nexus3.onap.org:10003 CURR="$(pwd)" git clone http://gerrit.onap.org/r/portal # Refresh configuration and scripts cd portal git pull cd deliveries rm .env rm docker-compose.yml cp $CURR/.env . cp $CURR/docker-compose.yml . #cd properties_simpledemo/ECOMPPORTALAPP #rm system.properties #cp $CURR/system.properties . #cd ../.. # Get image names used below from docker-compose environment file source $CURR/.env #source .env # Make inter-app communication work in CSIT export EXTRA_HOST_IP="-i ${HOST_IP}" export EXTRA_HOST_NAME="-n portal.api.simpledemo.openecomp.org" # Copy property files to new directory mkdir -p $PROPS_DIR cp -r properties_simpledemo/* $PROPS_DIR # Also create logs directory mkdir -p $LOGS_DIR # Refresh images docker login -u $NEXUS_USERNAME -p $NEXUS_PASSWD $NEXUS_DOCKER_REPO docker pull $NEXUS_DOCKER_REPO/${DB_IMG_NAME}:$DOCKER_IMAGE_VERSION docker pull $NEXUS_DOCKER_REPO/${EP_IMG_NAME}:$DOCKER_IMAGE_VERSION docker pull $NEXUS_DOCKER_REPO/${WMS_IMG_NAME}:$DOCKER_IMAGE_VERSION docker pull $NEXUS_DOCKER_REPO/$CLI_IMG_NAME:$CLI_DOCKER_VERSION # Tag them as expected by docker-compose file docker tag $NEXUS_DOCKER_REPO/${DB_IMG_NAME}:$DOCKER_IMAGE_VERSION $DB_IMG_NAME:$PORTAL_TAG docker tag $NEXUS_DOCKER_REPO/${EP_IMG_NAME}:$DOCKER_IMAGE_VERSION $EP_IMG_NAME:$PORTAL_TAG docker tag $NEXUS_DOCKER_REPO/${WMS_IMG_NAME}:$DOCKER_IMAGE_VERSION $WMS_IMG_NAME:$PORTAL_TAG docker tag $NEXUS_DOCKER_REPO/$CLI_IMG_NAME:$CLI_DOCKER_VERSION $CLI_IMG_NAME:$PORTAL_TAG # compose is not in /usr/bin docker-compose down docker-compose up -d #${HOSTNAME}="portal.api.simpledemo.openecomp.org" #echo "$HOST_IP ${HOSTNAME}" >> /etc/hosts #echo "$HOST_IP portal.api.simpledemo.openecomp.org" >> /etc/hosts #sudo sed -i "2i$HOST_IP portal.api.simpledemo.openecomp.org" /etc/hosts #HOST="portal.api.simpledemo.openecomp.org" #sudo sed -i "/$HOST/ s/.*/$HOST_IP\t$HOST/g" /etc/hosts # insert/update hosts entry ip_address=$HOST_IP host_name="portal.api.simpledemo.openecomp.org" # find existing instances in the host file and save the line numbers matches_in_hosts="$(grep -n $host_name /etc/hosts | cut -f1 -d:)" host_entry="${ip_address} ${host_name}" echo "$host_entry" if [ ! -z "$matches_in_hosts" ] then echo "Updating existing hosts entry." # iterate over the line numbers on which matches were found while read -r line_number; do # replace the text of each line with the desired host entry sudo sed -i '' "${line_number}s/.*/${host_entry} /" /etc/hosts echo "${line_number} ${host_entry}" done <<< "$matches_in_hosts" else echo "Adding new hosts entry." echo "$host_entry" | sudo tee -a /etc/hosts > /dev/null fi sleep 3m # WAIT 5 minutes maximum and test every 5 seconds if Portal up using HealthCheck API TIME_OUT=500 INTERVAL=20 TIME=0 while [ "$TIME" -lt "$TIME_OUT" ]; do response=$(curl --write-out '%{http_code}' --silent --output /dev/null http://portal.api.simpledemo.openecomp.org:8989/ECOMPPORTAL/portalApi/healthCheck); echo $response if [ "$response" == "200" ]; then echo Portal and its database well started in $TIME seconds break; fi echo Sleep: $INTERVAL seconds before testing if Portal is up. Total wait time up now is: $TIME seconds. Timeout is: $TIME_OUT seconds sleep $INTERVAL TIME=$(($TIME+$INTERVAL)) done if [ "$TIME" -ge "$TIME_OUT" ]; then echo TIME OUT: Docker containers not started in $TIME_OUT seconds... Could cause problems for tests... fi #sleep 3m #if [ "$TIME" -ge "$TIME_OUT" ]; then # echo TIME OUT: Docker containers not started in $TIME_OUT seconds... Could cause problems for tests... #fi #Get current IP of VM HOST_IP=$(ip route get 8.8.8.8 | awk '/8.8.8.8/ {print $NF}') export HOST_IP=${HOST_IP} #docker logs deliveries_portal-db_1 docker logs deliveries_portal-apps_1 docker logs deliveries_portal-wms_1