Azure waste

NetApp capacity pool larger than its volumes need

An Azure NetApp Files capacity pool provisioned well above the capacity its volumes have claimed, billing for tebibytes nothing can use.
The agent tells you how to fix it
Reversible
Why it happens

Azure NetApp Files bills for the provisioned size of a capacity pool regardless of how much of it the volumes inside claim, so a pool sized for a workload that never arrived costs the same as a full one. Microsoft states the resize rule exactly: pools resize in 1 TiB decrements down to the capacity allocated to their volumes, with a minimum of 1 TiB. That makes the reclaimable amount arithmetic rather than an estimate. Metering is hourly, so a resize reduces the bill from that hour onward and can be reversed just as quickly. The Flexible service level provisions throughput independently of capacity, so its pools are reported without a priced saving.

Paste this into Resource Graph Explorer in the Azure portal.

resources
| where type =~ 'microsoft.netapp/netappaccounts/capacitypools'
// Scope below matches CloudFinOpsPro policy DEFAULTS: exclusions.protectTag, environment.tagKeys,
// environment.allowedTagValues, and allowUntagged false so an untagged resource counts as production.
// If your policy.yaml differs, edit the three lines below or this will disagree with your own agent.
| where tolower(tostring(coalesce(tags['cfop:protect'], ''))) !in ('true', 'yes', '1')
| extend cfopEnv = tolower(trim(' ', tostring(coalesce(tags['Environment'], tags['environment'], tags['env'], ''))))
| where cfopEnv in ('dev', 'development', 'test', 'qa', 'sandbox', 'nonprod', 'non-prod', 'staging')
| extend poolTiB = toreal(properties.size) / (1024 * 1024 * 1024 * 1024)
| project pool = name, resourceGroup, location,
          serviceLevel = tostring(properties.serviceLevel),
          provisionedTiB = round(poolTiB, 2)
| order by provisionedTiB desc

You are billed for the provisioned pool size whatever the volumes use. To see the gap, list microsoft.netapp/netappaccounts/capacitypools/volumes and sum usageThreshold per pool; a pool can only shrink to that total, in whole tebibytes.

Applies to microsoft.netapp/netappaccounts/capacitypools
What the agent does about it

An Azure NetApp Files capacity pool provisioned well above the capacity its volumes have claimed, billing for tebibytes nothing can use.

It will not fix this one

It finds it and tells you what to change. The change itself is yours to make, because it is not one the agent should make on your behalf.