Eucalyptus Developer Guide

Steve Jones edited this page May 11, 2013 · 7 revisions
Clone this wiki locally

This page provides an introduction and launch point for getting involved in the Eucalyptus code base and writing code for or with Eucalyptus.

Eucalyptus is a private-IaaS platform. Specifically, Eucalyptus provides the Amazon Web Services abstractions and services in your own private infrastructure. It is highly recommended to become very familiar with the Amazon EC2 an S3 services prior to exploring Eucalyptus and the Eucalyptus code. Here are some good references to begin with:

The following references provide the necessary background knowledge for related Eucalyptus functionality:

Getting started: Building and Installing Eucalyptus from Source

See the INSTALL file in the Eucalyptus source tree here on Github for installation instructions: Source Install

In the future we will provide a ready-to-go development VM.

Resources for Technologies that Eucalyptus Uses

Below is a collection of links that provides general information to the different technologies found with in Eucalyptus.

Programming links : Below is a collection of links to the different programming/scripting language's documentation found within eucalyptus.

Technology links : Below is a collection of links of various technologies found in eucalyptus.

Eucalyptus Architecture and Design by Resource

VMs

Very basic operation flow:

  1. Run Request -> CLC
  2. CLC -> Setup Networks -> CC
  3. CLC -> Check permissions -> CLC
  4. CLC -> RunInstance -> CC
  5. CC -> Implement network rules/tags -> CC
  6. CC -> Schedule Instance for Execution on NC -> CC
  7. CC -> RunInstance -> NC
  8. NC -> Construct Instance Artifacts (partitions, etc) -> NC
  9. NC -> Fetch image -> Walrus
  10. Walrus -> Decrypts image, Caches, Returns -> NC
  11. NC -> Construct instance config file -> NC
  12. NC -> start VM -> libvirt

Images

  1. User uploads bundle -> Walrus
  2. Register image -> CLC
  3. CLC -> Set permissions, etc. -> CLC
  4. CLC -> Assign EMI/EKI/ERI -> CLC
  5. CLC -> return EMI -> User

Networking

EBS/Block Storage

Ephemeral Storage

Blobstore and CopyOnWrite with LVM for ERI/EKI, etc

Users/Accounts

Authorization (IAM)

Design by Component

See the architecture docs repository: Eucalyptus Architecture Docs

Cloud Controller

  • General design principles and considerations
  • Eucalyptus Web Stack
  • Eucalyptus Service Endpoints
  • Eucalyptus API request entry points
  • Persistence/Database (eucalyptus_cloud, eucalyptus_config, ...)

Walrus

  • General design principles and considerations
  • Eucalyptus Web Stack
  • Eucalyptus Service Endpoints
  • Eucalyptus API request entry points
  • Persistence/Database (eucalyptus_walrus, eucalyptus_config, ...)

Cluster Controller

Storage Controller

  • Storage Controller Service Endpoints
  • Storage Controller API request entry points
  • Persistence/Database for Storage Controller (eucalyptus_config, eucalyptus_storage database)
  • SC WSDL - This is use only for communication between the SC and the NC for volume Export/Unexport in preparation or teardown of EBS volumes.

Node Controller


category.developer category.design