Files
smom-dbis-138/scripts/azure/check-quotas.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

153 lines
4.8 KiB
Bash
Executable File

#!/usr/bin/env bash
# Check Azure Quotas for specific region
# Usage: ./scripts/azure/check-quotas.sh [region]
set -euo pipefail
# Colors
REGION="${1:-westeurope}"
# VM Sizes and required counts
declare -A VM_REQUIREMENTS=(
["StandardD2sv3Family"]=3
["StandardD4sv3Family"]=7
["StandardD8sv3Family"]=3
)
log() {
log_success "[✓] $1"
}
error() {
log_error "[✗] $1"
}
warn() {
log_warn "[!] $1"
}
info() {
log_info "[i] $1"
}
section() {
echo
log_info "=== $1 ==="
}
section "Quota Check for Region: $REGION"
# Check VM Family Quotas
info "Checking VM Family Quotas..."
for family in "${!VM_REQUIREMENTS[@]}"; do
needed=${VM_REQUIREMENTS[$family]}
# Get quota
quota_info=$(az vm list-usage \
--location "$REGION" \
--query "[?name.value=='$family'].{Name:name.value, Current:currentValue, Limit:limit}" \
-o json 2>/dev/null || echo "[]")
if [ "$quota_info" != "[]" ] && [ -n "$quota_info" ]; then
current=$(echo "$quota_info" | jq -r '.[0].Current // 0')
limit=$(echo "$quota_info" | jq -r '.[0].Limit // 0')
available=$((limit - current))
if [ $available -ge $needed ]; then
log "$family: $current/$limit used, $available available (need $needed) ✓"
else
error "$family: $current/$limit used, only $available available (need $needed) ✗"
warn " Request quota increase: az vm list-usage --location $REGION"
fi
else
warn "$family: Quota information not available"
fi
done
# Check AKS Quota
section "AKS Cluster Quota"
aks_count=$(az aks list --query "length(@)" -o tsv 2>/dev/null || echo "0")
log "Current AKS clusters in subscription: $aks_count"
info "Typical limit: 50 clusters per subscription"
# Check Network Quotas
section "Network Resource Quotas"
# Public IPs
pip_info=$(az network list-usages \
--location "$REGION" \
--query "[?name.value=='PublicIPAddresses'].{Name:name.value, Current:currentValue, Limit:limit}" \
-o json 2>/dev/null || echo "[]")
if [ "$pip_info" != "[]" ] && [ -n "$pip_info" ]; then
pip_current=$(echo "$pip_info" | jq -r '.[0].Current // 0')
pip_limit=$(echo "$pip_info" | jq -r '.[0].Limit // 0')
pip_available=$((pip_limit - pip_current))
needed_pip=5 # Approximate need
if [ $pip_available -ge $needed_pip ]; then
log "Public IPs: $pip_current/$pip_limit used, $pip_available available (need ~$needed_pip) ✓"
else
error "Public IPs: $pip_current/$pip_limit used, only $pip_available available (need ~$needed_pip) ✗"
fi
else
warn "Public IP quota information not available"
fi
# Load Balancers
lb_info=$(az network list-usages \
--location "$REGION" \
--query "[?name.value=='LoadBalancers'].{Name:name.value, Current:currentValue, Limit:limit}" \
-o json 2>/dev/null || echo "[]")
if [ "$lb_info" != "[]" ] && [ -n "$lb_info" ]; then
lb_current=$(echo "$lb_info" | jq -r '.[0].Current // 0')
lb_limit=$(echo "$lb_info" | jq -r '.[0].Limit // 0')
lb_available=$((lb_limit - lb_current))
needed_lb=2 # Approximate need
if [ $lb_available -ge $needed_lb ]; then
log "Load Balancers: $lb_current/$lb_limit used, $lb_available available (need ~$needed_lb) ✓"
else
error "Load Balancers: $lb_current/$lb_limit used, only $lb_available available (need ~$needed_lb) ✗"
fi
else
warn "Load Balancer quota information not available"
fi
# Network Interfaces
nic_info=$(az network list-usages \
--location "$REGION" \
--query "[?name.value=='NetworkInterfaces'].{Name:name.value, Current:currentValue, Limit:limit}" \
-o json 2>/dev/null || echo "[]")
if [ "$nic_info" != "[]" ] && [ -n "$nic_info" ]; then
nic_current=$(echo "$nic_info" | jq -r '.[0].Current // 0')
nic_limit=$(echo "$nic_info" | jq -r '.[0].Limit // 0')
nic_available=$((nic_limit - nic_current))
needed_nic=20 # Approximate need
if [ $nic_available -ge $needed_nic ]; then
log "Network Interfaces: $nic_current/$nic_limit used, $nic_available available (need ~$needed_nic) ✓"
else
error "Network Interfaces: $nic_current/$nic_limit used, only $nic_available available (need ~$needed_nic) ✗"
fi
else
warn "Network Interface quota information not available"
fi
# Storage Accounts
section "Storage Account Quota"
storage_info=$(az storage account list --query "length(@)" -o tsv 2>/dev/null || echo "0")
log "Current storage accounts in subscription: $storage_info"
info "Typical limit: 250 storage accounts per subscription"
echo
section "Summary"
info "Region: $REGION"
info "Review quotas above and request increases if needed"
info "To request quota increase, visit: https://portal.azure.com/#blade/Microsoft_Azure_Support/HelpAndSupportBlade/managesupportrequest"