WBS-7.9: wire snapshot admin CI deploy
This commit is contained in:
@@ -0,0 +1,113 @@
|
||||
#!/bin/bash
|
||||
set -eu
|
||||
|
||||
ROOT_DIR="${ROOT_DIR:-/volume1/projects/data_feed}"
|
||||
PYTHON_BIN="${PYTHON_BIN:-python}"
|
||||
HOST="${SNAPSHOT_ADMIN_HOST:-127.0.0.1}"
|
||||
PORT="${SNAPSHOT_ADMIN_PORT:-8787}"
|
||||
DB_PATH="${SNAPSHOT_ADMIN_DB:-${ROOT_DIR}/outputs/snapshot_admin/snapshot_admin.db}"
|
||||
SEED_PATH="${SNAPSHOT_ADMIN_SEED:-${ROOT_DIR}/GatherTradingData.json}"
|
||||
AUTH_USER="${SNAPSHOT_ADMIN_AUTH_USER:-}"
|
||||
AUTH_PASSWORD="${SNAPSHOT_ADMIN_AUTH_PASSWORD:-}"
|
||||
ALLOW_REMOTE="${SNAPSHOT_ADMIN_ALLOW_REMOTE:-0}"
|
||||
PID_FILE="${SNAPSHOT_ADMIN_PID_FILE:-${ROOT_DIR}/Temp/snapshot_admin.pid}"
|
||||
LOG_FILE="${SNAPSHOT_ADMIN_LOG_FILE:-${ROOT_DIR}/Temp/snapshot_admin.log}"
|
||||
STATE_URL="${SNAPSHOT_ADMIN_STATE_URL:-http://${HOST}:${PORT}/api/state}"
|
||||
PUBLIC_STATE_URL="${SNAPSHOT_ADMIN_PUBLIC_STATE_URL:-https://admin.example.com/api/state}"
|
||||
|
||||
mkdir -p "$(dirname "$PID_FILE")" "$(dirname "$LOG_FILE")"
|
||||
|
||||
start_server() {
|
||||
if [ -f "$PID_FILE" ] && kill -0 "$(cat "$PID_FILE")" 2>/dev/null; then
|
||||
echo "snapshot admin already running pid=$(cat "$PID_FILE")"
|
||||
return 0
|
||||
fi
|
||||
cmd=("$PYTHON_BIN" "${ROOT_DIR}/tools/run_snapshot_admin_server_v1.py")
|
||||
if [ "$ALLOW_REMOTE" = "1" ]; then
|
||||
cmd+=("--host" "0.0.0.0" "--allow-remote")
|
||||
else
|
||||
cmd+=("--host" "$HOST")
|
||||
fi
|
||||
cmd+=("--port" "$PORT" "--db" "$DB_PATH" "--seed" "$SEED_PATH")
|
||||
if [ -n "$AUTH_USER" ]; then
|
||||
cmd+=("--auth-user" "$AUTH_USER")
|
||||
fi
|
||||
if [ -n "$AUTH_PASSWORD" ]; then
|
||||
cmd+=("--auth-password" "$AUTH_PASSWORD")
|
||||
fi
|
||||
nohup "${cmd[@]}" >> "$LOG_FILE" 2>&1 &
|
||||
echo $! > "$PID_FILE"
|
||||
echo "started snapshot admin pid=$!"
|
||||
}
|
||||
|
||||
stop_server() {
|
||||
if [ ! -f "$PID_FILE" ] || ! kill -0 "$(cat "$PID_FILE")" 2>/dev/null; then
|
||||
echo "snapshot admin not running"
|
||||
rm -f "$PID_FILE"
|
||||
return 0
|
||||
fi
|
||||
kill "$(cat "$PID_FILE")"
|
||||
sleep 2
|
||||
if kill -0 "$(cat "$PID_FILE")" 2>/dev/null; then
|
||||
kill -9 "$(cat "$PID_FILE")"
|
||||
fi
|
||||
rm -f "$PID_FILE"
|
||||
echo "stopped snapshot admin"
|
||||
}
|
||||
|
||||
healthcheck() {
|
||||
if [ ! -f "$PID_FILE" ] || ! kill -0 "$(cat "$PID_FILE")" 2>/dev/null; then
|
||||
echo "healthcheck failed: process not running"
|
||||
return 1
|
||||
fi
|
||||
if [ -n "$AUTH_USER" ] && [ -n "$AUTH_PASSWORD" ]; then
|
||||
if curl -fsS -u "${AUTH_USER}:${AUTH_PASSWORD}" "$STATE_URL" >/dev/null 2>&1; then
|
||||
echo "healthcheck ok: $STATE_URL"
|
||||
return 0
|
||||
fi
|
||||
else
|
||||
if curl -fsS "$STATE_URL" >/dev/null 2>&1; then
|
||||
echo "healthcheck ok: $STATE_URL"
|
||||
return 0
|
||||
fi
|
||||
fi
|
||||
echo "healthcheck failed: $STATE_URL"
|
||||
return 1
|
||||
}
|
||||
|
||||
public_check() {
|
||||
echo "curl -i ${PUBLIC_STATE_URL}"
|
||||
echo "curl -u '<user>:<password>' ${PUBLIC_STATE_URL}"
|
||||
echo "curl -i ${PUBLIC_STATE_URL%/api/state}/tables"
|
||||
}
|
||||
|
||||
case "${1:-start}" in
|
||||
start)
|
||||
start_server
|
||||
;;
|
||||
stop)
|
||||
stop_server
|
||||
;;
|
||||
restart)
|
||||
stop_server
|
||||
start_server
|
||||
;;
|
||||
status)
|
||||
if [ -f "$PID_FILE" ] && kill -0 "$(cat "$PID_FILE")" 2>/dev/null; then
|
||||
echo "running pid=$(cat "$PID_FILE")"
|
||||
exit 0
|
||||
fi
|
||||
echo "stopped"
|
||||
exit 1
|
||||
;;
|
||||
healthcheck)
|
||||
healthcheck
|
||||
;;
|
||||
public-check)
|
||||
public_check
|
||||
;;
|
||||
*)
|
||||
echo "usage: $0 {start|stop|restart|status|healthcheck|public-check}"
|
||||
exit 2
|
||||
;;
|
||||
esac
|
||||
Reference in New Issue
Block a user