Add Oracle Aggregator and CCIP Integration
- 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.
This commit is contained in:
149
scripts/validation/validate-deployment.sh
Executable file
149
scripts/validation/validate-deployment.sh
Executable file
@@ -0,0 +1,149 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
# Validate Deployment
|
||||
# This script validates that all deployments are working correctly
|
||||
|
||||
set -e
|
||||
|
||||
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
||||
source "$SCRIPT_DIR/../lib/init.sh"
|
||||
PROJECT_ROOT="$(cd "$SCRIPT_DIR/../.." && pwd)"
|
||||
NAMESPACE="${NAMESPACE:-besu-network}"
|
||||
|
||||
|
||||
log_success "Validating Deployment..."
|
||||
|
||||
# Check namespace
|
||||
log_warn "Checking namespace..."
|
||||
if kubectl get namespace "$NAMESPACE" &>/dev/null; then
|
||||
log_success "✓ Namespace $NAMESPACE exists"
|
||||
else
|
||||
log_warn "⚠ Namespace $NAMESPACE not found, creating..."
|
||||
kubectl create namespace "$NAMESPACE"
|
||||
fi
|
||||
|
||||
# Check validators
|
||||
log_warn "Checking validators..."
|
||||
VALIDATOR_STS=$(kubectl get statefulset besu-validator -n "$NAMESPACE" -o name 2>/dev/null || echo "")
|
||||
if [ -n "$VALIDATOR_STS" ]; then
|
||||
log_success "✓ Validator StatefulSet exists"
|
||||
|
||||
# Check replica count
|
||||
DESIRED=$(kubectl get statefulset besu-validator -n "$NAMESPACE" -o jsonpath='{.spec.replicas}' 2>/dev/null || echo "0")
|
||||
READY=$(kubectl get statefulset besu-validator -n "$NAMESPACE" -o jsonpath='{.status.readyReplicas}' 2>/dev/null || echo "0")
|
||||
log_warn " Desired: $DESIRED, Ready: $READY"
|
||||
|
||||
if [ "$DESIRED" == "$READY" ] && [ "$READY" -gt 0 ]; then
|
||||
log_success "✓ All validator pods are ready"
|
||||
else
|
||||
log_warn "⚠ Not all validator pods are ready"
|
||||
fi
|
||||
else
|
||||
log_warn "⚠ Validator StatefulSet not found"
|
||||
fi
|
||||
|
||||
# Check sentries
|
||||
log_warn "Checking sentries..."
|
||||
SENTRY_STS=$(kubectl get statefulset besu-sentry -n "$NAMESPACE" -o name 2>/dev/null || echo "")
|
||||
if [ -n "$SENTRY_STS" ]; then
|
||||
log_success "✓ Sentry StatefulSet exists"
|
||||
|
||||
DESIRED=$(kubectl get statefulset besu-sentry -n "$NAMESPACE" -o jsonpath='{.spec.replicas}' 2>/dev/null || echo "0")
|
||||
READY=$(kubectl get statefulset besu-sentry -n "$NAMESPACE" -o jsonpath='{.status.readyReplicas}' 2>/dev/null || echo "0")
|
||||
log_warn " Desired: $DESIRED, Ready: $READY"
|
||||
|
||||
if [ "$DESIRED" == "$READY" ] && [ "$READY" -gt 0 ]; then
|
||||
log_success "✓ All sentry pods are ready"
|
||||
else
|
||||
log_warn "⚠ Not all sentry pods are ready"
|
||||
fi
|
||||
else
|
||||
log_warn "⚠ Sentry StatefulSet not found"
|
||||
fi
|
||||
|
||||
# Check RPC nodes
|
||||
log_warn "Checking RPC nodes..."
|
||||
RPC_STS=$(kubectl get statefulset besu-rpc -n "$NAMESPACE" -o name 2>/dev/null || echo "")
|
||||
if [ -n "$RPC_STS" ]; then
|
||||
log_success "✓ RPC StatefulSet exists"
|
||||
|
||||
DESIRED=$(kubectl get statefulset besu-rpc -n "$NAMESPACE" -o jsonpath='{.spec.replicas}' 2>/dev/null || echo "0")
|
||||
READY=$(kubectl get statefulset besu-rpc -n "$NAMESPACE" -o jsonpath='{.status.readyReplicas}' 2>/dev/null || echo "0")
|
||||
log_warn " Desired: $DESIRED, Ready: $READY"
|
||||
|
||||
if [ "$DESIRED" == "$READY" ] && [ "$READY" -gt 0 ]; then
|
||||
log_success "✓ All RPC pods are ready"
|
||||
else
|
||||
log_warn "⚠ Not all RPC pods are ready"
|
||||
fi
|
||||
else
|
||||
log_warn "⚠ RPC StatefulSet not found"
|
||||
fi
|
||||
|
||||
# Check health checks
|
||||
log_warn "Checking health checks..."
|
||||
VALIDATOR_PODS=$(kubectl get pods -n "$NAMESPACE" -l component=validator -o jsonpath='{.items[0].metadata.name}' 2>/dev/null || echo "")
|
||||
|
||||
if [ -n "$VALIDATOR_PODS" ]; then
|
||||
# Check if pod has health check probes
|
||||
LIVENESS=$(kubectl get pod "$VALIDATOR_PODS" -n "$NAMESPACE" -o jsonpath='{.spec.containers[0].livenessProbe.httpGet.path}' 2>/dev/null || echo "")
|
||||
READINESS=$(kubectl get pod "$VALIDATOR_PODS" -n "$NAMESPACE" -o jsonpath='{.spec.containers[0].readinessProbe.httpGet.path}' 2>/dev/null || echo "")
|
||||
|
||||
if [ "$LIVENESS" == "/metrics" ]; then
|
||||
log_success "✓ Liveness probe is configured correctly"
|
||||
else
|
||||
log_warn "⚠ Liveness probe path: $LIVENESS"
|
||||
fi
|
||||
|
||||
if [ "$READINESS" == "/metrics" ]; then
|
||||
log_success "✓ Readiness probe is configured correctly"
|
||||
else
|
||||
log_warn "⚠ Readiness probe path: $READINESS"
|
||||
fi
|
||||
else
|
||||
log_warn "⚠ No validator pods found for health check validation"
|
||||
fi
|
||||
|
||||
# Test pod restart
|
||||
log_warn "Testing pod restart..."
|
||||
if [ -n "$VALIDATOR_PODS" ]; then
|
||||
log_warn " Restarting pod: $VALIDATOR_PODS"
|
||||
kubectl delete pod "$VALIDATOR_PODS" -n "$NAMESPACE" --wait=false
|
||||
|
||||
# Wait for pod to be ready
|
||||
log_warn " Waiting for pod to be ready..."
|
||||
if kubectl wait --for=condition=ready pod -l component=validator -n "$NAMESPACE" --timeout=300s 2>/dev/null; then
|
||||
log_success "✓ Pod restarted successfully"
|
||||
else
|
||||
log_warn "⚠ Pod restart test inconclusive"
|
||||
fi
|
||||
else
|
||||
log_warn "⚠ No pods available for restart test"
|
||||
fi
|
||||
|
||||
# Check services
|
||||
log_warn "Checking services..."
|
||||
SERVICES=("besu-validator" "besu-sentry" "besu-rpc")
|
||||
|
||||
for svc in "${SERVICES[@]}"; do
|
||||
if kubectl get service "$svc" -n "$NAMESPACE" &>/dev/null; then
|
||||
log_success "✓ Service $svc exists"
|
||||
else
|
||||
log_warn "⚠ Service $svc not found"
|
||||
fi
|
||||
done
|
||||
|
||||
# Check ConfigMaps
|
||||
log_warn "Checking ConfigMaps..."
|
||||
CONFIGMAPS=("besu-validator-config" "besu-sentry-config" "besu-rpc-config")
|
||||
|
||||
for cm in "${CONFIGMAPS[@]}"; do
|
||||
if kubectl get configmap "$cm" -n "$NAMESPACE" &>/dev/null; then
|
||||
log_success "✓ ConfigMap $cm exists"
|
||||
else
|
||||
log_warn "⚠ ConfigMap $cm not found"
|
||||
fi
|
||||
done
|
||||
|
||||
log_success "Deployment validation completed"
|
||||
|
||||
Reference in New Issue
Block a user