Skip to main content
Manage Azure virtual machines with full lifecycle support including creation, deletion, and monitoring through Azure Monitor integration.

List Virtual Machines

Retrieve all virtual machines across your Azure subscriptions.

Endpoint

GET /api/azure/vms

Response

{
  "value": [
    {
      "subscriptionId": "12345678-1234-1234-1234-123456789012",
      "name": "my-vm",
      "location": "eastus",
      "resourceGroup": "my-resource-group"
    }
  ]
}

Create Virtual Machine

Provision a new Azure VM with networking resources.

Endpoint

POST /api/azure/vms/create

Request Parameters

subscriptionId
string
required
Azure subscription ID where the VM will be created
rgName
string
required
Resource group name (will be created if it doesn’t exist)
location
string
required
Azure region (e.g., eastus, westeurope)
vmName
string
required
Name for the virtual machine

Request Example

{
  "subscriptionId": "12345678-1234-1234-1234-123456789012",
  "rgName": "my-resource-group",
  "location": "eastus",
  "vmName": "my-new-vm"
}

Response

{
  "message": "VM 'my-new-vm' utworzona pomyślnie",
  "vmId": "/subscriptions/.../resourceGroups/my-resource-group/providers/Microsoft.Compute/virtualMachines/my-new-vm"
}

Default Configuration

VMs are created with the following defaults:
  • VM Size: Standard_B1s
  • Image: Ubuntu Server 18.04-LTS
  • Publisher: Canonical
  • Admin Username: azureuser
  • Virtual Network: {vmName}-vnet with address space 10.0.0.0/16
  • Subnet: {vmName}-subnet with prefix 10.0.0.0/24
  • Public IP: Static Standard SKU
  • Network Interface: {vmName}-nic
  • OS Disk: Auto-created with the VM
  • Auto-delete: Enabled (disk deleted with VM)
The default configuration uses a hardcoded password for testing purposes. In production, use SSH keys or Azure Key Vault for credentials.

Delete Virtual Machine

Remove a VM and all associated resources.

Endpoint

POST /api/azure/vms/delete

Request Parameters

subscriptionId
string
required
Azure subscription ID
rgName
string
required
Resource group name
vmName
string
required
Virtual machine name to delete

Request Example

{
  "subscriptionId": "12345678-1234-1234-1234-123456789012",
  "rgName": "my-resource-group",
  "vmName": "my-vm"
}

Response

{
  "message": "VM 'my-vm' oraz powiązane zasoby zostały usunięte pomyślnie"
}

Resources Deleted

The delete operation automatically removes:
  • Virtual machine
  • OS disk
  • Network interface
  • Public IP address
The resource group and virtual network are not deleted to prevent accidental removal of shared resources.

Find VM by Name

Search for a specific virtual machine across all subscriptions.

Internal Function

find_vm_by_name(vm_id, credential)
This function searches across all subscriptions and returns:
{
  "subscriptionId": "12345678-1234-1234-1234-123456789012",
  "resourceGroup": "my-resource-group",
  "location": "eastus",
  "resourceId": "/subscriptions/.../virtualMachines/my-vm"
}

Error Handling

{
  "error": "Unauthorized"
}
Cause: Missing or expired access token in session.Solution: Reauthenticate through the Azure login flow.

Code Reference

The Azure VM management implementation is located in:
  • Source: backend/azure_modules/vm.py:61-161
  • Dependencies: Azure SDK for Python
    • azure-mgmt-compute
    • azure-mgmt-network
    • azure-mgmt-resource

Next Steps

VM Monitoring

Configure Azure Monitor metrics

Alert Policies

Set up alerts for Azure VMs

Build docs developers (and LLMs) love