CtrlK
BlogDocsLog inGet started
Tessl Logo

tessl/pypi-azure-mgmt-datamigration

Azure Data Migration Client Library for programmatically managing database migration services and operations.

Pending

Quality

Pending

Does it follow best practices?

Impact

Pending

No eval scenarios have been run

Overview
Eval results
Files

resource-information.mddocs/

Resource Information

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.

Capabilities

Available SKUs

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}")

Usage and Quotas

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}")

Available API Operations

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}")

Resource Types

ResourceSku

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 restrictions

ResourceSkuCapabilities

class ResourceSkuCapabilities:
    """SKU capability information."""
    
    # Properties
    name: str  # Capability name (e.g., "vCores", "MaxDatabases")
    value: str  # Capability value

ResourceSkuCapacity

class 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)

ResourceSkuCosts

class ResourceSkuCosts:
    """SKU cost information."""
    
    # Properties
    meter_id: str  # Billing meter ID
    quantity: int  # Billing quantity
    extended_unit: str  # Extended billing unit

Quota Information Types

class 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 value

Service Operation Types

class 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 description

Usage Examples

SKU Selection Helper

def 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")

Quota Monitoring

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")

Operation Discovery

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']}")

Regional Availability

Different SKUs and capabilities may be available in different Azure regions. Always check:

  1. SKU availability in your target region
  2. Feature support for specific migration scenarios
  3. Quota limits for your subscription and region
  4. Cost implications across different regions

Capacity Planning

Use the resource information APIs to:

  • Select appropriate SKUs based on workload requirements
  • Monitor quota usage to avoid deployment failures
  • Plan capacity scaling for large migration projects
  • Estimate costs across different SKU options
  • Validate feature availability for specific migration scenarios

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

docs

connection-configuration.md

file-management.md

index.md

migration-task-types.md

project-management.md

resource-information.md

service-management.md

service-tasks.md

task-execution.md

tile.json