delete_proxmox_vm_preview
Preview the impact of deleting a Proxmox VM or container with a dry-run report, without actually removing it.
Instructions
Preview what delete_proxmox_vm would affect without executing. Returns a structured dry-run report. No VM is deleted.
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| node | Yes | Node name | |
| vmid | Yes | VM/Container ID to delete | |
| vm_type | No | Type: 'qemu' for VM or 'lxc' for container | qemu |
| purge | No | Remove from all related configurations | |
| host | No | Proxmox host (optional) |
Implementation Reference
- Handler for delete_proxmox_vm_preview. Delegates to handle_delete_proxmox_vm with dry_run=True injected, so no VM is actually deleted.
async def handle_delete_proxmox_vm_preview(arguments: dict[str, Any]) -> dict[str, Any]: """Handle delete_proxmox_vm_preview tool. Delegates to handle_delete_proxmox_vm with dry_run=True injected. No VM is deleted. """ return await handle_delete_proxmox_vm({**arguments, "dry_run": True}) - The handle_delete_proxmox_vm function that the preview delegates to. When dry_run=True (line 195), it fetches VM status and returns a build_dry_run_response without executing deletion.
async def handle_delete_proxmox_vm(arguments: dict[str, Any]) -> dict[str, Any]: """Handle delete_proxmox_vm tool.""" from ..server import get_resource_manager if host := arguments.get("host"): validate_hostname(host) if arguments.get("dry_run", False): from ..dry_run import build_dry_run_response vm_status = await get_proxmox_vm_status( node=arguments["node"], vmid=arguments["vmid"], host=arguments.get("host"), vm_type=arguments.get("vm_type", "qemu"), session=get_resource_manager().proxmox_session, ) would_affect: list[dict[str, Any]] = [ { "resource_type": "proxmox_vm", "node": arguments["node"], "vmid": arguments["vmid"], "vm_type": arguments.get("vm_type", "qemu"), } ] result = build_dry_run_response( tool_name="delete_proxmox_vm", would_affect=would_affect, risk_level="high", reversible=False, preview_details=vm_status, ) return result result = await delete_proxmox_vm( node=arguments["node"], vmid=arguments["vmid"], host=arguments.get("host"), vm_type=arguments.get("vm_type", "qemu"), purge=arguments.get("purge", False), session=get_resource_manager().proxmox_session, ) return {"content": [{"type": "text", "text": json.dumps(result, indent=2)}]} - Input schema for delete_proxmox_vm_preview. Accepts node, vmid (required), plus optional vm_type, purge, and host.
PROXMOX_TOOLS["delete_proxmox_vm_preview"] = { "description": ( "Preview what delete_proxmox_vm would affect without executing. " "Returns a structured dry-run report. No VM is deleted." ), "inputSchema": { "type": "object", "properties": { "node": { "type": "string", "description": "Node name", }, "vmid": { "type": "integer", "description": "VM/Container ID to delete", }, "vm_type": { "type": "string", "description": "Type: 'qemu' for VM or 'lxc' for container", "enum": ["qemu", "lxc"], "default": "qemu", }, "purge": { "type": "boolean", "description": "Remove from all related configurations", "default": False, }, "host": { "type": "string", "description": "Proxmox host (optional)", }, }, "required": ["node", "vmid"], }, } - src/homelab_mcp/tool_handlers/__init__.py:43-43 (registration)Import of handle_delete_proxmox_vm_preview from proxmox_handlers module.
handle_delete_proxmox_vm_preview, - src/homelab_mcp/tool_handlers/__init__.py:149-149 (registration)Registration of 'delete_proxmox_vm_preview' in the TOOL_HANDLERS mapping, associating it with handle_delete_proxmox_vm_preview.
"delete_proxmox_vm_preview": handle_delete_proxmox_vm_preview,