#!/usr/bin/env bash
# ============================================================================
# BLACKROAD OS, INC. - PROPRIETARY AND CONFIDENTIAL
# Copyright (c) 2025-2026 BlackRoad OS, Inc. All Rights Reserved.
# ============================================================================
# br-cluster — live cluster status
set -eo pipefail

source "$HOME/.blackroad/config/nodes.sh" 2>/dev/null || {
  PINK='\033[38;5;205m'; AMBER='\033[38;5;214m'; GREEN='\033[38;5;82m'
  RED='\033[38;5;196m'; BLUE='\033[38;5;69m'; RESET='\033[0m'
}

declare -A NODE_ROLE=(
  [alice]="Gateway/DNS"
  [cecilia]="AI Primary"
  [octavia]="Storage/Gitea"
  [aria]="Portainer"
  [lucidia]="Services"
  [anastasia]="Cloud Hub"
  [gematria]="Cloud Edge"
)

case "${1:-status}" in
  status)
    printf '%b╔══════════════════════════════════════════╗%b\n' "$PINK" "$RESET"
    printf '%b║%b  BLACKROAD CLUSTER                       %b║%b\n' "$PINK" "$RESET" "$PINK" "$RESET"
    printf '%b╚══════════════════════════════════════════╝%b\n' "$PINK" "$RESET"

    for node in "${ALL_NODES[@]}"; do
      local ip="${NODE_IP[$node]:-}"
      [[ -z "$ip" ]] && continue
      local role="${NODE_ROLE[$node]:-Node}"
      printf '  '
      if br_ping "$node" 2>/dev/null; then
        printf '%b●%b %-10s %b%-14s%b %b%s%b\n' "$GREEN" "$RESET" "$node" "$BLUE" "$role" "$RESET" "$GREEN" "$ip" "$RESET"
      else
        printf '%b○%b %-10s %b%-14s%b %boffline%b\n' "$RED" "$RESET" "$node" "$BLUE" "$role" "$RESET" "$RED" "$RESET"
      fi
    done
    ;;
  nodes)
    printf '%-12s %-16s %-14s %s\n' "NODE" "IP" "ROLE" "STATUS"
    printf '%-12s %-16s %-14s %s\n' "────" "──" "────" "──────"
    for node in "${ALL_NODES[@]}"; do
      local ip="${NODE_IP[$node]:-}"
      [[ -z "$ip" ]] && continue
      local role="${NODE_ROLE[$node]:-Node}"
      local status="down"
      br_ping "$node" 2>/dev/null && status="up"
      printf '%-12s %-16s %-14s %s\n' "$node" "$ip" "$role" "$status"
    done
    ;;
  ssh)
    NODE="${2:-alice}"
    local target
    target=$(br_ssh_target "$NODE" 2>/dev/null) || { echo "Unknown node: $NODE"; exit 1; }
    ssh $BR_SSH_OPTS "$target"
    ;;
  *)
    echo "Usage: br-cluster [status|nodes|ssh <node>]"
    ;;
esac
