provisioning/core/nulib/main_provisioning/dashboard.nu

157 lines
4.8 KiB
Plaintext
Raw Normal View History

#!/usr/bin/env nu
# Dashboard Management Commands
# Interactive dashboards and data visualization
use ../dashboard/marimo_integration.nu *
# Main dashboard command
export def main [
subcommand?: string
...args: string
]: [string, ...string] -> nothing {
if ($subcommand | is-empty) {
print "πŸ“Š Systems Provisioning Dashboard"
print ""
print "Interactive dashboards for infrastructure monitoring and analytics"
print ""
print "Usage: provisioning dashboard <subcommand> [args...]"
print ""
print "Subcommands:"
print " create [template] [name] - Create interactive dashboard"
print " start <name> [port] - Start dashboard server"
print " list - List available dashboards"
print " export <name> [output] - Export dashboard to HTML"
print " demo - Create and start demo dashboard"
print " status - Show dashboard system status"
print ""
print "Templates:"
print " monitoring - Real-time logs and metrics"
print " infrastructure - Server and cluster overview"
print " full - Complete observability dashboard"
print " ai-insights - AI-powered analytics and predictions"
print ""
print "Examples:"
print " provisioning dashboard demo"
print " provisioning dashboard create monitoring my-dashboard"
print " provisioning dashboard start my-dashboard 8080"
print ""
return
}
match $subcommand {
"create" => {
marimo_integration create ...$args
}
"start" => {
marimo_integration start ...$args
}
"list" => {
marimo_integration list
}
"export" => {
marimo_integration export ...$args
}
"demo" => {
create_demo_dashboard
}
"status" => {
show_dashboard_status
}
_ => {
print $"❌ Unknown subcommand: ($subcommand)"
print "Run 'provisioning dashboard' for help"
}
}
}
# Create and start a demo dashboard
def create_demo_dashboard []: nothing -> nothing {
print "πŸš€ Creating demo dashboard with live data..."
# Check if API server is running
let api_status = check_api_server_status
if not $api_status {
print "⚠️ API server not running. Starting API server..."
start_api_server --port 3000 --background
sleep 3sec
}
# Create AI insights dashboard
marimo_integration create ai-insights demo-dashboard
print ""
print "πŸŽ‰ Demo dashboard created and started!"
print "πŸ“Š Open your browser to: http://localhost:8080"
print ""
print "Features available:"
print " πŸ” Real-time log analysis"
print " πŸ“ˆ System metrics visualization"
print " πŸ—οΈ Infrastructure topology"
print " πŸ€– AI-powered insights and predictions"
print " πŸ“Š Interactive charts and tables"
print ""
}
# Check API server status
def check_api_server_status []: nothing -> bool {
try {
http get "http://localhost:3000/health" | get status == "healthy"
} catch {
false
}
}
# Start API server in background
def start_api_server [--port: int = 3000, --background = false]: nothing -> nothing {
if $background {
nu -c "use ../api/server.nu *; start_api_server --port $port" &
} else {
use ../api/server.nu *
start_api_server --port $port
}
}
# Show dashboard system status
def show_dashboard_status []: nothing -> nothing {
print "πŸ“Š Dashboard System Status"
print ""
# Check Marimo installation
let marimo_available = check_marimo_available
let marimo_status = if $marimo_available { "βœ… Installed" } else { "❌ Not installed" }
print $"Marimo: ($marimo_status)"
# Check API server
let api_status = check_api_server_status
let api_display = if $api_status { "βœ… Running" } else { "❌ Stopped" }
print $"API Server: ($api_display)"
# List dashboards
let dashboards = list_dashboards
print $"Dashboards: ($dashboards | length) available"
if ($dashboards | length) > 0 {
print ""
print "Available dashboards:"
$dashboards | select name modified | table
}
# System resources
print ""
print "System Resources:"
let mem_info = (sys mem)
print $"Memory: ($mem_info.used | into string) / ($mem_info.total | into string) used"
print ""
print "Quick start:"
if not $marimo_available {
print "1. Install Marimo: provisioning dashboard create install"
}
if not $api_status {
print "2. Start API: provisioning api start"
}
print "3. Create dashboard: provisioning dashboard demo"
}