CtrlK
BlogDocsLog inGet started
Tessl Logo

tessl/pypi-azure-mgmt-containerinstance

Microsoft Azure Container Instance Client Library for Python providing comprehensive management capabilities for containerized applications in Azure cloud.

Pending

Quality

Pending

Does it follow best practices?

Impact

Pending

No eval scenarios have been run

Overview
Eval results
Files

container-groups.mddocs/

Container Group Operations

Container Groups are the primary deployment unit in Azure Container Instances, representing a collection of containers that share the same lifecycle, network, and storage resources.

Core Operations

List Container Groups { .api }

def list(**kwargs) -> ItemPaged[ContainerGroup]:
    """
    List all container groups in the subscription.

    Returns:
        ItemPaged[ContainerGroup]: Paginated list of container groups across all resource groups

    Example:
        container_groups = client.container_groups.list()
        for group in container_groups:
            print(f"Container Group: {group.name} in {group.location}")
    """

def list_by_resource_group(resource_group_name: str, **kwargs) -> ItemPaged[ContainerGroup]:
    """
    List container groups in a specific resource group.

    Args:
        resource_group_name (str): Name of the resource group

    Returns:
        ItemPaged[ContainerGroup]: Paginated list of container groups in the resource group

    Example:
        container_groups = client.container_groups.list_by_resource_group("my-resource-group")
        for group in container_groups:
            print(f"Container Group: {group.name}, Status: {group.provisioning_state}")
    """

Get Container Group { .api }

def get(resource_group_name: str, container_group_name: str, **kwargs) -> ContainerGroup:
    """
    Get details of a specific container group.

    Args:
        resource_group_name (str): Name of the resource group
        container_group_name (str): Name of the container group

    Returns:
        ContainerGroup: Complete container group configuration and status

    Raises:
        ResourceNotFoundError: If the container group doesn't exist

    Example:
        container_group = client.container_groups.get("my-resource-group", "my-container-group")
        print(f"IP Address: {container_group.ip_address.ip}")
        print(f"State: {container_group.provisioning_state}")
    """

Create or Update Container Group { .api }

def begin_create_or_update(
    resource_group_name: str,
    container_group_name: str, 
    container_group: ContainerGroup,
    **kwargs
) -> LROPoller[ContainerGroup]:
    """
    Create a new container group or update an existing one.

    Args:
        resource_group_name (str): Name of the resource group
        container_group_name (str): Name for the container group
        container_group (ContainerGroup): Container group configuration

    Returns:
        LROPoller[ContainerGroup]: Long-running operation poller for the deployment

    Example:
        from azure.mgmt.containerinstance.models import (
            ContainerGroup, Container, ContainerGroupProperties,
            ResourceRequirements, ResourceRequests, IpAddress, ContainerPort
        )
        
        # Define container
        container = Container(
            name="web-server",
            image="nginx:1.21",
            resources=ResourceRequirements(
                requests=ResourceRequests(memory_in_gb=1.0, cpu=1.0)
            ),
            ports=[ContainerPort(port=80)]
        )
        
        # Define container group
        container_group = ContainerGroup(
            location="East US",
            containers=[container],
            os_type="Linux",
            restart_policy="Always",
            ip_address=IpAddress(
                type="Public",
                ports=[ContainerPort(port=80, protocol="TCP")]
            )
        )
        
        # Create container group
        operation = client.container_groups.begin_create_or_update(
            resource_group_name="my-resource-group",
            container_group_name="my-web-app",
            container_group=container_group
        )
        
        # Wait for completion
        result = operation.result()
        print(f"Container group created with IP: {result.ip_address.ip}")
    """

Update Container Group Tags { .api }

