feat: add LXC container support to Proxmox extension

- Add is_lxc boolean column to ext_proxmox_nodes (default false, existing nodes unaffected)
- Add LXC checkbox to admin node creation form (disabled on edit)
- Dynamic API path selection via Node::vmType() (returns 'lxc' or 'qemu')
- LXC deployment: syncLxcSettings() for cores, memory, swap, hostname, rootfs, net config
- LXC network uses name=eth0 format with applyLxcPoolSettings() for VLAN/firewall/MTU
- All lifecycle operations LXC-aware: install, suspend, unsuspend, terminate, upgrade, reinstall
- VNC/xterm console uses correct type (lxc vs kvm)
- All 20+ Livewire components use vmType() for Proxmox API paths
- LXC user interface shows basic-only view (no advanced toggle, no KVM-specific tabs)
- Basic tabs for LXC: Overview, Network Configuration, Backups, Console
This commit is contained in:
2026-03-02 07:11:25 -05:00
parent a98bbd6d82
commit 5f2e591c6e
21 changed files with 330 additions and 140 deletions

View File

@@ -113,6 +113,11 @@ class NodeResource extends Resource
->default(true)
->helperText('Enable or disable VNC access for this node. (this requires the Proxmox instance to be on the same domain as the Paymenter installation)')
->required(),
Forms\Components\Checkbox::make('is_lxc')
->label('LXC Container Node')
->default(false)
->helperText('Check to deploy LXC containers instead of KVM virtual machines on this node. Existing KVM nodes are unaffected.')
->disabled(fn (string $operation): bool => $operation === 'edit'),
]);
}
@@ -141,6 +146,15 @@ class NodeResource extends Resource
->sortable()
->searchable()
->toggleable(),
Tables\Columns\IconColumn::make('is_lxc')
->label('Type')
->boolean()
->trueIcon('ri-checkbox-circle-fill')
->falseIcon('ri-close-circle-fill')
->trueColor('info')
->falseColor('gray')
->formatStateUsing(fn (bool $state): string => $state ? 'LXC' : 'KVM')
->toggleable(),
])
->filters([
//