A flavor defines the CPU, RAM, disk, and base image for a virtual machine. Cloud Repositorio ships with two built-in flavors defined in theDocumentation Index
Fetch the complete documentation index at: https://mintlify.com/markitobonito/cloud_repositorio/llms.txt
Use this file to discover all available pages before exploring further.
Flavor class in models.py. When you add a VM to a slice, you select one of these flavors and the orchestrator uses its specs to size the QEMU process and provision the backing disk image.
Available flavors
| Name | Cores | RAM | Disk | Base image |
|---|---|---|---|---|
| cirros | 1 | 0.5 GB | 1 GB | /tmp/vm_images/cirros-0.6.2-x86_64-disk.img |
| ubuntu | 1 | 0.5 GB | 2.2 GB | /tmp/vm_images/focal-server-cloudimg-amd64.img |
cirros flavor is a minimal Linux image suited for network connectivity testing. The ubuntu flavor boots Ubuntu 20.04 (Focal) and is appropriate for running services.
The FLAVORS dict as defined in models.py:
QCOW2 thin provisioning
QCOWManager.create_backing_image() prepares a per-VM disk image on the target worker using QCOW2 backing files:
- Checks whether the base image already exists on the worker at
~/vm_images/. - If the base image is missing, SCP-copies it from the manager host to the worker:
- Creates a thin-provisioned QCOW2 image backed by the base image:
Base image location
Images must exist at the paths defined inFlavor.FLAVORS on the manager host — these are the SCP source paths. On each worker, images are cached at ~/vm_images/ (the QCOWManager default base_dir). The manager will attempt the SCP copy automatically on first deployment, but pre-staging the images on workers eliminates the transfer delay.
Adding a new flavor
Flavors are hardcoded in theFLAVORS dict in models.py. To add a flavor, edit that dict:
add_vm_menu() in cli.py to display the new flavor as a selectable option. No other changes are required — the orchestrator reads flavor specs directly from Flavor.FLAVORS at VM creation time.
VMLauncher converts flavor specs to QEMU arguments using flavor.get("cores", 1) for -smp and int(flavor.get("ram_gb", 0.5) * 1024) for -m (converting GB to MB). For example, a flavor with ram_gb: 0.5 produces -m 512 and cores: 1 produces -smp 1.