aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--test/csit/scripts/sdc/start_sdc_containers.sh69
1 files changed, 38 insertions, 31 deletions
diff --git a/test/csit/scripts/sdc/start_sdc_containers.sh b/test/csit/scripts/sdc/start_sdc_containers.sh
index 4db0485d5..0dd373256 100644
--- a/test/csit/scripts/sdc/start_sdc_containers.sh
+++ b/test/csit/scripts/sdc/start_sdc_containers.sh
@@ -35,6 +35,38 @@ export IP=$HOST_IP
#export PREFIX=${NEXUS_DOCKER_REPO}'/openecomp'
export PREFIX='nexus3.onap.org:10001/openecomp'
+
+function monitor_docker {
+
+echo monitor $1 Docker
+sleep 5
+TIME_OUT=800
+INTERVAL=20
+TIME=0
+while [ "$TIME" -lt "$TIME_OUT" ]; do
+
+MATCH=`docker logs --tail 30 $1 | grep "DOCKER STARTED"`
+echo MATCH is -- $MATCH
+
+if [ -n "$MATCH" ]
+ then
+ echo DOCKER start finished in $TIME seconds
+ break
+ fi
+
+ echo Sleep: $INTERVAL seconds before testing if $1 DOCKER 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 -e "\e[1;31mTIME OUT: DOCKER was NOT fully started in $TIME_OUT seconds... Could cause problems ...\e[0m"
+fi
+
+
+}
+
#start Elastic-Search
docker run --detach --name sdc-es --env ENVNAME="${DEP_ENV}" --log-driver=json-file --log-opt max-size=100m --log-opt max-file=10 --memory 1g --memory-swap=1g --ulimit memlock=-1:-1 --ulimit nofile=4096:100000 --volume /etc/localtime:/etc/localtime:ro -e ES_HEAP_SIZE=1024M --volume ${WORKSPACE}/data/ES:/usr/share/elasticsearch/data --volume ${WORKSPACE}/data/environments:/root/chef-solo/environments --publish 9200:9200 --publish 9300:9300 ${PREFIX}/sdc-elasticsearch:${RELEASE}
@@ -42,15 +74,7 @@ docker run --detach --name sdc-es --env ENVNAME="${DEP_ENV}" --log-driver=json-f
docker run --detach --name sdc-cs --env RELEASE="${RELEASE}" --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 --volume /etc/localtime:/etc/localtime:ro --volume ${WORKSPACE}/data/CS:/var/lib/cassandra --volume ${WORKSPACE}/data/environments:/root/chef-solo/environments --publish 9042:9042 --publish 9160:9160 ${PREFIX}/sdc-cassandra:${RELEASE}
echo "please wait while CS is starting..."
-echo ""
-c=120 # seconds to wait
-REWRITE="\e[25D\e[1A\e[K"
-while [ $c -gt 0 ]; do
- c=$((c-1))
- sleep 1
- echo -e "${REWRITE}$c"
-done
-echo -e ""
+monitor_docker sdc-cs
#start kibana
@@ -60,34 +84,17 @@ echo -e ""
docker run --detach --name sdc-BE --env HOST_IP=${IP} --env ENVNAME="${DEP_ENV}" --env http_proxy=${http_proxy} --env https_proxy=${https_proxy} --env no_proxy=${no_proxy} --log-driver=json-file --log-opt max-size=100m --log-opt max-file=10 --ulimit memlock=-1:-1 --memory 4g --memory-swap=4g --ulimit nofile=4096:100000 --volume /etc/localtime:/etc/localtime:ro --volume ${WORKSPACE}/data/logs/BE/:/var/lib/jetty/logs --volume ${WORKSPACE}/data/environments:/root/chef-solo/environments --publish 8443:8443 --publish 8080:8080 ${PREFIX}/sdc-backend:${RELEASE}
echo "please wait while BE is starting..."
-echo ""
-c=180 # seconds to wait
-REWRITE="\e[45D\e[1A\e[K"
-while [ $c -gt 0 ]; do
- c=$((c-1))
- sleep 1
- echo -e "${REWRITE}$c"
-done
-echo -e ""
+monitor_docker sdc-BE
#start Front-End
docker run --detach --name sdc-FE --env HOST_IP=${IP} --env ENVNAME="${DEP_ENV}" --env http_proxy=${http_proxy} --env https_proxy=${https_proxy} --env no_proxy=${no_proxy} --log-driver=json-file --log-opt max-size=100m --log-opt max-file=10 --ulimit memlock=-1:-1 --memory 2g --memory-swap=2g --ulimit nofile=4096:100000 --volume /etc/localtime:/etc/localtime:ro --volume ${WORKSPACE}/data/logs/FE/:/var/lib/jetty/logs --volume ${WORKSPACE}/data/environments:/root/chef-solo/environments --publish 9443:9443 --publish 8181:8181 ${PREFIX}/sdc-frontend:${RELEASE}
-echo "please wait while FE is starting..."
-echo ""
-c=160 # seconds to wait
-REWRITE="\e[45D\e[1A\e[K"
-while [ $c -gt 0 ]; do
- c=$((c-1))
- sleep 1
- echo -e "${REWRITE}$c"
-done
-echo -e ""
+echo "docker run sdc-frontend..."
+monitor_docker sdc-FE
-# WAIT 5 minutes maximum and test every 5 seconds if SDC up using HealthCheck API
-echo " WAIT 5 minutes maximum and test every 5 seconds if SDC up using HealthCheck API...."
+echo " WAIT 1 minutes maximum and test every 5 seconds if SDC up using HealthCheck API...."
-TIME_OUT=600
+TIME_OUT=60
INTERVAL=5
TIME=0
while [ "$TIME" -lt "$TIME_OUT" ]; do
ef='#n247'>247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295
#!/usr/bin/env sh

