Files
smom-dbis-138/scripts/vm-deployment/validate-vm-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

115 lines
3.9 KiB
Bash
Executable File

#!/usr/bin/env bash
# Validate VM deployment
# This script validates that all VMs are properly deployed and configured
set -e
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
source "$SCRIPT_DIR/../lib/init.sh"
PROJECT_ROOT="$(cd "$SCRIPT_DIR/../.." && pwd)"
# Configuration
RESOURCE_GROUP="${RESOURCE_GROUP:-defi-oracle-mainnet-rg}"
VALIDATOR_COUNT="${VALIDATOR_COUNT:-2}"
SENTRY_COUNT="${SENTRY_COUNT:-2}"
RPC_COUNT="${RPC_COUNT:-2}"
log_success "Validating VM deployment..."
# Check prerequisites
if ! command -v az &> /dev/null; then
log_error "Error: Azure CLI not found"
exit 1
fi
if ! az account show &> /dev/null; then
log_error "Error: Not logged in to Azure"
exit 1
fi
# Get VM list
log_warn "Getting VM list..."
VMS=$(az vm list --resource-group "$RESOURCE_GROUP" --query "[].{Name:name, PowerState:powerState, IP:publicIps}" -o json 2>/dev/null || echo "[]")
if [ "$VMS" == "[]" ]; then
log_error "Error: No VMs found in resource group"
exit 1
fi
VALIDATOR_VMS=$(echo "$VMS" | jq -r '.[] | select(.Name | contains("validator")) | .Name')
SENTRY_VMS=$(echo "$VMS" | jq -r '.[] | select(.Name | contains("sentry")) | .Name')
RPC_VMS=$(echo "$VMS" | jq -r '.[] | select(.Name | contains("rpc")) | .Name')
# Validate validator VMs
log_warn "Validating validator VMs..."
VALIDATOR_COUNT_FOUND=$(echo "$VALIDATOR_VMS" | grep -c . || echo "0")
if [ "$VALIDATOR_COUNT_FOUND" -lt "$VALIDATOR_COUNT" ]; then
log_error "✗ Expected $VALIDATOR_COUNT validators, found $VALIDATOR_COUNT_FOUND"
else
log_success "✓ Found $VALIDATOR_COUNT_FOUND validator VMs"
fi
# Validate sentry VMs
log_warn "Validating sentry VMs..."
SENTRY_COUNT_FOUND=$(echo "$SENTRY_VMS" | grep -c . || echo "0")
if [ "$SENTRY_COUNT_FOUND" -lt "$SENTRY_COUNT" ]; then
log_error "✗ Expected $SENTRY_COUNT sentries, found $SENTRY_COUNT_FOUND"
else
log_success "✓ Found $SENTRY_COUNT_FOUND sentry VMs"
fi
# Validate RPC VMs
log_warn "Validating RPC VMs..."
RPC_COUNT_FOUND=$(echo "$RPC_VMS" | grep -c . || echo "0")
if [ "$RPC_COUNT_FOUND" -lt "$RPC_COUNT" ]; then
log_error "✗ Expected $RPC_COUNT RPC nodes, found $RPC_COUNT_FOUND"
else
log_success "✓ Found $RPC_COUNT_FOUND RPC VMs"
fi
# Check VM status
log_warn "Checking VM status..."
for VM in $VALIDATOR_VMS $SENTRY_VMS $RPC_VMS; do
STATUS=$(az vm show --resource-group "$RESOURCE_GROUP" --name "$VM" --show-details --query "powerState" -o tsv 2>/dev/null || echo "unknown")
if [ "$STATUS" == "VM running" ]; then
log_success "$VM is running"
else
log_error "$VM status: $STATUS"
fi
done
# Check Besu containers
log_warn "Checking Besu containers..."
for VM in $SENTRY_VMS $RPC_VMS; do
IP=$(az vm show --resource-group "$RESOURCE_GROUP" --name "$VM" --show-details --query "publicIps" -o tsv 2>/dev/null || echo "")
if [ -n "$IP" ] && [ "$IP" != "None" ]; then
if ssh -o ConnectTimeout=5 -o StrictHostKeyChecking=no besuadmin@$IP "docker ps | grep -q besu" 2>/dev/null; then
log_success "$VM: Besu container is running"
else
log_error "$VM: Besu container is not running"
fi
fi
done
# Check RPC endpoints
log_warn "Checking RPC endpoints..."
for VM in $RPC_VMS; do
IP=$(az vm show --resource-group "$RESOURCE_GROUP" --name "$VM" --show-details --query "publicIps" -o tsv 2>/dev/null || echo "")
if [ -n "$IP" ] && [ "$IP" != "None" ]; then
RESPONSE=$(curl -s -X POST -H "Content-Type: application/json" \
--data '{"jsonrpc":"2.0","method":"eth_blockNumber","params":[],"id":1}' \
http://$IP:8545 2>/dev/null || echo "")
if echo "$RESPONSE" | jq -e '.result' > /dev/null 2>&1; then
BLOCK_NUMBER=$(echo "$RESPONSE" | jq -r '.result')
log_success "$VM: RPC endpoint responding (block: $BLOCK_NUMBER)"
else
log_error "$VM: RPC endpoint not responding"
fi
fi
done
log_success "Validation complete!"