Need for the project

 
Addresses Cloudstack issue 6197 [1].
 
Cloudstack has its own native API which is different than the de-facto standard that is EC2. 
 
There is a need to provide an API bridge from EC2/GCE to the Cloudstack API. 
 

Current solutions

 
Currently two projects do this: 
 
  •  gstack [2]
  •  ec2stack [3]
 
They are both python and based on Flask microframework.
 

State of the implementations

 
Since the time that gstack was written Google also announced general availability for GCE. This means gstack will require modifications to continue working effectively.
 
There are a number of bugs present in gstack.
 
ec2stack only covers a small portion of the EC2 API.
 

Goals

 
This project would aim to extend these two code bases, add APIs not currently covered and fix existing bugs.
 

Project deliverables

 

gstack

 
  • Fix existing bugs.
  • Modify implementation to allow it to work with GCE GA version.
  • Add unittesting to make future refactoring easier.
  • Change response generation to use templates instead of manually generating responses.
  • Document changes.
 

ec2stack 

 
  • Fix existing bugs.
  • Extend to cover more of AWS EC2's API.
  • Map EC2 Snapshots to Cloudstack Snapshots.
  • Map EC2 tags to Cloudstack tags.
  • Add support for re-sizing volume.
  • Add support for creating template.
  • Document changes.
 

Implementation

 

gstack

 
To add unittesting to gstack I'll be using the python unit testing framework - unittest [4]. Tests will involve passing a mock Cloudstack response object to a gstack function and checking that gtsack returns the expected status code.
 
To modify gstack to work with GCE GA version I'll be following the updated GCE API reference [5].
 
To clean up response generation in gstack Jinja templates will be used. These templates will be filled out with the necessary information to generate responses. This will allow for the population of responses by passing in a Cloudstack response object directly. This will take away the need for translation in the controller files themselves.
 

ec2stack

 
To add support for EC2 Tags [6], I'll map create tag, delete tag and list tag commands from EC2 to Cloudstack.
 
To add support for EC2 Snapshots [7], I'll map create snapshot, delete snapshot and list snapshot commands from EC2 to Cloudstack.
 
To add support for the resizing of volumes I'll map the EC2 CreateVolume action to Cloudstack's revizeVolume command. 
 
To add support for the creating of templates I'll map the EC2 CreateImage action to Cloudstack's createTemplate command. 
 

Timeline

 

First Term

 
The first term will mostly be spent working with gstack. I'll begin by fixing existing bugs then modify the current implementation to allow it to work with GCE GA version. To complete the first term I'll add unittesting to the project to make future refactoring / extension easier.
 

Second Term

 
For the second term I'll begin by finishing off gstack; completing any missing unittests. refactoring the entire project, cutting down on code repetition where possible and making the entire project neater. 
 
With gstack out of the way I'll move onto ec2stack; adding support for Snapshots/Tags and extending support for Templates/Volumes. 
 
To finish off the second term I'll document any changes made.
 

Remainder

 
Depending on time remaining at the end I may take a look at further ec2stack extensions to cover more of the EC2 API. 
 

About me

 
I'm an Irish computing student from Dublin City University (DCU), I'm currently in third year studying Computer Applications [8]. I'm enthusiastic and a fast learner. My current interests include cloud computing, virtualization and reading. 
I have good knowledge of programming in Java, C++ and Python.
 
During first and second semester of second year I worked as a tutor in Dublin City University, this involved helping the first years out with their lab work, helping them to troubleshoot / diagnose issues and correcting their assignments.
 
Last summer I was involved in the development of gstack along with Sebastian Goasguen and Ian Duffy. This project was purely completed as a learning experience and to be introduced to Cloudstack. 
 
This year I was involved in the development of ec2stack with Ian Duffy. The project was completed as part of coursework.
 
If you want any more information on me feel free to check out my personal website at darrenbrogan.ie [9]. 
 

References

 
  • No labels