#!/usr/bin/env bash # push_catalogs.sh — Push fresh catalogs to autobox iLSP volume # # Usage: # ./scripts/push_catalogs.sh # push all catalogs # ./scripts/push_catalogs.sh --no-reload # push but don't call /reload # # Catalogs: # bicep_modules_catalog.json — from DevOpsMCP repo (sync_bicep_modules.py) # iac_source_catalog.json — from DevOpsMCP repo (sync_iac_module_sources.py) # pipeline_templates_catalog.json — from iLSP repo (scripts/sync_pipeline_templates.py) # # All files are written to /opt/nomad/volumes/ilsp-data/ on autobox — the host volume iLSP mounts at /data. set -euo pipefail DEVOPS_MCP_REPO="${DEVOPS_MCP_REPO:-$HOME/Projects/DevOpsMCP}" AUTOBOX="autobox.i80.dk" REMOTE_DIR="/opt/nomad/volumes/ilsp-data" HEALTH_URL="https://ilsp.i80.dk/health" RELOAD_URL="https://ilsp.i80.dk/reload" NO_RELOAD=false for arg in "$@"; do [[ "$arg" == "--no-reload" ]] && NO_RELOAD=true done # Catalog files to push BICEP_CATALOG="$DEVOPS_MCP_REPO/bicep_modules_catalog.json" IAC_CATALOG="$DEVOPS_MCP_REPO/iac_source_catalog.json" ILSP_REPO="$(cd "$(dirname "$0")/.." && pwd)" TMPL_CATALOG="$ILSP_REPO/pipeline_templates_catalog.json" echo "── iLSP catalog push ──────────────────────────────" for f in "$BICEP_CATALOG" "$IAC_CATALOG"; do if [[ ! -f "$f" ]]; then echo " ✗ Not found: $f" echo " Run: python3 $DEVOPS_MCP_REPO/scripts/sync_bicep_modules.py" exit 1 fi echo " ✓ $(basename "$f") ($(du -sh "$f" | cut -f1))" done if [[ ! -f "$TMPL_CATALOG" ]]; then echo " ✗ Not found: $TMPL_CATALOG" echo " Run: python3 $ILSP_REPO/scripts/sync_pipeline_templates.py" exit 1 fi echo " ✓ $(basename "$TMPL_CATALOG") ($(du -sh "$TMPL_CATALOG" | cut -f1))" echo "" echo " → Copying to $AUTOBOX:$REMOTE_DIR/ …" ssh "$AUTOBOX" "mkdir -p $REMOTE_DIR" scp "$BICEP_CATALOG" "$IAC_CATALOG" "$TMPL_CATALOG" "$AUTOBOX:$REMOTE_DIR/" echo " ✓ Upload done" if [[ "$NO_RELOAD" == "true" ]]; then echo " (skipping /reload — restart iLSP manually to apply)" exit 0 fi echo "" echo " → Calling $RELOAD_URL …" if response=$(curl -sf -X POST "$RELOAD_URL" 2>/dev/null); then echo " ✓ $response" else echo " ✗ /reload failed (is ilsp.i80.dk reachable? try: curl https://ilsp.i80.dk/health)" echo " Catalogs are on disk — they'll be used on next restart." exit 1 fi echo "" echo " Done. Bicep + YAML pipeline template completions updated."