vms/<vmname>.json. The document has five top-level objects, each mapping one-to-one to a typed Go struct in the vmparser package. The sections below document every field, its JSON key, its Go type, and its meaning.
Complete example
vm — VMInfo
Identity fields that uniquely describe the virtual machine.
string
required
Human-readable name of the VM. Must match the filename (
vms/<name>.json). Used as the primary key for all vmparser functions.string
required
Universally unique identifier for the VM in standard UUID v4 format (e.g.
550e8400-e29b-41d4-a716-446655440000). Passed to QEMU as the machine UUID.string
required
ISO 8601 timestamp recording when the VM was first created (e.g.
2024-06-01T12:00:00Z). Informational only — not used at runtime.cpu — CPU
CPU resource allocation for the virtual machine.
int
required
Number of virtual CPU cores to expose to the guest OS. Maps to QEMU’s
-smp argument.string
required
CPU model string passed to QEMU’s
-cpu flag. Common values include host (pass-through the host CPU) or specific model names such as qemu64.memory — Memory
Memory allocation for the virtual machine.
int
required
Amount of RAM in megabytes to allocate to the guest. Maps to QEMU’s
-m argument. For example, 2048 allocates 2 GiB.network — Network
Network interface configuration for the virtual machine.
string
required
Name of the host network interface or TAP device the VM is attached to (e.g.
eth0, virbr0).string
required
Network device model presented to the guest. Common values are
virtio (paravirtualised, highest performance) and e1000 (emulated Intel NIC for broad guest compatibility).string
required
MAC address assigned to the guest network interface in colon-separated hex notation (e.g.
52:54:00:ab:cd:ef). The 52:54:00 prefix is the QEMU vendor OUI by convention.disk — Disk
Primary block device configuration for the virtual machine.
string
required
Logical name for the disk, used for identification within Ozone (e.g.
web-01-disk). Not passed directly to QEMU.string
required
Absolute path to the disk image file on the host filesystem (e.g.
/var/lib/ozone/images/web-01.qcow2). Passed to QEMU as the drive file.float64
required
Logical size of the disk in gigabytes. Stored as a JSON number with decimal precision (e.g.
20.0). Used when provisioning the image; QEMU itself reads the actual size from the image file.string
required
Disk image format string passed to QEMU’s
-drive format= option. Typical values are qcow2 (copy-on-write, supports snapshots) and raw (flat binary, maximum compatibility).