11#! /bin/bash
2+ # VERBOSE=false
3+
4+ MODELS=" "
5+ REGIONS=" "
6+ VERBOSE=false
7+
8+ while [[ $# -gt 0 ]]; do
9+ case " $1 " in
10+ --models)
11+ MODELS=" $2 "
12+ shift 2
13+ ;;
14+ --regions)
15+ REGIONS=" $2 "
16+ shift 2
17+ ;;
18+ --verbose)
19+ VERBOSE=true
20+ shift
21+ ;;
22+ * )
23+ echo " Unknown option: $1 "
24+ exit 1
25+ ;;
26+ esac
27+ done
28+
29+ # Fallback to defaults if not provided
30+ [[ -z " $MODELS " ]]
31+ [[ -z " $REGIONS " ]]
32+
33+ echo " Models: $MODELS "
34+ echo " Regions: $REGIONS "
35+ echo " Verbose: $VERBOSE "
36+
37+ for arg in " $@ " ; do
38+ if [ " $arg " = " --verbose" ]; then
39+ VERBOSE=true
40+ fi
41+ done
42+
43+ log_verbose () {
44+ if [ " $VERBOSE " = true ]; then
45+ echo " $1 "
46+ fi
47+ }
248
349# Default Models and Capacities (Comma-separated in "model:capacity" format)
450DEFAULT_MODEL_CAPACITY=" gpt-4o:30,text-embedding-ada-002:80,gpt-4:30"
4187 done
4288fi
4389
90+
4491# Set the selected subscription
4592az account set --subscription " $AZURE_SUBSCRIPTION_ID "
4693echo " 🎯 Active Subscription: $( az account show --query ' [name, id]' --output tsv) "
@@ -50,8 +97,8 @@ DEFAULT_REGIONS="eastus,uksouth,eastus2,northcentralus,swedencentral,westus,west
5097IFS=' ,' read -r -a DEFAULT_REGION_ARRAY <<< " $DEFAULT_REGIONS"
5198
5299# Read parameters (if any)
53- IFS=' ,' read -r -a USER_PROVIDED_PAIRS <<< " $1 "
54- USER_REGION=" $2 "
100+ IFS=' ,' read -r -a USER_PROVIDED_PAIRS <<< " $MODELS "
101+ USER_REGION=" $REGIONS "
55102
56103IS_USER_PROVIDED_PAIRS=false
57104
@@ -99,12 +146,12 @@ INDEX=1
99146
100147VALID_REGIONS=()
101148for REGION in " ${REGIONS[@]} " ; do
102- echo " ----------------------------------------"
103- echo " 🔍 Checking region: $REGION "
149+ log_verbose " ----------------------------------------"
150+ log_verbose " 🔍 Checking region: $REGION "
104151
105152 QUOTA_INFO=$( az cognitiveservices usage list --location " $REGION " --output json | tr ' [:upper:]' ' [:lower:]' )
106153 if [ -z " $QUOTA_INFO " ]; then
107- echo " ⚠️ WARNING: Failed to retrieve quota for region $REGION . Skipping."
154+ log_verbose " ⚠️ WARNING: Failed to retrieve quota for region $REGION . Skipping."
108155 continue
109156 fi
110157
@@ -127,7 +174,7 @@ for REGION in "${REGIONS[@]}"; do
127174 for MODEL_TYPE in " ${MODEL_TYPES[@]} " ; do
128175 FOUND=false
129176 INSUFFICIENT_QUOTA=false
130- echo " 🔍 Checking model: $MODEL_NAME with required capacity: $REQUIRED_CAPACITY ($MODEL_TYPE )"
177+ log_verbose " 🔍 Checking model: $MODEL_NAME with required capacity: $REQUIRED_CAPACITY ($MODEL_TYPE )"
131178
132179 MODEL_INFO=$( echo " $QUOTA_INFO " | awk -v model=" \" value\" : \" $MODEL_TYPE \" " '
133180 BEGIN { RS="},"; FS="," }
@@ -136,7 +183,7 @@ for REGION in "${REGIONS[@]}"; do
136183
137184 if [ -z " $MODEL_INFO " ]; then
138185 FOUND=false
139- echo " ⚠️ WARNING: No quota information found for model: $MODEL_NAME in region: $REGION for model type: $MODEL_TYPE ."
186+ log_verbose " ⚠️ WARNING: No quota information found for model: $MODEL_NAME in region: $REGION for model type: $MODEL_TYPE ."
140187 continue
141188 fi
142189
@@ -152,24 +199,25 @@ for REGION in "${REGIONS[@]}"; do
152199 LIMIT=$( echo " $LIMIT " | cut -d' .' -f1)
153200
154201 AVAILABLE=$(( LIMIT - CURRENT_VALUE))
155- echo " ✅ Model: $MODEL_TYPE | Used: $CURRENT_VALUE | Limit: $LIMIT | Available: $AVAILABLE "
202+ log_verbose " ✅ Model: $MODEL_TYPE | Used: $CURRENT_VALUE | Limit: $LIMIT | Available: $AVAILABLE "
156203
157204 if [ " $AVAILABLE " -ge " $REQUIRED_CAPACITY " ]; then
158205 FOUND=true
159206 if [ " $MODEL_NAME " = " text-embedding-ada-002" ]; then
160207 TEXT_EMBEDDING_AVAILABLE=true
161208 fi
162209 AT_LEAST_ONE_MODEL_AVAILABLE=true
163- TEMP_TABLE_ROWS+=(" $( printf " | %-4s | %-20s | %-45s | %-10s | %-10s | %-10s |" " $INDEX " " $REGION " " $MODEL_TYPE " " $LIMIT " " $CURRENT_VALUE " " $AVAILABLE " ) " )
210+ TEMP_TABLE_ROWS+=(" $( printf " | %-4s | %-20s | %-43s | %-10s | %-10s | %-10s |" " $INDEX " " $REGION " " $MODEL_TYPE " " $LIMIT " " $CURRENT_VALUE " " $AVAILABLE " ) " )
164211 else
165212 INSUFFICIENT_QUOTA=true
166213 fi
167214 fi
168215
169216 if [ " $FOUND " = false ]; then
170- echo " ❌ No models found for model: $MODEL_NAME in region: $REGION (${MODEL_TYPES[*]} )"
217+ log_verbose " ❌ No models found for model: $MODEL_NAME in region: $REGION (${MODEL_TYPES[*]} )"
218+
171219 elif [ " $INSUFFICIENT_QUOTA " = true ]; then
172- echo " ⚠️ Model $MODEL_NAME in region: $REGION has insufficient quota (${MODEL_TYPES[*]} )."
220+ log_verbose " ⚠️ Model $MODEL_NAME in region: $REGION has insufficient quota (${MODEL_TYPES[*]} )."
173221 fi
174222 done
175223 done
@@ -185,18 +233,18 @@ if { [ "$IS_USER_PROVIDED_PAIRS" = true ] && [ "$INSUFFICIENT_QUOTA" = false ] &
185233done
186234
187235if [ ${# TABLE_ROWS[@]} -eq 0 ]; then
188- echo " ------------------------------------------------------------------------------------------------------------------"
236+ echo " -------------------------------------------------------------------------------------------------------------------- "
189237
190238 echo " ❌ No regions have sufficient quota for all required models. Please request a quota increase: https://aka.ms/oai/stuquotarequest"
191239else
192- echo " ---------------------------------------------------------------------------------------------------------------------- "
193- printf " | %-4s | %-20s | %-45s | %-10s | %-10s | %-10s |\n" " No." " Region" " Model Name" " Limit" " Used" " Available"
194- echo " ---------------------------------------------------------------------------------------------------------------------- "
240+ echo " ---------------------------------------------------------------------------------------------------------------------"
241+ printf " | %-4s | %-20s | %-43s | %-10s | %-10s | %-10s |\n" " No." " Region" " Model Name" " Limit" " Used" " Available"
242+ echo " ---------------------------------------------------------------------------------------------------------------------"
195243 for ROW in " ${TABLE_ROWS[@]} " ; do
196244 echo " $ROW "
197245 done
198- echo " ---------------------------------------------------------------------------------------------------------------------- "
246+ echo " ---------------------------------------------------------------------------------------------------------------------"
199247 echo " ➡️ To request a quota increase, visit: https://aka.ms/oai/stuquotarequest"
200248fi
201249
202- echo " ✅ Script completed."
250+ echo " ✅ Script completed."
0 commit comments