Skip to content

Commit 9f3b0ba

Browse files
Update quota_check_all_regions.sh
1 parent 7001350 commit 9f3b0ba

File tree

1 file changed

+91
-0
lines changed

1 file changed

+91
-0
lines changed
Lines changed: 91 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1 +1,92 @@
11

2+
#!/bin/bash
3+
4+
# Pre-defined list of models to check
5+
MODEL_NAMES=("gpt-4o" "gpt-4o-mini" "text-embedding-ada-002" "gpt-3.5-turbo" "gpt-4")
6+
7+
echo "🔄 Fetching available Azure subscriptions..."
8+
SUBSCRIPTIONS=$(az account list --query "[?state=='Enabled'].{Name:name, ID:id}" --output tsv)
9+
SUB_COUNT=$(echo "$SUBSCRIPTIONS" | wc -l)
10+
11+
if [ "$SUB_COUNT" -eq 1 ]; then
12+
AZURE_SUBSCRIPTION_ID=$(echo "$SUBSCRIPTIONS" | awk '{print $2}')
13+
echo "✅ Using the only available subscription: $AZURE_SUBSCRIPTION_ID"
14+
else
15+
echo "Multiple subscriptions found:"
16+
echo "$SUBSCRIPTIONS" | awk '{print NR")", $1, "-", $2}'
17+
while true; do
18+
echo "Enter the number of the subscription to use:"
19+
read SUB_INDEX
20+
if [[ "$SUB_INDEX" =~ ^[0-9]+$ ]] && [ "$SUB_INDEX" -ge 1 ] && [ "$SUB_INDEX" -le "$SUB_COUNT" ]; then
21+
AZURE_SUBSCRIPTION_ID=$(echo "$SUBSCRIPTIONS" | awk -v idx="$SUB_INDEX" 'NR==idx {print $2}')
22+
echo "✅ Selected Subscription: $AZURE_SUBSCRIPTION_ID"
23+
break
24+
else
25+
echo "❌ Invalid selection. Please enter a valid number from the list."
26+
fi
27+
done
28+
fi
29+
30+
az account set --subscription "$AZURE_SUBSCRIPTION_ID"
31+
32+
echo "🎯 Active Subscription: $(az account show --query '[name, id]' --output tsv)"
33+
echo "🔄 Fetching Azure regions..."
34+
35+
REGIONS=$(az account list-locations --query "[].name" --output tsv)
36+
37+
echo "✅ Retrieved Azure regions. Checking availability..."
38+
39+
# Array to store table data
40+
declare -a TABLE_ROWS
41+
INDEX=1
42+
43+
# Loop through all regions
44+
for REGION in $REGIONS; do
45+
REGION=$(echo "$REGION" | xargs)
46+
echo "----------------------------------------"
47+
echo "🔍 Checking region: $REGION"
48+
QUOTA_INFO=$(az cognitiveservices usage list --location "$REGION" --output json)
49+
if [ -z "$QUOTA_INFO" ]; then
50+
echo "⚠️ WARNING: Failed to retrieve quota for region $REGION. Skipping."
51+
continue
52+
fi
53+
54+
for MODEL_NAME in "${MODEL_NAMES[@]}"; do
55+
for MODEL_PREFIX in "OpenAI.Standard" "OpenAI.GlobalStandard"; do
56+
FULL_MODEL_NAME="${MODEL_PREFIX}.$MODEL_NAME"
57+
MODEL_INFO=$(echo "$QUOTA_INFO" | awk -v model="\"value\": \"$FULL_MODEL_NAME\"" '
58+
BEGIN { RS="},"; FS="," }
59+
$0 ~ model { print $0 }
60+
')
61+
if [ -z "$MODEL_INFO" ]; then
62+
continue
63+
fi
64+
65+
CURRENT_VALUE=$(echo "$MODEL_INFO" | awk -F': ' '/"currentValue"/ {print $2}' | tr -d ',' | tr -d ' ')
66+
LIMIT=$(echo "$MODEL_INFO" | awk -F': ' '/"limit"/ {print $2}' | tr -d ',' | tr -d ' ')
67+
CURRENT_VALUE=${CURRENT_VALUE:-0}
68+
LIMIT=${LIMIT:-0}
69+
CURRENT_VALUE=$(echo "$CURRENT_VALUE" | cut -d'.' -f1)
70+
LIMIT=$(echo "$LIMIT" | cut -d'.' -f1)
71+
72+
AVAILABLE=$((LIMIT - CURRENT_VALUE))
73+
74+
TABLE_ROWS+=("$(printf "| %-4s | %-20s | %-49s | %-9s | %-9s | %-9s |" "$INDEX" "$REGION" "$FULL_MODEL_NAME" "$LIMIT" "$CURRENT_VALUE" "$AVAILABLE")")
75+
76+
INDEX=$((INDEX + 1))
77+
done
78+
done
79+
echo "----------------------------------------"
80+
done
81+
82+
# Print table header
83+
echo "----------------------------------------------------------------------------------------------------------"
84+
printf "| %-4s | %-20s | %-49s | %-9s | %-9s | %-9s |\n" "No." "Region" "Model Name" "Limit" "Used" "Available"
85+
echo "----------------------------------------------------------------------------------------------------------"
86+
87+
for ROW in "${TABLE_ROWS[@]}"; do
88+
echo "$ROW"
89+
done
90+
91+
echo "----------------------------------------------------------------------------------------------------------"
92+
echo "✅ Script completed."

0 commit comments

Comments
 (0)