provisioning/schemas/vm/contracts.ncl
Jesús Pérez 44648e3206
chore: complete nickel migration and consolidate legacy configs
- Remove KCL ecosystem (~220 files deleted)
- Migrate all infrastructure to Nickel schema system
- Consolidate documentation: legacy docs → provisioning/docs/src/
- Add CI/CD workflows (.github/) and Rust build config (.cargo/)
- Update core system for Nickel schema parsing
- Update README.md and CHANGES.md for v5.0.0 release
- Fix pre-commit hooks: end-of-file, trailing-whitespace
- Breaking changes: KCL workspaces require migration
- Migration bridge available in docs/src/development/
2026-01-08 09:55:37 +00:00

108 lines
2.9 KiB
Plaintext

# VM Configuration Contracts
#
# Type definitions for VM lifecycle management
# Migrated from provisioning/kcl/vm.k
{
VmPortMapping = {
host_port | Number,
guest_port | Number,
protocol | [| 'tcp, 'udp |] | optional | default = 'tcp,
bind_addr | String | optional,
},
VmNetwork = {
name | String | default = "default",
type | [| 'bridge, 'nat, 'host |] | default = 'nat,
subnet | String | optional,
},
VmMount = {
host_path | String,
guest_path | String,
readonly | Bool | default = false,
mode | String | optional,
},
VmVolume = {
name | String,
size_gb | Number,
mount_path | String | optional,
format | [| 'qcow2, 'raw |] | default = 'qcow2,
},
VmCloudInit = {
enabled | Bool | default = true,
user_data | String | optional,
meta_data | String | optional,
vendor_data | String | optional,
},
VmConfig = {
name | String,
description | String | optional,
base_image | String | default = "ubuntu-22.04",
cpu | Number | default = 2,
memory_mb | Number | default = 4096,
disk_gb | Number | default = 20,
backend | [| 'libvirt, 'qemu, 'docker_vm |] | default = 'libvirt,
permanent | Bool | default = false,
temporary | Bool | default = false,
auto_cleanup | Bool | default = false,
auto_cleanup_hours | Number | optional,
taskserv | String | optional,
taskservs | Array String | default = [],
network_mode | [| 'bridge, 'nat, 'host |] | default = 'bridge,
networks | Array VmNetwork | optional,
ports | Array VmPortMapping | optional,
mounts | Array VmMount | optional,
volumes | Array VmVolume | optional,
cloud_init | VmCloudInit | optional,
nested_virt | Bool | optional | default = false,
graphics_enable | Bool | optional | default = false,
serial_console | Bool | optional | default = true,
},
VmImage = {
name | String,
format | [| 'qcow2, 'raw, 'vmdk |] | default = 'qcow2,
path | String,
size_gb | Number,
base_os | [| 'ubuntu, 'debian, 'rocky, 'arch |] | default = 'ubuntu,
os_version | String | default = "22.04",
},
VmState = {
vm_name | String,
state | [| 'stopped, 'starting, 'running, 'stopping, 'error |] | default = 'stopped,
permanent | Bool,
created_at | String,
started_at | String | optional,
last_action | String | optional,
auto_cleanup_at | String | optional,
ip_address | String | optional,
mac_address | String | optional,
hypervisor | String | optional,
backend_id | String | optional,
},
VmRegistry = {
vms | Array VmState,
permanent_count | Number,
temporary_count | Number,
updated_at | String,
},
VmCapacity = {
host_name | String,
total_cpu_cores | Number,
used_cpu_cores | Number,
total_memory_mb | Number,
used_memory_mb | Number,
total_disk_gb | Number,
used_disk_gb | Number,
max_vms | Number,
running_vms | Number,
},
}