chore: update dev scripts and mock configuration

- Improve hot-dev script
- Add sync-production-config script
- Update toggle-mock script
- Update mock environment
This commit is contained in:
rcourtman 2026-01-22 22:32:45 +00:00
parent 5efd1591ca
commit 66e8460196
4 changed files with 51 additions and 14 deletions

View file

@ -1,5 +1,5 @@
# Mock Mode Configuration
PULSE_MOCK_MODE=true
PULSE_MOCK_MODE=false
PULSE_MOCK_NODES=7
PULSE_MOCK_VMS_PER_NODE=5
PULSE_MOCK_LXCS_PER_NODE=8
@ -7,3 +7,4 @@ PULSE_MOCK_DOCKER_HOSTS=3
PULSE_MOCK_DOCKER_CONTAINERS=12
PULSE_MOCK_RANDOM_METRICS=true
PULSE_MOCK_STOPPED_PERCENT=20
PULSE_LICENSE_PUBLIC_KEY="OzbVzmg+TaSGt0eWzDVpn0QkqhOzJqUbOFvSF3AmuRU="

View file

@ -409,11 +409,14 @@ fi
# --- Backend Health Monitor ---
# Restarts Pulse if it dies unexpectedly (not from file watcher rebuild)
# IMPORTANT: Enforces single-instance - kills duplicates if found
log_info "Starting backend health monitor..."
(
while true; do
sleep 10
if ! pgrep -f "^\./pulse$" > /dev/null 2>&1; then
PULSE_COUNT=$(pgrep -f "^\./pulse$" 2>/dev/null | wc -l | tr -d ' ')
if [[ "$PULSE_COUNT" -eq 0 ]]; then
log_warn "⚠️ Pulse died unexpectedly, restarting..."
LOG_LEVEL=debug \
FRONTEND_PORT="${PULSE_DEV_API_PORT:-7655}" \
@ -433,6 +436,28 @@ log_info "Starting backend health monitor..."
else
log_error "✗ Backend failed to auto-restart!"
fi
elif [[ "$PULSE_COUNT" -gt 1 ]]; then
log_error "⚠️ Multiple Pulse processes detected ($PULSE_COUNT), killing all and restarting..."
pkill -9 -f "^\./pulse$" 2>/dev/null || true
sleep 2
LOG_LEVEL=debug \
FRONTEND_PORT="${PULSE_DEV_API_PORT:-7655}" \
PORT="${PULSE_DEV_API_PORT:-7655}" \
PULSE_DATA_DIR="${PULSE_DATA_DIR:-}" \
PULSE_ENCRYPTION_KEY="${PULSE_ENCRYPTION_KEY:-}" \
ALLOW_ADMIN_BYPASS="${ALLOW_ADMIN_BYPASS:-1}" \
PULSE_DEV="${PULSE_DEV:-true}" \
PULSE_AUTH_USER="${PULSE_AUTH_USER:-}" \
PULSE_AUTH_PASS="${PULSE_AUTH_PASS:-}" \
ALLOWED_ORIGINS="${ALLOWED_ORIGINS:-}" \
./pulse >> /tmp/pulse-debug.log 2>&1 &
NEW_PID=$!
sleep 2
if kill -0 "$NEW_PID" 2>/dev/null; then
log_info "✓ Backend restarted after killing duplicates (PID: $NEW_PID)"
else
log_error "✗ Backend failed to restart after killing duplicates!"
fi
fi
done
) &
@ -446,15 +471,13 @@ log_info "Starting backend file watcher..."
restart_backend() {
log_info "Restarting backend..."
OLD_PID=$(pgrep -f "^\./pulse$" || true)
if [[ -n "$OLD_PID" ]]; then
kill "$OLD_PID" 2>/dev/null || true
sleep 1
if kill -0 "$OLD_PID" 2>/dev/null; then
kill -9 "$OLD_PID" 2>/dev/null || true
fi
fi
# Kill ALL pulse processes (not just one) to prevent duplicates
pkill -f "^\./pulse$" 2>/dev/null || true
sleep 1
# Force kill any remaining
pkill -9 -f "^\./pulse$" 2>/dev/null || true
sleep 1
LOG_LEVEL=debug \
FRONTEND_PORT="${PULSE_DEV_API_PORT:-7655}" \
@ -470,8 +493,13 @@ log_info "Starting backend file watcher..."
NEW_PID=$!
sleep 1
if kill -0 "$NEW_PID" 2>/dev/null; then
# Verify exactly one process is running
PULSE_COUNT=$(pgrep -f "^\./pulse$" 2>/dev/null | wc -l | tr -d ' ')
if [[ "$PULSE_COUNT" -eq 1 ]] && kill -0 "$NEW_PID" 2>/dev/null; then
log_info "✓ Backend restarted (PID: $NEW_PID)"
elif [[ "$PULSE_COUNT" -gt 1 ]]; then
log_error "✗ Multiple processes after restart ($PULSE_COUNT) - killing all"
pkill -9 -f "^\./pulse$" 2>/dev/null || true
else
log_error "✗ Backend failed to start! Check /tmp/pulse-debug.log"
fi

View file

@ -11,6 +11,13 @@ DEV_DIR=${DEV_DIR:-"/opt/pulse/tmp/dev-config"}
mkdir -p "$DEV_DIR"
chmod 700 "$DEV_DIR"
# If production config is missing, skip sync and let dev config stand alone.
if [ ! -d "$PROD_DIR" ]; then
echo "⚠ Production config directory not found: $PROD_DIR"
echo "✓ Skipping production sync; using dev-only config in $DEV_DIR"
exit 0
fi
# Copy essential production config files to dev
# Skip session/csrf/alert files which are runtime-specific
echo "Syncing production config to dev environment..."

View file

@ -9,8 +9,9 @@ YELLOW='\033[1;33m'
BLUE='\033[0;34m'
NC='\033[0m' # No Color
MOCK_ENV_FILE="/opt/pulse/mock.env"
ROOT_DIR="/opt/pulse"
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
ROOT_DIR="$(dirname "$SCRIPT_DIR")"
MOCK_ENV_FILE="${ROOT_DIR}/mock.env"
BACKEND_PORT=7656
DEV_DATA_DIR="${ROOT_DIR}/tmp/dev-config"
DEV_KEY_FILE="${DEV_DATA_DIR}/.encryption.key"