Apply Composer changes: comprehensive API updates, migrations, middleware, and infrastructure improvements
- Add comprehensive database migrations (001-024) for schema evolution - Enhance API schema with expanded type definitions and resolvers - Add new middleware: audit logging, rate limiting, MFA enforcement, security, tenant auth - Implement new services: AI optimization, billing, blockchain, compliance, marketplace - Add adapter layer for cloud integrations (Cloudflare, Kubernetes, Proxmox, storage) - Update Crossplane provider with enhanced VM management capabilities - Add comprehensive test suite for API endpoints and services - Update frontend components with improved GraphQL subscriptions and real-time updates - Enhance security configurations and headers (CSP, CORS, etc.) - Update documentation and configuration files - Add new CI/CD workflows and validation scripts - Implement design system improvements and UI enhancements
This commit is contained in:
167
scripts/test-proxmox-interconnectivity.sh
Executable file
167
scripts/test-proxmox-interconnectivity.sh
Executable file
@@ -0,0 +1,167 @@
|
||||
#!/bin/bash
|
||||
# test-proxmox-interconnectivity.sh
|
||||
# Tests connectivity between Proxmox instances
|
||||
|
||||
set -euo pipefail
|
||||
|
||||
# Colors
|
||||
GREEN='\033[0;32m'
|
||||
RED='\033[0;31m'
|
||||
YELLOW='\033[1;33m'
|
||||
BLUE='\033[0;34m'
|
||||
NC='\033[0m'
|
||||
|
||||
# Load environment variables
|
||||
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
||||
if [ -f "${SCRIPT_DIR}/../.env" ]; then
|
||||
set -a
|
||||
source <(grep -v '^#' "${SCRIPT_DIR}/../.env" | grep -v '^$' | sed 's/^/export /')
|
||||
set +a
|
||||
fi
|
||||
|
||||
# Instance configurations
|
||||
declare -A INSTANCES=(
|
||||
["ml110-01"]="192.168.11.10:https://ml110-01.sankofa.nexus:8006:${PROXMOX_TOKEN_ML110_01:-}"
|
||||
["r630-01"]="192.168.11.11:https://r630-01.sankofa.nexus:8006:${PROXMOX_TOKEN_R630_01:-}"
|
||||
)
|
||||
|
||||
log() {
|
||||
echo -e "${GREEN}[INFO]${NC} $1"
|
||||
}
|
||||
|
||||
error() {
|
||||
echo -e "${RED}[ERROR]${NC} $1" >&2
|
||||
}
|
||||
|
||||
warn() {
|
||||
echo -e "${YELLOW}[WARN]${NC} $1"
|
||||
}
|
||||
|
||||
info() {
|
||||
echo -e "${BLUE}[INFO]${NC} $1"
|
||||
}
|
||||
|
||||
test_connectivity() {
|
||||
local from_name=$1
|
||||
local from_ip=$2
|
||||
local to_name=$3
|
||||
local to_endpoint=$4
|
||||
local to_token=$5
|
||||
|
||||
info "Testing: ${from_name} (${from_ip}) → ${to_name}"
|
||||
|
||||
# Test basic connectivity
|
||||
local http_code=$(curl -k -s --connect-timeout 5 -o /dev/null -w "%{http_code}" "${to_endpoint}/api2/json/version" 2>/dev/null || echo "000")
|
||||
|
||||
case "$http_code" in
|
||||
200)
|
||||
log " ✓ Connected (HTTP 200)"
|
||||
if [ -n "$to_token" ]; then
|
||||
local version=$(curl -k -s -H "Authorization: PVEAPIToken ${to_token}" "${to_endpoint}/api2/json/version" 2>/dev/null | jq -r '.data.version // empty')
|
||||
if [ -n "$version" ]; then
|
||||
log " ✓ Authenticated - Proxmox version: ${version}"
|
||||
fi
|
||||
fi
|
||||
return 0
|
||||
;;
|
||||
401)
|
||||
warn " ⚠ Connected but authentication required (HTTP 401)"
|
||||
return 0
|
||||
;;
|
||||
000)
|
||||
error " ✗ Connection failed (timeout or unreachable)"
|
||||
return 1
|
||||
;;
|
||||
*)
|
||||
warn " ⚠ Unexpected response: HTTP ${http_code}"
|
||||
return 1
|
||||
;;
|
||||
esac
|
||||
}
|
||||
|
||||
test_ping() {
|
||||
local from_name=$1
|
||||
local from_ip=$2
|
||||
local to_name=$3
|
||||
local to_ip=$4
|
||||
|
||||
info "Testing ping: ${from_name} → ${to_name}"
|
||||
|
||||
if command -v ping &> /dev/null; then
|
||||
if ping -c 2 -W 2 "${to_ip}" &> /dev/null; then
|
||||
log " ✓ Ping successful"
|
||||
return 0
|
||||
else
|
||||
error " ✗ Ping failed"
|
||||
return 1
|
||||
fi
|
||||
else
|
||||
warn " ⚠ ping command not available"
|
||||
return 0
|
||||
fi
|
||||
}
|
||||
|
||||
main() {
|
||||
echo ""
|
||||
echo "╔══════════════════════════════════════════════════════════════╗"
|
||||
echo "║ Proxmox Inter-Instance Connectivity Test ║"
|
||||
echo "╚══════════════════════════════════════════════════════════════╝"
|
||||
echo ""
|
||||
|
||||
info "Network Configuration:"
|
||||
echo " • Instance 1: ML110-01 at 192.168.11.10"
|
||||
echo " • Instance 2: R630-01 at 192.168.11.11"
|
||||
echo " • Subnet: 192.168.11.0/24"
|
||||
echo ""
|
||||
|
||||
local total_errors=0
|
||||
local total_tests=0
|
||||
|
||||
# Test all combinations
|
||||
for from_name in "${!INSTANCES[@]}"; do
|
||||
IFS=':' read -r from_ip from_endpoint from_token <<< "${INSTANCES[$from_name]}"
|
||||
|
||||
for to_name in "${!INSTANCES[@]}"; do
|
||||
if [ "$from_name" != "$to_name" ]; then
|
||||
IFS=':' read -r to_ip to_endpoint to_token <<< "${INSTANCES[$to_name]}"
|
||||
|
||||
info "=================================="
|
||||
((total_tests++))
|
||||
|
||||
# Test ping
|
||||
test_ping "$from_name" "$from_ip" "$to_name" "$to_ip" || ((total_errors++))
|
||||
echo ""
|
||||
|
||||
# Test HTTP connectivity
|
||||
test_connectivity "$from_name" "$from_ip" "$to_name" "$to_endpoint" "$to_token" || ((total_errors++))
|
||||
echo ""
|
||||
fi
|
||||
done
|
||||
done
|
||||
|
||||
echo ""
|
||||
echo "═══════════════════════════════════════════════════════════════"
|
||||
if [ $total_errors -eq 0 ]; then
|
||||
log "✓ All connectivity tests passed! (${total_tests} tests)"
|
||||
echo ""
|
||||
info "Instances can see each other and are ready for clustering"
|
||||
else
|
||||
error "✗ Found ${total_errors} issue(s) in ${total_tests} tests"
|
||||
echo ""
|
||||
warn "Instances may not be able to see each other"
|
||||
warn "Check:"
|
||||
warn " • Network connectivity"
|
||||
warn " • Firewall rules"
|
||||
warn " • Routing configuration"
|
||||
fi
|
||||
echo ""
|
||||
|
||||
info "Note: These tests are from THIS machine"
|
||||
info "To test FROM the Proxmox instances themselves:"
|
||||
info " 1. SSH into each instance"
|
||||
info " 2. Run: curl -k https://<other-instance-ip>:8006/api2/json/version"
|
||||
echo ""
|
||||
}
|
||||
|
||||
main "$@"
|
||||
|
||||
Reference in New Issue
Block a user