Microsoft Azure Kusto Management Client Library for Python
—
Quality
Pending
Does it follow best practices?
Impact
Pending
No eval scenarios have been run
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.
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
"""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
"""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
"""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 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
"""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
"""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
"""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
"""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}")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")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