CtrlK
CommunityDocumentationLog inGet started
Tessl Logo

tessl/pypi-azure-mgmt-datamigration

Microsoft Azure Data Migration Client Library for Python providing comprehensive database migration management capabilities

Overview
Eval results
Files

resources.mddocs/

Resource Management

Resource SKU information, usage quotas, and service availability management for planning and monitoring migration resources. These capabilities help with capacity planning and resource optimization.

Capabilities

Resource SKU Discovery

Discover available SKUs and their capabilities for Data Migration Services to assist with service sizing and configuration.

def list_skus(**kwargs) -> ItemPaged[ResourceSku]:
    """
    List available resource SKUs for Data Migration Services.
    
    Returns:
    Paginated list of available SKUs with capabilities and restrictions
    """

Usage and Quota Management

Monitor usage and quotas for Data Migration Services in specific Azure regions.

def list(location: str, **kwargs) -> ItemPaged[Quota]:
    """
    List usage quotas for Data Migration Services in a location.
    
    Parameters:
    - location: Azure region name
    
    Returns:
    Paginated list of quota information
    """

Operations Discovery

Discover available operations and capabilities of the Data Migration Management API.

def list(**kwargs) -> ItemPaged[ServiceOperation]:
    """
    List available operations for the Data Migration service.
    
    Returns:
    Paginated list of available API operations
    """

Usage Examples

Discovering Available SKUs

from azure.mgmt.datamigration import DataMigrationManagementClient
from azure.identity import DefaultAzureCredential

credential = DefaultAzureCredential()
client = DataMigrationManagementClient(credential, "subscription-id")

# List all available SKUs
skus = client.resource_skus.list_skus()

for sku in skus:
    print(f"SKU: {sku.name}")
    print(f"  Resource Type: {sku.resource_type}")
    print(f"  Tier: {sku.tier}")
    print(f"  Size: {sku.size}")
    print(f"  Family: {sku.family}")
    
    # Show locations where SKU is available
    if sku.locations:
        print(f"  Available in: {', '.join(sku.locations)}")
    
    # Show capabilities
    if sku.capabilities:
        print("  Capabilities:")
        for capability in sku.capabilities:
            print(f"    {capability.name}: {capability.value}")
    
    # Show restrictions
    if sku.restrictions:
        print("  Restrictions:")
        for restriction in sku.restrictions:
            print(f"    Type: {restriction.type}")
            print(f"    Reason: {restriction.reason_code}")
            if restriction.values:
                print(f"    Values: {', '.join(restriction.values)}")
    
    print()

Checking Usage Quotas

# Check quotas for a specific region
location = "East US"
quotas = client.usages.list(location=location)

print(f"Quotas for {location}:")
for quota in quotas:
    print(f"  {quota.name.localized_value}: {quota.current_value}/{quota.limit}")
    print(f"    Unit: {quota.unit}")
    if quota.name.value:
        print(f"    Internal name: {quota.name.value}")
    print()

# Check if close to limits
for quota in quotas:
    if quota.limit > 0:
        usage_percentage = (quota.current_value / quota.limit) * 100
        if usage_percentage > 80:
            print(f"Warning: {quota.name.localized_value} is at {usage_percentage:.1f}% capacity")

Discovering Available Operations

# List all available operations
operations = client.operations.list()

print("Available Data Migration Service Operations:")
for operation in operations:
    print(f"Operation: {operation.name}")
    if operation.display:
        print(f"  Provider: {operation.display.provider}")
        print(f"  Resource: {operation.display.resource}")
        print(f"  Operation: {operation.display.operation}")
        print(f"  Description: {operation.display.description}")
    print()

# Filter operations by type
migration_operations = [op for op in operations if 'migrate' in op.name.lower()]
print(f"\nMigration-specific operations: {len(migration_operations)}")

Capacity Planning

