blob: 76cf5f37309df0b025a9677adbb643f008fe2a8b [file] [log] [blame]
Gary Wu9abb61c2018-09-27 10:38:50 -07001#!/bin/bash
2# Starts docker containers for ONAP Portal
3# This version for Amsterdam/R1 of Portal, uses docker-compose.
4# Temporarily maintained in portal/deliveries area;
5# replicated from the ONAP demo/boot area due to release concerns.
6
7# Start Xvfb
8echo -e "Starting Xvfb on display ${DISPLAY} with res ${RES}"
9Xvfb ${DISPLAY} -ac -screen 0 ${RES} +extension RANDR &
10XVFBPID=$!
11# Get pid of this spawned process to make sure we kill the correct process later
12
13#Get current IP of VM
14HOST_IP=$(ip route get 8.8.8.8 | awk '/8.8.8.8/ {print $NF}')
15export HOST_IP=${HOST_IP}
16
17
18
19if ! ifconfig docker0; then
20if ! ifconfig ens3; then
21echo "Could not determine IP address"
22exit 1
23fi
24export DOCKER_IP_IP=`ifconfig ens3 | awk -F: '/inet addr/ {gsub(/ .*/,"",$2); print $2}'`
25else
26export DOCKER_IP=`ifconfig docker0 | awk -F: '/inet addr/ {gsub(/ .*/,"",$2); print $2}'`
27fi
28echo $DOCKER_IP
29
30
31# Pass any variables required by Robot test suites in ROBOT_VARIABLES
32#ROBOT_VARIABLES="-v MOCK_IP:${MOCK_IP} -v IP:${IP} -v POLICY_IP:${POLICY_IP} -v DOCKER_IP:${DOCKER_IP}"
33#export PORTAL_IP=${PORTAL_IP}
34ROBOT_VARIABLES="-v MOCK_IP:${MOCK_IP} -v IP:${IP} -v DOCKER_IP:${DOCKER_IP}"
35export DOCKER_IP=${DOCKER_IP}
36
37
38
39
40# be verbose
41set -x
42
43# Establish environment variables
44NEXUS_USERNAME=docker
45NEXUS_PASSWD=docker
46NEXUS_DOCKER_REPO=nexus3.onap.org:10003
47
48
49
50CURR="$(pwd)"
51git clone http://gerrit.onap.org/r/portal -b "master"
52
53# Refresh configuration and scripts
54cd portal
55git pull
56cd deliveries
57rm .env
58#rm docker-compose.yml
59cp $CURR/.env .
60#cp $CURR/docker-compose.yml .
61#cd properties_simpledemo/ECOMPPORTALAPP
62#rm system.properties
63#cp $CURR/system.properties .
64#cd ../..
65# Get image names used below from docker-compose environment file
66source $CURR/.env
67#source .env
68
69# Make inter-app communication work in CSIT
70export EXTRA_HOST_IP="-i ${HOST_IP}"
71export EXTRA_HOST_NAME="-n portal.api.simpledemo.onap.org"
72
73
74# Copy property files to new directory
75mkdir -p $PROPS_DIR
76cp -r properties_simpledemo/* $PROPS_DIR
77# Also create logs directory
78mkdir -p $LOGS_DIR
79
80
81# Refresh images
82docker login -u $NEXUS_USERNAME -p $NEXUS_PASSWD $NEXUS_DOCKER_REPO
83docker pull $NEXUS_DOCKER_REPO/$DB_IMG_NAME:$DOCKER_IMAGE_VERSION
84docker pull $NEXUS_DOCKER_REPO/$EP_IMG_NAME:$DOCKER_IMAGE_VERSION
85docker pull $NEXUS_DOCKER_REPO/$SDK_IMG_NAME:$DOCKER_IMAGE_VERSION
86docker pull $NEXUS_DOCKER_REPO/$CDR_IMG_NAME:$CDR_IMAGE_VERSION
87docker pull $ZK_IMG_NAME:$ZK_IMAGE_VERSION
88docker pull $NEXUS_DOCKER_REPO/$WMS_IMG_NAME:$DOCKER_IMAGE_VERSION
89docker pull $NEXUS_DOCKER_REPO/$CLI_IMG_NAME:$CLI_DOCKER_VERSION
90
91# Tag them as expected by docker-compose file
92docker tag $NEXUS_DOCKER_REPO/$DB_IMG_NAME:$DOCKER_IMAGE_VERSION $DB_IMG_NAME:$PORTAL_TAG
93docker tag $NEXUS_DOCKER_REPO/$EP_IMG_NAME:$DOCKER_IMAGE_VERSION $EP_IMG_NAME:$PORTAL_TAG
94docker tag $NEXUS_DOCKER_REPO/$SDK_IMG_NAME:$DOCKER_IMAGE_VERSION $SDK_IMG_NAME:$PORTAL_TAG
95docker tag $NEXUS_DOCKER_REPO/$CDR_IMG_NAME:$CDR_IMAGE_VERSION $CDR_IMG_NAME:$PORTAL_TAG
96docker tag $ZK_IMG_NAME:$ZK_IMAGE_VERSION $ZK_IMG_NAME:$PORTAL_TAG
97docker tag $NEXUS_DOCKER_REPO/$WMS_IMG_NAME:$DOCKER_IMAGE_VERSION $WMS_IMG_NAME:$PORTAL_TAG
98docker tag $NEXUS_DOCKER_REPO/$CLI_IMG_NAME:$CLI_DOCKER_VERSION $CLI_IMG_NAME:$PORTAL_TAG
99
100
101# compose is not in /usr/bin
102docker-compose down
103docker-compose up -d
104
105#${HOSTNAME}="portal.api.simpledemo.openecomp.org"
106#echo "$HOST_IP ${HOSTNAME}" >> /etc/hosts
107
108#echo "$HOST_IP portal.api.simpledemo.openecomp.org" >> /etc/hosts
109#sudo sed -i "2i$HOST_IP portal.api.simpledemo.openecomp.org" /etc/hosts
110
111#HOST="portal.api.simpledemo.openecomp.org"
112#sudo sed -i "/$HOST/ s/.*/$HOST_IP\t$HOST/g" /etc/hosts
113
114# insert/update hosts entry
115ip_address=$HOST_IP
116host_name="portal.api.simpledemo.onap.org"
117# find existing instances in the host file and save the line numbers
118matches_in_hosts="$(grep -n $host_name /etc/hosts | cut -f1 -d:)"
119host_entry="${ip_address} ${host_name}"
120
121echo "$host_entry"
122
123if [ ! -z "$matches_in_hosts" ]
124then
125echo "Updating existing hosts entry."
126# iterate over the line numbers on which matches were found
127while read -r line_number; do
128# replace the text of each line with the desired host entry
129sudo sed -i '' "${line_number}s/.*/${host_entry} /" /etc/hosts
130echo "${line_number} ${host_entry}"
131done <<< "$matches_in_hosts"
132else
133echo "Adding new hosts entry."
134echo "$host_entry" | sudo tee -a /etc/hosts > /dev/null
135fi
136
137
138
139sleep 6m
140
141# WAIT 5 minutes maximum and test every 5 seconds if Portal up using HealthCheck API
142TIME_OUT=500
143INTERVAL=20
144TIME=0
145while [ "$TIME" -lt "$TIME_OUT" ]; do
146 response=$(curl --write-out '%{http_code}' --silent --output /dev/null http://portal.api.simpledemo.onap.org:8989/ONAPPORTAL/portalApi/healthCheck); echo $response
147
148 if [ "$response" == "200" ]; then
149 echo Portal and its database well started in $TIME seconds
150 break;
151 fi
152
153 echo Sleep: $INTERVAL seconds before testing if Portal is up. Total wait time up now is: $TIME seconds. Timeout is: $TIME_OUT seconds
154 sleep $INTERVAL
155 TIME=$(($TIME+$INTERVAL))
156done
157
158if [ "$TIME" -ge "$TIME_OUT" ]; then
159 echo TIME OUT: Docker containers not started in $TIME_OUT seconds... Could cause problems for tests...
160fi
161
162#sleep 3m
163
164
165
166#if [ "$TIME" -ge "$TIME_OUT" ]; then
167# echo TIME OUT: Docker containers not started in $TIME_OUT seconds... Could cause problems for tests...
168#fi
169
170
171
172
173
174#Get current IP of VM
175HOST_IP=$(ip route get 8.8.8.8 | awk '/8.8.8.8/ {print $NF}')
176export HOST_IP=${HOST_IP}
177
178docker logs deliveries_portal-db_1
179docker logs deliveries_portal-app_1
180docker logs deliveries_portal-wms_1
181
182
183
184