blob: e51f499588b56118e8b3cd35a279a193f2c113bb [file] [log] [blame]
Michael Lando451a3402017-02-19 10:28:42 +02001#!/bin/bash
2
Areli, Fuss (af732p)062d4c12018-06-03 18:49:19 +03003#
4# Constants:
5#
6
7WORKSPACE="${WORKSPACE:-}"
8SUCCESS=0
9FAILURE=1
10
Yuli Shlosberg0875ce02018-01-25 13:53:36 +020011CS_PASSWORD="onap123#@!"
12SDC_USER="asdc_user"
13SDC_PASSWORD="Aa1234%^!"
Areli, Fuss (af732p)062d4c12018-06-03 18:49:19 +030014
Yuli Shlosberg958c32d2018-02-15 12:04:46 +020015JETTY_BASE="/var/lib/jetty"
kooperb087a8b2019-04-04 14:03:36 +000016SDC_CERT_DIR="onap/cert"
Areli, Fuss (af732p)062d4c12018-06-03 18:49:19 +030017
18RELEASE=latest
kaihlavi900985e2019-06-06 14:52:02 +030019
Areli, Fuss (af732p)062d4c12018-06-03 18:49:19 +030020LOCAL=false
Tal Gitelmanef4b94e2018-08-02 17:11:25 +030021BE_DEBUG_PORT="--publish 4000:4000"
22FE_DEBUG_PORT="--publish 6000:6000"
Tal Gitelmanc4d387d2019-03-28 11:00:54 +020023ONBOARD_DEBUG_PORT="--publish 4001:4001"
shrek20000594c412020-01-30 14:52:49 +020024CS_PORT=${CS_PORT:-9042}
Areli, Fuss (af732p)062d4c12018-06-03 18:49:19 +030025
26
27# Java Options:
Gitelman, Tal (tg851x)328388b2018-03-22 13:03:44 +020028BE_JAVA_OPTIONS="-Xdebug -agentlib:jdwp=transport=dt_socket,address=4000,server=y,suspend=n -Xmx1536m -Xms1536m"
29FE_JAVA_OPTIONS="-Xdebug -agentlib:jdwp=transport=dt_socket,address=6000,server=y,suspend=n -Xmx256m -Xms256m"
Avi Zivc175a0d2018-03-15 13:21:44 +020030ONBOARD_BE_JAVA_OPTIONS="-Xdebug -agentlib:jdwp=transport=dt_socket,address=4001,server=y,suspend=n -Xmx1g -Xms1g"
Yuli Shlosbergaf70a202018-09-25 17:16:48 +030031SIM_JAVA_OPTIONS=" -Xmx128m -Xms128m -Xss1m -Dlog4j.configuration=file:///${JETTY_BASE}/config/sdc-simulator/log4j.properties"
Yuli Shlosbergf59a2252018-03-21 11:14:08 +020032API_TESTS_JAVA_OPTIONS="-Xmx512m -Xms512m"
33UI_TESTS_JAVA_OPTIONS="-Xmx1024m -Xms1024m"
dekstroza83520062018-05-03 16:47:08 +010034#Define this as variable, so it can be excluded in run commands on Docker for OSX, as /etc/localtime cant be mounted there.
35LOCAL_TIME_MOUNT_CMD="--volume /etc/localtime:/etc/localtime:ro"
36# If os is OSX, unset this, so /etc/localtime is not mounted, otherwise leave it be
37if [[ "$OSTYPE" == "darwin"* ]]; then
38 LOCAL_TIME_MOUNT_CMD=""
39fi
40
41
Areli, Fuss (af732p)062d4c12018-06-03 18:49:19 +030042#
43# Functions:
44#
45
Michael Lando451a3402017-02-19 10:28:42 +020046
Grinberg Motic3bda482017-02-23 11:24:34 +020047function usage {
kaihlavi900985e2019-06-06 14:52:02 +030048 echo "usage: docker_run.sh [ -r|--release <RELEASE-NAME> ] [ -e|--environment <ENV-NAME> ] [ -p|--port <Docker-hub-port>] [ -l|--local <Run-without-pull>] [ -sim|--simulator <Run-with-simulator>] [ -ta <run api tests with the supplied test suit>] [ -tu <run ui tests with the supplied test suit>] [ -ta <run api tests with the supplied test suit>] [ -tu <run ui tests with the supplied test suit>] [ -tad <run api tests with the default test suit>] [ -tu <run ui tests with the default test suit>] [ -h|--help ]"
Michael Landodc856bb2018-08-13 13:27:52 +030049 echo "start dockers built locally example: docker_run.sh -l"
50 echo "start dockers built locally and simulator example: docker_run.sh -l -sim"
kaihlavib2372712019-05-27 16:28:23 +030051 echo "start dockers, pull from onap nexus according to release and simulator example: docker_run.sh -r 1.5-STAGING-latest -sim"
Michael Landodc856bb2018-08-13 13:27:52 +030052 echo "start dockers built locally and run api tests docker example: docker_run.sh -l -tad"
53 echo "start dockers built locally and run only the catalog be example: docker_run.sh -l -d sdc-BE "
Michael Lando451a3402017-02-19 10:28:42 +020054}
Areli, Fuss (af732p)062d4c12018-06-03 18:49:19 +030055#
Michael Lando451a3402017-02-19 10:28:42 +020056
57
Grinberg Motic3bda482017-02-23 11:24:34 +020058function cleanup {
Areli, Fuss (af732p)062d4c12018-06-03 18:49:19 +030059 echo "Performing old dockers cleanup"
Yuli Shlosberg958c32d2018-02-15 12:04:46 +020060
61 if [ "$1" == "all" ] ; then
k.kedron3643cc52019-08-28 15:01:51 +020062 docker_ids=`docker ps -a | egrep "ecomp-nexus:${PORT}/sdc|sdc|Exit}|dcae" | awk '{print $1}'`
Yuli Shlosberg958c32d2018-02-15 12:04:46 +020063 for X in ${docker_ids}
64 do
65 docker rm -f ${X}
66 done
67 else
68 echo "performing $1 docker cleanup"
69 tmp=`docker ps -a -q --filter="name=$1"`
Yuli Shlosberg474996a2018-02-27 18:55:25 +020070 if [[ ! -z "$tmp" ]]; then
Areli, Fuss (af732p)062d4c12018-06-03 18:49:19 +030071 docker rm -f ${tmp}
72 fi
Yuli Shlosberg958c32d2018-02-15 12:04:46 +020073 fi
Grinberg Motic3bda482017-02-23 11:24:34 +020074}
Areli, Fuss (af732p)062d4c12018-06-03 18:49:19 +030075#
Grinberg Motic3bda482017-02-23 11:24:34 +020076
Areli, Fuss (af732p)062d4c12018-06-03 18:49:19 +030077
Grinberg Motic3bda482017-02-23 11:24:34 +020078function dir_perms {
Michael Lando4b9b9472018-06-02 19:14:05 +030079 mkdir -p ${WORKSPACE}/data/logs/BE/SDC/SDC-BE
80 mkdir -p ${WORKSPACE}/data/logs/FE/SDC/SDC-FE
81 mkdir -p ${WORKSPACE}/data/logs/sdc-api-tests/ExtentReport
82 mkdir -p ${WORKSPACE}/data/logs/ONBOARD/SDC/ONBOARD-BE
kaihlavi900985e2019-06-06 14:52:02 +030083 mkdir -p ${WORKSPACE}/data/logs/sdc-api-tests/target
84 mkdir -p ${WORKSPACE}/data/logs/sdc-ui-tests/ExtentReport
85 mkdir -p ${WORKSPACE}/data/logs/sdc-ui-tests/target
86 mkdir -p ${WORKSPACE}/data/logs/docker_logs
87 mkdir -p ${WORKSPACE}/data/logs/WS
andre.schmidfa1db432019-10-29 17:18:22 +000088 echo "Creating dir '${WORKSPACE}/data/${SDC_CERT_DIR}'"
kaihlavi900985e2019-06-06 14:52:02 +030089 mkdir -p ${WORKSPACE}/data/${SDC_CERT_DIR}
Michael Lando4b9b9472018-06-02 19:14:05 +030090 chmod -R 777 ${WORKSPACE}/data/logs
Grinberg Motic3bda482017-02-23 11:24:34 +020091}
Areli, Fuss (af732p)062d4c12018-06-03 18:49:19 +030092#
93
Yuli Shlosberg36604c72018-02-25 16:03:45 +020094
Yuli Shlosbergb4deec12018-02-25 20:24:44 +020095function docker_logs {
Areli, Fuss (af732p)062d4c12018-06-03 18:49:19 +030096 docker logs $1 > ${WORKSPACE}/data/logs/docker_logs/$1_docker.log
Yuli Shlosbergb4deec12018-02-25 20:24:44 +020097}
Areli, Fuss (af732p)062d4c12018-06-03 18:49:19 +030098#
Yuli Shlosbergb4deec12018-02-25 20:24:44 +020099
Areli, Fuss (af732p)062d4c12018-06-03 18:49:19 +0300100
101#
102# Readiness Prob
103#
104
105function ready_probe {
Michael Lando4b9b9472018-06-02 19:14:05 +0300106 docker exec $1 /var/lib/ready-probe.sh > /dev/null 2>&1
107 rc=$?
Areli, Fuss (af732p)062d4c12018-06-03 18:49:19 +0300108 if [[ ${rc} == 0 ]]; then
109 echo DOCKER $1 start finished in $2 seconds
110 return ${SUCCESS}
Michael Lando4b9b9472018-06-02 19:14:05 +0300111 fi
Areli, Fuss (af732p)062d4c12018-06-03 18:49:19 +0300112 return ${FAILURE}
Yuli Shlosberg0875ce02018-01-25 13:53:36 +0200113}
Areli, Fuss (af732p)062d4c12018-06-03 18:49:19 +0300114#
Yuli Shlosberg0875ce02018-01-25 13:53:36 +0200115
MichaelMorrisa2abf6e2020-03-10 12:37:48 +0000116function ready_probe_jetty {
117 docker exec $1 /var/lib/jetty/ready-probe.sh > /dev/null 2>&1
118 rc=$?
119 if [[ ${rc} == 0 ]]; then
120 echo DOCKER $1 start finished in $2 seconds
121 return ${SUCCESS}
122 fi
123 return ${FAILURE}
124}
125#
Yuli Shlosberg958c32d2018-02-15 12:04:46 +0200126
Areli, Fuss (af732p)062d4c12018-06-03 18:49:19 +0300127function probe_docker {
128 MATCH=`docker logs --tail 30 $1 | grep "DOCKER STARTED"`
129 echo MATCH is -- ${MATCH}
Avi Zivc175a0d2018-03-15 13:21:44 +0200130
Areli, Fuss (af732p)062d4c12018-06-03 18:49:19 +0300131 if [ -n "$MATCH" ] ; then
132 echo DOCKER start finished in $2 seconds
133 return ${SUCCESS}
Michael Lando4b9b9472018-06-02 19:14:05 +0300134 fi
Areli, Fuss (af732p)062d4c12018-06-03 18:49:19 +0300135 return ${FAILURE}
Yuli Shlosberg958c32d2018-02-15 12:04:46 +0200136}
Areli, Fuss (af732p)062d4c12018-06-03 18:49:19 +0300137#
138
kaihlavi02f48802019-07-30 19:23:52 +0300139function probe_test_docker {
140 # This expected logging should be output by startup.sh of the
141 # respective test docker container
142 MATCH=`docker logs --tail 30 $1 | grep "Startup completed successfully"`
143 echo MATCH is -- ${MATCH}
144
145 if [ -n "$MATCH" ] ; then
146 echo TEST DOCKER start finished in $2 seconds
147 return ${SUCCESS}
148 fi
149 return ${FAILURE}
150}
151#
152
Yuli Shlosberg958c32d2018-02-15 12:04:46 +0200153
154function probe_es {
Michael Lando4b9b9472018-06-02 19:14:05 +0300155 health_Check_http_code=$(curl --noproxy "*" -o /dev/null -w '%{http_code}' http://${IP}:9200/_cluster/health?wait_for_status=yellow&timeout=120s)
Areli, Fuss (af732p)062d4c12018-06-03 18:49:19 +0300156 if [[ "$health_Check_http_code" -eq 200 ]] ; then
157 echo DOCKER start finished in $1 seconds
158 return ${SUCCESS}
159 fi
160 return ${FAILURE}
Yuli Shlosberg958c32d2018-02-15 12:04:46 +0200161}
Areli, Fuss (af732p)062d4c12018-06-03 18:49:19 +0300162#
163
Yuli Shlosberg958c32d2018-02-15 12:04:46 +0200164
Yuli Shlosbergf59a2252018-03-21 11:14:08 +0200165function probe_sim {
Michael Lando4b9b9472018-06-02 19:14:05 +0300166 if lsof -Pi :8285 -sTCP:LISTEN -t >/dev/null ; then
Areli, Fuss (af732p)062d4c12018-06-03 18:49:19 +0300167 echo "Already running"
168 return ${SUCCESS}
Michael Lando4b9b9472018-06-02 19:14:05 +0300169 else
Areli, Fuss (af732p)062d4c12018-06-03 18:49:19 +0300170 echo "Not running"
171 return ${FAILURE}
Michael Lando4b9b9472018-06-02 19:14:05 +0300172 fi
Yuli Shlosbergf59a2252018-03-21 11:14:08 +0200173}
Areli, Fuss (af732p)062d4c12018-06-03 18:49:19 +0300174#
Yuli Shlosbergf59a2252018-03-21 11:14:08 +0200175
Yuli Shlosberg0875ce02018-01-25 13:53:36 +0200176
Yuli Shlosberg5571a862017-10-03 18:18:51 +0300177function monitor_docker {
Areli, Fuss (af732p)062d4c12018-06-03 18:49:19 +0300178 DOCKER_NAME=$1
179 echo "Monitor ${DOCKER_NAME} Docker"
Idan Amitdb3d5542017-12-07 11:33:32 +0200180 sleep 5
181 TIME_OUT=900
182 INTERVAL=20
183 TIME=0
Avi Zivc175a0d2018-03-15 13:21:44 +0200184
Areli, Fuss (af732p)062d4c12018-06-03 18:49:19 +0300185 while [ "$TIME" -lt "$TIME_OUT" ]; do
186
187 case ${DOCKER_NAME} in
188
189 sdc-cs)
190 ready_probe ${DOCKER_NAME} ${TIME} ;
191 status=$? ;
192 ;;
Areli, Fuss (af732p)062d4c12018-06-03 18:49:19 +0300193 sdc-BE)
MichaelMorrisa2abf6e2020-03-10 12:37:48 +0000194 ready_probe_jetty ${DOCKER_NAME} ${TIME} ;
Areli, Fuss (af732p)062d4c12018-06-03 18:49:19 +0300195 status=$? ;
196 ;;
197 sdc-FE)
MichaelMorrisa2abf6e2020-03-10 12:37:48 +0000198 ready_probe_jetty ${DOCKER_NAME} ${TIME} ;
Areli, Fuss (af732p)062d4c12018-06-03 18:49:19 +0300199 status=$? ;
200 ;;
201 sdc-onboard-BE)
MichaelMorrisa2abf6e2020-03-10 12:37:48 +0000202 ready_probe_jetty ${DOCKER_NAME} ${TIME} ;
Areli, Fuss (af732p)062d4c12018-06-03 18:49:19 +0300203 status=$? ;
204 ;;
kaihlavi02f48802019-07-30 19:23:52 +0300205 sdc-api-tests)
206 probe_test_docker ${DOCKER_NAME} ${TIME};
207 status=$? ;
208 ;;
209 sdc-ui-tests)
210 probe_test_docker ${DOCKER_NAME} ${TIME};
211 status=$? ;
212 ;;
Areli, Fuss (af732p)062d4c12018-06-03 18:49:19 +0300213 *)
214 probe_docker ${DOCKER_NAME} ${TIME};
215 status=$? ;
216 ;;
217
218 esac
219
k.kedron3643cc52019-08-28 15:01:51 +0200220 if [[ ${status} == ${SUCCESS} ]] ; then
Areli, Fuss (af732p)062d4c12018-06-03 18:49:19 +0300221 break;
Idan Amitdb3d5542017-12-07 11:33:32 +0200222 fi
Areli, Fuss (af732p)062d4c12018-06-03 18:49:19 +0300223
224 echo "Sleep: ${INTERVAL} seconds before testing if ${DOCKER_NAME} DOCKER is up. Total wait time up now is: ${TIME} seconds. Timeout is: ${TIME_OUT} seconds"
225 sleep ${INTERVAL}
Idan Amitdb3d5542017-12-07 11:33:32 +0200226 TIME=$(($TIME+$INTERVAL))
227 done
Yuli Shlosberg5571a862017-10-03 18:18:51 +0300228
Areli, Fuss (af732p)062d4c12018-06-03 18:49:19 +0300229 docker_logs ${DOCKER_NAME}
Yuli Shlosberg36604c72018-02-25 16:03:45 +0200230
Idan Amitdb3d5542017-12-07 11:33:32 +0200231 if [ "$TIME" -ge "$TIME_OUT" ]; then
232 echo -e "\e[1;31mTIME OUT: DOCKER was NOT fully started in $TIME_OUT seconds... Could cause problems ...\e[0m"
233 fi
Yuli Shlosberg5571a862017-10-03 18:18:51 +0300234}
Areli, Fuss (af732p)062d4c12018-06-03 18:49:19 +0300235#
236
k.kedron3643cc52019-08-28 15:01:51 +0200237# healthCheck script used the secure connection to send request (https is always turn on)
Yuli Shlosbergd1bb2e52018-01-15 11:51:21 +0200238function healthCheck {
Yuli Shlosberg474996a2018-02-27 18:55:25 +0200239 curl --noproxy "*" ${IP}:9200/_cluster/health?pretty=true
Yuli Shlosbergd1bb2e52018-01-15 11:51:21 +0200240
kaihlavi900985e2019-06-06 14:52:02 +0300241 echo "BE Health Check:"
k.kedron3643cc52019-08-28 15:01:51 +0200242 curl -k --noproxy "*" https://${IP}:8443/sdc2/rest/healthCheck
Yuli Shlosbergd1bb2e52018-01-15 11:51:21 +0200243
244 echo ""
245 echo ""
kaihlavi900985e2019-06-06 14:52:02 +0300246 echo "FE Health Check:"
k.kedron3643cc52019-08-28 15:01:51 +0200247 curl -k --noproxy "*" https://${IP}:9443/sdc1/rest/healthCheck
Yuli Shlosbergd1bb2e52018-01-15 11:51:21 +0200248
249
250 echo ""
251 echo ""
k.kedron3643cc52019-08-28 15:01:51 +0200252 healthCheck_http_code=$(curl -k --noproxy "*" -o /dev/null -w '%{http_code}' -H "Accept: application/json" -H "Content-Type: application/json" -H "USER_ID: jh0003" https://${IP}:8443/sdc2/rest/v1/user/demo;)
Areli, Fuss (af732p)062d4c12018-06-03 18:49:19 +0300253 if [[ ${healthCheck_http_code} != 200 ]]; then
kaihlavi900985e2019-06-06 14:52:02 +0300254 echo "Error [${healthCheck_http_code}] while checking existence of user"
Yuli Shlosbergd1bb2e52018-01-15 11:51:21 +0200255 return ${healthCheck_http_code}
256 fi
kaihlavi900985e2019-06-06 14:52:02 +0300257 echo "check user existence: OK"
Yuli Shlosbergd1bb2e52018-01-15 11:51:21 +0200258 return ${healthCheck_http_code}
259}
Areli, Fuss (af732p)062d4c12018-06-03 18:49:19 +0300260#
Yuli Shlosbergd1bb2e52018-01-15 11:51:21 +0200261
Tal Gitelmane224d0b2017-10-17 15:24:25 +0300262
Areli, Fuss (af732p)062d4c12018-06-03 18:49:19 +0300263function command_exit_status {
264 status=$1
265 docker=$2
266 if [ "${status}" != "0" ] ; then
267 echo "[ ERROR ] Docker ${docker} run command exit with status [${status}]"
268 fi
269}
270#
271
272
273#
274# Run Containers
275#
276
Areli, Fuss (af732p)062d4c12018-06-03 18:49:19 +0300277
278#Cassandra
279function sdc-cs {
280 DOCKER_NAME="sdc-cs"
281 echo "docker run sdc-cassandra..."
282 if [ ${LOCAL} = false ]; then
283 docker pull ${PREFIX}/sdc-cassandra:${RELEASE}
284 fi
shrek20000594c412020-01-30 14:52:49 +0200285 docker run -dit --name ${DOCKER_NAME} --env RELEASE="${RELEASE}" --env CS_PASSWORD="${CS_PASSWORD}" --env ENVNAME="${DEP_ENV}" --env HOST_IP=${IP} --env MAX_HEAP_SIZE="1536M" --env HEAP_NEWSIZE="512M" --log-driver=json-file --log-opt max-size=100m --log-opt max-file=10 --ulimit memlock=-1:-1 --ulimit nofile=4096:100000 ${LOCAL_TIME_MOUNT_CMD} --volume ${WORKSPACE}/data/CS:/var/lib/cassandra --volume ${WORKSPACE}/data/environments:/root/chef-solo/environments --publish ${CS_PORT}:${CS_PORT} ${PREFIX}/sdc-cassandra:${RELEASE} /bin/sh
Areli, Fuss (af732p)062d4c12018-06-03 18:49:19 +0300286 command_exit_status $? ${DOCKER_NAME}
287 echo "please wait while CS is starting..."
288 monitor_docker ${DOCKER_NAME}
289}
290#
291
292
293#Cassandra-init
294function sdc-cs-init {
295 DOCKER_NAME="sdc-cs-init"
296 echo "docker run sdc-cassandra-init..."
297 if [ ${LOCAL} = false ]; then
298 docker pull ${PREFIX}/sdc-cassandra-init:${RELEASE}
299 fi
MichaelMorrisa2abf6e2020-03-10 12:37:48 +0000300 docker run --name ${DOCKER_NAME} --env RELEASE="${RELEASE}" --env SDC_USER="${SDC_USER}" --env SDC_PASSWORD="${SDC_PASSWORD}" --env CS_PASSWORD="${CS_PASSWORD}" --env ENVNAME="${DEP_ENV}" --env HOST_IP=${IP} --log-driver=json-file --log-opt max-size=100m --log-opt max-file=10 --ulimit memlock=-1:-1 --ulimit nofile=4096:100000 ${LOCAL_TIME_MOUNT_CMD} --volume ${WORKSPACE}/data/CS:/var/lib/cassandra --volume ${WORKSPACE}/data/environments:/home/sdc/chef-solo/environments --volume ${WORKSPACE}/data/CS-Init:/root/chef-solo/cache ${PREFIX}/sdc-cassandra-init:${RELEASE} > /dev/null 2>&1
Areli, Fuss (af732p)062d4c12018-06-03 18:49:19 +0300301 rc=$?
302 docker_logs ${DOCKER_NAME}
303 if [[ ${rc} != 0 ]]; then exit ${rc}; fi
304}
305#
306
307
308#Onboard Cassandra-init
309function sdc-cs-onboard-init {
310 DOCKER_NAME="sdc-cs-onboard-init"
311 echo "docker run sdc-cs-onboard-init..."
312 if [ ${LOCAL} = false ]; then
313 docker pull ${PREFIX}/sdc-onboard-cassandra-init:${RELEASE}
314 fi
MichaelMorrisa2abf6e2020-03-10 12:37:48 +0000315 docker run --name ${DOCKER_NAME} --env RELEASE="${RELEASE}" --env CS_HOST_IP=${IP} --env CS_HOST_PORT=${CS_PORT} --env SDC_USER="${SDC_USER}" --env SDC_PASSWORD="${SDC_PASSWORD}" --env CS_PASSWORD="${CS_PASSWORD}" --env ENVNAME="${DEP_ENV}" --log-driver=json-file --log-opt max-size=100m --log-opt max-file=10 --ulimit memlock=-1:-1 --ulimit nofile=4096:100000 ${LOCAL_TIME_MOUNT_CMD} --volume ${WORKSPACE}/data/CS:/var/lib/cassandra --volume ${WORKSPACE}/data/environments:/home/sdc/chef-solo/environments --volume ${WORKSPACE}/data/CS-Init:/home/sdc/chef-solo/cache ${PREFIX}/sdc-onboard-cassandra-init:${RELEASE}
Areli, Fuss (af732p)062d4c12018-06-03 18:49:19 +0300316 rc=$?
317 docker_logs ${DOCKER_NAME}
318 if [[ ${rc} != 0 ]]; then exit ${rc}; fi
319}
320#
321
322
Areli, Fuss (af732p)062d4c12018-06-03 18:49:19 +0300323#Back-End
324function sdc-BE {
325 DOCKER_NAME="sdc-BE"
326 echo "docker run sdc-backend..."
327 if [ ${LOCAL} = false ]; then
328 docker pull ${PREFIX}/sdc-backend:${RELEASE}
329 else
Tal Gitelmanef4b94e2018-08-02 17:11:25 +0300330 ADDITIONAL_ARGUMENTS=${BE_DEBUG_PORT}
Areli, Fuss (af732p)062d4c12018-06-03 18:49:19 +0300331 fi
MichaelMorrisa2abf6e2020-03-10 12:37:48 +0000332 docker run --detach --name ${DOCKER_NAME} --env HOST_IP=${IP} --env ENVNAME="${DEP_ENV}" --env cassandra_ssl_enabled="false" --env JAVA_OPTIONS="${BE_JAVA_OPTIONS}" --log-driver=json-file --log-opt max-size=100m --log-opt max-file=10 --ulimit memlock=-1:-1 --ulimit nofile=4096:100000 ${LOCAL_TIME_MOUNT_CMD} --volume ${WORKSPACE}/data/logs/BE/:${JETTY_BASE}/logs --volume ${WORKSPACE}/data/environments:${JETTY_BASE}/chef-solo/environments --publish 8443:8443 --publish 8080:8080 ${ADDITIONAL_ARGUMENTS} ${PREFIX}/sdc-backend:${RELEASE}
Areli, Fuss (af732p)062d4c12018-06-03 18:49:19 +0300333 command_exit_status $? ${DOCKER_NAME}
334 echo "please wait while BE is starting..."
335 monitor_docker ${DOCKER_NAME}
336}
337#
338
339
340# Back-End-Init
341function sdc-BE-init {
342 DOCKER_NAME="sdc-BE-init"
343 echo "docker run sdc-backend-init..."
344 if [ ${LOCAL} = false ]; then
345 docker pull ${PREFIX}/sdc-backend-init:${RELEASE}
346 fi
MichaelMorrisa2abf6e2020-03-10 12:37:48 +0000347 docker run --name ${DOCKER_NAME} --env HOST_IP=${IP} --env ENVNAME="${DEP_ENV}" --log-driver=json-file --log-opt max-size=100m --log-opt max-file=10 --ulimit memlock=-1:-1 --ulimit nofile=4096:100000 ${LOCAL_TIME_MOUNT_CMD} --volume ${WORKSPACE}/data/logs/BE/:${JETTY_BASE}/logs --volume ${WORKSPACE}/data/environments:/home/sdc/chef-solo/environments ${PREFIX}/sdc-backend-init:${RELEASE} > /dev/null 2>&1
Areli, Fuss (af732p)062d4c12018-06-03 18:49:19 +0300348 rc=$?
349 docker_logs ${DOCKER_NAME}
350 if [[ ${rc} != 0 ]]; then exit ${rc}; fi
351}
352#
353
354
355# Onboard Back-End
356function sdc-onboard-BE {
357 DOCKER_NAME="sdc-onboard-BE"
358 echo "docker run sdc-onboard-BE ..."
359# TODO Check the dir_perms action . do we need it here ??
360# dir_perms
361 if [ ${LOCAL} = false ]; then
362 docker pull ${PREFIX}/sdc-onboard-backend:${RELEASE}
363 else
364 ADDITIONAL_ARGUMENTS=${ONBOARD_DEBUG_PORT}
365 fi
MichaelMorrisa2abf6e2020-03-10 12:37:48 +0000366 docker run --detach --name ${DOCKER_NAME} --env HOST_IP=${IP} --env ENVNAME="${DEP_ENV}" --env cassandra_ssl_enabled="false" --env SDC_CLUSTER_NAME="SDC-CS-${DEP_ENV}" --env SDC_USER="${SDC_USER}" --env SDC_PASSWORD="${SDC_PASSWORD}" --env SDC_CERT_DIR="${SDC_CERT_DIR}" --env JAVA_OPTIONS="${ONBOARD_BE_JAVA_OPTIONS}" --log-driver=json-file --log-opt max-size=100m --log-opt max-file=10 --ulimit memlock=-1:-1 --ulimit nofile=4096:100000 ${LOCAL_TIME_MOUNT_CMD} --volume ${WORKSPACE}/data/${SDC_CERT_DIR}:${JETTY_BASE}/onap/cert --volume ${WORKSPACE}/data/logs/ONBOARD:${JETTY_BASE}/logs --volume ${WORKSPACE}/data/environments:/${JETTY_BASE}/chef-solo/environments --publish 8445:8445 --publish 8081:8081 ${ADDITIONAL_ARGUMENTS} ${PREFIX}/sdc-onboard-backend:${RELEASE}
Areli, Fuss (af732p)062d4c12018-06-03 18:49:19 +0300367 command_exit_status $? ${DOCKER_NAME}
368 echo "please wait while sdc-onboard-BE is starting..."
369 monitor_docker ${DOCKER_NAME}
370}
371#
372
373
374# Front-End
375function sdc-FE {
376 DOCKER_NAME="sdc-FE"
Dmitry Puzikov0574f882020-03-05 18:03:15 +0100377 IMAGE_NAME="${PREFIX}/sdc-frontend:${RELEASE}"
378 echo "Running container '${DOCKER_NAME}' based on '${IMAGE_NAME}' image..."
Areli, Fuss (af732p)062d4c12018-06-03 18:49:19 +0300379 if [ ${LOCAL} = false ]; then
380 docker pull ${PREFIX}/sdc-frontend:${RELEASE}
Tal Gitelmanef4b94e2018-08-02 17:11:25 +0300381 else
382 ADDITIONAL_ARGUMENTS=${FE_DEBUG_PORT}
Areli, Fuss (af732p)062d4c12018-06-03 18:49:19 +0300383 fi
Dmitry Puzikov0574f882020-03-05 18:03:15 +0100384
385 PLUGIN_CONFIG_FILE="${WORKSPACE}/data/environments/plugins-configuration.yaml"
386 if [[ -f ${WORKSPACE}/data/environments/plugins-configuration.yaml ]]; then
387 PLUGINS_CONF_VOLUME_MOUNT="--volume ${PLUGIN_CONFIG_FILE}:${JETTY_BASE}/config/catalog-fe/plugins-configuration.yaml"
388 else
389 echo "INFO: '${PLUGIN_CONFIG_FILE}' not provided, ignoring..."
390 fi
391
392 docker run \
393 --detach \
394 --name ${DOCKER_NAME} \
395 --env HOST_IP=${IP} \
396 --env ENVNAME="${DEP_ENV}" \
397 --env JAVA_OPTIONS="${FE_JAVA_OPTIONS}" \
398 --log-driver=json-file \
399 --log-opt max-size=100m \
400 --log-opt max-file=10 \
401 --ulimit memlock=-1:-1 \
402 --ulimit nofile=4096:100000 \
403 --volume ${WORKSPACE}/data/logs/FE/:${JETTY_BASE}/logs \
MichaelMorrisa2abf6e2020-03-10 12:37:48 +0000404 --volume ${WORKSPACE}/data/environments:/${JETTY_BASE}/chef-solo/environments \
Dmitry Puzikov0574f882020-03-05 18:03:15 +0100405 ${LOCAL_TIME_MOUNT_CMD} \
406 ${PLUGINS_CONF_VOLUME_MOUNT} \
407 --publish 9443:9443 \
408 --publish 8181:8181 \
409 ${ADDITIONAL_ARGUMENTS} \
410 ${IMAGE_NAME}
411
Areli, Fuss (af732p)062d4c12018-06-03 18:49:19 +0300412 command_exit_status $? ${DOCKER_NAME}
Dmitry Puzikov0574f882020-03-05 18:03:15 +0100413 echo "Please wait while '${DOCKER_NAME}' container is starting..."
Areli, Fuss (af732p)062d4c12018-06-03 18:49:19 +0300414 monitor_docker ${DOCKER_NAME}
415}
416#
417
418
Areli, Fuss (af732p)062d4c12018-06-03 18:49:19 +0300419# apis-sanity
420function sdc-api-tests {
421 if [[ ${RUN_API_TESTS} = true ]] ; then
Yuli Shlosbergd0eaeca2018-07-19 17:54:15 +0300422 healthCheck
423 healthCheck_http_code=$?
Areli, Fuss (af732p)062d4c12018-06-03 18:49:19 +0300424 if [[ ${healthCheck_http_code} == 200 ]] ; then
425 echo "docker run sdc-api-tests..."
426 echo "Trigger sdc-api-tests docker, please wait..."
427
428 if [ ${LOCAL} = false ]; then
429 docker pull ${PREFIX}/sdc-api-tests:${RELEASE}
430 fi
431
AndyWalshec1835f32019-04-25 11:20:38 +0000432 docker run --detach --name sdc-api-tests --env HOST_IP=${IP} --env ENVNAME="${DEP_ENV}" --env JAVA_OPTIONS="${API_TESTS_JAVA_OPTIONS}" --env SUITE_NAME=${API_SUITE} --log-driver=json-file --log-opt max-size=100m --log-opt max-file=10 --ulimit memlock=-1:-1 --ulimit nofile=4096:100000 ${LOCAL_TIME_MOUNT_CMD} --volume ${WORKSPACE}/data/logs/sdc-api-tests/target:/var/lib/tests/target --volume ${WORKSPACE}/data/logs/sdc-api-tests/ExtentReport:/var/lib/tests/ExtentReport --volume ${WORKSPACE}/data/logs/sdc-api-tests/outputCsar:/var/lib/tests/outputCsar --volume ${WORKSPACE}/data/environments:/root/chef-solo/environments --volume ${WORKSPACE}/data/${SDC_CERT_DIR}:/var/lib/tests/cert --publish 9560:9560 ${PREFIX}/sdc-api-tests:${RELEASE} echo "please wait while SDC-API-TESTS is starting....."
Areli, Fuss (af732p)062d4c12018-06-03 18:49:19 +0300433 monitor_docker sdc-api-tests
434 fi
435 fi
436}
437#
438
439
440# ui-sanity
441function sdc-ui-tests {
442
443 if [[ ${RUN_UI_TESTS} = true ]] ; then
Yuli Shlosbergd0eaeca2018-07-19 17:54:15 +0300444 healthCheck
445 healthCheck_http_code=$?
Areli, Fuss (af732p)062d4c12018-06-03 18:49:19 +0300446 if [[ ${healthCheck_http_code} == 200 ]]; then
447 echo "docker run sdc-ui-tets..."
448 echo "Trigger sdc-ui-tests docker, please wait..."
449
450 if [ ${LOCAL} = false ]; then
451 docker pull ${PREFIX}/sdc-ui-tests:${RELEASE}
452 fi
Michael Landodc856bb2018-08-13 13:27:52 +0300453 RUN_SIMULATOR=true;
Areli, Fuss (af732p)062d4c12018-06-03 18:49:19 +0300454 sdc-sim
455 docker run --detach --name sdc-ui-tests --env HOST_IP=${IP} --env ENVNAME="${DEP_ENV}" --env JAVA_OPTIONS="${UI_TESTS_JAVA_OPTIONS}" --env SUITE_NAME=${UI_SUITE} --log-driver=json-file --log-opt max-size=100m --log-opt max-file=10 --ulimit memlock=-1:-1 --ulimit nofile=4096:100000 ${LOCAL_TIME_MOUNT_CMD} --volume ${WORKSPACE}/data/logs/sdc-ui-tests/target:/var/lib/tests/target --volume ${WORKSPACE}/data/logs/sdc-ui-tests/ExtentReport:/var/lib/tests/ExtentReport --volume ${WORKSPACE}/data/environments:/root/chef-solo/environments --publish 5901:5901 --publish 6901:6901 ${PREFIX}/sdc-ui-tests:${RELEASE}
456 echo "please wait while SDC-UI-TESTS is starting....."
457 monitor_docker sdc-ui-tests
458 fi
459 fi
460}
461#
462
463
464# SDC-Simulator
465function sdc-sim {
Lianhao Lu26166842018-09-07 10:42:10 +0800466 if [ "${RUN_SIMULATOR}" == true ]; then
Michael Landodc856bb2018-08-13 13:27:52 +0300467 echo "docker run sdc-webSimulator..."
468 if [ ${LOCAL} = false ]; then
469 docker pull ${PREFIX}/sdc-simulator:${RELEASE}
470 fi
Areli, Fuss (af732p)062d4c12018-06-03 18:49:19 +0300471
Michael Landodc856bb2018-08-13 13:27:52 +0300472 probe_sim
473 sim_stat=$?
Michael Landob751c962018-08-20 11:34:04 +0300474 if [ ${sim_stat} == 1 ]; then
Michael Landodc856bb2018-08-13 13:27:52 +0300475 docker run \
476 --detach \
477 --name sdc-sim \
478 --env FE_URL="${FE_URL}" \
479 --env JAVA_OPTIONS="${SIM_JAVA_OPTIONS}" \
480 --env ENVNAME="${DEP_ENV}" \
481 ${LOCAL_TIME_MOUNT_CMD} \
andre.schmidfa1db432019-10-29 17:18:22 +0000482 --volume ${WORKSPACE}/data/logs/WS/:${JETTY_BASE}/logs \
Michael Landodc856bb2018-08-13 13:27:52 +0300483 --volume ${WORKSPACE}/data/environments:/root/chef-solo/environments \
484 --publish 8285:8080 \
485 --publish 8286:8443 ${PREFIX}/sdc-simulator:${RELEASE}
486 echo "please wait while SDC-WEB-SIMULATOR is starting....."
487 monitor_docker sdc-sim
488 fi
Areli, Fuss (af732p)062d4c12018-06-03 18:49:19 +0300489 fi
490}
491#
492
493
494#
495# Main
496#
497
498# Handle command line arguments
Idan Amitdb3d5542017-12-07 11:33:32 +0200499while [ $# -gt 0 ]; do
Michael Lando451a3402017-02-19 10:28:42 +0200500 case $1 in
Areli, Fuss (af732p)062d4c12018-06-03 18:49:19 +0300501
Idan Amitdb3d5542017-12-07 11:33:32 +0200502 # -r | --release - The specific docker version to pull and deploy
Yuli Shlosberg0566f582017-11-26 19:05:23 +0200503 -r | --release )
504 shift 1 ;
505 RELEASE=$1;
506 shift 1;;
Areli, Fuss (af732p)062d4c12018-06-03 18:49:19 +0300507
Idan Amitdb3d5542017-12-07 11:33:32 +0200508 # -e | --environment - The environment name you want to deploy
Yuli Shlosberg0566f582017-11-26 19:05:23 +0200509 -e | --environment )
510 shift 1;
511 DEP_ENV=$1;
512 shift 1 ;;
Areli, Fuss (af732p)062d4c12018-06-03 18:49:19 +0300513
Idan Amitdb3d5542017-12-07 11:33:32 +0200514 # -p | --port - The port from which to connect to the docker nexus
Yuli Shlosberg0566f582017-11-26 19:05:23 +0200515 -p | --port )
516 shift 1 ;
517 PORT=$1;
518 shift 1 ;;
Areli, Fuss (af732p)062d4c12018-06-03 18:49:19 +0300519
Idan Amitdb3d5542017-12-07 11:33:32 +0200520 # -l | --local - Use this for deploying your local dockers without pulling them first
Yuli Shlosberg0566f582017-11-26 19:05:23 +0200521 -l | --local )
522 LOCAL=true;
523 shift 1;;
Areli, Fuss (af732p)062d4c12018-06-03 18:49:19 +0300524
Yuli Shlosbergf59a2252018-03-21 11:14:08 +0200525 # -ta - Use this for running the APIs sanity docker after all other dockers have been deployed
526 -ta )
527 shift 1 ;
528 API_SUITE=$1;
529 RUN_API_TESTS=true;
530 shift 1 ;;
Areli, Fuss (af732p)062d4c12018-06-03 18:49:19 +0300531
Yuli Shlosbergf59a2252018-03-21 11:14:08 +0200532 # -tu - Use this for running the UI sanity docker after all other dockers have been deployed
533 -tu )
534 shift 1 ;
535 UI_SUITE=$1;
536 RUN_UI_TESTS=true;
537 shift 1 ;;
Areli, Fuss (af732p)062d4c12018-06-03 18:49:19 +0300538
Yuli Shlosbergf59a2252018-03-21 11:14:08 +0200539 # -tad - Use this for running the DEFAULT suite of tests in APIs sanity docker after all other dockers have been deployed
540 -tad | -t )
541 API_SUITE="onapApiSanity";
542 RUN_API_TESTS=true;
543 shift 1 ;;
Areli, Fuss (af732p)062d4c12018-06-03 18:49:19 +0300544
Yuli Shlosbergf59a2252018-03-21 11:14:08 +0200545 # -tud - Use this for running the DEFAULT suite of tests in UI sanity docker after all other dockers have been deployed
546 -tud )
547 UI_SUITE="onapUiSanity";
548 RUN_UI_TESTS=true;
Yuli Shlosberg0566f582017-11-26 19:05:23 +0200549 shift 1 ;;
Areli, Fuss (af732p)062d4c12018-06-03 18:49:19 +0300550
Yuli Shlosberg958c32d2018-02-15 12:04:46 +0200551 # -d | --docker - The init specified docker
552 -d | --docker )
553 shift 1 ;
554 DOCKER=$1;
555 shift 1 ;;
Michael Landodc856bb2018-08-13 13:27:52 +0300556 # -sim | --simulator run the simulator
557 -sim | --simulator )
kaihlavib2372712019-05-27 16:28:23 +0300558 RUN_SIMULATOR=true;
559 shift 1 ;;
Michael Landodc856bb2018-08-13 13:27:52 +0300560 # -sim | --simulator run the simulator
561 -u | --fe_url )
kaihlavib2372712019-05-27 16:28:23 +0300562 shift 1 ;
563 FE_URL=$1;
564 shift 1 ;;
Areli, Fuss (af732p)062d4c12018-06-03 18:49:19 +0300565
Idan Amitdb3d5542017-12-07 11:33:32 +0200566 # -h | --help - Display the help message with all the available run options
Yuli Shlosberg0566f582017-11-26 19:05:23 +0200567 -h | --help )
568 usage;
Areli, Fuss (af732p)062d4c12018-06-03 18:49:19 +0300569 exit ${SUCCESS};;
570
Yuli Shlosberg0566f582017-11-26 19:05:23 +0200571 * )
572 usage;
Areli, Fuss (af732p)062d4c12018-06-03 18:49:19 +0300573 exit ${FAILURE};;
Michael Lando451a3402017-02-19 10:28:42 +0200574 esac
Michael Lando451a3402017-02-19 10:28:42 +0200575done
576
Areli, Fuss (af732p)062d4c12018-06-03 18:49:19 +0300577
liang dingd73c2872018-09-27 19:07:02 -0700578#Prefix those with WORKSPACE so it can be set to something other than /opt
dekstroza83520062018-05-03 16:47:08 +0100579[ -f ${WORKSPACE}/opt/config/env_name.txt ] && DEP_ENV=$(cat ${WORKSPACE}/opt/config/env_name.txt) || echo ${DEP_ENV}
580[ -f ${WORKSPACE}/opt/config/nexus_username.txt ] && NEXUS_USERNAME=$(cat ${WORKSPACE}/opt/config/nexus_username.txt) || NEXUS_USERNAME=release
581[ -f ${WORKSPACE}/opt/config/nexus_password.txt ] && NEXUS_PASSWD=$(cat ${WORKSPACE}/opt/config/nexus_password.txt) || NEXUS_PASSWD=sfWU3DFVdBr7GVxB85mTYgAW
582[ -f ${WORKSPACE}/opt/config/nexus_docker_repo.txt ] && NEXUS_DOCKER_REPO=$(cat ${WORKSPACE}/opt/config/nexus_docker_repo.txt) || NEXUS_DOCKER_REPO=nexus3.onap.org:${PORT}
583[ -f ${WORKSPACE}/opt/config/nexus_username.txt ] && docker login -u $NEXUS_USERNAME -p $NEXUS_PASSWD $NEXUS_DOCKER_REPO
Michael Lando451a3402017-02-19 10:28:42 +0200584
Areli, Fuss (af732p)062d4c12018-06-03 18:49:19 +0300585
Yuli Shlosbergd1bb2e52018-01-15 11:51:21 +0200586export IP=`ip route get 8.8.8.8 | awk '/src/{ print $7 }'`
dekstroza83520062018-05-03 16:47:08 +0100587#If OSX, then use this to get IP
588if [[ "$OSTYPE" == "darwin"* ]]; then
589 export IP=$(ipconfig getifaddr en0)
590fi
Idan Amitdb3d5542017-12-07 11:33:32 +0200591export PREFIX=${NEXUS_DOCKER_REPO}'/onap'
Idan Amitc7f57ec2017-08-31 14:26:21 +0300592
593if [ ${LOCAL} = true ]; then
Idan Amitdb3d5542017-12-07 11:33:32 +0200594 PREFIX='onap'
Idan Amitc7f57ec2017-08-31 14:26:21 +0300595fi
Michael Lando451a3402017-02-19 10:28:42 +0200596
597echo ""
598
Yuli Shlosberg958c32d2018-02-15 12:04:46 +0200599if [ -z "${DOCKER}" ]; then
k.kedron3643cc52019-08-28 15:01:51 +0200600 cleanup all
601 dir_perms
k.kedron3643cc52019-08-28 15:01:51 +0200602 sdc-cs
603 sdc-cs-init
k.kedron3643cc52019-08-28 15:01:51 +0200604 sdc-cs-onboard-init
605 sdc-onboard-BE
606 sdc-BE
607 sdc-BE-init
608 sdc-FE
609 healthCheck
610 sdc-sim
611 sdc-api-tests
612 sdc-ui-tests
Yuli Shlosberg958c32d2018-02-15 12:04:46 +0200613else
k.kedron3643cc52019-08-28 15:01:51 +0200614 cleanup ${DOCKER}
615 dir_perms
616 ${DOCKER}
617 healthCheck
Yuli Shlosberg958c32d2018-02-15 12:04:46 +0200618fi