Hey everyone,

This Wednesday (2011-02-01) my office (Rackspace SF) is hosting a Twisted
Hackday - http://www.eventbrite.com/event/2777737287. As part of the hack
day project, I will work on a thing called "libcloud.http".

Short description and project milestones are included bellow.

If you are interested in participating, but you can't physically join us at
the Rackspace SF office, you can join us on #libcloud at freenode. Ideally,
we would also use some kind of voice chat (Google Hangout, Skype, ...),
because this makes communication easier.

Description:

HTTP interface for Libcloud (http://libcloud.apache.org/) which exposes all
the Libcloud functionality through a RESTful API. Currently Libcloud has a
big limitation - you can only use it with Python. Adding a REST interface
would allow users to leverage Libcloud functionality through an arbitrary
language which knows how to talk HTTP.

Project with a similar goal already exists - Deltacloud (
http://deltacloud.apache.org), but benefit of libcloud.http over Deltacloud
would be that we support way more providers and APIs and we also have a lot
more tests.

Milestones:

1. MVP

- basic REST-y framework build on top of twisted.web
- basic validation for input data (argument types, etc.)
- use introspection and magic to build most of the functionality, no copy
and paste!
- basic auth mechanism - user sends provider credentials in X header with
every request
- for now use threads.deferToThread when calling libcloud methods
- API versioning based on the libcloud release version
- Support for compute API

2. Support for provider specific arguments and methods (ex_foo)

- parse / introspect docstrings to figure out provider specific methods +
arguments and their types
- hook it up with the rest of the system
- discovery of provider capabilities through an endpoints

3. Pluggable caching & better auth mechanism

- Pluggable caching system (file, memory, memcache, redis, ...)
- Cache credentials, session id,...
- Cache provider responses

4. Support for other APIs:

- DNS
- Load balancers
- Storage (might be a bit tricky because of upload and download
functionality)

5. Other

- auto-generate clients in different languages
- libcloud driver for libcloud.http (meta, baby!)

I have no idea how many steps / milestones will be completed during the
hack day, but hopefully at least #1 will be fully done.

Thanks,
Tomaz

Reply via email to