#!/bin/bash # # Copyright 2017-2018 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. # echo "This is ${WORKSPACE}/scripts/policy/drools-pdp-script.sh" # the directory of the script DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" echo ${DIR} # the temp directory used, within $DIR # omit the -p parameter to create a temporal directory in the default location WORK_DIR=`mktemp -d -p "$DIR"` echo ${WORK_DIR} cd ${WORK_DIR} # check if tmp dir was created if [[ ! "$WORK_DIR" || ! -d "$WORK_DIR" ]]; then echo "Could not create temp dir" exit 1 fi # bring down maven mkdir maven cd maven curl -O http://apache.claz.org/maven/maven-3/3.3.9/binaries/apache-maven-3.3.9-bin.tar.gz tar -xzvf apache-maven-3.3.9-bin.tar.gz ls -l export PATH=${PATH}:${WORK_DIR}/maven/apache-maven-3.3.9/bin ${WORK_DIR}/maven/apache-maven-3.3.9/bin/mvn -v cd .. ifconfig export IP=`ip route get 8.8.8.8 | awk '/8.8.8.8/ {print $NF}'` if [ -z "$IP" ]; then echo "Could not determine IP address" exit 1 fi echo $IP if ! ifconfig docker0; then export DOCKER_IP="$IP" else export DOCKER_IP=`ifconfig docker0 | awk -F: '/inet addr/ {gsub(/ .*/,"",$2); print $2}'` fi echo $DOCKER_IP git clone http://gerrit.onap.org/r/oparent git clone http://gerrit.onap.org/r/policy/engine cd engine/packages/docker ${WORK_DIR}/maven/apache-maven-3.3.9/bin/mvn prepare-package --settings ${WORK_DIR}/oparent/settings.xml docker build -t onap/policy-pe target/policy-pe cd ${WORK_DIR} git clone http://gerrit.onap.org/r/policy/drools-pdp cd drools-pdp/packages/docker ${WORK_DIR}/maven/apache-maven-3.3.9/bin/mvn prepare-package --settings ${WORK_DIR}/oparent/settings.xml docker build -t onap/policy-drools target/policy-drools cd ${WORK_DIR} git clone http://gerrit.onap.org/r/policy/docker cd docker chmod +x config/drools/drools-tweaks.sh echo $IP > config/pe/ip_addr.txt ls -l config/pe/ip_addr.txt cat config/pe/ip_addr.txt export MTU=9126 export PRELOAD_POLICIES=false docker-compose -f docker-compose-integration.yml up -d if [ ! $? -eq 0 ]; then echo "Docker compose failed" exit 1 fi docker ps POLICY_IP=`docker inspect --format '{{ .NetworkSettings.Networks.docker_default.IPAddress}}' drools` echo ${POLICY_IP} PDP_IP=`docker inspect --format '{{ .NetworkSettings.Networks.docker_default.IPAddress}}' pdp` echo ${PDP_IP} PAP_IP=`docker inspect --format '{{ .NetworkSettings.Networks.docker_default.IPAddress}}' pap` echo ${PAP_IP} BRMS_IP=`docker inspect --format '{{ .NetworkSettings.Networks.docker_default.IPAddress}}' brmsgw` echo ${BRMS_IP} NEXUS_IP=`docker inspect --format '{{ .NetworkSettings.Networks.docker_default.IPAddress}}' nexus` echo ${NEXUS_IP} MARIADB_IP=`docker inspect --format '{{ .NetworkSettings.Networks.docker_default.IPAddress}}' mariadb` echo ${MARIADB_IP} sleep 3m docker logs mariadb 2>&1 | grep -q "mysqld: ready for connections" if [ $? -eq 0 ]; then # mariadb is ok - sleep a little longer for others sleep 2m else echo mariadb is not ready echo Restarting... docker kill drools pdp pap brmsgw nexus mariadb docker rm -f drools pdp pap brmsgw nexus mariadb docker-compose -f docker-compose-integration.yml up -d if [ ! $? -eq 0 ]; then echo "Docker compose failed" exit 1 fi docker ps POLICY_IP=`docker inspect --format '{{ .NetworkSettings.Networks.docker_default.IPAddress}}' drools` echo ${POLICY_IP} PDP_IP=`docker inspect --format '{{ .NetworkSettings.Networks.docker_default.IPAddress}}' pdp` echo ${PDP_IP} PAP_IP=`docker inspect --format '{{ .NetworkSettings.Networks.docker_default.IPAddress}}' pap` echo ${PAP_IP} BRMS_IP=`docker inspect --format '{{ .NetworkSettings.Networks.docker_default.IPAddress}}' brmsgw` echo ${BRMS_IP} NEXUS_IP=`docker inspect --format '{{ .NetworkSettings.Networks.docker_default.IPAddress}}' nexus` echo ${NEXUS_IP} MARIADB_IP=`docker inspect --format '{{ .NetworkSettings.Networks.docker_default.IPAddress}}' mariadb` echo ${MARIADB_IP} sleep 5m fi netstat -tnl docker logs mariadb ${DIR}/wait_for_port.sh ${MARIADB_IP} 3306 docker logs pap ${DIR}/wait_for_port.sh ${PAP_IP} 9091 docker logs pdp ${DIR}/wait_for_port.sh ${PDP_IP} 8081 docker logs brmsgw ${DIR}/wait_for_port.sh ${BRMS_IP} 9989 docker logs nexus ${DIR}/wait_for_port.sh ${NEXUS_IP} 8081 docker logs drools ${DIR}/wait_for_port.sh ${POLICY_IP} 9696 TIME_OUT=600 INTERVAL=20 TIME=0 while [ "$TIME" -lt "$TIME_OUT" ]; do curl -k -i --user "demo@people.osaaf.org:demo123456!" -H "ContentType: application/json" -H "Accept: application/json" https://${POLICY_IP}:9696/healthcheck && break echo Sleep: $INTERVAL seconds before testing if Policy is up. Total wait time up now is: $TIME seconds. Timeout is: $TIME_OUT seconds sleep $INTERVAL TIME=$(($TIME+$INTERVAL)) done TIME_OUT=600 INTERVAL=20 TIME=0 while [ "$TIME" -lt "$TIME_OUT" ]; do curl -k -i -v -H 'Content-Type: application/json' -H 'Accept: application/json' -H 'ClientAuth: cHl0aG9uOnRlc3Q=' -H 'Authorization: Basic dGVzdHBkcDphbHBoYTEyMw==' -H 'Environment: TEST' -d '{"policyName": ".*"}' https://${PDP_IP}:8081/pdp/api/getConfig && break echo Sleep: $INTERVAL seconds before testing if Policy is up. Total wait time up now is: $TIME seconds. Timeout is: $TIME_OUT seconds sleep $INTERVAL TIME=$(($TIME+$INTERVAL)) done # # Add more sleep for everything to settle # sleep 3m