|
158 | 158 |
|
159 | 159 | #Visualization |
160 | 160 | if (( ${use_viz} == 1 )); then |
161 | | - if (( ${use_pserver} != 1 )); then |
162 | | - echo "Chimbuko Services: Error - cannot use viz without the pserver" |
163 | | - exit 1 |
164 | | - fi |
165 | | - if (( ${use_provdb} == 0 )); then |
166 | | - echo "Chimbuko Services: Error - cannot use viz without the provDB" |
167 | | - exit 1 |
168 | | - fi |
| 161 | + # Pserver is not needed when running the viz in offline simulation mode |
| 162 | + # if (( ${use_pserver} != 1 )); then |
| 163 | + # echo "Chimbuko Services: Error - cannot use viz without the pserver" |
| 164 | + # exit 1 |
| 165 | + # fi |
| 166 | + # if (( ${use_provdb} == 0 )); then |
| 167 | + # echo "Chimbuko Services: Error - cannot use viz without the provDB" |
| 168 | + # exit 1 |
| 169 | + # fi |
169 | 170 |
|
170 | 171 | #Provide parameters for provenance database |
171 | 172 | export PROVDB_NINSTANCE=${provdb_ninstances} |
172 | 173 | export SHARDED_NUM=${provdb_nshards} |
173 | | - export PROVENANCE_DB=${provdb_writedir} #already an absolute path |
174 | | - |
175 | | - if (( ${provdb_ninstances} == 1 )); then |
176 | | - #Simpler instantiation if a single server |
177 | | - export PROVDB_ADDR=$(cat ${provdb_dir}/provider.address.0) |
178 | | - echo "Chimbuko Services: viz is connecting to provDB provider 0 on address" $PROVDB_ADDR |
179 | | - else |
180 | | - export PROVDB_ADDR_PATH=${provdb_addr_dir} |
181 | | - echo "Chimbuko Services: viz is obtaining provDB addresses from path" $PROVDB_ADDR_PATH |
| 174 | + export PROVENANCE_DB=${provdb_writedir}/ #already an absolute path |
| 175 | + |
| 176 | + #If provdb server is used, tell the viz how to connect to it; otherwise it will use its own internal server |
| 177 | + if (( ${use_provdb} )); then |
| 178 | + if (( ${provdb_ninstances} == 1 )); then |
| 179 | + #Simpler instantiation if a single server |
| 180 | + export PROVDB_ADDR=$(cat ${provdb_dir}/provider.address.0) |
| 181 | + echo "Chimbuko Services: viz is connecting to provDB provider 0 on address" $PROVDB_ADDR |
| 182 | + else |
| 183 | + export PROVDB_ADDR_PATH=${provdb_addr_dir} |
| 184 | + echo "Chimbuko Services: viz is obtaining provDB addresses from path" $PROVDB_ADDR_PATH |
| 185 | + fi |
182 | 186 | fi |
183 | 187 |
|
184 | 188 | cd ${viz_dir} |
@@ -217,14 +221,44 @@ if (( ${use_viz} == 1 )); then |
217 | 221 | sleep 10 |
218 | 222 |
|
219 | 223 | echo "Chimbuko Services: run webserver ..." |
220 | | - python3 run_server.py $HOST $viz_port 2>&1 | tee "${log_dir}/webserver.log" & |
| 224 | + #python3 run_server.py $HOST $viz_port 2>&1 | tee "${log_dir}/webserver.log" & |
| 225 | + python3 manager.py runserver --host 0.0.0.0 --port ${viz_port} --debug | tee "${log_dir}/webserver.log" & |
221 | 226 | sleep 2 |
222 | 227 |
|
223 | 228 | echo "Chimbuko Services: redis ping-pong ..." |
224 | 229 | redis-cli -h $HOST -p ${viz_worker_port} ping |
225 | 230 |
|
226 | 231 | cd ${base} |
227 | 232 |
|
| 233 | + #Write a termination script for the viz that can be called either manually or automatically |
| 234 | + cat <<EOF > ${viz_dir}/shutdown_webserver.sh |
| 235 | +
|
| 236 | + echo "Chimbuko Services: Terminating Chimbuko visualization" |
| 237 | + cd ${viz_root} |
| 238 | +
|
| 239 | + echo "Chimbuko Services: redis ping-pong" |
| 240 | + redis-cli -h $HOST -p ${viz_worker_port} ping |
| 241 | +
|
| 242 | + sleep 10 |
| 243 | +
|
| 244 | + echo "Chimbuko Services: celery task inspect" |
| 245 | + curl -X GET "http://${HOST}:${viz_port}/tasks/inspect" |
| 246 | + sleep 5 |
| 247 | +
|
| 248 | + echo "Chimbuko Services: shutdown webserver & celery workers!" |
| 249 | + curl -X GET "http://${HOST}:${viz_port}/stop" |
| 250 | + sleep 10 |
| 251 | +
|
| 252 | + echo "Chimbuko Services: redis ping-pong" |
| 253 | + redis-cli -h $HOST -p ${viz_worker_port} ping |
| 254 | + sleep 1 |
| 255 | +
|
| 256 | + echo "Chimbuko Services: shutdown redis server!" |
| 257 | + redis-cli -h $HOST -p ${viz_worker_port} shutdown |
| 258 | +
|
| 259 | +EOF |
| 260 | + chmod u+x ${viz_dir}/shutdown_webserver.sh |
| 261 | + |
228 | 262 | ws_addr="http://${HOST}:${viz_port}/api/anomalydata" |
229 | 263 | ps_extra_args+=" -ws_addr ${ws_addr}" |
230 | 264 |
|
@@ -283,30 +317,12 @@ if (( ${use_pserver} == 1 )); then |
283 | 317 | fi |
284 | 318 |
|
285 | 319 | if (( ${use_viz} == 1 )); then |
286 | | - echo "Chimbuko Services: Terminating Chimbuko visualization" |
287 | | - cd ${viz_root} |
288 | | - |
289 | | - echo "Chimbuko Services: redis ping-pong" |
290 | | - redis-cli -h $HOST -p ${viz_worker_port} ping |
291 | | - |
292 | | - sleep 10 |
293 | | - |
294 | | - echo "Chimbuko Services: celery task inspect" |
295 | | - curl -X GET "http://${HOST}:${viz_port}/tasks/inspect" |
296 | | - sleep 5 |
297 | | - |
298 | | - echo "Chimbuko Services: shutdown webserver & celery workers!" |
299 | | - curl -X GET "http://${HOST}:${viz_port}/stop" |
300 | | - sleep 10 |
301 | | - |
302 | | - echo "Chimbuko Services: redis ping-pong" |
303 | | - redis-cli -h $HOST -p ${viz_worker_port} ping |
304 | | - sleep 1 |
305 | | - |
306 | | - echo "Chimbuko Services: shutdown redis server!" |
307 | | - redis-cli -h $HOST -p ${viz_worker_port} shutdown |
308 | | - |
309 | | - cd - |
| 320 | + if (( ${use_pserver} == 1 )); then |
| 321 | + ${viz_dir}/shutdown_webserver.sh |
| 322 | + else |
| 323 | + echo "Chimbuko Services: Visualization was run without the pserver. It will remain active until the user executes script ${viz_dir}/shutdown_webserver.sh" |
| 324 | + disown -ah |
| 325 | + fi |
310 | 326 | fi |
311 | 327 |
|
312 | 328 | if (( ${use_provdb} == 1 )); then |
|
316 | 332 |
|
317 | 333 |
|
318 | 334 | echo "Chimbuko Services: Service script complete" $(date) |
| 335 | + |
0 commit comments