#!/bin/bash
#
# Copyright 2017 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}/test/csit/scripts/policy/script1.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

if ! ifconfig eth0; then
	if ! ifconfig ens3; then
		echo "Could not determine IP address"
		exit 1
	fi
	export IP=`ifconfig ens3 | awk -F: '/inet addr/ {gsub(/ .*/,"",$2); print $2}'`
else
	export IP=`ifconfig eth0 | awk -F: '/inet addr/ {gsub(/ .*/,"",$2); print $2}'`
fi
echo $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

git clone http://gerrit.onap.org/r/oparent

git clone http://gerrit.onap.org/r/policy/docker
cd docker

${WORK_DIR}/maven/apache-maven-3.3.9/bin/mvn clean install prepare-package --settings ../oparent/settings.xml
cp policy-pe/* target/policy-pe
cp policy-drools/* target/policy-drools

docker build -t onap/policy/policy-os     policy-os
docker build -t onap/policy/policy-db     policy-db
docker build -t onap/policy/policy-nexus  policy-nexus
docker build -t onap/policy/policy-base   policy-base
docker build -t onap/policy/policy-pe     target/policy-pe
docker build -t onap/policy/policy-drools target/policy-drools

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

#sleep 4m

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}

${DIR}/wait_for_port.sh ${MARIADB_IP} 3306
${DIR}/wait_for_port.sh ${PAP_IP} 9091
${DIR}/wait_for_port.sh ${PDP_IP} 8081
${DIR}/wait_for_port.sh ${BRMS_IP} 9989
${DIR}/wait_for_port.sh ${NEXUS_IP} 8081
${DIR}/wait_for_port.sh ${POLICY_IP} 6969

TIME_OUT=600
INTERVAL=20 
TIME=0 
while [ "$TIME" -lt "$TIME_OUT" ]; do 
    curl -i --user healthcheck:zb!XztG34 -H "ContentType: application/json" -H "Accept: application/json" ${POLICY_IP}:6969/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 -i -v -H 'Content-Type: application/json' -H 'Accept: application/json' -H 'ClientAuth: cHl0aG9uOnRlc3Q=' -H 'Authorization: Basic dGVzdHBkcDphbHBoYTEyMw==' -H 'Environment: TEST' -X POST -d '{"policyName": ".*"}' http://${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