Project Ideas for Students

GSoC10 Logo

OpenNebula has been accepted as a Google Summer of Code 2010 mentoring organization. Google Summer of Code is a program that offers student developers stipends to write code for various open source projects. To get more information on the program please take a look to the GSoC FAQ. This page lists projects we would be willing to mentor as part of Summer of Code.

Once you are ready to submit an application, remember that you must do so before April 9th through the GSoC webapp

OpenNebula in a Nutshell

OpenNebula is an open-source toolkit to easily build Infrastructure-as-a-Service clouds. In a nutshell, it is a piece of software that manages the deployment of virtual machines (Xen, KVM, VMWare are currently supported) on a pool of physical resources. OpenNebula has also been designed to be integrated with existing networking and storage solutions, meaning OpenNebula will also handle VM image transfers, VM setup, network setup, etc.

You can read more about OpenNebula on our main website

Required skills

To work on any of these projects, you will need to be familiar with the languages and technologies used to write OpenNebula. Unfortunately, we cannot mentor students who are just getting started in computer programming, or would have to learn a completely new language for the project (unless you feel you can learn this language on your own).

The skill you should have are:

  • Competent in C++ or Ruby. These are the two languages used in OpenNebula, and most components use only C++ or Ruby exclusively, so you only need to know one of them.
  • Working knowledge of Git.
  • Being familiar with Xen, KVM or VMWare is not required, but it certainly helps.

Each project idea may have more specific requirements beyond those listed above.

Project Ideas

!!! IMPORTANT NOTE !!!

Jaime Melis and Constantino Vazquez won't be available during 27th March through the 4th April, if you have any urgent doubts regarding one their mentored projects during this period, please contact one of the following mentors:

OpenNebula Management Console

  • Description: OpenNebula provides a powerful API and CLI, in this project we will develop a web-based console for OpenNebula. The user will login in a configurable dashboard with specific widgets/tabs for monitoring the physical infrastructure, boot a new virtual machine, or control running VMs.
  • Links: To get an idea you can check for example the AWS console
  • Requirements: Web programming (as part of the project we will decide upon the specific platform, e.g. Ruby on rails...). In this project you'll be interfacing with OpenNebula, and you will have the opportunity to learn the basics of virtualization and cloud computing. Difficulty: medium-low
  • Mentor: Jaime Melis:

Improve OpenNebula EC2 interface

  • Description: OpenNebula can be used to build a public cloud accessible through EC2 or OCCI interfaces. However, OpenNebula currently implements only a subset of the Amazon EC2 interface. The goal of this project is to refine the existing methods and to implement additional EC2 calls.
  • Links: OpenNebula EC2 configuration guide and user guide
  • Requirements: Familiarity with EC2 interfaces preferred. Difficulty: medium
  • Mentor: Jaime Melis:

OCCI Web Interface

  • Description: OCCI is the OGF Interface proposed for Cloud Computing, lightweight yet powerful. A possible problem can be user adoption, since the REST interface with XML representation is not appealing for the general public. This project aims to build a web interface for OCCI to ease the lifecycle management of Virtual Machines using the public cloud interface.
  • Links: To get an idea you can check for example the AWS console
  • Requirements: Web programming (as part of the project we will decide upon the specific platform, e.g. Ruby on rails...). In this project you'll be interfacing with OpenNebula, and you will have the opportunity to learn the basics of virtualization and cloud computing. Difficulty: medium-low
  • Mentor: Constantino Vázquez Blanco:

Improve integration between Haizea and OpenNebula

  • Description: The Haizea Lease Manager can be used as a drop-in replacement for OpenNebula's scheduling daemon. Although this allows OpenNebula to support more complex scheduling scenarios, such as advance reservations, some Haizea features have not been integrated with OpenNebula yet, and are only available when running Haizea in simulation. The goal of this project would be to improve the integration between Haizea and OpenNebula. Although the most notable features not yet integrated are VM image deployment scheduling and cold migration, there are several other features the student could work on.
  • Requirements: Some knowledge of Python is essential. Some familiarity with Haizea is preferred, but not strictly necessary.
  • Mentor: Borja Sotomayor:

