CtrlK
BlogDocsLog inGet started
Tessl Logo

tessl/pypi-azure-mgmt-kusto

Microsoft Azure Kusto Management Client Library for Python

Pending

Quality

Pending

Does it follow best practices?

Impact

Pending

No eval scenarios have been run

Overview
Eval results
Files

cluster-management.mddocs/

Cluster Management

Comprehensive lifecycle management of Azure Data Explorer (Kusto) clusters including creation, configuration, scaling, start/stop operations, migration, network diagnostics, and SKU management. Clusters are the primary compute and storage resources that host databases and handle query processing.

Capabilities

Cluster CRUD Operations

Core cluster lifecycle operations for creating, reading, updating, and deleting Kusto clusters.

def get(
    resource_group_name: str,
    cluster_name: str,
    **kwargs
) -> Cluster:
    """
    Get a Kusto cluster.
    
    Parameters:
    - resource_group_name: Name of the resource group
    - cluster_name: Name of the Kusto cluster
    
    Returns:
    Cluster object with current configuration and state
    """

def begin_create_or_update(
    resource_group_name: str,
    cluster_name: str,
    parameters: Cluster,
    if_match: str = None,
    if_none_match: str = None,
    **kwargs
) -> LROPoller[Cluster]:
    """
    Create or update a Kusto cluster.
    
    Parameters:
    - resource_group_name: Name of the resource group
    - cluster_name: Name of the Kusto cluster
    - parameters: Cluster object with desired configuration
    - if_match: ETag for optimistic concurrency control
    - if_none_match: ETag to prevent creation if resource exists
    
    Returns:
    LROPoller for the long-running operation returning Cluster
    """

def begin_update(
    resource_group_name: str,
    cluster_name: str,
    parameters: ClusterUpdate,
    if_match: str = None,
    **kwargs
) -> LROPoller[Cluster]:
    """
    Update an existing Kusto cluster.
    
    Parameters:
    - resource_group_name: Name of the resource group
    - cluster_name: Name of the Kusto cluster
    - parameters: ClusterUpdate object with changes
    - if_match: ETag for optimistic concurrency control
    
    Returns:
    LROPoller for the long-running operation returning updated Cluster
    """

def begin_delete(
    resource_group_name: str,
    cluster_name: str,
    **kwargs
) -> LROPoller[None]:
    """
    Delete a Kusto cluster.
    
    Parameters:
    - resource_group_name: Name of the resource group
    - cluster_name: Name of the Kusto cluster
    
    Returns:
    LROPoller for the long-running delete operation
    """

Cluster Listing Operations

Operations to discover and list Kusto clusters across subscriptions and resource groups.

def list(**kwargs) -> Iterable[Cluster]:
    """
    List all Kusto clusters in the subscription.
    
    Returns:
    Iterable of Cluster objects
    """

def list_by_resource_group(
    resource_group_name: str,
    **kwargs
) -> Iterable[Cluster]:
    """
    List Kusto clusters in a specific resource group.
    
    Parameters:
    - resource_group_name: Name of the resource group
    
    Returns:
    Iterable of Cluster objects
    """

Cluster State Management

Operations to control cluster runtime state including start, stop, and migration.

def begin_start(
    resource_group_name: str,
    cluster_name: str,
    **kwargs
) -> LROPoller[None]:
    """
    Start a stopped Kusto cluster.
    
    Parameters:
    - resource_group_name: Name of the resource group
    - cluster_name: Name of the Kusto cluster
    
    Returns:
    LROPoller for the long-running start operation
    """

def begin_stop(
    resource_group_name: str,
    cluster_name: str,
    **kwargs
) -> LROPoller[None]:
    """
    Stop a running Kusto cluster.
    
    Parameters:
    - resource_group_name: Name of the resource group
    - cluster_name: Name of the Kusto cluster
    
    Returns:
    LROPoller for the long-running stop operation
    """

def begin_migrate(
    resource_group_name: str,
    cluster_name: str,
    cluster_migrate_request: ClusterMigrateRequest,
    **kwargs
) -> LROPoller[None]:
    """
    Migrate a Kusto cluster to a different region or configuration.
    
    Parameters:
    - resource_group_name: Name of the resource group
    - cluster_name: Name of the Kusto cluster
    - cluster_migrate_request: Migration configuration
    
    Returns:
    LROPoller for the long-running migration operation
    """

Follower Database Management

Operations to manage follower databases that replicate data from leader clusters.

def list_follower_databases(
    resource_group_name: str,
    cluster_name: str,
    **kwargs
) -> Iterable[FollowerDatabaseDefinition]:
    """
    List follower databases attached to this cluster.
    
    Parameters:
    - resource_group_name: Name of the resource group
    - cluster_name: Name of the Kusto cluster
    
    Returns:
    Iterable of FollowerDatabaseDefinition objects
    """

