Microsoft Azure Compute Management Client Library for programmatic management of Azure compute resources including virtual machines, scale sets, disks, and related infrastructure.
—
Quality
Pending
Does it follow best practices?
Impact
Pending
No eval scenarios have been run
Comprehensive management of Virtual Machine Scale Sets for auto-scaling applications, including orchestration modes, scaling policies, rolling upgrades, and individual VM management within scale sets. Scale sets enable deployment of highly available applications that can automatically scale based on demand.
Core operations for managing Virtual Machine Scale Set lifecycle.
def begin_create_or_update(
resource_group_name: str,
vm_scale_set_name: str,
parameters: VirtualMachineScaleSet
) -> LROPoller[VirtualMachineScaleSet]:
"""
Create or update a virtual machine scale set.
Args:
resource_group_name: Name of the resource group
vm_scale_set_name: Name of the scale set
parameters: Scale set configuration
Returns:
Long-running operation poller for VirtualMachineScaleSet
"""
def begin_delete(resource_group_name: str, vm_scale_set_name: str) -> LROPoller[None]:
"""
Delete a virtual machine scale set.
Args:
resource_group_name: Name of the resource group
vm_scale_set_name: Name of the scale set
Returns:
Long-running operation poller
"""
def get(resource_group_name: str, vm_scale_set_name: str) -> VirtualMachineScaleSet:
"""
Get scale set details.
Args:
resource_group_name: Name of the resource group
vm_scale_set_name: Name of the scale set
Returns:
Virtual machine scale set details
"""
def list(resource_group_name: str) -> Iterable[VirtualMachineScaleSet]:
"""
List scale sets in a resource group.
Args:
resource_group_name: Name of the resource group
Returns:
Iterable of virtual machine scale sets
"""
def list_all() -> Iterable[VirtualMachineScaleSet]:
"""
List all scale sets in the subscription.
Returns:
Iterable of scale sets across all resource groups
"""Operations for managing scale set capacity and scaling behavior.
def begin_update(
resource_group_name: str,
vm_scale_set_name: str,
parameters: VirtualMachineScaleSetUpdate
) -> LROPoller[VirtualMachineScaleSet]:
"""
Update scale set configuration including capacity.
Args:
resource_group_name: Name of the resource group
vm_scale_set_name: Name of the scale set
parameters: Update parameters including new capacity
Returns:
Long-running operation poller for updated scale set
"""
def begin_update_instances(
resource_group_name: str,
vm_scale_set_name: str,
vm_instance_i_ds: VirtualMachineScaleSetVMInstanceRequiredIDs
) -> LROPoller[None]:
"""
Update specific instances in the scale set.
Args:
resource_group_name: Name of the resource group
vm_scale_set_name: Name of the scale set
vm_instance_i_ds: Instance IDs to update
Returns:
Long-running operation poller
"""
def begin_reimage_all(resource_group_name: str, vm_scale_set_name: str) -> LROPoller[None]:
"""
Reimage all instances in the scale set.
Args:
resource_group_name: Name of the resource group
vm_scale_set_name: Name of the scale set
Returns:
Long-running operation poller
"""Operations for controlling power state of scale set instances.
def begin_start(resource_group_name: str, vm_scale_set_name: str) -> LROPoller[None]:
"""
Start all instances in the scale set.
Args:
resource_group_name: Name of the resource group
vm_scale_set_name: Name of the scale set
Returns:
Long-running operation poller
"""
def begin_restart(resource_group_name: str, vm_scale_set_name: str) -> LROPoller[None]:
"""
Restart all instances in the scale set.
Args:
resource_group_name: Name of the resource group
vm_scale_set_name: Name of the scale set
Returns:
Long-running operation poller
"""
def begin_power_off(resource_group_name: str, vm_scale_set_name: str) -> LROPoller[None]:
"""
Power off all instances in the scale set.
Args:
resource_group_name: Name of the resource group
vm_scale_set_name: Name of the scale set
Returns:
Long-running operation poller
"""
def begin_deallocate(resource_group_name: str, vm_scale_set_name: str) -> LROPoller[None]:
"""
Deallocate all instances in the scale set.
Args:
resource_group_name: Name of the resource group
vm_scale_set_name: Name of the scale set
Returns:
Long-running operation poller
"""Operations for managing individual VMs within a scale set.
class VirtualMachineScaleSetVMsOperations:
def list(
resource_group_name: str,
virtual_machine_scale_set_name: str
) -> Iterable[VirtualMachineScaleSetVM]:
"""
List VMs in a scale set.
Args:
resource_group_name: Name of the resource group
virtual_machine_scale_set_name: Name of the scale set
Returns:
Iterable of scale set VMs
"""
def get(
resource_group_name: str,
vm_scale_set_name: str,
instance_id: str
) -> VirtualMachineScaleSetVM:
"""
Get details of a specific VM in the scale set.
Args:
resource_group_name: Name of the resource group
vm_scale_set_name: Name of the scale set
instance_id: Instance ID of the VM
Returns:
Scale set VM details
"""
def begin_delete(
resource_group_name: str,
vm_scale_set_name: str,
instance_id: str
) -> LROPoller[None]:
"""
Delete a specific VM from the scale set.
Args:
resource_group_name: Name of the resource group
vm_scale_set_name: Name of the scale set
instance_id: Instance ID of the VM to delete
Returns:
Long-running operation poller
"""Management of rolling upgrades for scale sets.
class VirtualMachineScaleSetRollingUpgradesOperations:
def begin_cancel(
resource_group_name: str,
vm_scale_set_name: str
) -> LROPoller[None]:
"""
Cancel a rolling upgrade.
Args:
resource_group_name: Name of the resource group
vm_scale_set_name: Name of the scale set
Returns:
Long-running operation poller
"""
def begin_start_os_upgrade(
resource_group_name: str,
vm_scale_set_name: str
) -> LROPoller[None]:
"""
Start OS upgrade on the scale set.
Args:
resource_group_name: Name of the resource group
vm_scale_set_name: Name of the scale set
Returns:
Long-running operation poller
"""
def get_latest(
resource_group_name: str,
vm_scale_set_name: str
) -> RollingUpgradeStatusInfo:
"""
Get the status of the latest rolling upgrade.
Args:
resource_group_name: Name of the resource group
vm_scale_set_name: Name of the scale set
Returns:
Rolling upgrade status information
"""class VirtualMachineScaleSet:
"""Describes a Virtual Machine Scale Set."""
id: Optional[str]
name: Optional[str]
type: Optional[str]
location: str
tags: Optional[Dict[str, str]]
sku: Optional[Sku]
plan: Optional[Plan]
upgrade_policy: Optional[UpgradePolicy]
automatic_repairs_policy: Optional[AutomaticRepairsPolicy]
virtual_machine_profile: Optional[VirtualMachineScaleSetVMProfile]
provisioning_state: Optional[str]
overprovision: Optional[bool]
do_not_run_extensions_on_overprovisioned_v_ms: Optional[bool]
unique_id: Optional[str]
single_placement_group: Optional[bool]
zone_balance: Optional[bool]
platform_fault_domain_count: Optional[int]
proximity_placement_group: Optional[SubResource]
host_group: Optional[SubResource]
additional_capabilities: Optional[AdditionalCapabilities]
scale_in_policy: Optional[ScaleInPolicy]
orchestration_mode: Optional[OrchestrationMode]
spot_restore_policy: Optional[SpotRestorePolicy]
priority_mix_policy: Optional[PriorityMixPolicy]
class VirtualMachineScaleSetVMProfile:
"""Describes a virtual machine scale set virtual machine profile."""
os_profile: Optional[VirtualMachineScaleSetOSProfile]
storage_profile: Optional[VirtualMachineScaleSetStorageProfile]
network_profile: Optional[VirtualMachineScaleSetNetworkProfile]
security_profile: Optional[SecurityProfile]
diagnostics_profile: Optional[DiagnosticsProfile]
extension_profile: Optional[VirtualMachineScaleSetExtensionProfile]
license_type: Optional[str]
priority: Optional[VirtualMachinePriorityTypes]
eviction_policy: Optional[VirtualMachineEvictionPolicyTypes]
billing_profile: Optional[BillingProfile]
scheduled_events_profile: Optional[ScheduledEventsProfile]
user_data: Optional[str]
capacity_reservation: Optional[CapacityReservationProfile]
application_profile: Optional[ApplicationProfile]
hardware_profile: Optional[VirtualMachineScaleSetHardwareProfile]
service_artifact_reference: Optional[ServiceArtifactReference]
security_posture_reference: Optional[SecurityPostureReference]
class UpgradePolicy:
"""Describes an upgrade policy - automatic, manual, or rolling."""
mode: Optional[UpgradeMode]
rolling_upgrade_policy: Optional[RollingUpgradePolicy]
automatic_os_upgrade_policy: Optional[AutomaticOSUpgradePolicy]
class Sku:
"""Describes a virtual machine scale set sku."""
name: Optional[str]
tier: Optional[str]
capacity: Optional[int]
class VirtualMachineScaleSetVM:
"""Describes a virtual machine scale set virtual machine."""
id: Optional[str]
name: Optional[str]
type: Optional[str]
location: str
tags: Optional[Dict[str, str]]
instance_id: Optional[str]
sku: Optional[Sku]
plan: Optional[Plan]
resources: Optional[List[VirtualMachineExtension]]
zones: Optional[List[str]]
latest_model_applied: Optional[bool]
vm_id: Optional[str]
instance_view: Optional[VirtualMachineScaleSetVMInstanceView]
hardware_profile: Optional[HardwareProfile]
storage_profile: Optional[StorageProfile]
additional_capabilities: Optional[AdditionalCapabilities]
os_profile: Optional[OSProfile]
security_profile: Optional[SecurityProfile]
network_profile: Optional[NetworkProfile]
network_profile_configuration: Optional[VirtualMachineScaleSetVMNetworkProfileConfiguration]
diagnostics_profile: Optional[DiagnosticsProfile]
availability_set: Optional[SubResource]
provisioning_state: Optional[str]
license_type: Optional[str]
model_definition_applied: Optional[str]
protection_policy: Optional[VirtualMachineScaleSetVMProtectionPolicy]
class VirtualMachineScaleSetUpdate:
"""Describes a Virtual Machine Scale Set Update."""
tags: Optional[Dict[str, str]]
sku: Optional[Sku]
plan: Optional[Plan]
upgrade_policy: Optional[UpgradePolicy]
automatic_repairs_policy: Optional[AutomaticRepairsPolicy]
virtual_machine_profile: Optional[VirtualMachineScaleSetUpdateVMProfile]
overprovision: Optional[bool]
do_not_run_extensions_on_overprovisioned_v_ms: Optional[bool]
single_placement_group: Optional[bool]
additional_capabilities: Optional[AdditionalCapabilities]
scale_in_policy: Optional[ScaleInPolicy]
proximity_placement_group: Optional[SubResource]
priority_mix_policy: Optional[PriorityMixPolicy]
spot_restore_policy: Optional[SpotRestorePolicy]
class RollingUpgradeStatusInfo:
"""The status of the latest virtual machine scale set rolling upgrade."""
id: Optional[str]
name: Optional[str]
type: Optional[str]
location: Optional[str]
tags: Optional[Dict[str, str]]
policy: Optional[RollingUpgradePolicy]
running_status: Optional[RollingUpgradeRunningStatus]
progress: Optional[RollingUpgradeProgressInfo]
error: Optional[ApiError]from azure.identity import DefaultAzureCredential
from azure.mgmt.compute import ComputeManagementClient
credential = DefaultAzureCredential()
compute_client = ComputeManagementClient(credential, "subscription-id")
scale_set_parameters = {
'location': 'East US',
'sku': {
'name': 'Standard_B1ms',
'capacity': 3
},
'upgrade_policy': {
'mode': 'Manual'
},
'virtual_machine_profile': {
'os_profile': {
'computer_name_prefix': 'myss',
'admin_username': 'azureuser',
'admin_password': 'Password123!'
},
'storage_profile': {
'image_reference': {
'publisher': 'Canonical',
'offer': '0001-com-ubuntu-server-focal',
'sku': '20_04-lts-gen2',
'version': 'latest'
},
'os_disk': {
'create_option': 'FromImage',
'managed_disk': {
'storage_account_type': 'Standard_LRS'
}
}
},
'network_profile': {
'network_interface_configurations': [{
'name': 'myss-nic',
'properties': {
'primary': True,
'ip_configurations': [{
'name': 'myss-ipconfig',
'properties': {
'subnet': {
'id': '/subscriptions/.../subnets/mysubnet'
}
}
}]
}
}]
}
}
}
operation = compute_client.virtual_machine_scale_sets.begin_create_or_update(
'myResourceGroup',
'myScaleSet',
scale_set_parameters
)
scale_set = operation.result()
print(f"Scale set {scale_set.name} created with capacity {scale_set.sku.capacity}")# Get current scale set
scale_set = compute_client.virtual_machine_scale_sets.get(
'myResourceGroup',
'myScaleSet'
)
# Update capacity
update_parameters = {
'sku': {
'name': scale_set.sku.name,
'capacity': 5 # Scale out to 5 instances
}
}
operation = compute_client.virtual_machine_scale_sets.begin_update(
'myResourceGroup',
'myScaleSet',
update_parameters
)
updated_scale_set = operation.result()
print(f"Scale set updated to capacity: {updated_scale_set.sku.capacity}")# List all VMs in the scale set
vms = compute_client.virtual_machine_scale_set_vms.list(
'myResourceGroup',
'myScaleSet'
)
for vm in vms:
print(f"VM Instance ID: {vm.instance_id}, Status: {vm.provisioning_state}")
# Get specific VM details
vm = compute_client.virtual_machine_scale_set_vms.get(
'myResourceGroup',
'myScaleSet',
'0' # Instance ID
)
print(f"VM {vm.instance_id} is in zone: {vm.zones}")
# Delete a specific VM instance
operation = compute_client.virtual_machine_scale_set_vms.begin_delete(
'myResourceGroup',
'myScaleSet',
'0' # Instance ID to delete
)
operation.result()
print("VM instance deleted")# Start OS upgrade
operation = compute_client.virtual_machine_scale_set_rolling_upgrades.begin_start_os_upgrade(
'myResourceGroup',
'myScaleSet'
)
# Monitor progress
status = compute_client.virtual_machine_scale_set_rolling_upgrades.get_latest(
'myResourceGroup',
'myScaleSet'
)
print(f"Upgrade Status: {status.running_status.code}")
if status.progress:
print(f"Successful: {status.progress.successful_instance_count}")
print(f"Failed: {status.progress.failed_instance_count}")
print(f"In Progress: {status.progress.in_progress_instance_count}")Management of extensions on Virtual Machine Scale Sets for software deployment, configuration, and monitoring across all scale set instances.
class VirtualMachineScaleSetExtensionsOperations:
def list(resource_group_name: str, vm_scale_set_name: str) -> Iterable[VirtualMachineScaleSetExtension]: ...
def get(resource_group_name: str, vm_scale_set_name: str, vmss_extension_name: str, *, expand: Optional[str] = None) -> VirtualMachineScaleSetExtension: ...
def begin_create_or_update(resource_group_name: str, vm_scale_set_name: str, vmss_extension_name: str, extension_parameters: VirtualMachineScaleSetExtension) -> LROPoller[VirtualMachineScaleSetExtension]: ...
def begin_update(resource_group_name: str, vm_scale_set_name: str, vmss_extension_name: str, extension_parameters: VirtualMachineScaleSetExtensionUpdate) -> LROPoller[VirtualMachineScaleSetExtension]: ...
def begin_delete(resource_group_name: str, vm_scale_set_name: str, vmss_extension_name: str) -> LROPoller[None]: ...
class VirtualMachineScaleSetVMExtensionsOperations:
def list(resource_group_name: str, vm_scale_set_name: str, instance_id: str, *, expand: Optional[str] = None) -> Iterable[VirtualMachineExtension]: ...
def get(resource_group_name: str, vm_scale_set_name: str, instance_id: str, vm_extension_name: str, *, expand: Optional[str] = None) -> VirtualMachineExtension: ...
def begin_create_or_update(resource_group_name: str, vm_scale_set_name: str, instance_id: str, vm_extension_name: str, extension_parameters: VirtualMachineExtension) -> LROPoller[VirtualMachineExtension]: ...
def begin_update(resource_group_name: str, vm_scale_set_name: str, instance_id: str, vm_extension_name: str, extension_parameters: VirtualMachineExtensionUpdate) -> LROPoller[VirtualMachineExtension]: ...
def begin_delete(resource_group_name: str, vm_scale_set_name: str, instance_id: str, vm_extension_name: str) -> LROPoller[None]: ...
class VirtualMachineScaleSetVMRunCommandsOperations:
def list(resource_group_name: str, vm_scale_set_name: str, instance_id: str, *, expand: Optional[str] = None) -> Iterable[VirtualMachineRunCommand]: ...
def get(resource_group_name: str, vm_scale_set_name: str, instance_id: str, run_command_name: str, *, expand: Optional[str] = None) -> VirtualMachineRunCommand: ...
def begin_create_or_update(resource_group_name: str, vm_scale_set_name: str, instance_id: str, run_command_name: str, run_command: VirtualMachineRunCommand) -> LROPoller[VirtualMachineRunCommand]: ...
def begin_update(resource_group_name: str, vm_scale_set_name: str, instance_id: str, run_command_name: str, run_command: VirtualMachineRunCommandUpdate) -> LROPoller[VirtualMachineRunCommand]: ...
def begin_delete(resource_group_name: str, vm_scale_set_name: str, instance_id: str, run_command_name: str) -> LROPoller[None]: ...Install with Tessl CLI
npx tessl i tessl/pypi-azure-mgmt-compute