mirror of
https://github.com/community-scripts/ProxmoxVE.git
synced 2026-03-03 18:15:53 +00:00
core: validate container ID before pct create to prevent failures (#10729)
* feat: validate container ID before pct create to prevent failures Add validation to ensure container IDs are not already in use before attempting to create containers. This prevents pct create failures when an ID is already assigned to a VM/LXC or used in LVM volumes. Changes: - Add validate_container_id() and get_valid_container_id() functions to build.func - Validate ID in base_settings() for default installation method - Validate ID in advanced_settings() dialog with user prompt for next available ID - Add validation to turnkey.sh with interactive dialog - Add validation to all-templates.sh with automatic ID correction Checks performed: - Container config file existence (/etc/pve/lxc/*.conf) - VM config file existence (/etc/pve/qemu-server/*.conf) - LVM logical volume usage Fixes issue where container creation would fail if the suggested/chosen ID was already in use. * feat: validate container ID before pct create to prevent failures Add validation to ensure container IDs are not already in use before attempting to create containers. This prevents pct create failures when an ID is already assigned to a VM/LXC or used in LVM volumes. Changes: - Add validate_container_id() and get_valid_container_id() functions to build.func - Validate ID in base_settings() for default installation method - Validate ID in advanced_settings() dialog with user prompt for next available ID - Add validation to turnkey.sh with interactive dialog - Add validation to all-templates.sh with automatic ID correction Checks performed: - Container config file existence (/etc/pve/lxc/*.conf) - VM config file existence (/etc/pve/qemu-server/*.conf) - LVM logical volume usage Fixes issue where container creation would fail if the suggested/chosen ID was already in use. * Update turnkey.sh * Update build.func
This commit is contained in:
committed by
GitHub
parent
97c6c4558a
commit
1ccf90cb27
@@ -42,6 +42,29 @@ function msg() {
|
||||
local TEXT="$1"
|
||||
echo -e "$TEXT"
|
||||
}
|
||||
function validate_container_id() {
|
||||
local ctid="$1"
|
||||
# Check if ID is numeric
|
||||
if ! [[ "$ctid" =~ ^[0-9]+$ ]]; then
|
||||
return 1
|
||||
fi
|
||||
# Check if config file exists for VM or LXC
|
||||
if [[ -f "/etc/pve/qemu-server/${ctid}.conf" ]] || [[ -f "/etc/pve/lxc/${ctid}.conf" ]]; then
|
||||
return 1
|
||||
fi
|
||||
# Check if ID is used in LVM logical volumes
|
||||
if lvs --noheadings -o lv_name 2>/dev/null | grep -qE "(^|[-_])${ctid}($|[-_])"; then
|
||||
return 1
|
||||
fi
|
||||
return 0
|
||||
}
|
||||
function get_valid_container_id() {
|
||||
local suggested_id="${1:-$(pvesh get /cluster/nextid)}"
|
||||
while ! validate_container_id "$suggested_id"; do
|
||||
suggested_id=$((suggested_id + 1))
|
||||
done
|
||||
echo "$suggested_id"
|
||||
}
|
||||
function cleanup_ctid() {
|
||||
if pct status $CTID &>/dev/null; then
|
||||
if [ "$(pct status $CTID | awk '{print $2}')" == "running" ]; then
|
||||
@@ -76,7 +99,15 @@ TEMPLATE=$(whiptail --backtitle "Proxmox VE Helper Scripts" --title "All Templat
|
||||
# Setup script environment
|
||||
NAME=$(echo "$TEMPLATE" | grep -oE '^[^-]+-[^-]+')
|
||||
PASS="$(openssl rand -base64 8)"
|
||||
|
||||
# Get valid Container ID
|
||||
CTID=$(pvesh get /cluster/nextid)
|
||||
if ! validate_container_id "$CTID"; then
|
||||
warn "Container ID $CTID is already in use."
|
||||
CTID=$(get_valid_container_id "$CTID")
|
||||
info "Using next available ID: $CTID"
|
||||
fi
|
||||
|
||||
PCT_OPTIONS="
|
||||
-features keyctl=1,nesting=1
|
||||
-hostname $NAME
|
||||
|
||||
Reference in New Issue
Block a user