- Added template typing so approved templates can represent either QEMU VMs or LXC containers.

- Added LXC template discovery from Proxmox storage `vztmpl` content in the admin template manager.
- Added live LXC container provisioning through the Proxmox API with configurable rootfs storage and optional DHCP bridge.
- Routed start, stop, delete, expiration, status, and IP refresh operations through typed Proxmox VM/LXC API paths.
- Added Proxmox tags to newly created VMs and containers, including a sanitized per-user tag for easier PVE administration.
- Updated the admin and portal UI to show VM versus LXC template/deployment types and generic Proxmox resource IDs.
- Added schema upgrades for template provisioning type, LXC template references, and deployment resource type.
- Documented LXC setup, storage permissions, and the new Proxmox settings.
This commit is contained in:
Sven Steinert
2026-04-24 17:11:39 +02:00
parent 2c1949bf1e
commit 118809bfae
13 changed files with 672 additions and 126 deletions

View File

@@ -7,26 +7,26 @@ if (!defined('ABSPATH')) {
interface SPP_Proxmox_Client
{
/**
* @return array<int, array{vmId:int,name:string,cpuCores:int,memoryMb:int,diskGb:int,status:string}>
* @return array<int, array<string, mixed>>
*/
public function list_templates(): array;
/**
* @param array<string, int|string> $input
* @param array<string, mixed> $input
* @return array{vm_id:int}
*/
public function clone_vm(array $input): array;
public function provision_instance(array $input): array;
public function start_vm(int $vm_id): void;
public function start_instance(string $type, int $vm_id): void;
public function stop_vm(int $vm_id): void;
public function stop_instance(string $type, int $vm_id): void;
public function delete_vm(int $vm_id): void;
public function delete_instance(string $type, int $vm_id): void;
public function get_status(int $vm_id): string;
public function get_status(string $type, int $vm_id): string;
/**
* @return array<int, string>
*/
public function get_ip_addresses(int $vm_id): array;
public function get_ip_addresses(string $type, int $vm_id): array;
}