Azure Fabric Management SDK for Python
Manage Microsoft Fabric capacities and resources programmatically.
Installation
pip install azure-mgmt-fabric pip install azure-identity
Environment Variables
AZURE_SUBSCRIPTION_ID=<your-subscription-id> AZURE_RESOURCE_GROUP=<your-resource-group>
Authentication
from azure.identity import DefaultAzureCredential from azure.mgmt.fabric import FabricMgmtClient import os
credential = DefaultAzureCredential() client = FabricMgmtClient( credential=credential, subscription_id=os.environ["AZURE_SUBSCRIPTION_ID"] )
Create Fabric Capacity
from azure.mgmt.fabric import FabricMgmtClient from azure.mgmt.fabric.models import FabricCapacity, FabricCapacityProperties, CapacitySku from azure.identity import DefaultAzureCredential import os
credential = DefaultAzureCredential() client = FabricMgmtClient( credential=credential, subscription_id=os.environ["AZURE_SUBSCRIPTION_ID"] )
resource_group = os.environ["AZURE_RESOURCE_GROUP"] capacity_name = "myfabriccapacity"
capacity = client.fabric_capacities.begin_create_or_update( resource_group_name=resource_group, capacity_name=capacity_name, resource=FabricCapacity( location="eastus", sku=CapacitySku( name="F2", # Fabric SKU tier="Fabric" ), properties=FabricCapacityProperties( administration=FabricCapacityAdministration( members=["user@contoso.com"] ) ) ) ).result()
print(f"Capacity created: {capacity.name}")
Get Capacity Details
capacity = client.fabric_capacities.get( resource_group_name=resource_group, capacity_name=capacity_name )
print(f"Capacity: {capacity.name}") print(f"SKU: {capacity.sku.name}") print(f"State: {capacity.properties.state}") print(f"Location: {capacity.location}")
List Capacities in Resource Group
capacities = client.fabric_capacities.list_by_resource_group( resource_group_name=resource_group )
for capacity in capacities: print(f"Capacity: {capacity.name} - SKU: {capacity.sku.name}")
List All Capacities in Subscription
all_capacities = client.fabric_capacities.list_by_subscription()
for capacity in all_capacities: print(f"Capacity: {capacity.name} in {capacity.location}")
Update Capacity
from azure.mgmt.fabric.models import FabricCapacityUpdate, CapacitySku
updated = client.fabric_capacities.begin_update( resource_group_name=resource_group, capacity_name=capacity_name, properties=FabricCapacityUpdate( sku=CapacitySku( name="F4", # Scale up tier="Fabric" ), tags={"environment": "production"} ) ).result()
print(f"Updated SKU: {updated.sku.name}")
Suspend Capacity
Pause capacity to stop billing:
client.fabric_capacities.begin_suspend( resource_group_name=resource_group, capacity_name=capacity_name ).result()
print("Capacity suspended")
Resume Capacity
Resume a paused capacity:
client.fabric_capacities.begin_resume( resource_group_name=resource_group, capacity_name=capacity_name ).result()
print("Capacity resumed")
Delete Capacity
client.fabric_capacities.begin_delete( resource_group_name=resource_group, capacity_name=capacity_name ).result()
print("Capacity deleted")
Check Name Availability
from azure.mgmt.fabric.models import CheckNameAvailabilityRequest
result = client.fabric_capacities.check_name_availability( location="eastus", body=CheckNameAvailabilityRequest( name="my-new-capacity", type="Microsoft.Fabric/capacities" ) )
if result.name_available: print("Name is available") else: print(f"Name not available: {result.reason}")
List Available SKUs
skus = client.fabric_capacities.list_skus( resource_group_name=resource_group, capacity_name=capacity_name )
for sku in skus: print(f"SKU: {sku.name} - Tier: {sku.tier}")
Client Operations
Operation Method
client.fabric_capacities
Capacity CRUD operations
client.operations
List available operations
Fabric SKUs
SKU Description CUs
F2
Entry level 2 Capacity Units
F4
Small 4 Capacity Units
F8
Medium 8 Capacity Units
F16
Large 16 Capacity Units
F32
X-Large 32 Capacity Units
F64
2X-Large 64 Capacity Units
F128
4X-Large 128 Capacity Units
F256
8X-Large 256 Capacity Units
F512
16X-Large 512 Capacity Units
F1024
32X-Large 1024 Capacity Units
F2048
64X-Large 2048 Capacity Units
Capacity States
State Description
Active
Capacity is running
Paused
Capacity is suspended (no billing)
Provisioning
Being created
Updating
Being modified
Deleting
Being removed
Failed
Operation failed
Long-Running Operations
All mutating operations are long-running (LRO). Use .result() to wait:
Synchronous wait
capacity = client.fabric_capacities.begin_create_or_update(...).result()
Or poll manually
poller = client.fabric_capacities.begin_create_or_update(...) while not poller.done(): print(f"Status: {poller.status()}") time.sleep(5) capacity = poller.result()
Best Practices
-
Use DefaultAzureCredential for authentication
-
Suspend unused capacities to reduce costs
-
Start with smaller SKUs and scale up as needed
-
Use tags for cost tracking and organization
-
Check name availability before creating capacities
-
Handle LRO properly — don't assume immediate completion
-
Set up capacity admins — specify users who can manage workspaces
-
Monitor capacity usage via Azure Monitor metrics