def list_follower_databases_get(
    resource_group_name: str,
    cluster_name: str,
    **kwargs
) -> Iterable[FollowerDatabaseDefinitionGet]:
    """
    Get follower databases with extended information.
    
    Parameters:
    - resource_group_name: Name of the resource group
    - cluster_name: Name of the Kusto cluster
    
    Returns:
    Iterable of FollowerDatabaseDefinitionGet objects
    """

def begin_detach_follower_databases(
    resource_group_name: str,
    cluster_name: str,
    follower_database_to_remove: FollowerDatabaseDefinition,
    **kwargs
) -> LROPoller[None]:
    """
    Detach a follower database from this cluster.
    
    Parameters:
    - resource_group_name: Name of the resource group
    - cluster_name: Name of the Kusto cluster
    - follower_database_to_remove: Follower database configuration to remove
    
    Returns:
    LROPoller for the long-running detach operation
    """

Network Diagnostics

Network connectivity and diagnostics operations for troubleshooting cluster networking issues.

def begin_diagnose_virtual_network(
    resource_group_name: str,
    cluster_name: str,
    **kwargs
) -> LROPoller[DiagnoseVirtualNetworkResult]:
    """
    Diagnose virtual network connectivity issues for the cluster.
    
    Parameters:
    - resource_group_name: Name of the resource group
    - cluster_name: Name of the Kusto cluster
    
    Returns:
    LROPoller returning DiagnoseVirtualNetworkResult with diagnostic information
    """

def list_outbound_network_dependencies_endpoints(
    resource_group_name: str,
    cluster_name: str,
    **kwargs
) -> Iterable[OutboundNetworkDependenciesEndpoint]:
    """
    List outbound network dependencies for the cluster.
    
    Parameters:
    - resource_group_name: Name of the resource group
    - cluster_name: Name of the Kusto cluster
    
    Returns:
    Iterable of OutboundNetworkDependenciesEndpoint objects
    """

SKU and Capacity Management

Operations to manage cluster SKUs and query available compute configurations.

def list_skus(**kwargs) -> Iterable[SkuDescription]:
    """
    List available SKUs for Kusto clusters.
    
    Returns:
    Iterable of SkuDescription objects with available SKU options
    """

def list_skus_by_resource(
    resource_group_name: str,
    cluster_name: str,
    **kwargs
) -> Iterable[AzureResourceSku]:
    """
    List available SKUs for a specific cluster resource.
    
    Parameters:
    - resource_group_name: Name of the resource group
    - cluster_name: Name of the Kusto cluster
    
    Returns:
    Iterable of AzureResourceSku objects with available SKU options
    """

def check_name_availability(
    location: str,
    cluster_name: ClusterCheckNameRequest,
    **kwargs
) -> CheckNameResult:
    """
    Check if a cluster name is available in the specified location.
    
    Parameters:
    - location: Azure region location
    - cluster_name: ClusterCheckNameRequest with name to check
    
    Returns:
    CheckNameResult indicating availability and any issues
    """

Security Policies

Operations to manage cluster-level security policies including callout policies for external data access.

def begin_add_callout_policies(
    resource_group_name: str,
    cluster_name: str,
    callout_policies: CalloutPoliciesList,
    **kwargs
) -> LROPoller[None]:
    """
    Add callout policies to the cluster for external data access.
    
    Parameters:
    - resource_group_name: Name of the resource group
    - cluster_name: Name of the Kusto cluster
    - callout_policies: List of callout policies to add
    
    Returns:
    LROPoller for the long-running operation
    """

def begin_remove_callout_policy(
    resource_group_name: str,
    cluster_name: str,
    callout_policy: CalloutPolicyToRemove,
    **kwargs
) -> LROPoller[None]:
    """
    Remove a callout policy from the cluster.
    
    Parameters:
    - resource_group_name: Name of the resource group
    - cluster_name: Name of the Kusto cluster
    - callout_policy: Callout policy to remove
    
    Returns:
    LROPoller for the long-running operation
    """

def list_callout_policies(
    resource_group_name: str,
    cluster_name: str,
    **kwargs
) -> Iterable[CalloutPolicy]:
    """
    List callout policies configured on the cluster.
    
    Parameters:
    - resource_group_name: Name of the resource group
    - cluster_name: Name of the Kusto cluster
    
    Returns:
    Iterable of CalloutPolicy objects
    """

Language Extensions

Management of language extensions that enable custom query capabilities in the cluster.

def list_language_extensions(
    resource_group_name: str,
    cluster_name: str,
    **kwargs
) -> Iterable[LanguageExtension]:
    """
    List language extensions installed on the cluster.
    
    Parameters:
    - resource_group_name: Name of the resource group
    - cluster_name: Name of the Kusto cluster
    
    Returns:
    Iterable of LanguageExtension objects
    """

