Azure Data Migration Client Library for programmatically managing database migration services and operations.
—
Quality
Pending
Does it follow best practices?
Impact
Pending
No eval scenarios have been run
Operations for retrieving resource usage, quotas, available SKUs, and API operation information. These operations provide metadata and capacity information about Azure Data Migration Service resources and capabilities.
Lists available SKUs for Data Migration Service resources.
def list_skus(**kwargs) -> ItemPaged[ResourceSku]:
"""
Lists available SKUs for Data Migration services.
Returns:
Paged collection of ResourceSku objects with pricing and capability information
"""Usage Example:
# List all available SKUs
skus = client.resource_skus.list_skus()
for sku in skus:
print(f"SKU: {sku.name}")
print(f" Tier: {sku.tier}")
print(f" Size: {sku.size}")
print(f" Locations: {sku.locations}")
print(f" Capabilities:")
for capability in sku.capabilities:
print(f" {capability.name}: {capability.value}")Lists resource usage and quota information for a specific location.
def list(location: str, **kwargs) -> ItemPaged[Quota]:
"""
Lists resource usage and quotas for a location.
Parameters:
- location: Azure region to query quotas for
Returns:
Paged collection of Quota objects showing current usage and limits
"""Usage Example:
# Get quota information for East US region
quotas = client.usages.list(location="eastus")
for quota in quotas:
print(f"Resource: {quota.name.localized_value}")
print(f" Current: {quota.current_value}")
print(f" Limit: {quota.limit}")
print(f" Unit: {quota.unit}")Lists all available REST API operations for the Data Migration service.
def list(**kwargs) -> ItemPaged[ServiceOperation]:
"""
Lists available Data Migration service operations.
Returns:
Paged collection of ServiceOperation objects describing available APIs
"""Usage Example:
# List all available operations
operations = client.operations.list()
for operation in operations:
print(f"Operation: {operation.name}")
print(f" Display Name: {operation.display.operation}")
print(f" Provider: {operation.display.provider}")
print(f" Resource: {operation.display.resource}")
print(f" Description: {operation.display.description}")class ResourceSku:
"""Data Migration Service SKU information."""
# Properties
resource_type: str # Resource type (e.g., "services")
name: str # SKU name (e.g., "Standard_1vCore")
tier: str # SKU tier (e.g., "Standard")
size: str # SKU size description
family: str # SKU family
kind: str # SKU kind
capacity: ResourceSkuCapacity # Capacity information
locations: List[str] # Available Azure regions
location_info: List[ResourceSkuLocationInfo] # Location-specific details
api_versions: List[str] # Supported API versions
costs: List[ResourceSkuCosts] # Cost information
capabilities: List[ResourceSkuCapabilities] # SKU capabilities
restrictions: List[ResourceSkuRestrictions] # Usage restrictionsclass ResourceSkuCapabilities:
"""SKU capability information."""
# Properties
name: str # Capability name (e.g., "vCores", "MaxDatabases")
value: str # Capability valueclass ResourceSkuCapacity:
"""SKU capacity information."""
# Properties
minimum: int # Minimum capacity
maximum: int # Maximum capacity
default: int # Default capacity
scale_type: str # Scale type (Manual, Automatic, None)class ResourceSkuCosts:
"""SKU cost information."""
# Properties
meter_id: str # Billing meter ID
quantity: int # Billing quantity
extended_unit: str # Extended billing unitclass Quota:
"""Resource quota information."""
# Properties
current_value: int # Current resource usage
id: str # Quota ID
limit: int # Maximum allowed usage
name: QuotaName # Quota name information
unit: str # Measurement unit
class QuotaName:
"""Quota name information."""
# Properties
localized_value: str # Localized display name
value: str # Internal name valueclass ServiceOperation:
"""Data Migration service operation information."""
# Properties
name: str # Operation name (e.g., "Microsoft.DataMigration/services/read")
display: ServiceOperationDisplay # Display information
origin: str # Operation origin
properties: Dict[str, Any] # Additional properties
class ServiceOperationDisplay:
"""Service operation display information."""
# Properties
provider: str # Resource provider name
resource: str # Resource type
operation: str # Operation display name
description: str # Operation descriptiondef find_suitable_sku(client, location, min_vcores=1):
"""Find suitable SKUs for given requirements."""
suitable_skus = []
skus = client.resource_skus.list_skus()
for sku in skus:
# Check if SKU is available in desired location
if location not in sku.locations:
continue
# Check vCore capability
vcores = None
for capability in sku.capabilities:
if capability.name.lower() == "vcores":
try:
vcores = int(capability.value)
break
except ValueError:
continue
if vcores and vcores >= min_vcores:
suitable_skus.append({
'name': sku.name,
'tier': sku.tier,
'vcores': vcores,
'locations': sku.locations
})
return suitable_skus
# Find SKUs with at least 2 vCores in East US
suitable_skus = find_suitable_sku(client, "eastus", min_vcores=2)
for sku in suitable_skus:
print(f"SKU: {sku['name']} ({sku['tier']}) - {sku['vcores']} vCores")def check_quota_availability(client, location, resource_type):
"""Check if quota is available for new resources."""
quotas = client.usages.list(location=location)
for quota in quotas:
if resource_type.lower() in quota.name.value.lower():
usage_percentage = (quota.current_value / quota.limit) * 100
remaining = quota.limit - quota.current_value
print(f"Quota: {quota.name.localized_value}")
print(f" Usage: {quota.current_value}/{quota.limit} ({usage_percentage:.1f}%)")
print(f" Remaining: {remaining}")
if remaining > 0:
return True, remaining
else:
return False, 0
return None, 0
# Check quota for Data Migration services
available, remaining = check_quota_availability(client, "eastus", "services")
if available:
print(f"Can create {remaining} more Data Migration services")
else:
print("No quota available for new services")def list_operations_by_resource(client, resource_type):
"""List operations available for a specific resource type."""
operations = client.operations.list()
filtered_ops = []
for operation in operations:
if resource_type.lower() in operation.display.resource.lower():
filtered_ops.append({
'name': operation.name,
'operation': operation.display.operation,
'description': operation.display.description
})
return filtered_ops
# Get all operations for services
service_operations = list_operations_by_resource(client, "services")
for op in service_operations:
print(f"{op['operation']}: {op['description']}")Different SKUs and capabilities may be available in different Azure regions. Always check:
Use the resource information APIs to:
These APIs provide essential information for properly sizing and planning Data Migration Service deployments in Azure environments.
Install with Tessl CLI
npx tessl i tessl/pypi-azure-mgmt-datamigration