- 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.
224 lines
7.3 KiB
Bash
Executable File
224 lines
7.3 KiB
Bash
Executable File
#!/bin/bash
|
||
# Azure Resources Testing Script
|
||
# Tests Azure resources via Azure CLI
|
||
|
||
set -euo pipefail
|
||
|
||
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
||
PHASE1_DIR="$(cd "$SCRIPT_DIR/.." && pwd)"
|
||
|
||
# Colors
|
||
GREEN='\033[0;32m'
|
||
RED='\033[0;31m'
|
||
YELLOW='\033[1;33m'
|
||
BLUE='\033[0;34m'
|
||
NC='\033[0m'
|
||
|
||
echo "=========================================="
|
||
echo "Azure Resources Testing"
|
||
echo "=========================================="
|
||
echo ""
|
||
|
||
# Check Azure CLI
|
||
if ! command -v az > /dev/null 2>&1; then
|
||
echo -e "${RED}✗${NC} Azure CLI not installed"
|
||
exit 1
|
||
fi
|
||
|
||
# Check Azure login
|
||
if ! az account show > /dev/null 2>&1; then
|
||
echo -e "${RED}✗${NC} Not logged in to Azure. Run: az login"
|
||
exit 1
|
||
fi
|
||
|
||
echo -e "${GREEN}✓${NC} Azure CLI authenticated"
|
||
echo ""
|
||
|
||
cd "$PHASE1_DIR"
|
||
|
||
# Test Resource Groups
|
||
echo "Testing Resource Groups..."
|
||
RGS=$(terraform output -json 2>/dev/null | jq -r '.phase1_us_regions.value | to_entries[] | .value.resource_group' || echo "")
|
||
RGS="$RGS $(terraform output -json 2>/dev/null | jq -r '.nginx_proxy.value // {} | .resource_group // empty' || echo "")"
|
||
|
||
RG_COUNT=0
|
||
RG_FOUND=0
|
||
for rg in $RGS; do
|
||
if [ -n "$rg" ] && [ "$rg" != "null" ]; then
|
||
((RG_COUNT++))
|
||
if az group show --name "$rg" > /dev/null 2>&1; then
|
||
echo -e " ${GREEN}✓${NC} $rg"
|
||
((RG_FOUND++))
|
||
else
|
||
echo -e " ${RED}✗${NC} $rg (not found)"
|
||
fi
|
||
fi
|
||
done
|
||
|
||
if [ $RG_FOUND -ge 6 ]; then
|
||
echo -e "${GREEN}✓${NC} Resource Groups: $RG_FOUND/$RG_COUNT found"
|
||
else
|
||
echo -e "${YELLOW}⊘${NC} Resource Groups: $RG_FOUND/$RG_COUNT found"
|
||
fi
|
||
|
||
# Test Virtual Machines
|
||
echo ""
|
||
echo "Testing Virtual Machines..."
|
||
VMS=$(terraform output -json 2>/dev/null | jq -r '.phase1_us_regions.value | to_entries[] | "\(.value.resource_group):\(.value.vm_names[0])"' || echo "")
|
||
|
||
VM_COUNT=0
|
||
VM_RUNNING=0
|
||
VM_STOPPED=0
|
||
VM_NOT_FOUND=0
|
||
|
||
while IFS=: read -r rg vm_name; do
|
||
if [ -n "$vm_name" ] && [ "$vm_name" != "null" ] && [ -n "$rg" ]; then
|
||
((VM_COUNT++))
|
||
VM_STATE=$(az vm show --resource-group "$rg" --name "$vm_name" --show-details --query "powerState" -o tsv 2>/dev/null || echo "NotFound")
|
||
case "$VM_STATE" in
|
||
"VM running")
|
||
echo -e " ${GREEN}✓${NC} $vm_name ($rg): Running"
|
||
((VM_RUNNING++))
|
||
;;
|
||
"VM deallocated"|"VM stopped")
|
||
echo -e " ${YELLOW}⊘${NC} $vm_name ($rg): Stopped"
|
||
((VM_STOPPED++))
|
||
;;
|
||
*)
|
||
echo -e " ${RED}✗${NC} $vm_name ($rg): Not found"
|
||
((VM_NOT_FOUND++))
|
||
;;
|
||
esac
|
||
fi
|
||
done <<< "$VMS"
|
||
|
||
# Test Nginx proxy VM
|
||
NGINX_RG=$(terraform output -json 2>/dev/null | jq -r '.nginx_proxy.value // {} | .resource_group // empty' || echo "")
|
||
if [ -n "$NGINX_RG" ] && [ "$NGINX_RG" != "null" ]; then
|
||
NGINX_VM="az-p-wst-proxy-nginx"
|
||
NGINX_STATE=$(az vm show --resource-group "$NGINX_RG" --name "$NGINX_VM" --show-details --query "powerState" -o tsv 2>/dev/null || echo "NotFound")
|
||
case "$NGINX_STATE" in
|
||
"VM running")
|
||
echo -e " ${GREEN}✓${NC} $NGINX_VM ($NGINX_RG): Running"
|
||
((VM_RUNNING++))
|
||
;;
|
||
"VM deallocated"|"VM stopped")
|
||
echo -e " ${YELLOW}⊘${NC} $NGINX_VM ($NGINX_RG): Stopped"
|
||
((VM_STOPPED++))
|
||
;;
|
||
*)
|
||
echo -e " ${RED}✗${NC} $NGINX_VM ($NGINX_RG): Not found"
|
||
((VM_NOT_FOUND++))
|
||
;;
|
||
esac
|
||
((VM_COUNT++))
|
||
fi
|
||
|
||
echo ""
|
||
echo "VM Status Summary:"
|
||
echo " Running: $VM_RUNNING"
|
||
echo " Stopped: $VM_STOPPED"
|
||
echo " Not Found: $VM_NOT_FOUND"
|
||
|
||
# Test Storage Accounts
|
||
echo ""
|
||
echo "Testing Storage Accounts..."
|
||
STORAGE_ACCOUNTS=$(terraform output -json 2>/dev/null | jq -r '.storage_accounts.value.boot_diagnostics | to_entries[] | "\(.value.name)"' || echo "")
|
||
STORAGE_COUNT=0
|
||
STORAGE_FOUND=0
|
||
|
||
for sa in $STORAGE_ACCOUNTS; do
|
||
if [ -n "$sa" ] && [ "$sa" != "null" ]; then
|
||
((STORAGE_COUNT++))
|
||
if az storage account show --name "$sa" > /dev/null 2>&1; then
|
||
echo -e " ${GREEN}✓${NC} $sa"
|
||
((STORAGE_FOUND++))
|
||
else
|
||
echo -e " ${RED}✗${NC} $sa (not found)"
|
||
fi
|
||
fi
|
||
done
|
||
|
||
if [ $STORAGE_FOUND -eq $STORAGE_COUNT ] && [ $STORAGE_COUNT -gt 0 ]; then
|
||
echo -e "${GREEN}✓${NC} Storage Accounts: $STORAGE_FOUND/$STORAGE_COUNT found"
|
||
else
|
||
echo -e "${YELLOW}⊘${NC} Storage Accounts: $STORAGE_FOUND/$STORAGE_COUNT found"
|
||
fi
|
||
|
||
# Test Key Vault
|
||
echo ""
|
||
echo "Testing Key Vault..."
|
||
KEY_VAULT=$(terraform output -json 2>/dev/null | jq -r '.key_vault_name.value // empty' || echo "")
|
||
if [ -n "$KEY_VAULT" ] && [ "$KEY_VAULT" != "null" ]; then
|
||
if az keyvault show --name "$KEY_VAULT" > /dev/null 2>&1; then
|
||
echo -e "${GREEN}✓${NC} Key Vault: $KEY_VAULT (accessible)"
|
||
|
||
# Test access policies
|
||
POLICIES=$(az keyvault show --name "$KEY_VAULT" --query "properties.accessPolicies" -o json 2>/dev/null || echo "[]")
|
||
POLICY_COUNT=$(echo "$POLICIES" | jq -r 'length' || echo "0")
|
||
echo -e " ${BLUE}ℹ${NC} Access policies: $POLICY_COUNT"
|
||
else
|
||
echo -e "${RED}✗${NC} Key Vault: $KEY_VAULT (not accessible)"
|
||
fi
|
||
else
|
||
echo -e "${RED}✗${NC} Key Vault not found"
|
||
fi
|
||
|
||
# Test Log Analytics Workspaces
|
||
echo ""
|
||
echo "Testing Log Analytics Workspaces..."
|
||
MONITORING=$(terraform output -json 2>/dev/null | jq -r '.monitoring.value | to_entries[] | .value.log_analytics_workspace_name' || echo "")
|
||
MONITORING_COUNT=0
|
||
MONITORING_FOUND=0
|
||
|
||
for ws in $MONITORING; do
|
||
if [ -n "$ws" ] && [ "$ws" != "null" ]; then
|
||
((MONITORING_COUNT++))
|
||
WS_ID=$(az monitor log-analytics workspace show --workspace-name "$ws" --query "id" -o tsv 2>/dev/null || echo "")
|
||
if [ -n "$WS_ID" ]; then
|
||
echo -e " ${GREEN}✓${NC} $ws"
|
||
((MONITORING_FOUND++))
|
||
else
|
||
echo -e " ${RED}✗${NC} $ws (not found)"
|
||
fi
|
||
fi
|
||
done
|
||
|
||
if [ $MONITORING_FOUND -eq $MONITORING_COUNT ] && [ $MONITORING_COUNT -gt 0 ]; then
|
||
echo -e "${GREEN}✓${NC} Log Analytics Workspaces: $MONITORING_FOUND/$MONITORING_COUNT found"
|
||
else
|
||
echo -e "${YELLOW}⊘${NC} Log Analytics Workspaces: $MONITORING_FOUND/$MONITORING_COUNT found"
|
||
fi
|
||
|
||
# Test Recovery Services Vaults
|
||
echo ""
|
||
echo "Testing Recovery Services Vaults..."
|
||
BACKUPS=$(terraform output -json 2>/dev/null | jq -r '.backups.value | to_entries[] | .value.recovery_services_vault_name' || echo "")
|
||
BACKUP_COUNT=0
|
||
BACKUP_FOUND=0
|
||
|
||
for vault in $BACKUPS; do
|
||
if [ -n "$vault" ] && [ "$vault" != "null" ]; then
|
||
((BACKUP_COUNT++))
|
||
VAULT_RG=$(az backup vault list --query "[?name=='$vault'].resourceGroup" -o tsv 2>/dev/null | head -1 || echo "")
|
||
if [ -n "$VAULT_RG" ]; then
|
||
echo -e " ${GREEN}✓${NC} $vault ($VAULT_RG)"
|
||
((BACKUP_FOUND++))
|
||
else
|
||
echo -e " ${RED}✗${NC} $vault (not found)"
|
||
fi
|
||
fi
|
||
done
|
||
|
||
if [ $BACKUP_FOUND -eq $BACKUP_COUNT ] && [ $BACKUP_COUNT -gt 0 ]; then
|
||
echo -e "${GREEN}✓${NC} Recovery Services Vaults: $BACKUP_FOUND/$BACKUP_COUNT found"
|
||
else
|
||
echo -e "${YELLOW}⊘${NC} Recovery Services Vaults: $BACKUP_FOUND/$BACKUP_COUNT found"
|
||
fi
|
||
|
||
echo ""
|
||
echo "=========================================="
|
||
echo "Azure Resources Test Complete"
|
||
echo "=========================================="
|
||
|