Developer's Corner

Welcome to the Eucalyptus Developer's Corner. Here we hope to provide you with all the resources, information, and help necessary to become an active participant and contributor in the ongoing development of the Eucalyptus open source cloud.

Please see our participate page to learn about the many ways you can contribute to the Eucalyptus community. If you are interested in learning more about developing code for Eucalyptus, please see the following links to acquaint yourself with the Eucalyptus development environment. If you are ready to become a code contributor, you must register and sign a Eucalyptus Contributor Agreement.

Eucalyptus API

Eucalyptus supports the AWS APIs for EC2 and S3. If you wish to develop client tools against Eucalyptus, you may find the AWS documentation for these APIs a useful resource. Please note that since these APIs are constantly being updated, Eucalyptus may support a slightly older version of each API. Here are links to documentation for the AWS APIs currently supported by Eucalyptus:

To see a listing of Eucalyptus compatible EC2 and S3 client tools, click here.

Getting the source code

The best way to familiarize yourself with the development version of Eucalyptus is via our Nightly Builds. Here you will find versions of Eucalyptus development code that has passed our internal QA and are therefore easier to install, configure, and test.

You can find Eucalyptus code branches on Launchpad. This page contains stable releases of Eucalyptus (listed as Mature) and development branches of Eucalyptus (listed as Development) provided by both the Eucalyptus team and community developers. If you wish to contribute to Eucalyptus code, please confirm that you are using a branch provided by the Eucalyptus team.

Eucalyptus branches inside Launchpad use the Bazaar versioning control system. To work with Eucalyptus branches you must install Bazaar on your machine and create a local branch. For example, to create a local branch of the eucalyptus-devel (the official Eucalyptus development branch) enter the following:

bzr branch lp:eucalyptus/eucalyptus-devel

Viewing Submitted Patches

Anyone can view the patches in RT , but only contributors and Eucalyptus personnel have authorization to modify and add comments on RT. The community as a whole is welcome to participate in the discussion using our forum.

Contributing Code to Eucalyptus

As a Eucalyptus code contributor, you will receive an issue tracker ID that lets you submit patches to our internal ticketing system (RT). Interactions with Eucalyptus will be conducted via the issue tracker.

a. Information Required with Patch Submission

Contributed patches must be generated against one of our official Eucalyptus code branches. When making your submission, please include the following information:

  • the name and revision number of the branch to which the patch applies
  • a brief summary of what the patch does
  • details on how to test the patch (this allows us to create automatic regression tests for it)
  • links to any bugs the patch addresses
  • list of any new software dependencies, as well as their availability/status on the distributions we support.

b. Required Patch Properties

The patch itself must have the following characteristics:

  • must be generated using bzr diff against the current head of the branch
  • must apply cleanly to the targeted branch
  • must compile cleanly once applied
  • must be the original work of the contributor.

c. Patch "Life-cycle"

This is a summary of the patch "life-cycle":

  • The patch is submitted (following the above guidelines) and Eucalyptus support/development engineers initiate patch acceptance process and interaction with contributor;
  • The patch is checked for basic integration (apply cleanly, compile cleanly, obvious incompatibilities);
  • The patch receives closer inspection and is put through our internal QA system: This system runs tests on various architectures (32 and 64 bit) and various distributions we currently support (and plan to support);
  • If the patch shows regressions or integration problems, suggestions are made to the contributor on what failed and how to fix it, if possible. (Note that once a new version of the patch is submitted, the procedure will start from the beginning);
  • Specific tests are produced for the patch, and the patch is tested against them, to ensure behavior of the patch is correct for current and future branches;
  • If the patch is accepted, it is integrated into our development branch;
  • If the patch is not accepted, a report is issued explaining why it cannot be accepted, and guidelines are provided showing how to remedy the problem for subsequent patch acceptance.

These steps will be documented in RT and available for view at anytime. Community members can comment on patches in the Eucalyptus forum.

Becoming a Eucalyptus Contributor

The process for contributing code to the Eucalyptus project is as follows:

  • File the Contributor Agreement - Contributions to Eucalyptus are made under the tenets of a contributor agreement. If you would like to contribute code, you need to fill out and sign our Contributor Agreement (PDF format). Please return the signed agreement to us via:
  • Receive an issue tracker login - Once we have processed your signed Contributor Agreement, we will send you an issue tracker login via email. The issue tracker login will be used to submit patches as described in the Contributing Code to Eucalyptus section.

If you have questions regarding this process, please email send email to contributions@eucalyptus.com and include your issue tracker login.

Thank you for your interest in Eucalyptus. We look forward to working with you.