- Added lock file exclusions for pnpm in .gitignore. - Removed obsolete package-lock.json from the api and portal directories. - Enhanced Cloudflare adapter with additional interfaces for zones and tunnels. - Improved Proxmox adapter error handling and logging for API requests. - Updated Proxmox VM parameters with validation rules in the API schema. - Enhanced documentation for Proxmox VM specifications and examples.
4.8 KiB
4.8 KiB
Validation Rules - Proxmox Provider
This document describes all validation rules enforced by the Proxmox provider.
VM Name Validation
Function: ValidateVMName()
Rules
- Length: 1-100 characters
- Valid Characters: Alphanumeric, hyphen (
-), underscore (_), dot (.), space - Restrictions:
- Cannot be empty
- Cannot start or end with spaces
- Spaces allowed in middle only
Examples
✅ Valid:
"web-server-01""vm.001""my vm""VM_001""test-vm-name"
❌ Invalid:
""(empty)" vm"(starts with space)"vm "(ends with space)"vm@001"(invalid character@)"vm#001"(invalid character#)
Memory Validation
Function: ValidateMemory()
Rules
- Required: Yes
- Format: Supports multiple formats (case-insensitive)
Gi,G- GibibytesMi,M- MebibytesKi,K- Kibibytes- Plain number - Assumed MB
- Range: 128 MB - 2 TB (2,097,152 MB)
Examples
✅ Valid:
"128Mi"(minimum)"4Gi"(4 GiB = 4096 MB)"8192Mi"(8192 MB)"4096"(assumed MB)"2Ti"(2 TiB, converted to MB)
❌ Invalid:
""(empty)"127Mi"(below minimum)"2097153Mi"(above maximum)"invalid"(invalid format)
Disk Validation
Function: ValidateDisk()
Rules
- Required: Yes
- Format: Supports multiple formats (case-insensitive)
Ti,T- TebibytesGi,G- GibibytesMi,M- Mebibytes- Plain number - Assumed GB
- Range: 1 GB - 100 TB (102,400 GB)
Examples
✅ Valid:
"1Gi"(minimum)"50Gi"(50 GB)"100Gi"(100 GB)"1Ti"(1 TiB = 1024 GB)"100"(assumed GB)
❌ Invalid:
""(empty)"0.5Gi"(below minimum)"102401Gi"(above maximum)"invalid"(invalid format)
CPU Validation
Function: ValidateCPU()
Rules
- Required: Yes
- Type: Integer
- Range: 1-1024 cores
- Default: 2
Examples
✅ Valid:
1(minimum)2,4,8,161024(maximum)
❌ Invalid:
0(below minimum)-1(negative)1025(above maximum)
Network Bridge Validation
Function: ValidateNetworkBridge()
Rules
- Required: Yes
- Format: Alphanumeric, hyphen, underscore
- Additional: Bridge must exist on target node (validated at runtime)
Examples
✅ Valid:
"vmbr0""vmbr1""custom-bridge""bridge_01""BRIDGE"
❌ Invalid:
""(empty)"vmbr 0"(contains space)"vmbr@0"(invalid character)"vmbr.0"(dot typically not used)
Image Specification Validation
Function: ValidateImageSpec()
Rules
- Required: Yes
- Formats: Three formats supported
1. Template VMID (Numeric)
- Range: 100-999999999
- Example:
"100","1000"
2. Volume ID (Volid Format)
- Format:
storage:path/to/image - Requirements:
- Must contain
: - Storage name before
:cannot be empty - Path after
:cannot be empty
- Must contain
- Example:
"local:iso/ubuntu-22.04.iso"
3. Image Name
- Length: 1-255 characters
- Format: Alphanumeric, hyphen, underscore, dot
- Example:
"ubuntu-22.04-cloud"
Examples
✅ Valid:
"100"(template VMID)"local:iso/ubuntu-22.04.iso"(volid)"ubuntu-22.04-cloud"(image name)
❌ Invalid:
""(empty)"99"(VMID too small)"1000000000"(VMID too large)":path"(missing storage)"storage:"(missing path)
VMID Validation
Function: ValidateVMID()
Rules
- Range: 100-999999999
- Type: Integer
Examples
✅ Valid:
100(minimum)1000,10000999999999(maximum)
❌ Invalid:
99(below minimum)0,-1(invalid)1000000000(above maximum)
Validation Timing
Validation occurs at multiple stages:
-
Controller Validation: Before VM creation
- All input validation functions are called
- Errors reported via Kubernetes Conditions
- VM creation blocked if validation fails
-
Runtime Validation: During VM creation
- Network bridge existence checked
- Storage availability verified
- Node health checked
-
API Validation: Proxmox API validation
- Proxmox may reject invalid configurations
- Errors reported and handled appropriately
Error Messages
Validation errors include:
- Clear error messages describing what's wrong
- Expected values when applicable
- Suggestions for fixing issues
Example:
Error: memory 64Mi (64 MB) is below minimum of 128 MB
Best Practices
- Validate Early: Check configurations before deployment
- Use Clear Names: Follow VM naming conventions
- Verify Resources: Ensure network bridges and storage exist
- Check Quotas: Verify resource limits before creation
- Monitor Errors: Watch for validation failures in status conditions