51 lines
2.1 KiB
Bash
51 lines
2.1 KiB
Bash
#!/usr/bin/env bash
|
|
set -euo pipefail
|
|
|
|
CENTRAL="${CENTRAL_URL:-http://localhost:5270}"
|
|
GATEWAY="${GATEWAY_URL:-http://localhost:5081}"
|
|
JWT="${ADMIN_JWT:?Set ADMIN_JWT to a valid admin bearer token}"
|
|
GATEWAY_JWT="${GATEWAY_JWT:?Set GATEWAY_JWT to a valid gateway dashboard JWT}"
|
|
|
|
echo "=== VigilCare climate resilience demo ==="
|
|
|
|
echo "==> 1. Full stack up"
|
|
docker compose --profile full --profile ward-gateway up -d
|
|
sleep 30
|
|
|
|
echo "==> 2. Baseline — gateway ONLINE"
|
|
curl -sf "$CENTRAL/api/v1/operations/gateways" \
|
|
-H "Authorization: Bearer $JWT" \
|
|
| jq '.data[] | {code: .gatewayCode, status, buffer: .reportedBufferDepth}'
|
|
|
|
echo "==> 3. Partition — disconnect gateway from central network"
|
|
GATEWAY_CONTAINER=$(docker ps -qf name=ward-gateway-api)
|
|
NETWORK=$(docker network ls --format '{{.Name}}' | grep vigilcare | head -1)
|
|
docker network disconnect "$NETWORK" "$GATEWAY_CONTAINER" 2>/dev/null || true
|
|
|
|
echo "Partition active — posting observation to gateway..."
|
|
ENCOUNTER_ID=$(curl -sf "$GATEWAY/api/v1/encounters?status=ACTIVE&department=ICU" \
|
|
-H "Authorization: Bearer $GATEWAY_JWT" | jq -r '.data.items[0].encounterId')
|
|
|
|
curl -sf -X POST "$GATEWAY/api/v1/encounters/$ENCOUNTER_ID/observations" \
|
|
-H "Authorization: Bearer $GATEWAY_JWT" \
|
|
-H "Content-Type: application/json" \
|
|
-d "{\"observationCode\":\"HEART_RATE\",\"value\":165,\"unit\":\"bpm\",\"source\":\"DEVICE\",\"recordedAt\":\"$(date -u +%Y-%m-%dT%H:%M:%SZ)\",\"idempotencyKey\":\"partition-demo-$(date +%s)\"}"
|
|
|
|
sleep 15
|
|
|
|
echo "==> 4. Fleet status during partition"
|
|
curl -sf "$CENTRAL/api/v1/operations/gateways" \
|
|
-H "Authorization: Bearer $JWT" \
|
|
| jq '.data[] | {code: .gatewayCode, status, buffer: .reportedBufferDepth, minutes: .minutesSinceHeartbeat}'
|
|
|
|
echo "==> 5. Heal partition"
|
|
docker network connect "$NETWORK" "$GATEWAY_CONTAINER"
|
|
echo "Waiting for sync (60s)..."
|
|
sleep 60
|
|
|
|
echo "==> 6. Recovery — ONLINE + buffer 0"
|
|
curl -sf "$CENTRAL/api/v1/operations/gateways" \
|
|
-H "Authorization: Bearer $JWT" \
|
|
| jq '.data[] | {code: .gatewayCode, status, buffer: .reportedBufferDepth}'
|
|
|
|
echo "=== Demo complete ===" |