Files
Sankofa/scripts/continuous-monitor.sh
T
2026-07-07 09:41:34 -07:00

77 lines
2.3 KiB
Bash
Executable File

#!/bin/bash
# Continuous VM Deployment Monitor
# Monitors VM deployment progress and provides real-time updates
set -e
GREEN='\033[0;32m'
YELLOW='\033[1;33m'
BLUE='\033[0;34m'
RED='\033[0;31m'
NC='\033[0m'
INTERVAL=${1:-30} # Default 30 seconds
echo "=========================================="
echo "VM Deployment Continuous Monitor"
echo "=========================================="
echo "Update interval: ${INTERVAL} seconds"
echo "Press Ctrl+C to stop"
echo ""
PREV_COUNT=0
ITERATION=0
while true; do
ITERATION=$((ITERATION + 1))
TIMESTAMP=$(date '+%Y-%m-%d %H:%M:%S')
# Get counts
TOTAL=$(kubectl get proxmoxvm -A --no-headers 2>&1 | wc -l)
WITH_VMID=$(kubectl get proxmoxvm -A -o jsonpath='{range .items[*]}{.status.vmId}{"\n"}{end}' 2>&1 | grep -v "^$" | wc -l)
PENDING=$((TOTAL - WITH_VMID))
NEW_VMS=$((WITH_VMID - PREV_COUNT))
# Provider status
PROVIDER_STATUS=$(kubectl get pods -n crossplane-system -l app=crossplane-provider-proxmox -o jsonpath='{.items[0].status.phase}' 2>&1 || echo "Unknown")
# Check for errors
AUTH_ERRORS=$(kubectl logs -n crossplane-system -l app=crossplane-provider-proxmox --since=1m 2>&1 | grep -i "invalid PVE ticket\|401.*authentication" | wc -l)
echo -e "${BLUE}[$TIMESTAMP] Iteration $ITERATION${NC}"
echo " Provider: $PROVIDER_STATUS"
echo " Total VMs: $TOTAL"
echo -e " ${GREEN}Created (with VMID): $WITH_VMID${NC}"
echo -e " ${YELLOW}Pending: $PENDING${NC}"
if [ $NEW_VMS -gt 0 ]; then
echo -e " ${GREEN}✨ New VMs created: +$NEW_VMS${NC}"
fi
if [ $AUTH_ERRORS -gt 0 ]; then
echo -e " ${RED}⚠️ Authentication errors: $AUTH_ERRORS${NC}"
else
echo -e " ${GREEN}✅ No authentication errors${NC}"
fi
# Progress percentage
if [ $TOTAL -gt 0 ]; then
PERCENT=$((WITH_VMID * 100 / TOTAL))
echo " Progress: $PERCENT% ($WITH_VMID/$TOTAL)"
fi
# Show some VMs with VMID
if [ $WITH_VMID -gt 0 ]; then
echo ""
echo " Recent VMs with VMID:"
kubectl get proxmoxvm -A -o jsonpath='{range .items[*]}{.metadata.name}{"\t"}{.status.vmId}{"\n"}{end}' 2>&1 | grep -v "\t$" | tail -5 | sed 's/^/ /'
fi
PREV_COUNT=$WITH_VMID
echo ""
echo "----------------------------------------"
sleep $INTERVAL
done