=== Purpose ===
A web application which allows users to request and access custom virtual machines. Targeted use case: temporary VMs for one-time use, i.e. testing new configurations, operating systems, etc.
=== Details ===
* Uses libvirt, KVM, QEMU
* "Templates" are virtual machines created by hand with existing Linux virtual machine tools like virt-manager. There are two parts to templates: the installed system partition itself, and an XML description of the VM in the libvirt XML format.
* "Instances" are snapshots of the templates: a user can log in and select a template, and be assigned an instance of that template. Changes to the user's VM are not persistent.
=== v0.1 ===
* Python CLI app that boots a pre-built VM, already known to virt-manager, via libvirt
=== v0.2 ===
* Still in progress (2007-11-22)
* Python CLI app that takes a template, changes it's unique identifier and name, creates an LVM snapshot of the VMs disks, and dumps this new VM description into libvirt, and boots the newly created VM.
'''TODO:''' actually create LVM snapshots
=== v0.3 ===
* Web frontend to v0.2
=== v0.4 and beyond ===
* Frontend to help in creating/maintaining templates
=== Unresolved design issues ===
* Expiry of virtual machines (how long should they last? when should they be cleaned up?)
* Validating RAM/disk space usage (how to stop users from bringing server to a grinding halt?)