Hey Michal,

here's a copy/paste from the notes I made about snapshots back in July - might be useful to have this in one place/save some time looking at the APIs (AWS, Rackspace, Rimu, Gogrid, Terremark):

<PAST> :


Q. Which of our currently supported clouds allows 'register custom Image from cloud storage', or, 'save/snapshot an Instance as a new Image'
-----------------------------------------------------------------
--i--> Amazon AWS allows you to register an object in S3 as an Image in EC2 [4] (Rackspace 'coming soon' [5])

** The process of 'save this Instance as an Image in S3' is termed 'bundling'
    ** PROBLEM: different procedure for Windose vs Linux images [6].
-- For Windows you use the AWS REST API 'BundleInstance' call where you specify the S3 bucket to upload to (amongst other things). -- For Linux you must install the 'AMI Tools' command-line utilities [7] on the Instance you wish to bundle and then 'ec2-bundle-image'. Confusingly the actual upload is done with 'ec2-upload-bundle' which takes the S3 bucket name as a parameter. ** In both cases and after bundling is complete you register the newly created S3 object as an Image for EC2 using the REST API 'RegisterImage' call.

--ii-> Rackspace allows you to snapshot a running Instance [5]

** This is done through a REST API call (POST /images) where you specify the serverid (Instance) that is to be saved. ** Here there is no seperation between 'make snapshot' and 'upload to cloud storage' - i.e. cannot export a server image [8].
    ** Snapshots stay 'attached to the server' [9] (i.e. saved locally?).
** Once process complete the image is available for booting a server [5].
    ** 'Custom Image Upload' is in the Cloud Server API Roadmap [5].

-iii-> Gogrid allows you to save a 'MyGSI - Gogrid Server Image' from your own, preconfigured 'sandbox server'

** You create a MyGSI from a configured, running 'image sandbox server' and the new image is added to Gogrid's cloud storage [11]
    ** Weirdly this cloud storage is not exposed at all via the API
** The API call is grid.image.save [12] - you create a new 'image sandbox server' using 'grid.server.add', configure it and run the 'prep scripts' and then call the save. Once complete the new MyGSI is available in your list of images.

--iv-> Rimuhosting allows you to clone an existing server and deploy a new server from that [10]

** However, the clone must be deployed straight away - you cannot save as an image for later instantiation. ** A chat with support confirmed this - you *can* save an image for later use but only by submitting a support ticket (i.e. nothing in the api or the web 'management console' to support this).

--v--> Terremark VCloud Express allows you to 'clone' an existing server (a 'vapp') [13] but you cannot save this as an Image (a 'vapp template').

** Similar to the rimuhosting situation - can clone an existing server as another server, but not as an Image ** POST https://{Terremark URI}/vdc/{vDC ID}/action/clonevapp - you specify the vApp id to be cloned within the request body.

AWS:
[1] http://aws.amazon.com/documentation/s3/
[2] http://www.supersimplestorageservice.com/
[4] http://docs.amazonwebservices.com/AWSEC2/latest/APIReference/
[6] http://developer.amazonwebservices.com/connect/thread.jspa?messageID=107847&#107847 [7] http://developer.amazonwebservices.com/connect/entry.jspa?externalID=368&categoryID=88
RACKSPACE:
[3] http://www.rackspacecloud.com/cloud_hosting_products/files/api
[5] http://docs.rackspacecloud.com/servers/api/cs-devguide-latest.pdf
[8] http://www.rackspacecloud.com/cloud_hosting_products/servers/faq
[9] http://www.rackspacecloud.com/cloud_hosting_products/servers/pricing
RIMUHOSTING:
[10] http://apidocs.rimuhosting.com/jaxbdocs/com/rimuhosting/jaxrsorders/JAXRSOrders.NewVPSRequest.html
GOGRID:
[11] http://wiki.gogrid.com/wiki/index.php/Cloud_Storage:Cloud_Storage
[12] http://wiki.gogrid.com/wiki/index.php/API:grid.image.save
TERREMARK:
[13] https://community.vcloudexpress.terremark.com/en-us/product_docs/w/wiki/6-vcloud-express-api-documention.aspx

On 03/02/11 13:45, [email protected] wrote:
Hi,

This patch will add support for creating images from running or stopped
instances in Amazon EC2. EC2 support 'CreateImage' call for all EBS
instances.

Deltacloud API implements that in this way:

POST /api/images
Parameters: { :instance_id =>  'i-123123', :name =>  'image name' }

I checked GoGrid and they have something similar[1] for 'sandbox'
instances. Which means that we will need to add some feature to
instances collection to create 'sandbox' instance in GoGrid.

I didn't check Rackspace but Ovi said that they have something very
similar.

Please let me know what do you think about this approach.

PS: I attached a working example for EC2, *but* you need to have patched
gem installed (you can grab one from my github account[2]). To install it:

git clone git://github.com/mifo/aws.git
git checkout myupstream
gem build aws.gemspec
gem uninstall aws
gem install --local aws.gem

Or wait until Appoxy's integrate my patch to upstream gem.

[1] http://wiki.gogrid.com/wiki/index.php/API:grid.image.save
[2] https://github.com/mifo/aws/tree/myupstream


Reply via email to