3e9f3d4218995eaf33bde84993e42eb7200f08a4
[integration/csit.git] / scripts / policy / engine.sh
1 #!/bin/bash -x
2 #
3 # Copyright 2017-2019 AT&T Intellectual Property. All rights reserved.
4 #
5 # Licensed under the Apache License, Version 2.0 (the "License");
6 # you may not use this file except in compliance with the License.
7 # You may obtain a copy of the License at
8 #
9 #     http://www.apache.org/licenses/LICENSE-2.0
10 #
11 # Unless required by applicable law or agreed to in writing, software
12 # distributed under the License is distributed on an "AS IS" BASIS,
13 # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 # See the License for the specific language governing permissions and
15 # limitations under the License.
16 #
17 echo "This is ${WORKSPACE}/scripts/policy/engine.sh"
18
19
20 # the directory of the script
21 DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
22 echo ${DIR}
23
24 # the temp directory used, within $DIR
25 # omit the -p parameter to create a temporal directory in the default location
26 WORK_DIR=`mktemp -d -p "$DIR"`
27 echo ${WORK_DIR}
28
29 cd ${WORK_DIR}
30
31 # check if tmp dir was created
32 if [[ ! "$WORK_DIR" || ! -d "$WORK_DIR" ]]; then
33   echo "Could not create temp dir"
34   exit 1
35 fi
36
37 # bring down maven
38 mkdir maven
39 cd maven
40 # download maven from automatically selected mirror server
41 curl -vLO  "https://www.apache.org/dyn/mirrors/mirrors.cgi?cca2=us&preferred=http://apache.claz.org/&action=download&filename=maven/maven-3/3.3.9/binaries/apache-maven-3.3.9-bin.tar.gz"
42 if ! tar -xzvf apache-maven-3.3.9-bin.tar.gz ; then
43     echo "Installation of maven has failed!"
44     exit 1
45 fi
46 ls -l
47 export PATH=${PATH}:${WORK_DIR}/maven/apache-maven-3.3.9/bin
48 ${WORK_DIR}/maven/apache-maven-3.3.9/bin/mvn -v
49 cd ..
50
51 ifconfig
52
53 export IP=`ip route get 8.8.8.8 | awk '/8.8.8.8/ {print $NF}'`
54 if [ -z "$IP" ]; then
55         echo "Could not determine IP address"
56         exit 1
57 fi
58 echo $IP
59
60 if ! ifconfig docker0; then
61         export DOCKER_IP="$IP"
62 else
63         export DOCKER_IP=`ifconfig docker0 | awk -F: '/inet addr/ {gsub(/ .*/,"",$2); print $2}'`
64 fi
65 echo $DOCKER_IP
66
67 git clone http://gerrit.onap.org/r/oparent
68
69 git clone http://gerrit.onap.org/r/policy/engine
70 cd engine/packages/docker 
71 ${WORK_DIR}/maven/apache-maven-3.3.9/bin/mvn prepare-package --settings ${WORK_DIR}/oparent/settings.xml
72 docker build -t onap/policy-pe target/policy-pe
73
74 cd ${WORK_DIR}
75 git clone http://gerrit.onap.org/r/policy/drools-pdp
76 cd drools-pdp/packages/docker 
77 ${WORK_DIR}/maven/apache-maven-3.3.9/bin/mvn prepare-package --settings ${WORK_DIR}/oparent/settings.xml
78 docker build -t onap/policy-drools target/policy-drools
79
80 cd ${WORK_DIR}
81 git clone http://gerrit.onap.org/r/policy/docker
82 cd docker
83
84 chmod +x config/drools/drools-tweaks.sh
85
86 echo $IP > config/pe/ip_addr.txt
87 ls -l config/pe/ip_addr.txt
88 cat config/pe/ip_addr.txt
89
90 export MTU=9126
91
92 export PRELOAD_POLICIES=false
93 docker-compose -f docker-compose-integration.yml up -d 
94
95 if [ ! $? -eq 0 ]; then
96         echo "Docker compose failed"
97         exit 1
98 fi 
99
100 docker ps
101
102 POLICY_IP=`docker inspect --format '{{ .NetworkSettings.Networks.docker_default.IPAddress}}' drools`
103 echo ${POLICY_IP}
104
105 PDP_IP=`docker inspect --format '{{ .NetworkSettings.Networks.docker_default.IPAddress}}' pdp`
106 echo ${PDP_IP}
107
108 PAP_IP=`docker inspect --format '{{ .NetworkSettings.Networks.docker_default.IPAddress}}' pap`
109 echo ${PAP_IP}
110
111 BRMS_IP=`docker inspect --format '{{ .NetworkSettings.Networks.docker_default.IPAddress}}' brmsgw`
112 echo ${BRMS_IP}
113
114 NEXUS_IP=`docker inspect --format '{{ .NetworkSettings.Networks.docker_default.IPAddress}}' nexus`
115 echo ${NEXUS_IP}
116
117 MARIADB_IP=`docker inspect --format '{{ .NetworkSettings.Networks.docker_default.IPAddress}}' mariadb`
118 echo ${MARIADB_IP}
119
120 sleep 3m
121
122 docker logs mariadb 2>&1 | grep -q "mysqld: ready for connections"
123 if [ $? -eq 0 ]; then
124         # mariadb is ok - sleep a little longer for others
125         sleep 2m
126
127 else
128         echo mariadb is not ready
129         echo Restarting...
130
131         docker kill drools pdp pap brmsgw nexus mariadb
132         docker rm -f drools pdp pap brmsgw nexus mariadb
133
134         docker-compose -f docker-compose-integration.yml up -d 
135         
136         if [ ! $? -eq 0 ]; then
137                 echo "Docker compose failed"
138                 exit 1
139         fi 
140         
141         docker ps
142         
143         POLICY_IP=`docker inspect --format '{{ .NetworkSettings.Networks.docker_default.IPAddress}}' drools`
144         echo ${POLICY_IP}
145         
146         PDP_IP=`docker inspect --format '{{ .NetworkSettings.Networks.docker_default.IPAddress}}' pdp`
147         echo ${PDP_IP}
148         
149         PAP_IP=`docker inspect --format '{{ .NetworkSettings.Networks.docker_default.IPAddress}}' pap`
150         echo ${PAP_IP}
151         
152         BRMS_IP=`docker inspect --format '{{ .NetworkSettings.Networks.docker_default.IPAddress}}' brmsgw`
153         echo ${BRMS_IP}
154         
155         NEXUS_IP=`docker inspect --format '{{ .NetworkSettings.Networks.docker_default.IPAddress}}' nexus`
156         echo ${NEXUS_IP}
157         
158         MARIADB_IP=`docker inspect --format '{{ .NetworkSettings.Networks.docker_default.IPAddress}}' mariadb`
159         echo ${MARIADB_IP}
160         
161         sleep 5m
162 fi
163
164 netstat -tnl
165
166 ${DIR}/wait_for_port.sh ${MARIADB_IP} 3306
167 rc=$?
168 if [[ $rc != 0 ]]; then
169         echo "cannot open ${MARIADB_IP} 3306"
170         telnet ${MARIADB_IP} 3306 < /dev/null
171         nc -vz ${MARIADB_IP} 3306
172         docker logs mariadb
173         exit $rc
174 fi
175
176 ${DIR}/wait_for_port.sh ${NEXUS_IP} 8081
177 rc=$?
178 if [[ $rc != 0 ]]; then
179         echo "cannot open ${NEXUS_IP} 8081"
180         netstat -tnl
181         telnet ${NEXUS_IP} 8081 < /dev/null
182         nc -vz ${NEXUS_IP} 8081
183         docker logs nexus
184         exit $rc
185 fi
186
187 ${DIR}/wait_for_port.sh ${POLICY_IP} 9696
188 rc=$?
189 if [[ $rc != 0 ]]; then
190         echo "cannot open ${POLICY_IP} 9696"
191         netstat -tnl
192         telnet ${POLICY_IP} 9696 < /dev/null
193         nc -vz ${POLICY_IP} 9696
194         docker logs drools
195         exit $rc
196 fi
197
198 ${DIR}/wait_for_port.sh ${PAP_IP} 9091
199 rc=$?
200 if [[ $rc != 0 ]]; then
201         echo "cannot open ${PAP_IP} 9091"
202         netstat -tnl
203         telnet ${PAP_IP} 9091 < /dev/null
204         nc -vz ${PAP_IP} 9091
205         docker logs pap
206         exit $rc
207 fi
208
209 ${DIR}/wait_for_port.sh ${PDP_IP} 8081
210 rc=$?
211 if [[ $rc != 0 ]]; then
212         echo "cannot open ${PDP_IP} 8081"
213         netstat -tnl
214         telnet ${PDP_IP} 8081 < /dev/null
215         nc -vz ${PDP_IP} 8081
216         docker logs pdp
217         exit $rc
218 fi
219
220 ${DIR}/wait_for_port.sh ${BRMS_IP} 9989
221 rc=$?
222 if [[ $rc != 0 ]]; then
223         echo "cannot open ${BRMS_IP} 9989"
224         netstat -tnl
225         telnet ${BRMS_IP} 9989" < /dev/null
226         nc -vz ${BRMS_IP} 9989"
227         docker logs brmsgw
228         exit $rc
229 fi
230
231 docker logs drools
232 docker logs pap
233 docker logs pdp
234 docker logs brmsgw
235
236 TIME_OUT=300
237 INTERVAL=20 
238 TIME=0 
239 while [ "$TIME" -lt "$TIME_OUT" ]; do 
240     curl -k -i --user "demo@people.osaaf.org:demo123456!" -H "ContentType: application/json" -H "Accept: application/json" https://${POLICY_IP}:6969/healthcheck && break
241         
242   echo Sleep: $INTERVAL seconds before testing if Policy is up. Total wait time up now is: $TIME seconds. Timeout is: $TIME_OUT seconds 
243   sleep $INTERVAL 
244   TIME=$(($TIME+$INTERVAL))
245         
246 done
247
248 TIME_OUT=300
249 INTERVAL=20 
250 TIME=0 
251 while [ "$TIME" -lt "$TIME_OUT" ]; do 
252         
253         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
254         
255 echo Sleep: $INTERVAL seconds before testing if Policy is up. Total wait time up now is: $TIME seconds. Timeout is: $TIME_OUT seconds 
256   sleep $INTERVAL 
257   TIME=$(($TIME+$INTERVAL))
258         
259 done
260
261 #
262 # Add more sleep for everything to settle
263 #
264 sleep 3m