| #!/bin/bash -x |
| ### |
| # ============LICENSE_START======================================================= |
| # ONAP CLAMP |
| # ================================================================================ |
| # Copyright (C) 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. |
| # ============LICENSE_END============================================ |
| # =================================================================== |
| # |
| ### |
| KIBANA_CONF_FILE="/usr/share/kibana/config/kibana.yml" |
| SAVED_OBJECTS_ROOT="/saved-objects/" |
| RESTORE_CMD="/usr/local/bin/restore.py -H http://127.0.0.1:5601/ -f" |
| BACKUP_BIN="/usr/local/bin/backup.py" |
| KIBANA_START_CMD="/usr/local/bin/kibana-docker" |
| LOG_FILE="/tmp/load.kibana.log" |
| KIBANA_LOAD_CMD="/usr/local/bin/kibana-docker -H 127.0.0.1 -l $LOG_FILE" |
| TIMEOUT=60 |
| WAIT_TIME=2 |
| LOADED_FLAG=$SAVED_OBJECTS_ROOT/.loaded |
| |
| if [ -f $LOADED_FLAG ]; |
| then |
| echo "---- Kibana saved objects already restored. Remove $LOADED_FLAG if you want to restore them again." |
| elif [ -n "$(ls -A ${SAVED_OBJECTS_PATH})" ]; |
| then |
| echo "---- Waiting for elasticsearch to be up..." |
| RES=-1 |
| PING_TIMEOUT=60 |
| elastic_url=$(grep elasticsearch.url /usr/share/kibana/config/kibana.yml | cut -d\ -f2) |
| while [ ! "$RES" -eq "0" ] && [ "$PING_TIMEOUT" -gt "0" ]; |
| do |
| curl $elastic_url |
| RES=$? |
| sleep $WAIT_TIME |
| let PING_TIMEOUT=$PING_TIMEOUT-$WAIT_TIME |
| done |
| |
| echo "---- Saved objects found, restoring files." |
| |
| $KIBANA_LOAD_CMD & |
| KIB_PID=$! |
| |
| # Wait for log file to be avaiable |
| LOG_TIMEOUT=60 |
| while [ ! -f $LOG_FILE ] && [ "$LOG_TIMEOUT" -gt "0" ]; |
| do |
| echo "Waiting for $LOG_FILE to be available..." |
| sleep $WAIT_TIME |
| let LOG_TIMEOUT=$LOG_TIMEOUT-$WAIT_TIME |
| done |
| |
| tail -f $LOG_FILE & |
| LOG_PID=$! |
| |
| # Wait for kibana to be listening |
| while [ -z "$(grep "Server running at" $LOG_FILE)" ] && [ "$TIMEOUT" -gt "0" ]; |
| do |
| echo "Waiting for kibana to start..." |
| sleep $WAIT_TIME |
| let TIMEOUT=$TIMEOUT-$WAIT_TIME |
| done |
| sleep 1 |
| |
| # restore files |
| for saved_objects_path in $SAVED_OBJECTS_ROOT/* |
| do |
| # skip files as we only need directories |
| [ -f $saved_objects_path ] && continue |
| |
| echo "Restoring content of $saved_objects_path" |
| $RESTORE_CMD -C $saved_objects_path |
| sleep 1 |
| done |
| |
| touch $LOADED_FLAG |
| if [ "$?" != "0" ]; |
| then |
| echo "WARNING: Could not save $LOADED_FLAG, saved objects will be restored on next startup." >&2 |
| fi |
| |
| # cleanup |
| kill $KIB_PID |
| kill $LOG_PID |
| else |
| echo "---- No saved object found" |
| ls -A ${SAVED_OBJECTS_PATH} |
| fi |
| |
| echo "---- Starting kibana" |
| |
| $KIBANA_START_CMD |
| |