Implement new scheduling algorithms in Haizea

  • Description: The Haizea Lease Manager can be used as a drop-in replacement for OpenNebula's scheduling daemon. Haizea's scheduling code currently supports scheduling VMs for best-effort leases, advance reservation leases, deadline leases, and immediate leases (see the Haizea website for more details on what these leases are). However, there are other types of interesting leases that could be supported in Haizea such as lease futures (where a user wants guaranteed resources at some point in a known time interval, but doesn't know exactly when), etc. The scheduling problem becomes more interesting when even more policy-driven constraints are added (Haizea includes a policy engine). The project goals are open-ended, and it is up to the student to propose specific scheduling algorithms or new types of leases he/she wants to implement and experiment with. This project can be an excellent learning experience for students (specially at a graduate or advanced undergraduate level) who are interested in resource management, VM scheduling, etc.
  • Requirements: Some knowledge of Python is essential. Some familiarity with Haizea is preferred, but not strictly necessary. Just to be clear: no knowledge of scheduling algorithms is strictly required; this is a project that will allow you to learn about them.
  • Mentor: Borja Sotomayor:

Appliance Catalog for OpenNebula

  • Description: Current VM descriptions in OpenNebula are based in low-level image/device mapping pairs. The ability of choosing a VM based on a set of characteristics will ease the deployment of pre-configured applications. For example, a sysadmin could request a "Linux machine with LAMP". In this project we will developing this tag based VM catalog.
  • Links: OpenNebula VM description file
  • Requirements: Ruby programming and DataBase. In this project you'll be interfacing with OpenNebula, and you will have the opportunity to learn the basics of virtualization and cloud computing. Difficulty: medium
  • Mentor: Javier Fontan:

Haizea Management Console

  • Description: [Note that this project can be done in collaboration with the "!OpenNebula Management Console" proposed above]. The Haizea Lease Manager can be used as a drop-in replacement for OpenNebula's scheduling daemon. However, when querying OpenNebula through its API and CLI, some information is not available to users (particularly information related to leases). The goal of this project is to develop a web-based interface to Haizea, the centerpiece of which should be an AJAX calendar-like interface showing all the leases currently scheduled by Haizea. This interface should also allow users to create new leases, cancel leases, etc.
  • Requirements: A good knowledge of web programming is essential (the platform to use is left up to the student). Some familiarity with Haizea is preferred, but not strictly necessary.
  • Mentor: Borja Sotomayor:

Improve fault-tolerance in Haizea+OpenNebula

  • Description: When using OpenNebula and Haizea together, Haizea does not react to unexpected changes in the physical resources or the VMs. OpenNebula's new hook mechanism should be used to make sure that Haizea is aware of when an unexpected change happens. Additionally, Haizea does not react to delays in the schedule. For example, if Haizea estimates that an operation (such as a suspension) is going to require T seconds, but this operation ends up taking T + 10 seconds, Haizea is unaware of this delay and proceeds with its regularly scheduled operations. At the end of an operation, Haizea should query OpenNebula to see if the operation completed and, if not, it should reevaluate its schedule to accomodate this delay.
  • Requirements: Some knowledge of Python is essential. Some familiarity with Haizea is preferred, but not strictly necessary.
  • Mentor: Borja Sotomayor:

OpenNebula goes Academic!

  • Description: In Computer Science studies there are many practical subjects that demand access to PC's with certain applications installed. These resources are usually limited by means of schedule and occupation, making homework preparation difficult for the students. The objective of this project is to create a frontend over OpenNebula that a student will use for specifying subject to prepare. The system will then provide the user access to a fresh VM, corresponding to the desired subject.
  • Requirements: Web programming can be an idea, but the system should provide all possible mechanisms for a "click and use" behavior, so a reasoned proposal for implementation will be considered. In this project you'll be interfacing with OpenNebula, and you will have the opportunity to learn the basics of virtualization and cloud computing. Difficulty: medium-low.
  • Mentor: Jose Luis Vazquez-Poletti:

OpenNebula OCCI Implementation update

  • Description: The OGF Open Cloud Computing Interface has been implemented in OpenNebula at a very early stage. In fact, the specification wasn't complete at the time of the implementation, so voids had to be filled in order to have a fully working prototype. Nowadays, the OCCI spec has matured, and includes new features (collections, metadata in HTTP headers) and new representations, like XHTML 5. as a reference implementation, it is important to catch up with the specification, so an implementation update of the OCCI interface is a must-have.
  • Requirements: Web programming, XHTML5, HTTP. In this project you'll be interfacing with OpenNebula, and you will have the opportunity to learn the basics of virtualization and cloud computing. Difficulty: medium.
  • Mentor: Constantino Vázquez Blanco:

OpenNebula Service Management

  • Description: Since its conception, an effort was made to keep OpenNebula agnostic to the service being executed within the VMs. Nevertheless, experience has shown that an extension to OpenNebula to handle services as an entity can be extremely useful. This project involves the (guided) creation of a Service Descriptor Language(to describe the service as a collection of VMs with dependencies) and the development of a new command ('oneservice') that will understand such language and handle the service execution.
  • Requirements: Ruby, XMLRPC. In this project you'll be interfacing with OpenNebula XMLRPC API, and you will have the opportunity to learn the basics of virtualization and cloud computing. Difficulty: medium.
  • Mentor: Constantino Vázquez Blanco:

Virtual Environment Builder Integration

  • Description: A VM builder provides the developer with easy to configure, lightweight, reproducible, and portable virtual machines. Valgrant is one of this tools, and it is based on Sun's Virtual Box to create the VMs and chef to configure/install them. This projects aims to extend the provisioning engine by taking advantage of the OpenNebula Cloud API. In this way VMs could be provisioning from a cloud and automatically set for a web development.
  • Requirements: Some knowledge of Ruby is essential. You should be able to understand the basics of Linux administration and networking. Difficulty: medium.
  • Mentor: Ruben S. Montero:

Grid Authentication Mechanisms for Cloud Interfaces

  • Description: OpenNebula Cloud APIs (OCCI and EC2 Query API) use standard web authentication mechanisms, usually based on HTTP basic plus some sort of cryptographic support. In this project we will extend the OpenNebula Cloud interfaces to include support for Grid authentication mechanisms. Grid security is based on x509 certificates and the concept of Virtual Organizations. By integrating this distributed security schemes, this project will allow us to architect federated clouds.
  • Requirements: Some knowledge of Ruby, Web programming, HTTP and public key security. Difficulty: medium.
  • Mentor: Ruben S. Montero:

Blue-sky Ideas

These are shorter, more informal, project ideas proposed by mentors. They can be used by students as a starting point to propose a new project:

  • Write additional VMM drivers for OpenNebula (KVM, Xen, and VMWare are supported currently, but the OpenNebula architecture can accommodate drivers for lots of other VMMs).

OpenNebula Mentors

2010_300x267px.jpg - GSoC10 Logo (77.1 KB) Ruben S. Montero, 03/12/2010 10:49 pm