basho/riak_cs — pull request #543 by kellymclaughlin (2013-04-25 17:49:33+00:00)
Title: Support for basic OpenStack API operations and Keystone authentication

This PR addresses issues #373 and #374. It includes the following:

* Add rewrite rules for basic bucket and object operations from
OpenStack Object Storage API
* Add authentication module for Keystone authentication service
* Make URL rewrite module configurable
* Refactoring to further decouple API requests and responses from core
object store functionality.
* Add helper module for JSON processing
* Refactor XML handling code
* Isolate configuration functions into riak_cs_config module

This result of this PR does not indicate that Riak CS is completely ready to be
dropped-in to an OpenStack deployment, but it is a big step in that
direction. Only the basic object storage API operations are
implemented and error responses may not be correct since they are not
well documented in the OpenStack API documentation. There is also not yet
support for checking for revoked PKI tokens or token caching of any
kind.

There are a number of more general refactoring steps included in these changes and I am interested in any feedback on them, especially if it is something that could be improved upon. Some of the refactoring effort is incomplete and this is largely intentional so that the focus of this effort did not become entirely lost.

I have added a number of entries to the repo wiki that should help
with understanding and testing these changes. See the [API and authentication](https://github.com/basho/riak_cs/wiki#api-and-authentication)
and the [OpenStack integration](https://github.com/basho/riak_cs/wiki#openstack-integration) sections specfically.

Additionally here are a few other links that may be of use:

* [Openstack Object Storage API docs](http://docs.openstack.org/api/openstack-object-storage/1.0/content/index.html)
* [OpenStack Identity developer docs](http://docs.openstack.org/api/openstack-identity-service/2.0/content/index.html)
* [OpenStack API quick reference](http://api.openstack.org/api-ref.html)
* [Blog post](http://blog.chmouel.com/2011/11/24/swift-and-keystone-middleware-part1/) on Swift and Keystone