Project Kronos - Ubuntu Developer Summit (UDS) Specification

Kronos specification on Ubuntu Wiki
=Summary=
Project Kronos is an initiative to port XCP's XenAPI toolstack to Debian and Ubuntu in order to deliver all packages that are needed install a full XCP host, via Debian and Ubuntu package managers. In a nutshell, all you will need to do get the latest version of Xen, the XenAPI toolstack and other components delivered in XCP is to execute "apt-get install xapi". This blueprint involves the necessary work to ensure Kronos is installable from the Ubuntu Universe archive for 12.04LTS.
=Release Note=
Ubuntu 12.04LTS now provides XCP's XenAPI toolstack for Xen virtualization management.
=Rationale=
XCP is an open server virtualization platform which provides a rich management API on top of the Xen hypervisor. Currently, XCP is only delivered as a black box-style appliance. Porting the XCP toolstack to Ubuntu will give Ubuntu users a high-level management API for their Xen virtualization hosts, and will give Ubuntu Server users the ability to run cloud orchestration stacks (e.g. CloudStack, Eucalyptus, OpenNebula, OpenStack, etc.) on top of Xen and Ubuntu.
=User stories=
* Deirdre the developer wants to modify XCP's xapi, the XenAPI management daemon. Instead of provisioning a test machine with XCP installed, and then installing the XCP SDK VM, she can now install xapi directly on her Ubuntu dev machine, compile the xapi sources from Github, and reduce her hack/build/test time.
* Octavian the OpenStack administrator wants to build a cloud. He wants to use Xen, but he doesn't want to have to install the XCP appliance. He can instead install Ubuntu Server, select the Virtualization Host task, with the option to install the XCP toolstack. Now his Ubuntu Server host is functionally equivalent to an XCP host, but with his favorite operating system running in dom0.
=Assumptions=
This specification assumes that:
* The necessary patches to the Xen hypervisor package have been upstreamed to Debian Sid
* The XCP toolstack packages have been accepted into Debian Sid 
If the XCP toolstack packages have NOT been accepted into Debian Sid, then we assume that it will still be possible to get them into Ubuntu Universe, assuming that they are completed and can be reviewed in time.
=Design=
This section will give a brief explanation of the Xen virtualization model, and then describe the design of Kronos. A Xen system differs from a KVM system in that the Xen hypervisor boots first, which then boots the first trusted guest, which is known as Domain 0, or more commonly just dom0. The dom0 guest is a Linux or NetBSD system, and can be thought of as the host OS of the system. After that, dom0 can start any number of non-privileged guest domains, in either paravirtualized mode or fully virtualized mode. XCP follows this model, and also provides a management toolstack inside dom0, which allows for easier management of a set of Xen hosts.
A "Kronos" system will consist of an Ubuntu Oneiric base system, with a number of components installed on top of that system which will turn it into a Xen dom0 with the XCP management toolstack installed. This will effectively turn an Ubuntu Server host into an Ubuntu XCP host, with the same capabilities as a traditional XCP appliance.
Below is a list of source packages that the XCP team is producing for Kronos. Most these will be built into multiple binary packages.
* Xen 4.1 (amd64): This is the Xen hypervisor package. As it stands, the Debian/Ubuntu packages do not install all of the Xen control libraries that a Kronos system will require. The XCP team is working with the Debian Xen maintainers to rectify this. The XCP team is not the Xen Debian maintainer, nor is it the upstream author.
* xapi: The XenAPI server. This is the daemon that provides an XCP-RPC based API for managing a pool of XCP hosts. It is responsible for controlling everything Xen-related on a host.
* xapi-libs: Libraries and assorted helper binaries for xapi.
* xapi-sm: XenAPI Storage Managers. This is a collection of python scripts which the xapi daemon uses to manage storage repositories. Currently supported storage backend types are ext3 and NFS, but we are working to port over other backend types as well.
* eliloader: A bootloader for EL-based distributions. This python program takes care of doing any modifications to guest OSs before they can be run in paravirtualized mode.
* blktap: This creates kernel block devices which implement virtual hard disk images entirely in user space. blktap on Debian and Ubuntu is built as a dkms kernel module, and is required for fast disk IO on XCP systems. 
=Implementation=
Currently we have four ITPs in the Debian WNPP queue:
* Bug#646727: xapi-libs
* Bug#646722: xapi-sm
* Bug#646720: xapi
* Bug#646717: eliloader
* Bug#635115: blktap 
Our main package build system can be found on Github here: https://github.com/jonludlam/xapi-autobuilder
Our local package repository is here: http://downloads.xen.org/XCP/debian/repo/debian
And very terse instructions for installing on Debian Sid are here: http://wiki.xen.org/xenwiki/XAPI_on_debian
The packages also work on Ubuntu Oneiric. While we have a "working" set of packages, there is still much packaging and porting work to be done for Kronos.
=Test/Demo Plan=
=Unresolved issues=
=BoF agenda and discussion=