- Introduced Aggregator.sol for Chainlink-compatible oracle functionality, including round-based updates and access control. - Added OracleWithCCIP.sol to extend Aggregator with CCIP cross-chain messaging capabilities. - Created .gitmodules to include OpenZeppelin contracts as a submodule. - Developed a comprehensive deployment guide in NEXT_STEPS_COMPLETE_GUIDE.md for Phase 2 and smart contract deployment. - Implemented Vite configuration for the orchestration portal, supporting both Vue and React frameworks. - Added server-side logic for the Multi-Cloud Orchestration Portal, including API endpoints for environment management and monitoring. - Created scripts for resource import and usage validation across non-US regions. - Added tests for CCIP error handling and integration to ensure robust functionality. - Included various new files and directories for the orchestration portal and deployment scripts.
171 lines
5.6 KiB
Bash
Executable File
171 lines
5.6 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
# Verify all Chain-138 services
|
|
|
|
set -e
|
|
|
|
cd "$(dirname "$0")/../.."
|
|
|
|
# Color codes
|
|
|
|
echo "==================================================================="
|
|
echo " CHAIN-138 SERVICES VERIFICATION"
|
|
echo "==================================================================="
|
|
|
|
# Load environment variables
|
|
if [ -f .env ]; then
|
|
source .env 2>/dev/null || true
|
|
fi
|
|
|
|
ERRORS=0
|
|
WARNINGS=0
|
|
SUCCESS=0
|
|
|
|
check_service() {
|
|
local name=$1
|
|
local status=$2
|
|
local details=$3
|
|
|
|
if [ "$status" = "success" ]; then
|
|
echo -e " ${GREEN}✅ $name${NC}"
|
|
SUCCESS=$((SUCCESS + 1))
|
|
elif [ "$status" = "warning" ]; then
|
|
echo -e " ${YELLOW}⚠️ $name${NC}"
|
|
WARNINGS=$((WARNINGS + 1))
|
|
else
|
|
echo -e " ${RED}❌ $name${NC}"
|
|
ERRORS=$((ERRORS + 1))
|
|
fi
|
|
|
|
if [ -n "$details" ]; then
|
|
echo " $details"
|
|
fi
|
|
}
|
|
|
|
log_info "1. Blockchain Services"
|
|
|
|
# Check Besu validators
|
|
if command -v kubectl &> /dev/null && kubectl cluster-info &> /dev/null 2>&1; then
|
|
VALIDATOR_PODS=$(kubectl get pods -n besu-network -l app=besu-validator 2>/dev/null | grep -v NAME | wc -l)
|
|
if [ "$VALIDATOR_PODS" -gt 0 ]; then
|
|
RUNNING=$(kubectl get pods -n besu-network -l app=besu-validator 2>/dev/null | grep Running | wc -l)
|
|
check_service "Besu Validators" "success" "$RUNNING/$VALIDATOR_PODS running"
|
|
else
|
|
check_service "Besu Validators" "warning" "No validator pods found"
|
|
fi
|
|
|
|
# Check sentries
|
|
SENTRY_PODS=$(kubectl get pods -n besu-network -l app=besu-sentry 2>/dev/null | grep -v NAME | wc -l)
|
|
if [ "$SENTRY_PODS" -gt 0 ]; then
|
|
RUNNING=$(kubectl get pods -n besu-network -l app=besu-sentry 2>/dev/null | grep Running | wc -l)
|
|
check_service "Besu Sentries" "success" "$RUNNING/$SENTRY_PODS running"
|
|
else
|
|
check_service "Besu Sentries" "warning" "No sentry pods found"
|
|
fi
|
|
|
|
# Check RPC nodes
|
|
RPC_PODS=$(kubectl get pods -n besu-network -l app=besu-rpc 2>/dev/null | grep -v NAME | wc -l)
|
|
if [ "$RPC_PODS" -gt 0 ]; then
|
|
RUNNING=$(kubectl get pods -n besu-network -l app=besu-rpc 2>/dev/null | grep Running | wc -l)
|
|
check_service "Besu RPC Nodes" "success" "$RUNNING/$RPC_PODS running"
|
|
else
|
|
check_service "Besu RPC Nodes" "warning" "No RPC pods found"
|
|
fi
|
|
else
|
|
check_service "Kubernetes Access" "warning" "kubectl not available or cluster not accessible"
|
|
fi
|
|
|
|
log_info "2. Monitoring Services"
|
|
|
|
# Check Prometheus
|
|
if command -v kubectl &> /dev/null && kubectl cluster-info &> /dev/null 2>&1; then
|
|
if kubectl get pods -n monitoring -l app=prometheus 2>/dev/null | grep -q Running; then
|
|
check_service "Prometheus" "success" "Running"
|
|
else
|
|
check_service "Prometheus" "warning" "Not running or not found"
|
|
fi
|
|
|
|
# Check Grafana
|
|
if kubectl get pods -n monitoring -l app=grafana 2>/dev/null | grep -q Running; then
|
|
check_service "Grafana" "success" "Running"
|
|
else
|
|
check_service "Grafana" "warning" "Not running or not found"
|
|
fi
|
|
else
|
|
check_service "Monitoring Services" "warning" "Cannot check (kubectl not available)"
|
|
fi
|
|
|
|
log_info "3. Explorer Services"
|
|
|
|
# Check Blockscout
|
|
if command -v kubectl &> /dev/null && kubectl cluster-info &> /dev/null 2>&1; then
|
|
if kubectl get pods -n besu-network -l app=blockscout 2>/dev/null | grep -q Running; then
|
|
check_service "Blockscout" "success" "Running"
|
|
else
|
|
check_service "Blockscout" "warning" "Not running or not found"
|
|
fi
|
|
else
|
|
check_service "Blockscout" "warning" "Cannot check (kubectl not available)"
|
|
fi
|
|
|
|
log_info "4. Network Services"
|
|
|
|
# Check RPC endpoint
|
|
if [ -n "$CHAIN138_RPC_URL" ]; then
|
|
if curl -s --max-time 5 "$CHAIN138_RPC_URL" -X POST -H "Content-Type: application/json" \
|
|
-d '{"jsonrpc":"2.0","method":"eth_blockNumber","params":[],"id":1}' 2>/dev/null | grep -q "result"; then
|
|
check_service "RPC Endpoint" "success" "$CHAIN138_RPC_URL"
|
|
else
|
|
check_service "RPC Endpoint" "error" "$CHAIN138_RPC_URL (not accessible)"
|
|
fi
|
|
else
|
|
check_service "RPC Endpoint" "error" "Not configured"
|
|
fi
|
|
|
|
# Check WebSocket endpoint (if configured)
|
|
if [ -n "$CHAIN138_WS_URL" ]; then
|
|
check_service "WebSocket Endpoint" "success" "Configured: $CHAIN138_WS_URL"
|
|
else
|
|
check_service "WebSocket Endpoint" "warning" "Not configured"
|
|
fi
|
|
|
|
log_info "5. Configuration Files"
|
|
|
|
# Check Kubernetes manifests
|
|
if [ -d "k8s" ]; then
|
|
MANIFEST_COUNT=$(find k8s -name "*.yaml" -o -name "*.yml" 2>/dev/null | wc -l)
|
|
check_service "Kubernetes Manifests" "success" "$MANIFEST_COUNT files found"
|
|
else
|
|
check_service "Kubernetes Manifests" "warning" "k8s directory not found"
|
|
fi
|
|
|
|
# Check Helm charts
|
|
if [ -d "helm" ]; then
|
|
CHART_COUNT=$(find helm -name "Chart.yaml" 2>/dev/null | wc -l)
|
|
check_service "Helm Charts" "success" "$CHART_COUNT charts found"
|
|
else
|
|
check_service "Helm Charts" "warning" "helm directory not found"
|
|
fi
|
|
|
|
# Check Terraform
|
|
if [ -d "terraform" ]; then
|
|
TF_FILES=$(find terraform -name "*.tf" 2>/dev/null | wc -l)
|
|
check_service "Terraform Config" "success" "$TF_FILES files found"
|
|
else
|
|
check_service "Terraform Config" "warning" "terraform directory not found"
|
|
fi
|
|
|
|
echo "==================================================================="
|
|
log_info "SUMMARY"
|
|
echo "==================================================================="
|
|
echo " ✅ Successful: $SUCCESS"
|
|
echo " ⚠️ Warnings: $WARNINGS"
|
|
echo " ❌ Errors: $ERRORS"
|
|
|
|
if [ $ERRORS -eq 0 ]; then
|
|
log_success "✅ All services verified!"
|
|
exit 0
|
|
else
|
|
log_error "❌ Some services have errors"
|
|
exit 1
|
|
fi
|