Completed Milestones
Milestone 1 (First week Nov)
Goal: Bootstrap initial development process
Status: Complete
Docs:
A quick-and-dirty developer's setup guide to the following:
- Prepare image for pxe
- Install iSCSI target locally and create LUNs (no, not an iSCSI manual, just the necessary quick tips)
- Set up cobbler or manually do DHCP config
- Install minimal host
- Install guest on minimal host
Host:
- PXE boot host image; Run from RAM; No permanent state
- Have a first crack at specifying and building a slimmed-down host image
- Automate the process so that as the component bits change anyone can go get a current version and install it
- Provide a PXE kernel/initrd and a ks that will download the rest of the image over tftp and install it to a RAM disk
- Optionally: provide a canned Cobbler distro/profile for auto-configuring the dhcp/tftp for the image.
- NICs bridged to LAN & use DHCP config only
- Create temporary init scripts to put host nic into bridging mode for guests. Later we'll extend libvirt networking to handle this better.
- iSCSI storage; LUNs pre-allocated on iSCSI server; no local
partitioning
- iSCSI server address is predefined in DHCP option records
- libvirt able to query local iSCSI initiator to list LUNs and mapped paths (this is optional but helpful for milestone 1)
- Be sure iSCSI target/initiator actually work for our purposes
- All per-host config data from DHCP option records or hardcoded in image
- Fetch pre-generated kerberos credentials from HTTP server.
- Sanity check virtinst to see that it will successfully install a remote full-virt guest via PXE (i.e. without pulling down a kernel/initrd or trying to create a disk). Ideally, make it use libvirt LUN enumeration to check disk path exists.
Management:
- Guest install & admin with virt-manager
- Web interaction design
Milestone 2 (Last week November 2007)
Goal: Network service integration, functional management UI
Status: Complete
Host:
- Manual NIC address configuration
Use PXE/DHCP to configure the primary NIC on the host. The remainder (assuming there's more than one) will be auto-configured to some sensible default, but not until milestone 3. - Manual iSCSI configuration; iSCSI authentication
iSCSI config can passed in in DHCP option records at the moment. We may do this with LDAP/FreeIPA later. - FreeIPA integration for credential deployment
For now we are manually distributing keytabs and kerberos conf to hosts as they install.
Management:
- Host <-> web service association
When a host comes up it will automatically advertise its presence via Avahi. On the manager side, we need a worker to respond to that, identify the host (via FreeIPA), and present it in the manager UI. - PXE boot guest OS installation
Be able to tell a host to start a guest with a particular MAC address that will PXE off of the management app, assuming we have control of the PXE server. - Web service authentication against FreeIPA
We will need the manager app to check that the user has a current Kerberos principle and that they exist as a manager app user, and if not redirect to some appropriate place. - Allocate resources to users
We need a way to model users, physical resources (cpu/disk/memory/bandwidth), and quotas. We also need some notion of how to enforce a quota. We also need a notion of the maximum resources a guest can use on a particular machine, regardless of the user's quota size: e.g. you can't assign more memory than is available on a physical machine to a guest, even if the user has more memory than that in their quota. - Live guest performance monitoring
Collectd will let us do some of this but not until we have some improvements in KVM that are coming for Milestone 3. - Live host performance monitoring
We will have collectd in the install image for this milestone and we already have a libvirt plug-in for it, so we'll be able to monitor host stats from a console on the manager at least. No pretty graphs for this milestone though.
Milestone 3 (December 21, 2007)
Goal: Packaging (developers need to be able to download and install host image easily)
Status: Complete
NB: This milestone is still for developers only.
Host:
- Prebuilt host images for pxe, flash drive, and CDROM available for download
- PXE initrd autodetects the network card so that it can download the full host image
Manager:
- Update the schema to reflect the changes from our planning meetings of December 10-11. We are abandoning the admin/user divide from the first prototype and instead establishing a way to group machines and delegate control over groups of machines to certain users.
- Update the existing UI views to work with the new schema
- Implement the first cut of the new permissions system. No integration with LDAP yet and no groups, but check user permissions before allowing views/actions.
- Fix the taskomatic bit so that it runs as a service user with its own kerberos credential, so that the user doesn't have to kinit as root to get the wui to run.
Milestone 4 (Mid February 2008)
Goal: End to end demo of all basic features (and unveiling). Demo includes:
- Create a resource pool with an ovirt host and a storage provider
- Add 2 users to the pool from the available users in FreeIPA
- Give each user quota on the pool
- Log in as each user and create a guest, assigning it storage from the pool
- Start the guests and demonstrate that they install successfully, choosing the install image from a list of available pxe images in the system.
- Access the guests using virt-viewer
- Stop, start, suspend, resume, save, restore the guests
- Demonstrate that users can't exceed quota
- Demonstrate that one user can't access another's guests
- Demonstrate that state updates both on the guest view and on the host view
Status: Complete
Docs:
- Update install doc
- Create tutorial doc for user manual
Host:
- Add hooks to collectd to feed us info on guest state (for updating status)
Manager:
- Change the quota concept to explicitly limit the number of VMs a user can run. Also, take into account that some quotas (LUNs) are enforced at all times, but some (RAM, active VMs, CPUs) are only enforced for running VMs
- Make permission system work and integrate with LDAP/FreeIPA
- Make necessary alterations to former admin pages so they work as resource pool pages.
- Add user management for resource pools
- Update quota UI to reflect new quota attributes: CPUs, RAM, storage, NICs, VMs, redundancy
- Do NSAPI plug-in for virt-viewer on linux
- Add auto-refresh for VM and host status widgets so that state information is current
- Make WUI install seamless (rpm, "firstboot" script run from init script)
- Add UI to resource pool for manual VM placement and resource limitation. In other words, a resource pool owner should be able to control placement and migration of any VMs running in their pool, and also be able to dynamically limit VMs and groups of VMs running in a pool (right now we can only limit bandwidth and storage, CPU limiting coming). This is a precursor to automating this kind of management down the line.
- Have back-end structure for creating logical groupings of hardware resources across resource pools
Milestone 5 (end of February 2008)
Goal: Finish integrating major UI and workflow changes, make public download image available, storage API integration
Audience: Developers only
Host:
- Partitioning of iSCSI LUNs on host; LVM management of iSCSI LUNs for guest image.
- Build host image with libvirt w/storage API patches
- Use storage API to log in to iSCSI server, advertise available LUNs to guests
Manager:
- Storage API integration, as API becomes available. This means UI for enumerating LUNs on an iSCSI target, UI for enumerating LVs in a volume group, UI for enumerating partitions on a disk; and finally UI for choosing one of these for a guest.
- Set hard CPU resource limits
- Delegation of host administration to owners
Users should be able to manage resources within their assigned quota -- e.g. if you have 2 physical NICs available decide if you want them bonded or if you want each dedicated to a different guest, decide how you want your storage dealt with, etc. - Long term performance monitoring
With collectd in place on installed hosts, be able to store snapshots of host and guest performance over time and display them graphically. - Expand manager UI
Add UI for storage management. Continue to polish existing user and admin UI. Add graphical resource usage displays. - UI for creating, editing, and deleting logical groupings of resources across resource pools
- Testing on various host configurations
