Google Summer of Code 2014

Here are our project ideas for Google Summer of Code 2014

It might be interesting to have a look at last year's ideas as well.

Project proposals

Improvements in the monitoring daemon

(language: Haskell) design

  • Implement additional data collectors, for example:

  • Optimize the currently existing collectors

  • Implement cache system to decouple between collection and retrieval

  • Allow different stateful collectors to be queried with different time intervals

  • Implement plugin interface

  • Use dynamic memory usage information in hbal/hail

Improvements to the instance bin-packing tool (hsqueeze)

(language: Haskell) design

  • Add -X option to hsqueeze (actually executing the derived packing)
  • Make hsqueeze use the dynamic CPU data that is now collected thanks to last year's summer of code project

Configuration daemon

(language: Haskell) Issue 564: Allow generic queries in ConfD

Ganeti confd supports a restrictive set of queries: we'd like to expand its language to be able to query any configuration value from the Ganeti config. Example interesting values could be names and UUIDs for nics and disks, network information, availability of IP addresses in pools.

Improve hypervisor support

(language: Python)

  • Support for kvm+cgroups for strict resource allocation
  • Support for kvm+namespaces for added security
  • Improve linux containers support
  • Support for hugepages for kvm

Location awareness

(language: Haskell)

  • Improve htools (hail, hbal, hsqueeze etc) to provide location awareness, as discussed in GanetiCon.
  • This would involve modeling better the relationships between different nodes and nodegroups (are they close or far latency-wise? is there a bottleneck?) and instances (which ones are redundancy-ones in a pool? which ones should live close to each other?) to provide better “service-level” allocation instead of simple per-instance one.
  • This feature would allow to have primary and secondary nodes on different nodegroups, but also to specify which instances should and should not share point of failures (nodegroup, node) as much as possible.

Improve containers support

(language: Python)

  • Work with and LXC to provide strong Ganeti-based Linux containers
  • Solve container problems like startup, storage, networking, which are different from how traditional VMs work

KVM resource constrainment

(language: Python)


  • cgroups integration for more reliable resource constrainment
  • Linux containers integration for better control of what the qemu executable can access


  • better segregation in case of virtualization/qemu breakup
  • better resource accounting

Conversion between disk templates

(language: Python)

Currently, Ganeti supports only disk conversions between LVM and DRBD. Introduce a generic mechanism to convert between other templates too. This mechanism will need to copy the disks' data for conversion to be possible.

Authnz support for RAPI

(language: Python)

Currently the RAPI supports only coarse-grained permissions (read/write). It is easy to implement more fine-grained access control by implementing a pluggable authentication and authorization API. The authentication API will allow authenticating users against different backends, while the authorization API will authorize individual OpCodes before they are submitted to the job queue.