mirror of
https://github.com/games-on-whales/proxmox-community-script.git
synced 2026-10-15 13:01:47 +00:00
[PR #8] [MERGED] installer: ask for the Wolf CT id, and check it across the whole cluster #7
Labels
No labels
pull-request
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
games-on-whales/proxmox-community-script#7
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
📋 Pull Request Information
Original PR: https://github.com/games-on-whales/proxmox-community-script/pull/8
Author: @JBailes
Created: 8/10/2026
Status: ✅ Merged
Merged: 8/10/2026
Merged by: @JBailes
Base:
main← Head:feat/installer-pin-wolf-ctid📝 Commits (1)
4943453installer: ask for the Wolf CT id, and check it across the whole cluster📊 Changes
6 files changed (+170 additions, -25 deletions)
View changed files
📝
.env.example(+7 -0)📝
README.md(+21 -2)📝
docker-compose.yml(+5 -0)📝
install.sh(+56 -4)📝
tests/gather-dryrun.sh(+67 -19)📝
tests/state-volume-dryrun.sh(+14 -0)📄 Description
pct createrefuses a CT id that any node in the cluster owns, but the daemon's own allocator (LXC2Dockerinternal/lxc/manager.go,usedVMIDs) only globs this node's/etc/pve/lxcand/etc/pve/qemu-server. On a cluster it therefore hands out ids a peer holds, and the create fails withwhich reaches the user as a Wolf container that restarts forever, climbing one id per attempt, with nothing on screen naming the cause.
The installer now asks for the id up front. The default is the lowest id no guest owns and a taken id is refused — both checked against
/etc/pve/nodes/*/lxcand/etc/pve/nodes/*/qemu-server, i.e. every node, not just this one. The choice is written to.envasWOLF_CTIDand passed to the daemon as thedld.vmidlabel on the wolf service. The state volume's 9000+ id search had the same local-only blind spot and now reuses the same check.Depends on a matching LXC2Docker change. The daemon has no
dld.vmidlabel today and always takes the lowest free id it can see, so until that lands the label is inert and the prompt only documents the id Wolf will get. The companion PR adds the label and fixesusedVMIDs()to see every node — which is also what stops session CTs colliding.Tested with the repo's dry-run harnesses against a faked two-node cluster (this node owns CT 100, the peer owns CT 101 and VM 102): gather 38, state-volume 21, nvidia-cdi 19, uninstall 26 — all passing.
🔄 This issue represents a GitHub Pull Request. It cannot be merged through Gitea due to API limitations.