Setting the file. One moment.
Check Quota · Azure Quotas · microsoft/azure-skills · Skills Docs
ContentsBack to the top of the page Raw file
scripts/ check-quota.sh
Shell · 84 lines · 3 KB
15
16 RESOURCE_PROVIDER = " ${1 :? Usage : $0 < resource-provider > < region > [resource-name] [subscription-id] } "
17 REGION = " ${2 :? Usage : $0 < resource-provider > < region > [resource-name] [subscription-id] } "
18 RESOURCE_NAME = " ${3 :- } "
19 SUBSCRIPTION_ID = " ${4 :- } "
20
21 # Ensure the quota extension is installed
22 if ! az extension list --query "[?name=='quota'].name" -o tsv 2> /dev/null | grep -q quota ; then
23 echo "Installing quota extension..."
24 az extension add --name quota --yes 2> /dev/null
25 fi
26
27 # Resolve subscription
28 if [ -z " $SUBSCRIPTION_ID " ]; then
29 SUBSCRIPTION_ID = $( az account show --query id -o tsv )
30 fi
31
32 SCOPE = "/subscriptions/ $SUBSCRIPTION_ID /providers/ $RESOURCE_PROVIDER /locations/ $REGION "
33
34 echo "Checking quotas in scope $SCOPE "
35
36 if [ -n " $RESOURCE_NAME " ]; then
37 # Single-resource mode
38 echo "Quota for ' $RESOURCE_NAME ' ( $RESOURCE_PROVIDER , $REGION ):"
39 echo ""
40
41 LIMIT = $( az quota show \
42 --resource-name " $RESOURCE_NAME " \
43 --scope " $SCOPE " \
44 --query "properties.limit.value" -o tsv )
45
46 USAGE = $( az quota usage show \
47 --resource-name " $RESOURCE_NAME " \
48 --scope " $SCOPE " \
49 --query "properties.usages.value" -o tsv )
50
51 AVAILABLE = $(( LIMIT - USAGE ))
52
53 printf "%-30s %-10s %-10s %-10s %-10s\n" "Resource" "Region" "Limit" "Usage" "Available"
54 printf "%-30s %-10s %-10s %-10s %-10s\n" "--------" "------" "-----" "-----" "---------"
55 printf "%-30s %-10s %-10s %-10s %-10s\n" " $RESOURCE_NAME " " $REGION " " $LIMIT " " $USAGE " " $AVAILABLE "
56 else
57 # All-quotas mode: fetch limits and usage, join by name
58 echo "Quotas for $RESOURCE_PROVIDER in $REGION :"
59 echo ""
60
61 QUOTAS_JSON = $( az quota list --scope " $SCOPE " -o json 2> /dev/null )
62 USAGES_JSON = $( az quota usage list --scope " $SCOPE " -o json 2> /dev/null )
63
64 printf "%-40s %-10s %-10s %-10s %-10s\n" "Resource" "Region" "Limit" "Usage" "Available"
65 printf "%-40s %-10s %-10s %-10s %-10s\n" "--------" "------" "-----" "-----" "---------"
66
67 echo " $QUOTAS_JSON " | python3 -c "
68 import json, sys
69
70 quotas = json.load(sys.stdin)
71 usages = json.loads(''' $USAGES_JSON ''')
72
73 usage_lookup = {}
74 for u in usages:
75 usage_lookup[u['name']] = u.get('properties', {}).get('usages', {}).get('value', 0)
76
77 for q in quotas:
78 name = q['name']
79 limit = q.get('properties', {}).get('limit', {}).get('value', 0)
80 used = usage_lookup.get(name, 0)
81 avail = limit - used
82 print(f'{name:<40} $REGION { \"\" :<4} {limit:<10} {used:<10} {avail:<10}')
83 "
84 fi