Hello, We are currently working with GRNET (http://www.grnet.gr), the Greek National Research and Education Network, to build a scalable public cloud infrastructure based on commodity hardware and software components.
We are building a custom cloud infrastructure around the Rackspace Cloud Servers API, for the management of VM instances. We find it's a simple, elegant, more-or-less self-explanatory API, with clear REST semantics. However, there doesn't seem to be a similar API for the management of dynamically allocated block-based storage volumes, i.e. the creation/query/destruction of volumes and their attachment to, or detachment from VMs, analogous to the EBS component of the Amazon EC2 API. Since we plan to support such functionality, we have been looking into a way to extend the Cloud Servers API. We began from the latest specification of the API [http://docs.rackspacecloud.com/servers/api/cs-devguide-latest.pdf] to provide a similar RESTful interface for the management of raw block devices. This is what we've come up with so far: [we use the term "disk" or "storage volume" interchangeably to refer to a piece of raw block-based storage which can be dynamically attached to or detached from a virtual machine] -- cut here -- 1. Disks 1.1 List disks GET /disks List all storage volumes (IDs and names only) GET /disks/detail List all storage volumes (all details) GET /servers/id/disks List all storage volumes attached to a specific server (IDs and names only) GET /servers/id/disks/detail List all storage volumes attached to a specific server (all details) 1.2 Create disks POST /disks Provision a new storage volume asynchronously. The progress of the request can be checked by performing a GET on /disks/id. 1.3 Get disk details GET /disks/id List details of a storage volume, specified by its id. GET /servers/id/disks/id List details of a storage volume, specified by its id. [perhaps this is superseded by the GET /disks/id operation, no need to replicate it here]. 1.4 Update disk name PUT /disks/id Update the specified storage volume's name. PUT /servers/id/disks/id Update the specified storage volume's name. [perhaps this is superseded by the PUT /disks/id operation, no need to replicate it here]. 1.5 Delete disk DELETE /disks/id Destroy the specified storage volume, free all of its data. 1.6 Attach disk to a VM POST /servers/id/disks Attaches a storage volume to the specified server. 1.7 Detach disk from a VM DELETE /servers/id/disks/id Detaches the specified storage volume from the specified server. -- cut here -- Essentially this is a RESTful API with an almost 1-1 correspondence with the Cloud Servers API. The aim is to make its integration with the Cloud Servers API as easy as possible. We are now beginning to implement this, and would appreciate your thoughts/suggestions, or any pointers you may have to any similar efforts. Thank you, Vangelis. -- Vangelis Koukis, PhD Computing Systems Laboratory, National Technical University of Athens. vkou...@cslab.ece.ntua.gr
signature.asc
Description: Digital signature
_______________________________________________ Mailing list: https://launchpad.net/~openstack Post to : openstack@lists.launchpad.net Unsubscribe : https://launchpad.net/~openstack More help : https://help.launchpad.net/ListHelp