def update(
    resource_group_name: str,
    container_group_name: str,
    resource: Resource,
    **kwargs
) -> ContainerGroup:
    """
    Update container group tags without modifying the container configuration.

    Args:
        resource_group_name (str): Name of the resource group
        container_group_name (str): Name of the container group
        resource (Resource): Resource object containing updated tags

    Returns:
        ContainerGroup: Updated container group

    Example:
        from azure.mgmt.containerinstance.models import Resource
        
        # Update tags
        resource_update = Resource(tags={"environment": "production", "team": "backend"})
        updated_group = client.container_groups.update(
            resource_group_name="my-resource-group",
            container_group_name="my-container-group",
            resource=resource_update
        )
        print(f"Updated tags: {updated_group.tags}")
    """

Delete Container Group { .api }

def begin_delete(
    resource_group_name: str,
    container_group_name: str,
    **kwargs
) -> LROPoller[ContainerGroup]:
    """
    Delete a container group and all its containers.

    Args:
        resource_group_name (str): Name of the resource group
        container_group_name (str): Name of the container group to delete

    Returns:
        LROPoller[ContainerGroup]: Long-running operation poller for the deletion

    Example:
        # Delete container group
        delete_operation = client.container_groups.begin_delete(
            resource_group_name="my-resource-group",
            container_group_name="my-container-group"
        )
        
        # Wait for deletion to complete
        delete_operation.result()
        print("Container group deleted successfully")
    """

Lifecycle Operations

Restart Container Group { .api }

def begin_restart(
    resource_group_name: str,
    container_group_name: str,
    **kwargs
) -> LROPoller[None]:
    """
    Restart all containers in a container group.

    Args:
        resource_group_name (str): Name of the resource group
        container_group_name (str): Name of the container group

    Returns:
        LROPoller[None]: Long-running operation poller for the restart

    Example:
        # Restart container group
        restart_operation = client.container_groups.begin_restart(
            resource_group_name="my-resource-group",
            container_group_name="my-container-group"
        )
        
        # Wait for restart to complete
        restart_operation.result()
        print("Container group restarted successfully")
    """

Stop Container Group { .api }

def stop(resource_group_name: str, container_group_name: str, **kwargs) -> None:
    """
    Stop all containers in a container group.

    Args:
        resource_group_name (str): Name of the resource group
        container_group_name (str): Name of the container group

    Example:
        # Stop container group
        client.container_groups.stop(
            resource_group_name="my-resource-group",
            container_group_name="my-container-group"
        )
        print("Container group stopped")
    """

Start Container Group { .api }

def begin_start(
    resource_group_name: str,
    container_group_name: str,
    **kwargs
) -> LROPoller[None]:
    """
    Start all containers in a stopped container group.

    Args:
        resource_group_name (str): Name of the resource group
        container_group_name (str): Name of the container group

    Returns:
        LROPoller[None]: Long-running operation poller for the start operation

    Example:
        # Start container group
        start_operation = client.container_groups.begin_start(
            resource_group_name="my-resource-group",
            container_group_name="my-container-group"
        )
        
        # Wait for start to complete
        start_operation.result()
        print("Container group started successfully")
    """

Common Usage Patterns

Multi-Container Application

from azure.mgmt.containerinstance.models import (
    ContainerGroup, Container, ContainerGroupProperties,
    ResourceRequirements, ResourceRequests, IpAddress, ContainerPort,
    EnvironmentVariable, Volume, VolumeMount, AzureFileVolume
)

# Define frontend container
frontend = Container(
    name="frontend",
    image="myapp/frontend:latest",
    resources=ResourceRequirements(
        requests=ResourceRequests(memory_in_gb=0.5, cpu=0.5)
    ),
    ports=[ContainerPort(port=80)],
    environment_variables=[
        EnvironmentVariable(name="API_URL", value="http://localhost:3000")
    ]
)

# Define backend container
backend = Container(
    name="backend",
    image="myapp/backend:latest",
    resources=ResourceRequirements(
        requests=ResourceRequests(memory_in_gb=1.0, cpu=1.0)
    ),
    ports=[ContainerPort(port=3000)],
    environment_variables=[
        EnvironmentVariable(name="DATABASE_URL", secure_value="connection-string")
    ]
)

