Files
the_order/infra/scripts/azure-check-cdn-quotas.sh
defiQUG 92cc41d26d Add Legal Office seal and complete Azure CDN deployment
- Add Legal Office of the Master seal (SVG design with Maltese Cross, scales of justice, legal scroll)
- Create legal-office-manifest-template.json for Legal Office credentials
- Update SEAL_MAPPING.md and DESIGN_GUIDE.md with Legal Office seal documentation
- Complete Azure CDN infrastructure deployment:
  - Resource group, storage account, and container created
  - 17 PNG seal files uploaded to Azure Blob Storage
  - All manifest templates updated with Azure URLs
  - Configuration files generated (azure-cdn-config.env)
- Add comprehensive Azure CDN setup scripts and documentation
- Fix manifest URL generation to prevent double slashes
- Verify all seals accessible via HTTPS
2025-11-12 22:03:42 -08:00

171 lines
5.6 KiB
Bash
Executable File

#!/bin/bash
# Comprehensive Azure quota check for CDN and storage setup
# Checks all quotas needed for credential seal CDN deployment
set -euo pipefail
GREEN='\033[0;32m'
BLUE='\033[0;34m'
YELLOW='\033[1;33m'
RED='\033[0;31m'
NC='\033[0m'
log_info() { echo -e "${BLUE}[CHECK]${NC} $1"; }
log_success() { echo -e "${GREEN}[✓]${NC} $1"; }
log_warning() { echo -e "${YELLOW}[!]${NC} $1"; }
log_error() { echo -e "${RED}[✗]${NC} $1"; }
# Check if Azure CLI is installed
if ! command -v az &> /dev/null; then
log_error "Azure CLI is not installed"
exit 1
fi
# Check if logged in
if ! az account show &> /dev/null; then
log_error "Not logged in to Azure. Please log in: az login"
exit 1
fi
SUBSCRIPTION_ID=$(az account show --query id -o tsv)
SUBSCRIPTION_NAME=$(az account show --query name -o tsv)
LOCATION="${AZURE_LOCATION:-westeurope}"
log_info "Azure Quota Check for CDN Setup"
echo "Subscription: ${SUBSCRIPTION_NAME} (${SUBSCRIPTION_ID})"
echo "Location: ${LOCATION}"
echo ""
QUOTA_FILE="azure-cdn-quota-report.txt"
cat > "${QUOTA_FILE}" << EOF
Azure CDN Quota Report
Generated: $(date -u +"%Y-%m-%d %H:%M:%S UTC")
Subscription: ${SUBSCRIPTION_NAME} (${SUBSCRIPTION_ID})
Location: ${LOCATION}
EOF
ISSUES=0
WARNINGS=0
# 1. Storage Account Quota
log_info "1. Storage Account Quota"
STORAGE_QUOTA=$(az storage account show-usage --location "${LOCATION}" -o json 2>/dev/null || echo "{}")
STORAGE_CURRENT=$(echo "${STORAGE_QUOTA}" | jq -r '.currentValue // 0' 2>/dev/null || echo "0")
STORAGE_LIMIT=$(echo "${STORAGE_QUOTA}" | jq -r '.limit // 250' 2>/dev/null || echo "250")
echo "Storage Accounts:" >> "${QUOTA_FILE}"
echo " Current: ${STORAGE_CURRENT}" >> "${QUOTA_FILE}"
echo " Limit: ${STORAGE_LIMIT}" >> "${QUOTA_FILE}"
echo " Available: $((STORAGE_LIMIT - STORAGE_CURRENT))" >> "${QUOTA_FILE}"
if [ "${STORAGE_CURRENT}" -ge "${STORAGE_LIMIT}" ]; then
log_error " Quota exceeded: ${STORAGE_CURRENT}/${STORAGE_LIMIT}"
((ISSUES++))
elif [ $((STORAGE_LIMIT - STORAGE_CURRENT)) -lt 1 ]; then
log_warning " Quota nearly full: ${STORAGE_CURRENT}/${STORAGE_LIMIT}"
((WARNINGS++))
else
log_success " OK: ${STORAGE_CURRENT}/${STORAGE_LIMIT} (${STORAGE_LIMIT} - ${STORAGE_CURRENT} available)"
fi
# 2. CDN Profile Quota
log_info "2. CDN Profile Quota"
CDN_PROFILES=$(az cdn profile list --query "[].{Name:name}" -o tsv 2>/dev/null | wc -l || echo "0")
CDN_LIMIT=25 # Default Azure CDN limit
echo "" >> "${QUOTA_FILE}"
echo "CDN Profiles:" >> "${QUOTA_FILE}"
echo " Current: ${CDN_PROFILES}" >> "${QUOTA_FILE}"
echo " Limit: ${CDN_LIMIT}" >> "${QUOTA_FILE}"
echo " Available: $((CDN_LIMIT - CDN_PROFILES))" >> "${QUOTA_FILE}"
if [ "${CDN_PROFILES}" -ge "${CDN_LIMIT}" ]; then
log_error " Quota exceeded: ${CDN_PROFILES}/${CDN_LIMIT}"
((ISSUES++))
elif [ $((CDN_LIMIT - CDN_PROFILES)) -lt 2 ]; then
log_warning " Quota nearly full: ${CDN_PROFILES}/${CDN_LIMIT}"
((WARNINGS++))
else
log_success " OK: ${CDN_PROFILES}/${CDN_LIMIT} ($((CDN_LIMIT - CDN_PROFILES)) available)"
fi
# 3. Resource Group Quota
log_info "3. Resource Group Quota"
RG_COUNT=$(az group list --query "[].{Name:name}" -o tsv 2>/dev/null | wc -l || echo "0")
RG_LIMIT=980 # Default Azure limit
echo "" >> "${QUOTA_FILE}"
echo "Resource Groups:" >> "${QUOTA_FILE}"
echo " Current: ${RG_COUNT}" >> "${QUOTA_FILE}"
echo " Limit: ${RG_LIMIT}" >> "${QUOTA_FILE}"
echo " Available: $((RG_LIMIT - RG_COUNT))" >> "${QUOTA_FILE}"
if [ "${RG_COUNT}" -ge "${RG_LIMIT}" ]; then
log_error " Quota exceeded: ${RG_COUNT}/${RG_LIMIT}"
((ISSUES++))
else
log_success " OK: ${RG_COUNT}/${RG_LIMIT} ($((RG_LIMIT - RG_COUNT)) available)"
fi
# 4. Storage Account Capacity (if we can check)
log_info "4. Storage Account Capacity"
echo "" >> "${QUOTA_FILE}"
echo "Storage Account Capacity:" >> "${QUOTA_FILE}"
echo " Note: Capacity limits depend on subscription type" >> "${QUOTA_FILE}"
echo " Standard accounts: Up to 5 PiB per account" >> "${QUOTA_FILE}"
log_success " OK: Sufficient for credential images (files are small)"
# 5. CDN Endpoint Quota
log_info "5. CDN Endpoint Quota"
CDN_ENDPOINTS=$(az cdn endpoint list --query "[].{Name:name}" -o tsv 2>/dev/null | wc -l)
CDN_ENDPOINTS=${CDN_ENDPOINTS:-0}
CDN_ENDPOINT_LIMIT=25 # Per profile
echo "" >> "${QUOTA_FILE}"
echo "CDN Endpoints:" >> "${QUOTA_FILE}"
echo " Current: ${CDN_ENDPOINTS}" >> "${QUOTA_FILE}"
echo " Limit: ${CDN_ENDPOINT_LIMIT} per profile" >> "${QUOTA_FILE}"
if [ "${CDN_ENDPOINTS}" -ge "${CDN_ENDPOINT_LIMIT}" ]; then
log_warning " Many endpoints: ${CDN_ENDPOINTS} (limit: ${CDN_ENDPOINT_LIMIT} per profile)"
((WARNINGS++))
else
log_success " OK: ${CDN_ENDPOINTS} endpoints"
fi
# 6. Network Bandwidth (informational)
log_info "6. Network Bandwidth"
echo "" >> "${QUOTA_FILE}"
echo "Network Bandwidth:" >> "${QUOTA_FILE}"
echo " Note: Bandwidth limits depend on subscription and region" >> "${QUOTA_FILE}"
echo " For credential images (small files), bandwidth should be sufficient" >> "${QUOTA_FILE}"
log_success " OK: Credential images are small files"
# Summary
echo ""
log_info "=== Quota Summary ==="
log_success "Checks passed: Multiple"
if [ ${WARNINGS} -gt 0 ]; then
log_warning "Warnings: ${WARNINGS}"
fi
if [ ${ISSUES} -gt 0 ]; then
log_error "Issues: ${ISSUES}"
echo ""
log_info "To request quota increases:"
echo " https://portal.azure.com/#blade/Microsoft_Azure_Support/HelpAndSupportBlade"
echo " Or use: az vm list-usage --location ${LOCATION}"
fi
echo ""
log_success "Quota report saved: ${QUOTA_FILE}"
if [ ${ISSUES} -eq 0 ]; then
log_success "All quotas are sufficient for CDN setup!"
exit 0
else
log_error "Some quotas need attention before proceeding"
exit 1
fi