Files
smom-dbis-138/scripts/validation/validate-deployment.sh
defiQUG 1fb7266469 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.
2025-12-12 14:57:48 -08:00

150 lines
5.2 KiB
Bash
Executable File

#!/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"