def begin_add_language_extensions(
    resource_group_name: str,
    cluster_name: str,
    language_extensions_to_add: LanguageExtensionsList,
    **kwargs
) -> LROPoller[None]:
    """
    Add language extensions to the cluster.
    
    Parameters:
    - resource_group_name: Name of the resource group
    - cluster_name: Name of the Kusto cluster
    - language_extensions_to_add: List of language extensions to add
    
    Returns:
    LROPoller for the long-running operation
    """

def begin_remove_language_extensions(
    resource_group_name: str,
    cluster_name: str,
    language_extensions_to_remove: LanguageExtensionsList,
    **kwargs
) -> LROPoller[None]:
    """
    Remove language extensions from the cluster.
    
    Parameters:
    - resource_group_name: Name of the resource group
    - cluster_name: Name of the Kusto cluster
    - language_extensions_to_remove: List of language extensions to remove
    
    Returns:
    LROPoller for the long-running operation
    """

Usage Examples

Creating a New Cluster

from azure.mgmt.kusto.models import Cluster, AzureSku, AzureSkuName, AzureSkuTier

# Configure cluster parameters
cluster_params = Cluster(
    location="East US",
    sku=AzureSku(
        name=AzureSkuName.STANDARD_D13_V2,
        tier=AzureSkuTier.STANDARD,
        capacity=2
    ),
    tags={"Environment": "Development", "Team": "Analytics"}
)

# Create the cluster
poller = client.clusters.begin_create_or_update(
    resource_group_name="my-resource-group",
    cluster_name="my-new-cluster",
    parameters=cluster_params
)

# Wait for completion (can take 10-15 minutes)
cluster = poller.result()
print(f"Cluster created: {cluster.uri}")

Scaling a Cluster

from azure.mgmt.kusto.models import ClusterUpdate, AzureSku

# Get current cluster
cluster = client.clusters.get(
    resource_group_name="my-resource-group",
    cluster_name="my-cluster"
)

# Update SKU for scaling
update_params = ClusterUpdate(
    sku=AzureSku(
        name=cluster.sku.name,
        tier=cluster.sku.tier,
        capacity=4  # Scale up to 4 instances
    )
)

# Apply the update
poller = client.clusters.begin_update(
    resource_group_name="my-resource-group",
    cluster_name="my-cluster",
    parameters=update_params
)

updated_cluster = poller.result()
print(f"Cluster scaled to {updated_cluster.sku.capacity} instances")

Key Types

class Cluster:
    """Represents a Kusto cluster resource."""
    # Read-only properties
    id: str  # Resource ID
    name: str  # Cluster name
    type: str  # Resource type
    provisioning_state: ProvisioningState  # Current provisioning state
    state: State  # Current cluster state
    uri: str  # Cluster URI for connections
    data_ingestion_uri: str  # Data ingestion endpoint
    
    # Configurable properties
    location: str  # Azure region
    tags: Dict[str, str]  # Resource tags
    sku: AzureSku  # SKU configuration
    zones: List[str]  # Availability zones
    identity: Identity  # Managed identity
    accepted_audiences: List[AcceptedAudiences]  # Trusted audiences
    enable_disk_encryption: bool  # Disk encryption setting
    enable_streaming_ingest: bool  # Streaming ingestion setting
    virtual_network_configuration: VirtualNetworkConfiguration  # VNet config
    key_vault_properties: KeyVaultProperties  # Key vault for encryption
    optimized_autoscale: OptimizedAutoscale  # Auto-scaling configuration
    enable_purge: bool  # Data purge capability
    language_extensions: LanguageExtensionsList  # Installed extensions
    enable_double_encryption: bool  # Double encryption setting

class AzureSku:
    """SKU configuration for a Kusto cluster."""
    name: AzureSkuName  # SKU name (e.g., Standard_D13_v2)
    tier: AzureSkuTier  # SKU tier (Basic or Standard)
    capacity: int  # Number of instances

class ClusterUpdate:
    """Update parameters for a Kusto cluster."""
    tags: Dict[str, str]  # Updated resource tags
    location: str  # Updated location
    sku: AzureSku  # Updated SKU configuration
    identity: Identity  # Updated managed identity
    # ... other updatable properties

from enum import Enum

class State(str, Enum):
    """Cluster state values."""
    CREATING = "Creating"
    UNAVAILABLE = "Unavailable"
    RUNNING = "Running"
    DELETING = "Deleting"
    DELETED = "Deleted"
    STOPPING = "Stopping"
    STOPPED = "Stopped"
    STARTING = "Starting"
    UPDATING = "Updating"
    MIGRATED = "Migrated"

class ProvisioningState(str, Enum):
    """Provisioning state values."""
    RUNNING = "Running"
    CREATING = "Creating"
    DELETING = "Deleting"
    SUCCEEDED = "Succeeded"
    FAILED = "Failed"
    MOVING = "Moving"
    CANCELED = "Canceled"

Install with Tessl CLI

npx tessl i tessl/pypi-azure-mgmt-kusto

docs

cluster-management.md

data-connections.md

database-management.md

index.md

monitoring-operations.md

scripts-extensions.md

security-management.md

tile.json