Added k8s-style retry to dmaap prov
[dmaap/buscontroller.git] / dbc-client / misc / dbc-client
1 #!/bin/sh
2 #
3 # ============LICENSE_START==========================================
4 # org.onap.dmaap
5 # ===================================================================
6 # Copyright © 2019 AT&T Intellectual Property. All rights reserved.
7 # ===================================================================
8 # Licensed under the Apache License, Version 2.0 (the "License");
9 # you may not use this file except in compliance with the License.
10 # You may obtain a copy of the License at
11 #
12 #        http://www.apache.org/licenses/LICENSE-2.0
13 #
14 # Unless required by applicable law or agreed to in writing, software
15 # distributed under the License is distributed on an "AS IS" BASIS,
16 # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
17 # See the License for the specific language governing permissions and
18 # limitations under the License.
19 # ============LICENSE_END============================================
20 # ECOMP is a trademark and service mark of AT&T Intellectual Property.
21 #
22 #
23
24 umask 0022
25 TZ=GMT0
26 COMPONENT=dbc-client
27 APP_ROOT=${APP_ROOT:-/opt/app/$COMPONENT}
28 USER=root
29 export TZ
30 PATH=/usr/local/bin:/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/sbin
31 export PATH
32 CONFIGMAP_ROOT=${CONFIGMAP_ROOT:-/opt/app/config}
33 CONTAINER_CONFIG=$CONFIGMAP_ROOT/conf/dbc-client.env
34 REQUESTID=${REQUESTID:-dbc-client}
35 DBC=${DBC:-dmaap-bc}
36 PROTO=${PROTO:-http}
37 PORT=${PORT:-8080}
38
39
40
41
42 config() {
43         echo "ENTER config"
44         set -x
45         if [ ! -d $APP_ROOT ]
46         then
47                 echo "Expected app root directory $APP_ROOT does not exist"
48                 exit 1
49         fi
50         cd $APP_ROOT
51         find . -type f -exec ls -l {} \;
52         find $CONFIGMAP_ROOT -type f -exec ls -l {} \;
53         if [ !  -f $CONTAINER_CONFIG ]
54         then
55                 echo "WARNING: Expected env file $CONTAINER_CONFIG not found. Default behaviors in effect"
56         else
57                 source $CONTAINER_CONFIG
58         fi
59
60         if [ "$DMAAPBC_WAIT_TO_EXIT" != "Y" ]
61         then
62                 echo "Creating $APP_ROOT/ok_to_exit so no waiting..."
63                 > $APP_ROOT/ok_to_exit
64         else
65                 echo "Not creating $APP_ROOT/ok_to_exit"
66         fi      
67         
68         if [ ! -f $APP_ROOT/misc/cert-client-init.sh ]
69         then
70                 echo "Did not find $APP_ROOT/misc/cert-client-init.sh to append to truststore"
71                 exit 1
72         fi
73         $APP_ROOT/misc/cert-client-init.sh
74
75         set +x
76 }
77
78
79 init() {
80         echo "ENTER init"
81         if [ ! -d $CONFIGMAP_ROOT ]
82         then
83                 echo $CONFIGMAP_ROOT does not exist
84                 return
85         fi
86
87         #loop on get /dmaap until we get a good response to indicate other provisioning can continue
88         rc=${RESP:-999}
89         while [ $rc != "200" ]
90         do
91                 sleep 10
92                 rc=`curl -s -o /dev/null -I -w "%{http_code}" -X GET -H "X-ECOMP-RequestID: $REQUESTID" -H "Content-Type: application/json" ${PROTO}://${DBC}:${PORT}/webapi/dmaap`
93                 echo "get dmaap response=${rc}"
94         done
95 }
96 dopost() {
97         RETRY_TIME=60
98
99         loop=true
100
101         while [ $loop ]
102         do
103                 rc=`curl -v -X POST -w "%{http_code}" -H "X-ECOMP-RequestID: $REQUESTID" -H "Content-Type: application/json" -d @${1} ${PROTO}://${DBC}:${PORT}/webapi/${2}`
104                 case $rc in
105                 200 | 201 | 409 )
106                         echo "response=$rc"
107                         loop=false
108                         ;;
109                 * )
110                         echo "`date`: http response=$rc.  Will retry after $RETRY_TIME seconds"
111                         sleep $RETRY_TIME
112                         ;;
113                 esac
114         done
115
116 }
117 doprov() {
118
119         cd $CONFIGMAP_ROOT
120         pwd
121         # order is important in this next list
122         for uri in dmaap dcaeLocations mr_clusters topics mr_clients dr_nodes feeds dr_pubs dr_subs
123         do
124                 if [ -d ${uri} ]
125                 then
126                         for j in `ls ${uri}/*.json`
127                         do
128                                 echo "POST $j to $uri"
129                                 dopost $j $uri
130                         done
131                 fi
132         done
133 }
134 delay() {
135         echo "DELAY=$DELAY"
136         if [ ! -z "$DELAY" ]
137         then
138                 sleep $DELAY
139         fi
140 }
141
142 set -x
143 delay
144 config
145 init
146 doprov
147
148 echo "Check $APP_ROOT/ok_to_exit"
149 while [ ! -f $APP_ROOT/ok_to_exit ]
150 do
151         echo "$APP_ROOT/ok_to_exit does not exist.  Sticking around for debugging..."
152         sleep 10
153 done
154 exit 0