# Create container group with multiple containers
container_group = ContainerGroup(
    location="East US",
    containers=[frontend, backend],
    os_type="Linux",
    restart_policy="Always",
    ip_address=IpAddress(
        type="Public",
        ports=[
            ContainerPort(port=80, protocol="TCP"),
            ContainerPort(port=3000, protocol="TCP")
        ]
    )
)

# Deploy the multi-container application
operation = client.container_groups.begin_create_or_update(
    resource_group_name="my-resource-group",
    container_group_name="my-multi-container-app",
    container_group=container_group
)
result = operation.result()

Container Group with Persistent Storage

# Define Azure File share volume
azure_file_volume = Volume(
    name="shared-storage",
    azure_file=AzureFileVolume(
        share_name="my-file-share",
        storage_account_name="mystorageaccount",
        storage_account_key="storage-account-key"
    )
)

# Container with mounted volume
container = Container(
    name="data-processor",
    image="ubuntu:20.04",
    command=["/bin/bash", "-c", "while true; do echo 'Processing data...'; sleep 30; done"],
    resources=ResourceRequirements(
        requests=ResourceRequests(memory_in_gb=1.0, cpu=1.0)
    ),
    volume_mounts=[
        VolumeMount(
            name="shared-storage",
            mount_path="/data",
            read_only=False
        )
    ]
)

# Container group with persistent storage
container_group = ContainerGroup(
    location="East US",
    containers=[container],
    os_type="Linux",
    volumes=[azure_file_volume],
    restart_policy="OnFailure"
)

Network Dependencies

Get Outbound Network Dependencies { .api }

def get_outbound_network_dependencies_endpoints(
    resource_group_name: str,
    container_group_name: str,
    **kwargs
) -> List[str]:
    """
    Get outbound network dependencies for a container group.
    
    Args:
        resource_group_name (str): Name of the resource group
        container_group_name (str): Name of the container group
        
    Returns:
        List[str]: List of outbound network dependency endpoints
        
    Example:
        # Get network dependencies for troubleshooting
        dependencies = client.container_groups.get_outbound_network_dependencies_endpoints(
            resource_group_name="my-resource-group",
            container_group_name="my-container-group"
        )
        
        print("Outbound network dependencies:")
        for endpoint in dependencies:
            print(f"  - {endpoint}")
    """

Network Troubleshooting Example

def diagnose_container_group_networking(client, resource_group, container_group_name):
    """Comprehensive network diagnostics for a container group."""
    
    print(f"Diagnosing network configuration for: {container_group_name}")
    
    try:
        # Get container group details
        container_group = client.container_groups.get(
            resource_group_name=resource_group,
            container_group_name=container_group_name
        )
        
        print(f"Container Group Status: {container_group.provisioning_state}")
        
        # Check IP configuration
        if container_group.ip_address:
            print(f"IP Address: {container_group.ip_address.ip}")
            print(f"IP Type: {container_group.ip_address.type}")
            if container_group.ip_address.ports:
                print("Exposed Ports:")
                for port in container_group.ip_address.ports:
                    print(f"  - {port.port}/{port.protocol}")
        else:
            print("No public IP address configured")
        
        # Check virtual network integration
        if container_group.subnet_ids:
            print("Virtual Network Integration:")
            for subnet in container_group.subnet_ids:
                print(f"  - Subnet: {subnet.id}")
        
        # Get network dependencies
        try:
            dependencies = client.container_groups.get_outbound_network_dependencies_endpoints(
                resource_group_name=resource_group,
                container_group_name=container_group_name
            )
            
            if dependencies:
                print("Outbound Network Dependencies:")
                for endpoint in dependencies:
                    print(f"  - {endpoint}")
            else:
                print("No outbound network dependencies found")
                
        except Exception as e:
            print(f"Failed to retrieve network dependencies: {e}")
            
    except Exception as e:
        print(f"Failed to retrieve container group details: {e}")

# Usage
diagnose_container_group_networking(
    client=client,
    resource_group="production-rg",
    container_group_name="api-container-group"
)

Install with Tessl CLI

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

docs

authentication.md

container-groups.md

containers.md

index.md

location.md

models.md

operations.md

subnet-operations.md

tile.json