# ============LICENSE_START=======================================================
# ONAP POLICY
# ================================================================================
# Copyright (C) 2017-2021 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.
# ============LICENSE_END=========================================================

source ${POLICY_HOME}/etc/profile.d/env.sh

SNAME="Policy Management"
PNAME=policy-management
CLASS=org.onap.policy.drools.system.Main

function start() {
    if [ "$DEBUG" = "y" ]; then
        echo "-- start --"
        set -x
    fi

    um_start
    if [ $RETVAL -ne 0 ]; then
        update_monitor off
    else
        update_monitor on
    fi
}

function preRunning() {
    if [ "$DEBUG" = "y" ]; then
        echo "-- preRunning --"
        set -x
    fi

    mkdir -p $_LOGS
    CP=$(ls $_DIR/lib/*.jar | xargs -I X printf ":%s" X)

    # pick up any new changes in the environment every time we start
    source ${POLICY_HOME}/etc/profile.d/env.sh

    ${POLICY_HOME}/bin/configure-maven

    # If 'system.properties' exists, convert it into "-D" JVM arguments.
    # Note that the following also handles property values with spaces.

    systemProperties=$(
        if [ -f "$_DIR/config/system.properties" ]; then
            sed -n -e 's/^[ \t]*\([^ \t#]*\)[ \t]*=[ \t]*\(.*\)$/-D\1=\2/p' \
                $_DIR/config/system.properties
        fi
    )

    cd $_DIR

}

function exec_start() {
    if [ "$DEBUG" = "y" ]; then
        echo "-- exec_start --"
        set -x
    fi

    status
    echo "$_STATUS"
    if [ "$_RUNNING" = "1" ]; then
        exit 1
    fi

    preRunning
    exec $JAVA_HOME/bin/java ${JVM_OPTIONS} -cp $_DIR/config:$_DIR/lib:$CP ${systemProperties} "$@" $CLASS
}

# adding timestamp for stdout and stderr
function timestamp () {
    exec awk '{ print strftime("%Y-%m-%d %H:%M:%S"), $0; fflush(); }'
}

# unmonitored start, does not change monitor status (immutable)
function um_start() {
    if [ "$DEBUG" = "y" ]; then
        echo "-- um_start --"
        set -x
    fi

    status
    if [ "$_RUNNING" = "1" ]; then
        echo ""
        RETVAL=1
        return
    fi

    preRunning
    if [ -e $_LOGS/$PNAME.out.1 ]; then mv $_LOGS/$PNAME.out.1 $_LOGS/$PNAME.out.2; fi
    if [ -e $_LOGS/$PNAME.err.1 ]; then mv $_LOGS/$PNAME.err.1 $_LOGS/$PNAME.err.2; fi
    if [ -e $_LOGS/$PNAME.out ]; then mv $_LOGS/$PNAME.out $_LOGS/$PNAME.out.1; fi
    if [ -e $_LOGS/$PNAME.err ]; then mv $_LOGS/$PNAME.err $_LOGS/$PNAME.err.1; fi

    (
        exec 200>&-
        ( ( nohup $JAVA_HOME/bin/java ${JVM_OPTIONS} -cp $_DIR/config:$_DIR/lib:$CP ${systemProperties} "$@" $CLASS ) | timestamp > $_LOGS/$PNAME.out ) 2>&1 | timestamp > $_LOGS/$PNAME.err &
    )
    sleep 5
    status
    echo $_STATUS
    if [ "$_RUNNING" = "1" ]; then
        RETVAL=0
    else
        echo "Failed to start"
        remove_pid_file
        RETVAL=1
    fi
}

function stop() {
    if [ "$DEBUG" = "y" ]; then
        echo "-- stop --"
        set -x
    fi

    um_stop
    update_monitor off
}

# unmonitored stop, does not change monitor status (immutable)
function um_stop() {
    if [ "$DEBUG" = "y" ]; then
        echo "-- um_stop --"
        set -x
    fi

    status
    if [ "$_RUNNING" = "0" ]; then
        echo $_STATUS
        remove_pid_file
    else
        if [ -n "${TELEMETRY_PASSWORD}" ]; then
            http_proxy= timeout 10 curl -k --silent --user ${TELEMETRY_USER}:${TELEMETRY_PASSWORD} -X DELETE https://localhost:${TELEMETRY_PORT}/policy/pdp/engine -o /dev/null
        else
            http_proxy= timeout 10 curl -k --silent -X DELETE https://localhost:${TELEMETRY_PORT}/policy/pdp/engine -o /dev/null
        fi
        sleep 5
        echo "Stopping $SNAME..."
        _PID_TO_KILL=$_PID
        echo "$SNAME (pid=${_PID_TO_KILL}) is stopping..."
        kill -TERM $_PID_TO_KILL 2>/dev/null
        sleep 5
        check_status_of_pid $_PID_TO_KILL
        if [ "$_RUNNING" = "1" ]; then
            kill -TERM $_PID_TO_KILL
        fi
        while [ "$_RUNNING" = "1" ]; do
            sleep 2
            check_status_of_pid $_PID_TO_KILL
        done
        remove_pid_file
        echo "$SNAME has stopped."
    fi
    RETVAL=0
}

function status() {
    if [ "$DEBUG" = "y" ]; then
        echo "-- status --"
        set -x
    fi

    if [ -f "${_PIDFILE}" ]; then
        _PID=$(cat "${_PIDFILE}")
        check_status_of_pid "$_PID"
    elif [ ${POLICY_DOCKER} ] && _PID=$(pidof -s java); then
        echo "${_PID}" > ${_PIDFILE}
        check_status_of_pid "$_PID"
    else
        _STATUS="$SNAME (no pidfile) is NOT running"
        _RUNNING=0
    fi

    if [ "$_RUNNING" = "1" ]; then
        RETVAL=0
    else
        RETVAL=1
    fi
}

function check_status_of_pid() {
    if [ "$DEBUG" = "y" ]; then
        echo "-- check_status_of_pid --"
        set -x
    fi

    if [ -n "$1" ] && kill -0 $1 2>/dev/null; then
        _STATUS="$SNAME (pid $1) is running"
        _RUNNING=1
    else
        _STATUS="$SNAME (pid $1) is NOT running"
        _RUNNING=0
    fi
}

function remove_pid_file() {
    if [ "$DEBUG" = "y" ]; then
        echo "-- remove_pid_file --"
        set -x
    fi

    if [ -f "${_PIDFILE}" ]; then
        rm "${_PIDFILE}"
    fi
}

function update_monitor() {
    if [ "$DEBUG" = "y" ]; then
        echo "-- update_monitor --"
        set -x
    fi

    STATUS=$1
    if [ -f "${POLICY_HOME}"/etc/monitor/monitor.cfg ]; then
        /bin/sed -i.bak \
            -e "s/^${CONTROLLER}=.*/${CONTROLLER}=${STATUS}/g" \
            ${POLICY_HOME}/etc/monitor/monitor.cfg
    fi
}

# main

if [ "${DEBUG}" = "y" ]; then
    echo "-- $0 $* --"
    set -x
fi

_DIR=${POLICY_HOME}
_LOGS=${POLICY_LOGS}

if [ -z "${POLICY_LOGS}" ]; then
    _LOGS="${POLICY_HOME}"/logs
fi

CONTROLLER=policy-management-controller

RETVAL=0

_PIDFILE=${POLICY_HOME}/PID

case "$1" in
status)
    status
    echo "$_STATUS"
    ;;
start)
    if flock 200; then
        start
    fi 200>>${POLICY_HOME}/etc/monitor/monitor.cfg.lock
    ;;
umstart)
    um_start
    ;;
exec)
    exec_start
    ;;
stop)
    if flock 200; then
        stop
    fi 200>>${POLICY_HOME}/etc/monitor/monitor.cfg.lock
    ;;
umstop)
    um_stop
    ;;
restart)
    if flock 200; then 
       stop
       sleep 2
       start
    fi 200>>${POLICY_HOME}/etc/monitor/monitor.cfg.lock
    ;;
*)
    echo "error: invalid option $@"
    echo "Usage: $0 status|start|stop|restart"
    RETVAL=1
    ;;
esac

exit ${RETVAL}