| #!/usr/bin/env bash |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| set -euo pipefail |
|
|
| if [ "$#" -ne 2 ]; then |
| echo "Usage: $0 <droplet-ip> <bearer-token>" >&2 |
| exit 1 |
| fi |
|
|
| IP="$1" |
| TOKEN="$2" |
|
|
| SPACE_ID="lablab-ai-amd-developer-hackathon/riprap-nyc" |
| SPACE_URL="https://lablab-ai-amd-developer-hackathon-riprap-nyc.hf.space" |
| VLLM_PORT=8001 |
| MODELS_PORT=7860 |
|
|
| echo "==> Updating HF Space variables" |
| echo " space: ${SPACE_ID}" |
| echo " droplet ip: ${IP}" |
| echo " vLLM port: ${VLLM_PORT}" |
| echo " models port: ${MODELS_PORT}" |
| echo |
|
|
| |
| |
| |
| python3 -c " |
| import sys, os |
| try: |
| from huggingface_hub import HfApi |
| except ImportError: |
| print('Error: huggingface_hub not installed', file=sys.stderr) |
| sys.exit(1) |
| |
| api = HfApi(token=os.environ.get('HF_TOKEN')) # None → cached CLI login |
| space_id = '${SPACE_ID}' |
| ip = '${IP}' |
| token = '${TOKEN}' |
| vllm_port = ${VLLM_PORT} |
| models_port = ${MODELS_PORT} |
| |
| variables = { |
| 'RIPRAP_LLM_PRIMARY': 'vllm', |
| 'RIPRAP_LLM_BASE_URL': f'http://{ip}:{vllm_port}/v1', |
| 'RIPRAP_LLM_API_KEY': token, |
| 'RIPRAP_ML_BACKEND': 'remote', |
| 'RIPRAP_ML_BASE_URL': f'http://{ip}:{models_port}', |
| 'RIPRAP_ML_API_KEY': token, |
| # Heavy register specialists (NYCHA / DOE schools / DOH hospitals). |
| # Pre-warmed at boot via web/main.py:_warm_caches when this is set; |
| # without it the FSM never adds these step functions, so the demo |
| # never sees register cards even when the underlying data is loaded. |
| 'RIPRAP_NYCHA_REGISTERS': '1', |
| } |
| |
| for key, value in variables.items(): |
| display = '<redacted>' if 'KEY' in key else value |
| print(f' setting {key} = {display}') |
| api.add_space_variable(repo_id=space_id, key=key, value=value) |
| |
| print('[python] all 6 variables set') |
| " |
| echo |
|
|
| |
| echo "==> Restarting HF Space" |
| python3 -c " |
| import os |
| from huggingface_hub import HfApi |
| api = HfApi(token=os.environ.get('HF_TOKEN')) # None → cached CLI login |
| rt = api.restart_space(repo_id='${SPACE_ID}') |
| print(f' stage after restart request: {rt.stage}') |
| " |
| echo |
|
|
| |
| |
| |
| echo "==> Polling ${SPACE_URL}/api/backend (up to 120 s)..." |
| DEADLINE=$((SECONDS + 120)) |
| HEALTHY=0 |
| while (( SECONDS < DEADLINE )); do |
| HTTP_CODE=$(curl -s -o /dev/null -w "%{http_code}" \ |
| --max-time 10 "${SPACE_URL}/api/backend" 2>/dev/null || echo "000") |
| if [ "$HTTP_CODE" = "200" ]; then |
| HEALTHY=1 |
| break |
| fi |
| echo " (${HTTP_CODE}) not ready yet — waiting 10 s..." |
| sleep 10 |
| done |
|
|
| if [ "$HEALTHY" -ne 1 ]; then |
| echo "HF Space did not become healthy within 120s" >&2 |
| exit 1 |
| fi |
|
|
| echo |
| echo "HF Space updated and healthy. IP=${IP}" |
|
|