# Find suitable SKUs for a migration workload
def find_suitable_skus(min_capacity=None, preferred_locations=None):
    suitable_skus = []
    
    skus = client.resource_skus.list_skus()
    
    for sku in skus:
        # Skip if not available in preferred locations
        if preferred_locations and sku.locations:
            if not any(loc in sku.locations for loc in preferred_locations):
                continue
        
        # Check capacity requirements
        if min_capacity and sku.capabilities:
            capacity_capability = next(
                (cap for cap in sku.capabilities if cap.name == "MaxDatabaseMigrations"), 
                None
            )
            if capacity_capability and int(capacity_capability.value) < min_capacity:
                continue
        
        # Check for restrictions
        has_restrictions = bool(sku.restrictions and any(
            r.type == "Location" for r in sku.restrictions
        ))
        
        suitable_skus.append({
            'name': sku.name,
            'tier': sku.tier,
            'locations': sku.locations,
            'has_restrictions': has_restrictions,
            'capabilities': {cap.name: cap.value for cap in sku.capabilities} if sku.capabilities else {}
        })
    
    return suitable_skus

# Find SKUs available in East US with at least 5 concurrent migrations
suitable_skus = find_suitable_skus(
    min_capacity=5,
    preferred_locations=["East US", "West US 2"]
)

print("Suitable SKUs:")
for sku in suitable_skus:
    print(f"  {sku['name']} ({sku['tier']})")
    print(f"    Locations: {', '.join(sku['locations'])}")
    print(f"    Max Migrations: {sku['capabilities'].get('MaxDatabaseMigrations', 'Unknown')}")
    print(f"    Restrictions: {'Yes' if sku['has_restrictions'] else 'No'}")
    print()

Types

class ResourceSku:
    """Resource SKU information."""
    resource_type: str
    name: str
    tier: str
    size: str
    family: str
    kind: str
    capacity: ResourceSkuCapacity
    locations: list[str]
    location_info: list[dict]
    api_versions: list[str]
    costs: list[ResourceSkuCosts]
    capabilities: list[ResourceSkuCapabilities]
    restrictions: list[ResourceSkuRestrictions]

class ResourceSkuCapacity:
    """SKU capacity information."""
    minimum: int
    maximum: int
    default: int
    scale_type: str  # ResourceSkuCapacityScaleType enum

class ResourceSkuCapabilities:
    """SKU capability information."""
    name: str
    value: str

class ResourceSkuCosts:
    """SKU cost information."""
    meter_id: str
    quantity: int
    extended_unit: str

class ResourceSkuRestrictions:
    """SKU restriction information."""
    type: str  # ResourceSkuRestrictionsType enum
    values: list[str]
    restriction_info: dict
    reason_code: str  # ResourceSkuRestrictionsReasonCode enum

class Quota:
    """Usage quota information."""
    current_value: int
    limit: int
    name: QuotaName
    unit: str

class QuotaName:
    """Quota name information."""
    value: str
    localized_value: str

class ServiceOperation:
    """Available service operation."""
    name: str
    display: ServiceOperationDisplay
    origin: str
    properties: dict

class ServiceOperationDisplay:
    """Service operation display information."""
    provider: str
    resource: str
    operation: str
    description: str

class ResourceSkuCapacityScaleType:
    """Resource SKU capacity scale types."""
    AUTOMATIC = "Automatic"
    MANUAL = "Manual"
    NONE = "None"

class ResourceSkuRestrictionsType:
    """Resource SKU restriction types."""
    LOCATION = "Location"

class ResourceSkuRestrictionsReasonCode:
    """Resource SKU restriction reason codes."""
    QUOTA_ID = "QuotaId"
    NOT_AVAILABLE_FOR_SUBSCRIPTION = "NotAvailableForSubscription"
tessl i tessl/pypi-azure-mgmt-datamigration@9.0.0

docs

connection-validation.md

files.md

index.md

operations.md

projects.md

resources.md

service-tasks.md

services.md

tasks.md

tile.json