deltacloud-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From mar...@apache.org
Subject svn commit: r1353588 [10/23] - in /deltacloud/trunk/site: ./ content/ content/Scripts/ content/assets/ content/assets/css/ content/assets/img/ content/assets/img/documentation_files/ content/assets/js/ content/assets/less/ content/css/ content/css/blue...
Date Mon, 25 Jun 2012 15:05:57 GMT
Added: deltacloud/trunk/site/output/#blob-storage.md#
URL: http://svn.apache.org/viewvc/deltacloud/trunk/site/output/%23blob-storage.md%23?rev=1353588&view=auto
==============================================================================
--- deltacloud/trunk/site/output/#blob-storage.md# (added)
+++ deltacloud/trunk/site/output/#blob-storage.md# Mon Jun 25 15:05:02 2012
@@ -0,0 +1,456 @@
+---
+site_name: Deltacloud API
+title: Blob storage
+---
+
+<br/>
+
+<div class="alert alert-info">
+<a class="close" data-dismiss="alert" href="#">×</a>
+This section is currently being updated.
+</div>
+
+<div class="row">
+  <div class="span8">
+
+<h3 id="blob">Blob Storage</h3>
+
+<p>
+Blob storage represents a generic key ==> value data store. It is implemented by Amazon S3 or Rackspace Cloudfiles. In Deltacloud, the organisational unit of blob storage is a bucket. Individual data items - blobs are exposed as a subcollection under each bucket.
+</p>
+
+<p>
+A bucket has a <strong>name</strong>, a <strong>size</strong> (denotes the number of blobs it contains) and a list of <strong>links to each blob</strong>.
+</p>
+
+<p>
+A blob has a <strong>content_length</strong>, a <strong>content_type</strong>, a <strong>last_modified</strong> timestamp, a structure containing <strong>user_metadata</strong>, a link to the blob <strong>content</strong> and the name of the bucket in which this blob exists.
+</p>
+
+  </div>
+  <div class="span4">
+
+<ul class="nav nav-list well">
+  <li class="nav-header">
+    REST API
+  </li>
+  <li><a href="/rest-api.html">Introduction</a></li>
+  <li><a href="/api-entry-point.html">API entry point</a></li>
+  <li><a href="/compute-resources.html">Compute resources</a></li>
+  <li><a href="/storage-resources.html">Storage resources</a></li>
+  <ul class="nav nav-list">
+    <li><a href="/storage-resources.html#volumes">Storage volumes</a></li>
+    <li><a href="/storage-snapshots.html">Storage snaphots</a></li>
+    <li class="active"><a href="#blob">Blob storage</a></li>
+  </ul>
+</ul>
+
+  </div>
+</div>
+
+<h4>Get a list of all buckets</h4>
+
+<p>
+To return a list of all buckets belonging to the given cloud provider account use call <strong>GET /api/buckets</strong>. The response from the Deltacloud server includes the name and URI of each bucket but not the size or the list of blobs which the bucket contains. These details are available when a client requests (GETs) a specific bucket.
+</p>
+
+<p>Example request:</p>
+
+<pre>
+GET /api/buckets?format=xml HTTP/1.1
+Authorization: Basic AU1J3UB2121Afd1DdyQWxLaTYTmJMNF4zTXBoRGdhMDh2RUw5ZDAN9zVXVa==
+User-Agent: curl/7.20.1
+Host: localhost:3001
+Accept: */*
+</pre>
+
+<p>Server response:</p>
+
+<pre>
+HTTP/1.1 200 OK
+Content-Type: application/xml
+Content-Length: 597
+&lt;?xml version='1.0' encoding='utf-8' ?&gt;
+&lt;buckets&gt;
+  &lt;bucket href='http://localhost:3001/api/buckets/mybucket1' id='mybucket1'&gt;
+    &lt;name&gt;mybucket1&lt;/name&gt;
+    &lt;size&gt;&lt;/size&gt;
+  &lt;/bucket&gt;
+  &lt;bucket href='http://localhost:3001/api/buckets/mybucket2' id='mybucket2'&gt;
+    &lt;name&gt;mybucket2&lt;/name&gt;
+    &lt;size&gt;&lt;/size&gt;
+  &lt;/bucket&gt;
+  &lt;bucket href='http://localhost:3001/api/buckets/mybucket3' id='mybucket3'&gt;
+    &lt;name&gt;mybucket3&lt;/name&gt;
+    &lt;size&gt;&lt;/size&gt;
+  &lt;/bucket&gt;
+  &lt;bucket href='http://localhost:3001/api/buckets/mybucket4' id='mybucket4'&gt;
+    &lt;name&gt;mybucket4&lt;/name&gt;
+    &lt;size&gt;&lt;/size&gt;
+  &lt;/bucket&gt;
+&lt;/buckets&gt;
+</pre>
+
+<h4>Get the details of a specific bucket</h4>
+
+<p>
+To return details of a specific bucket use call <strong>GET /api/buckets/:id</strong>. The Deltacloud server response includes the size of the bucket and the URI for each blob object that it contains.
+</p>
+
+<p>Example request:</p>
+
+<pre>
+GET /api/buckets/mybucket1?format=xml HTTP/1.1
+Authorization: Basic AU1J3UB2121Afd1DdyQWxLaTYTmJMNF4zTXBoRGdhMDh2RUw5ZDAN9zVXVa==
+User-Agent: curl/7.20.1
+Host: localhost:3001
+Accept: */*
+</pre>
+
+<p>Server response:</p>
+
+<pre>
+HTTP/1.1 200 OK
+Content-Type: application/xml
+Content-Length: 534
+&lt;?xml version='1.0' encoding='utf-8' ?&gt;
+&lt;bucket href='http://localhost:3001/api/buckets/mybucket1' id='mybucket1'&gt;
+  &lt;name&gt;mybucket1&lt;/name&gt;
+  &lt;size&gt;4&lt;/size&gt;
+  &lt;blob href='http://localhost:3001/api/buckets/mybucket1/myfile' id='myfile'&gt;&lt;/blob&gt;
+  &lt;blob href='http://localhost:3001/api/buckets/mybucket1/an_object' id='an_object'&gt;&lt;/blob&gt;
+  &lt;blob href='http://localhost:3001/api/buckets/mybucket1/picture_blob' id='picture_blob'&gt;&lt;/blob&gt;
+  &lt;blob href='http://localhost:3001/api/buckets/mybucket1/some_blob id='some_blob'&gt;&lt;/blob&gt;
+&lt;/bucket&gt;
+</pre>
+
+<h4>Create a new bucket</h4>
+
+<p>
+To create a new bucket use call <strong>POST /api/buckets</strong>. You need to specify the name as a parameter. Optionally for Amazon S3 buckets, you can specify a bucket location with the location parameter, as per <a href="http://docs.amazonwebservices.com/general/latest/gr/index.html?rande.html">Regions and Endpoints for Amazon Simple Storage Service</a>. Valid values for S3 bucket location parameter are: "us-west-1", "EU", "ap-southeast-1", "ap-northeast-1" (while not specifying a location default to the "US Standard" region). Note that clients may specify parameters as multipart/form-data or using a content-type of application/x-www-form-urlencoded.
+</p>
+
+<p>
+On succesful creation this call will return a 201 HTTP status, specifying the URI of the newly created bucket in the <strong>Location</strong> header and the newly created bucket object in the response message body. The example request below shows how to create a new bucket in the EU (Ireland) region. If the given back-end cloud does not support locations then the location parameter is ignored.
+</p>
+
+<p>Example request:</p>
+
+<pre>
+POST /api/buckets?format=xml HTTP/1.1
+Authorization: Basic AU1J3UB2121Afd1DdyQWxLaTYTmJMNF4zTXBoRGdhMDh2RUw5ZDAN9zVXVa==
+User-Agent: curl/7.20.1
+Host: localhost:3001
+Accept: */*
+Content-Length: 31
+Content-Type: application/x-www-form-urlencoded
+
+name=mybucketeurope&location=EU
+</pre>
+
+<p>Server response:</p>
+
+<pre>
+HTTP/1.1 201 Created
+Location: http://localhost:3001/api/buckets/mybucketeurope
+Content-Type: application/xml
+Content-Length: 182
+
+&lt;?xml version='1.0' encoding='utf-8' ?&gt;
+&lt;bucket href='http://localhost:3001/api/buckets/mybucketeurope' id='mybucketeurope'&gt;
+  &lt;name&gt;mybucketeurope&lt;/name&gt;
+  &lt;size&gt;0&lt;/size&gt;
+&lt;/bucket&gt;
+</pre>
+
+<h4>Delete a bucket</h4>
+
+<p>
+To delete the specified bucket use call <strong>DELETE /api/buckets/:id</strong>. The bucket must be empty (otherwise the call will fail with an error response). A succesful operation will return <strong>204 No Content</strong>.
+</p>
+
+<p>Example request:</p>
+
+<pre>
+DELETE /api/buckets/mybucketeurope?format=xml HTTP/1.1
+Authorization: Basic AU1J3UB2121Afd1DdyQWxLaTYTmJMNF4zTXBoRGdhMDh2RUw5ZDAN9zVXVa==
+User-Agent: curl/7.20.1 (i386-redhat-linux-gnu)
+Host: localhost:3001
+Accept: */*
+</pre>
+
+<p>Server response:</p>
+
+<pre>
+HTTP/1.1 204 No Content
+</pre>
+
+<h4>Get the details of a blob</h4>
+
+<p>
+To retrieve the details of a specific blob use call <strong>GET /api/buckets/:bucket_id/:blob_id</strong>. The blob content is not returned as part of the response but rather a URI is given from which the content may be retrieved as shown below.
+</p>
+
+<p>Example request:</p>
+
+<pre>
+GET /api/buckets/mariosbucket1/some_more_blob_woo?format=xml HTTP/1.1
+Authorization: Basic AU1J3UB2121Afd1DdyQWxLaTYTmJMNF4zTXBoRGdhMDh2RUw5ZDAN9zVXVa==
+User-Agent: curl/7.20.1 (i386-redhat-linux-gnu)
+Host: localhost:3001
+Accept: */*
+</pre>
+
+<p>Server response:</p>
+
+<pre>
+HTTP/1.1 200 OK
+Content-Type: application/xml
+Content-Length: 586
+&lt;?xml version='1.0' encoding='utf-8' ?&gt;
+&lt;blob href='http://localhost:3001/api/buckets/mariosbucket1/some_more_blob_woo' id='some_more_blob_woo'&gt;
+  &lt;bucket&gt;mariosbucket1&lt;/bucket&gt;
+  &lt;content_length&gt;86&lt;/content_length&gt;
+  &lt;content_type&gt;text/plain&lt;/content_type&gt;
+  &lt;last_modified&gt;Fri Jan 28 12:23:08 UTC 2011&lt;/last_modified&gt;
+  &lt;user_metadata&gt;
+    &lt;entry key='v'&gt;
+      &lt;![CDATA[0.2.0]]&gt;
+    &lt;/entry&gt;
+    &lt;entry key='test'&gt;
+      &lt;![CDATA[value]]&gt;
+    &lt;/entry&gt;
+  &lt;/user_metadata&gt;
+  &lt;content href='http://localhost:3001/api/buckets/mariosbucket1/some_more_blob_woo/content'&gt;&lt;/content&gt;
+&lt;/blob&gt;
+</pre>
+
+<h4>Get the actual blob content</h4>
+
+<p>
+To retrieve the actual blob content use call <strong>GET /api/buckets/:bucket_id/:blob_id/content</strong>. The location of blob content is specified in the content URI returned from the <strong>GET /api/buckets/:bucket_id/:blob_id</strong> call. The content is streamed through the deltacloud server as soon as it is received from the back-end cloud provider. The aim is to avoid the creation of a temporary file (especially significant in case of large blobs). The Deltacloud server sets <strong>Content-Disposition: attachment; filename=blob_name</strong> in the HTTP response headers.
+</p>
+
+<p>
+Example request:
+</p>
+
+<pre>
+GET /api/buckets/mariosanotherbucketohyeah/Im_a_blob_beholdme/content?format=xml HTTP/1.1
+Authorization: Basic AU1J3UB2121Afd1DdyQWxLaTYTmJMNF4zTXBoRGdhMDh2RUw5ZDAN9zVXVa==
+User-Agent: curl/7.20.1 (i386-redhat-linux-gnu)
+Host: localhost:3001
+Accept: */*
+</pre>
+
+<p>
+Server response:
+</p>
+
+<pre>
+HTTP/1.1 200 OK
+Content-Disposition: attachment; filename=Im_a_blob_beholdme
+Content-Type: text/plain
+Content-Length: 50
+
+&lt;BLOB DATA HERE&gt;
+</pre>
+
+<h4>Create a blob object</h4>
+
+<p>
+To create a blob object and set its content use call <strong>PUT /api/buckets/:bucket_id/:blob_id</strong>. If the blob already exists then its data and metadata are overwritten with those specified in this call. The request must specify the name of the blob and the name of the bucket, in which the blob is to be placed, in the call URI. The client must also specify the <strong>content_length</strong> of the blob data and the <strong>blob data</strong> itself in the HTTP headers. Optionally the call may also specify a <strong>content_type</strong> and any number of <strong>key:value</strong> pairs of user defined metadata. User metadata is defined using 'X-Deltacloud-Blobmeta-' header, e.g. X-Deltacloud-Blobmeta-Version:2.1.
+</p>
+
+<p>
+To eliminate the necessity of creating a local file at the deltacloud server for each blob created, the deltacloud server starts to stream the blob data to the back-end cloud provider as soon as the request headers are processed. A succesful operation will return the newly created blob object, as shown below:
+</p>
+
+<p>Example request:</p>
+
+<pre>
+PUT /api/buckets/mybucket/12Jul2011blob?format=xml HTTP/1.1
+Authorization: Basic AU1J3UB2121Afd1DdyQWxLaTYTmJMNF4zTXBoRGdhMDh2RUw5ZDAN9zVXVa==
+Content-Type: text/plain
+Content-Length: 128988
+X-Deltacloud-Blobmeta-Version:2.1
+X-Deltacloud-Blobmeta-Author:msa
+
+... BLOB DATA ...
+</pre>
+
+<p>Server response:</p>
+
+<pre>
+&lt;?xml version='1.0' encoding='utf-8' ?&gt;
+&lt;blob href='http://localhost:3001/api/buckets/mybucket/12Jul2011blob' id='12Jul2011blob'&gt;
+  &lt;bucket&gt;mybucket&lt;/bucket&gt;
+  &lt;content_length&gt;128988&lt;/content_length&gt;
+  &lt;content_type&gt;text/plain&lt;/content_type&gt;
+  &lt;last_modified&gt;Wed Jul 13 13:27:22 UTC 2011&lt;/last_modified&gt;
+  &lt;user_metadata&gt;
+    &lt;entry key='author'&gt;
+      &lt;![CDATA[msa]]&gt;
+    &lt;/entry&gt;
+    &lt;entry key='version'&gt;
+      &lt;![CDATA[2.1]]&gt;
+    &lt;/entry&gt;
+  &lt;/user_metadata&gt;
+  &lt;content href='http://localhost:3001/api/buckets/mybucket/12Jul2011blob/content'&gt;
+  &lt;/content&gt;
+&lt;/blob&gt;
+</pre>
+
+<h4>Update a blob object</h4>
+
+<p>
+The Deltacloud server also responds to an alternative <strong>POST /api/buckets/:bucket_id</strong> route for creating or updating a blob object. As with the <strong>PUT</strong> method for creating/updating a blob, the client must specify the <strong>bucket</strong> in which the blob is to be created through the call URI (i.e. you <strong>POST</strong> to the specified bucket). The rest of the required fields, that is, the <strong>name</strong> of the blob, the <strong>blob_data</strong> and the <strong>content-length</strong> are specified by the client as <strong>multipart/form-data</strong> (i.e. in <strong>HTTP POST</strong> form fields).
+</p>
+
+<p>
+In order to specify the optional user metadata for a given blob the client must set the form field <strong>meta_params</strong> to specify the number of metadata key/value pairs. The metadata itself is then specified by the client with fields of the form <strong>meta_nameN</strong> and <strong>meta_valueN</strong> where N is an integer from 1 upto the number specified by the <strong>meta_params</strong> field (e.g. meta_name1=author, meta_value1=jrd).
+</p>
+
+<p>
+It should be noted that the <strong>POST</strong> method for creating a blob is non streaming - the Deltacloud server will create a temporary file with the blob data, before this is transferred to the backend cloud. Thus, it should only be used for blobs with a relatively small content-length and in general the <strong>PUT</strong> method should be preferred for larger blobs. This <strong>POST</strong> method is mainly provided for clients that cannot easily invoke a <strong>HTTP PUT</strong> operation (e.g. web browsers) and can be used for creating/updating a blob through the deltacloud HTML interface (provided for testing purposes).
+</p>
+
+<p>Example request:</p>
+
+<pre>
+POST /api/buckets/mybucket?format=xml HTTP/1.1
+Authorization: Basic AU1J3UB2121Afd1DdyQWxLaTYTmJMNF4zTXBoRGdhMDh2RUw5ZDAN9zVXVa==
+User-Agent: curl/7.20.1 (i386-redhat-linux-gnu) libcurl/7.20.1 N
+Accept: */*
+Content-Length: 113582
+Expect: 100-continue
+Content-Type: multipart/form-data; boundary=----------------------------517f5f2df858
+
+------------------------------517f5f2df858
+Content-Disposition: form-data; name="blob"
+
+12Jul2011blob
+------------------------------517f5f2df858
+Content-Disposition: form-data; name="blob_data"; filename="small.txt"
+Content-Type: text/plain
+
+&lt;THE_BLOB_DATA_HERE&gt;
+
+------------------------------517f5f2df858
+Content-Disposition: form-data; name="meta_params"
+
+2
+------------------------------517f5f2df858
+Content-Disposition: form-data; name="meta_name1"
+
+author
+------------------------------517f5f2df858
+Content-Disposition: form-data; name="meta_value1"
+jjs
+------------------------------517f5f2df858
+Content-Disposition: form-data; name="meta_name2"
+
+version
+------------------------------517f5f2df858
+Content-Disposition: form-data; name="meta_value2"
+
+2.2
+------------------------------517f5f2df858--
+</pre>
+
+<p>Server response:</p>
+
+<pre>
+&lt;?xml version='1.0' encoding='utf-8' ?&gt;
+&lt;blob href='http://localhost:3001/api/buckets/mybucket/12Jul2011blob' id='12Jul2011blob'&gt;
+  &lt;bucket&gt;mybucket&lt;/bucket&gt;
+  &lt;content_length&gt;112766&lt;/content_length&gt;
+  &lt;content_type&gt;text/plain&lt;/content_type&gt;
+  &lt;last_modified&gt;&lt;/last_modified&gt;
+  &lt;user_metadata&gt;
+    &lt;entry key='x-amz-meta-author'&gt;
+      &lt;![CDATA[jjs]]&gt;
+    &lt;/entry&gt;
+    &lt;entry key='x-amz-meta-version'&gt;
+      &lt;![CDATA[2.2]]&gt;
+    &lt;/entry&gt;
+  &lt;/user_metadata&gt;
+  &lt;content href='http://localhost:3001/api/buckets/mybucket/12Jul2011blob/content'&gt;
+  &lt;/content&gt;
+&lt;/blob&gt;
+</pre>
+
+<h4>Delete a blob object</h4>
+
+<p>
+To delete the specified blob object from the back-end cloud use call <strong>DELETE /api/buckets/:bucket_id/:blob_id</strong>. The names of the blob and the bucket in which this exists are specified the in call URI. After a succesful operation the Deltacloud server will respond with a <strong>HTTP 204</strong> (No Content) with no message body.
+</p>
+
+<p>Example request:</p>
+
+<pre>
+DELETE /api/buckets/mybucket/12Jul2011blob?format=xml HTTP/1.1
+Authorization: Basic AU1J3UB2121Afd1DdyQWxLaTYTmJMNF4zTXBoRGdhMDh2RUw5ZDAN9zVXVa==
+User-Agent: curl/7.20.1 (i386-redhat-linux-gnu)
+Host: localhost:3001
+Accept: */*
+</pre>
+
+<p>Server response:</p>
+
+<pre>
+HTTP/1.1 204 No Content
+Connection: close
+Server: thin 1.2.11
+</pre>
+
+<h4>Get all metadata fields</h4>
+
+<p>
+To return all user defined metadata fields on a specified blob URI use the HTTP HEAD operation <strong>HEAD /api/buckets/:bucket_id/:blob_id</strong>. As per <a href="http://www.ietf.org/rfc/rfc2616.txt">RFC 2616</a> this <strong>HEAD</strong> operation does not return a message body. Rather, the blob user metadata values are returned in the response X-Deltacloud-Blobmeta- headers (e.g., X-Deltacloud-Blobmeta-version:1.2).
+</p>
+
+<p>Example request:</p>
+
+<pre>
+HEAD /api/buckets/mybucket/myblob?format=xml HTTP/1.1
+Authorization: Basic AU1J3UB2121Afd1DdyQWxLaTYTmJMNF4zTXBoRGdhMDh2RUw5ZDAN9zVXVa==
+User-Agent: curl/7.20.1
+Host: localhost:3001
+Accept: */*
+</pre>
+
+<p>Server response:</p>
+
+<pre>
+HTTP/1.1 204 No Content
+X-Deltacloud-Blobmeta-version: 1.21
+X-Deltacloud-Blobmeta-author: jrd
+</pre>
+
+<h4>Update the user-defined blob metadata</h4>
+
+<p>
+To update the user-defined blob metadata use call <strong>POST /api/buckets/:bucket_id/:blob_id</strong> on the URI of a blob. This operation will overwrite all previously set user-metadata values (if any) and replace them with those specified in this call. The client must set the user-defined metadata in the X-Deltacloud-Blobmeta- headers (e.g., X-Deltacloud-Blobmeta-Model:2012).
+</p>
+
+<p>Example request:</p>
+
+<pre>
+POST /api/buckets/mybucket/myblob?format=xml HTTP/1.1
+Authorization: Basic AU1J3UB2121Afd1DdyQWxLaTYTmJMNF4zTXBoRGdhMDh2RUw5ZDAN9zVXVa==
+User-Agent: curl/7.20.1
+Host: localhost:3001
+Accept: */*
+X-Deltacloud-Blobmeta-model: 2012
+X-Deltacloud-Blobmeta-paint: Stannite_Grey
+</pre>
+
+<p>Server response:</p>
+
+<pre>
+HTTP/1.1 204 No Content
+X-Deltacloud-Blobmeta-model: 2012
+X-Deltacloud-Blobmeta-paint: Stannite_Grey
+</pre>
+

Added: deltacloud/trunk/site/output/#credentials.md#
URL: http://svn.apache.org/viewvc/deltacloud/trunk/site/output/%23credentials.md%23?rev=1353588&view=auto
==============================================================================
--- deltacloud/trunk/site/output/#credentials.md# (added)
+++ deltacloud/trunk/site/output/#credentials.md# Mon Jun 25 15:05:02 2012
@@ -0,0 +1 @@
+

Added: deltacloud/trunk/site/output/#getting-sources.md#
URL: http://svn.apache.org/viewvc/deltacloud/trunk/site/output/%23getting-sources.md%23?rev=1353588&view=auto
==============================================================================
--- deltacloud/trunk/site/output/#getting-sources.md# (added)
+++ deltacloud/trunk/site/output/#getting-sources.md# Mon Jun 25 15:05:02 2012
@@ -0,0 +1,79 @@
+--- 
+site_name: Deltacloud API
+title: Getting the Sources
+---
+<br/>
+
+<h2>Setting up a developers environment</h2>
+
+<h3>Installing dependencies</h3>
+<p>
+First, you will need all the installation dependencies for Deltacloud. Follow the steps in <a href="/install-deltacloud.html">Install Deltacloud</a> section to get these dependencies.
+</p>
+
+<h3>Getting the sources</h3>
+
+The Deltacloud repository is hosted at the Apache Software Foundation, using the <a href="http://git-scm.com/">Git</a> version control system. If you don't have Git already, use the yum or apt package managers:
+
+<pre>
+$ sudo yum install git
+</pre>
+or
+<pre>
+$ sudo apt-get install git
+</pre>
+
+The canonical Deltacloud repository is located at <a href="https://git-wip-us.apache.org/repos/asf/deltacloud.git">https://git-wip-us.apache.org/repos/asf/deltacloud.git</a> with read-only mirrors at <strong>git://git.apache.org/deltacloud.git</strong> and <strong>git://github.com/apache/deltacloud</strong>.
+
+Go to your root directory and run git to get the latest version of Deltacloud source code from git repository. You can also use a different directory, but remember, where you clone the code:
+
+<pre>
+$ git clone git://git.apache.org/deltacloud.git
+</pre>
+
+This will pull the latest version to the directory <strong>~/deltacloud</strong>.
+
+<h3>Development dependencies</h3>
+<p>
+Apart from installation dependecies, you have to install some additional libraries, in order to develop for Deltacloud. The Deltacloud source includes a Gemfile: <strong>/path/to/deltacloud/server/Gemfile</strong>, which lists these development dependencies.
+</p>
+
+<p>
+You can easily get all the development dependecies with <a href="http://gembundler.com/">Bundler</a>:
+</p>
+
+<p>Install Bundler (if you don't have it yet):</p>
+
+<pre>$ sudo gem install bundler</pre>
+
+<p>Then, get the required dependencies:</p>
+
+<pre>
+$ cd /path/to/deltacloud/server
+$ bundle install --system
+</pre>
+
+<h3>Building from source and installing the Deltacloud gem</h3>
+
+<p>
+Build and install the Deltacloud server gem:
+</p>
+
+<pre>
+$ cd path/to/DeltacloudProject/deltacloud/server
+$ rake package
+$ sudo gem install pkg/deltacloud-core-&lt;version&gt;.gem
+</pre>
+
+<p>
+Then install the Deltacloud client gem:
+</p>
+
+<pre>
+$ cd path/to/DeltacloudProject/deltacloud/client
+$ rake package
+$ sudo gem install pkg/deltacloud-client-&lt;version&gt;.gem
+</pre>
+
+<a class="btn btn-inverse btn-large" style="float: right" href="/how-to-contribute.html">Contribute</a>
+<br/>

Added: deltacloud/trunk/site/output/#how-to-contribute.md#
URL: http://svn.apache.org/viewvc/deltacloud/trunk/site/output/%23how-to-contribute.md%23?rev=1353588&view=auto
==============================================================================
--- deltacloud/trunk/site/output/#how-to-contribute.md# (added)
+++ deltacloud/trunk/site/output/#how-to-contribute.md# Mon Jun 25 15:05:02 2012
@@ -0,0 +1,94 @@
+--- 
+site_name: Deltacloud API
+title: How Can I Contribute?
+---
+<br/>
+
+<h2 id="contribute">Contribute to Deltacloud</h2>
+Deltacloud project is a free open source software licensed under the <a href="http://www.apache.org/licenses/LICENSE-2.0">Apache Software Foundation</a> license. The developers community is open to anyone who wants to contribute. Contributors are required to sign an individual contributor <a href="http://www.apache.org/licenses/icla.txt">license agreement</a>. Do not hesitate to <a href="/contact.html">contact us</a> if you have any questions about contributing to the Deltacloud project. 
+
+<h3>How can I contribute?</h3>
+
+<ul class="nav nav-list">
+  <li class="nav-header"></li>
+  <li>
+    <a href="/send-patch.html">Send a patch</a>
+  </li>
+  <li>
+    <a href="/write-new-driver.html">Write a provider driver</a>
+  </li>
+  <li>
+    <a href="#bug">Report a bug</a>
+  </li>
+  <li>
+    <a href="#idea">Propose an idea</a>
+  </li>
+  <li>
+    <a href="#documentation">Write a documentation</a>
+  </li>
+</ul>
+
+<br/>
+
+<h3>Overview of the Deltacloud directory structure</h3>
+
+<p>The following list contains paths to the most interesting files and directories for developers. It is intended as an aid to orientation in the project files for developers - for example to quickly identify where the Deltacloud cloud provider drivers are stored:</p>
+
+<div class="row">
+  <div class="span1"></div>
+  <div class="span10 offset1">
+<pre>
+deltacloud
+|-----------------------------------------------------------------------------------
+|-d-->tests                           Contains Cucumber tests
+|-----------------------------------------------------------------------------------
+|-d-->site                            Files for this website
+|-----------------------------------------------------------------------------------
+|-d-->client                          Contains the Deltacloud ruby client
+|-----------------------------------------------------------------------------------
+|-d-->clients                         Contains other Deltacloud clients (e.g. java)
+|-----------------------------------------------------------------------------------
+|-d--> server
+       |----------------------------------------------------------------------------
+       |-d-->bin                      Contains the Deltacloud executable deltacloudd
+       |----------------------------------------------------------------------------
+       |-d-->views                    Contains haml views for each collection
+       |----------------------------------------------------------------------------
+       |-d-->tests                    Contains unit tests for drivers
+       |----------------------------------------------------------------------------
+       |-d-->lib
+             |----------------------------------------------------------------------
+             |-d-->sinatra            Contains rabbit DSL and various helpers
+             |----------------------------------------------------------------------
+             |-d-->deltacloud
+                   |----------------------------------------------------------------
+                   |-d-->models       Definition of each collection model
+                   |----------------------------------------------------------------
+                   |-d-->drivers      Contains the drivers for each cloud provider
+                   |----------------------------------------------------------------
+                   |-d-->helpers      Various helper methods used by the drivers
+                   |----------------------------------------------------------------
+                   |-d-->base_driver  Contains the Deltacloud base driver
+                   |----------------------------------------------------------------
+                   |-f-->server.rb                Contains the sinatra routes
+                   |----------------------------------------------------------------
+</pre>
+
+  </div>
+</div>
+
+<br/>
+
+<h3 id="bug">Reporting a bug</h3>
+We track bugs in <a href="https://issues.apache.org/jira/browse/DTACLOUD">Apache JIRA</a>. If you find a problem with Deltacloud, check if it is already known to the Deltacloud developers or <a href="https://issues.apache.org/jira/secure/CreateIssue!default.jspa">report it</a>.
+
+<h3 id="idea">Propose an idea</h3>
+<p>
+Our <a href="http://teambox.com/projects/deltacloud">Teambox</a> page is a place where we keep the latest task lists and where you can add comments or suggest new features for the project.
+</p>
+
+
+<h3 id="documentation">Writing a documentation</h3>
+
+
+

Added: deltacloud/trunk/site/output/#images.md#
URL: http://svn.apache.org/viewvc/deltacloud/trunk/site/output/%23images.md%23?rev=1353588&view=auto
==============================================================================
--- deltacloud/trunk/site/output/#images.md# (added)
+++ deltacloud/trunk/site/output/#images.md# Mon Jun 25 15:05:02 2012
@@ -0,0 +1,286 @@
+---
+site_name: Deltacloud API
+title: Images
+---
+
+<br/>
+
+<div class="row">
+  <div class="span8">
+
+<h3 id="images">Images</h3>
+
+<p>
+Images are used to launch instances. Each image represents a virtual machine image in the back-end cloud, containing the root partition and initial storage for an instance operating system. An image has:
+</p>
+
+<ul>
+  <li>a human-readable <strong>name</strong>,</li>
+  <li>a <strong>description</strong>,</li>
+  <li>an <strong>owner_id</strong>,</li>
+  <li>an <strong>architecture</strong>,</li>
+  <li>a <strong>state.</strong></li>
+</ul>
+
+<p>
+The <strong>owner_id</strong> identifies the user account to which the image belongs. The architecture attribute refers to whether the image will create an instance with 32 or 64-bit processor. The values that the Deltacloud server returns for this attribute are thus i386 and x86_64 respectively. The state attribute varies between back-end clouds (it depends on a cloud provider). For example, AWS EC2 image state can be one of AVAILABLE, PENDING or FAILED, whereas Rackspace Cloudservers image state can be one of UNKNOWN, PREPARING, ACTIVE, QUEUED or FAILED. Finally, each image also contains an <code>&lt;actions&gt;</code> attribute which specifies the URI to which a client may issue a <strong>HTTP POST</strong> for creation of an instance from the given image.
+</p>
+
+  </div>
+  <div class="span4">
+
+<ul class="nav nav-list well">
+  <li class="nav-header">
+    REST API
+  </li>
+  <li><a href="/rest-api.html">Introduction</a></li>
+  <li><a href="/api-entry-point.html">API entry point</a></li>
+  <li><a href="/compute-resources.html">Compute resources</a></li>
+  <ul class="nav nav-list">
+    <li><a href="/compute-resources.html#realms">Realms</a></li>
+    <li><a href="/hardware-profiles.html">Hardware profiles</a></li>
+    <li class="active"><a href="#images">Images</a></li>
+    <li><a href="/instance-states.html">Instance states</a></li>
+    <li><a href="/instances.html">Instances</a></li>
+    <li><a href="/keys.html">Keys</a></li>
+    <li><a href="/firewalls.html">Firewalls</a></li>
+    <li><a href="/addresses.html">Addresses</a></li>
+    <li><a href="/load-balancers.html">Load balancers</a></li>
+  </ul>
+  <li><a href="/storage-resources.html">Storage resources</a></li>
+</ul>
+
+  </div>
+</div>
+
+<br/>
+
+<ul class="nav nav-pills">
+  <li class="active"><a href="#tab1" data-toggle="tab">Get a list of all images</a></li>
+  <li><a href="#tab2" data-toggle="tab">Get the details of an image</a></li>
+  <li><a href="#tab3" data-toggle="tab">Create/delete an image</a></li>
+</ul>
+
+<hr>
+
+<div class="tab-content">
+  <div class="tab-pane active" id="tab1">
+
+<h4>Get the list of all images</h4>
+
+<p>
+To return a list of all images available in the back-end cloud use call <strong>GET /api/images</strong>. By default this call will return all images that are available to the given user account. Optionally a client may restrict the list of images returned by specifying the <strong>owner_id</strong> or <strong>architecture</strong> parameters in the request (architecture is one of x86_64 for 64-bit processors or i386 for 32-bit processors). The example below restricts the image list to 64-bit architecture images belonging to owner_id 023801271342.
+</p>
+
+<p>Example request:</p>
+
+<pre>
+GET /api/images?owner_id=023801271342&architecture=x86_64&format=xml HTTP/1.1
+Authorization: Basic AU1J3UB2121Afd1DdyQWxLaTYTmJMNF4zTXBoRGdhMDh2RUw5ZDAN9zVXVa==
+User-Agent: curl/7.20.1 (i386-redhat-linux-gnu)
+Host: localhost:3001
+Accept: */*
+</pre>
+
+<p>Server response:</p>
+
+<pre>
+HTTP/1.1 200 OK
+Content-Type: application/xml
+Content-Length: 1971
+
+&lt;?xml version='1.0' encoding='utf-8' ?&gt;
+&lt;images&gt;
+  &lt;image href='http://localhost:3001/api/images/ami-eea35787' id='ami-eea35787'&gt;
+    &lt;name&gt;sles-10-sp3-v1.00.x86_64&lt;/name&gt;
+    &lt;owner_id&gt;013907871322&lt;/owner_id&gt;
+    &lt;description&gt;SUSE Linux Enterprise Server 10 Service Pack 3 for x86_64 (v1.00)&lt;/description&gt;
+    &lt;architecture&gt;x86_64&lt;/architecture&gt;
+    &lt;state&gt;&lt;/state&gt;
+    &lt;actions&gt;
+      &lt;link href='http://localhost:3001/api/instances;image_id=ami-eea35787' method='post' rel='create_instance' /&gt;
+    &lt;/actions&gt;
+  &lt;/image&gt;
+  &lt;image href='http://localhost:3001/api/images/ami-6e649707' id='ami-6e649707'&gt;
+    &lt;name&gt;sles-11-sp1-hvm-v1.00.x86_64&lt;/name&gt;
+    &lt;owner_id&gt;013907871322&lt;/owner_id&gt;
+    &lt;description&gt;SUSE Linux Enterprise Server 11 Service Pack 1 for HVM x86_64 (v1.00)&lt;/description&gt;
+    &lt;architecture&gt;x86_64&lt;/architecture&gt;
+    &lt;state&gt;&lt;/state&gt;
+    &lt;actions&gt;
+      &lt;link href='http://localhost:3001/api/instances;image_id=ami-6e649707' method='post' rel='create_instance' /&gt;
+    &lt;/actions&gt;
+  &lt;/image&gt;
+  &lt;image href='http://localhost:3001/api/images/ami-e4a7558d' id='ami-e4a7558d'&gt;
+    &lt;name&gt;sles-11-sp1-hvm-v1.01.x86_64&lt;/name&gt;
+    &lt;owner_id&gt;013907871322&lt;/owner_id&gt;
+    &lt;description&gt;SUSE Linux Enterprise Server 11 Service Pack 1 for HVM x86_64 (v1.01)&lt;/description&gt;
+    &lt;architecture&gt;x86_64&lt;/architecture&gt;
+    &lt;state&gt;&lt;/state&gt;
+    &lt;actions&gt;
+      &lt;link href='http://localhost:3001/api/instances;image_id=ami-e4a7558d' method='post' rel='create_instance' /&gt;
+    &lt;/actions&gt;
+  &lt;/image&gt;
+  &lt;image href='http://localhost:3001/api/images/ami-e4a3578d' id='ami-e4a3578d'&gt;
+    &lt;name&gt;sles-11-sp1-v1.00.x86_64&lt;/name&gt;
+    &lt;owner_id&gt;013907871322&lt;/owner_id&gt;
+    &lt;description&gt;SUSE Linux Enterprise Server 11 Service Pack 1 for x86_64 (v1.00)&lt;/description&gt;
+    &lt;architecture&gt;x86_64&lt;/architecture&gt;
+    &lt;state&gt;&lt;/state&gt;
+    &lt;actions&gt;
+      &lt;link href='http://localhost:3001/api/instances;image_id=ami-e4a3578d' method='post' rel='create_instance' /&gt;
+    &lt;/actions&gt;
+  &lt;/image&gt;
+&lt;/images&gt;
+</pre>
+
+  </div>
+  <div class="tab-pane" id="tab2">
+
+<h4>Get details of an image</h4>
+
+<p>To retrieve the description of a specific image use call <strong>GET /api/images/:id</strong>.</p>
+
+<p>Example request:</p>
+
+<pre>
+GET /api/images/14?format=xml HTTP/1.1
+Authorization: Basic AU1J3UB2121Afd1DdyQWxLaTYTmJMNF4zTXBoRGdhMDh2RUw5ZDAN9zVXVa==
+User-Agent: curl/7.20.1 (i386-redhat-linux-gnu)
+Host: localhost:3002
+Accept: */*
+</pre>
+
+<p>Server response:</p>
+
+<pre>
+HTTP/1.1 200 OK
+Content-Type: application/xml
+Content-Length: 433
+
+&lt;?xml version='1.0' encoding='utf-8' ?&gt;
+&lt;image href='http://localhost:3002/api/images/14' id='14'&gt;
+  &lt;name&gt;Red Hat Enterprise Linux 5.4&lt;/name&gt;
+  &lt;owner_id&gt;jsmith&lt;/owner_id&gt;
+  &lt;description&gt;Red Hat Enterprise Linux 5.4&lt;/description&gt;
+  &lt;architecture&gt;x86_64&lt;/architecture&gt;
+  &lt;state&gt;ACTIVE&lt;/state&gt;
+  &lt;actions&gt;
+    &lt;link href='http://localhost:3002/api/instances;image_id=14' method='post' rel='create_instance' /&gt;
+  &lt;/actions&gt;
+&lt;/image&gt;
+</pre>
+
+  </div>
+  <div class="tab-pane" id="tab3">
+
+<h4>Create an image</h4>
+
+<p>
+To create a new image from an existing running instance use call <strong>POST /api/images</strong>. This operation is not available to all cloud providers and for some cloud providers this operation is not possible for all instances. For example, in the Amazon EC2 cloud, you can create a custom image from EBS backed instances but not from root-store instances. 
+</p>
+
+<div class="alert alert-error">
+  <a class="close" data-dismiss="alert" href="#">×</a>
+  <strong>Note: </strong> 
+  <p>
+  RHVE-M and vSphere provid
+  </p>
+</div>
+
+
+<p>
+The Deltacloud API provides a mechanism with which clients can determine whether a given instance may be saved as a custom image. If an instance snapshot is possible, the instance XML <code>&lt;actions&gt;</code> list contains a <strong>create_image</strong> action. This action defines the client's URI which is used in creating the new image. For example:
+</p>
+
+<pre>
+...
+&lt;actions&gt;
+  &lt;link href='http://localhost:3002/api/instances/20109341/reboot' method='post' rel='reboot' /&gt;
+  &lt;link href='http://localhost:3002/api/instances/20109341/stop' method='post' rel='stop' /&gt;
+  &lt;link href='http://localhost:3002/api/instances/20109341/run;id=20109341' method='post' rel='run' /&gt;
+  &lt;link href='http://localhost:3002/api/images;instance_id=20109341' method='post' rel='create_image' /&gt;
+&lt;/actions&gt;
+...
+</pre>
+
+<p>
+To create a new image the client must specify the <strong>instance_id</strong> of the running instance. Optionally, the client may also provide a <strong>name</strong> and a <strong>description</strong>. The parameters may be defined as multipart/form-data fields in the client POST.
+</p>
+
+<p>
+Alternatively, clients may also specify parameters using a content-type of application/x-www-form-urlencoded. The Deltacloud server will respond to a successful operation with <strong>HTTP 201 Created</strong> and provide details of the newly created image.
+</p>
+
+<p>Example request:</p>
+
+<pre>
+POST /api/images?format=xml HTTP/1.1
+Authorization: Basic AU1J3UB2121Afd1DdyQWxLaTYTmJMNF4zTXBoRGdhMDh2RUw5ZDAN9zVXVa==
+User-Agent: curl/7.20.1 (i386-redhat-linux-gnu)
+Host: localhost:3002
+Accept: */*
+Content-Length: 96
+Content-Type: application/x-www-form-urlencoded
+
+instance_id=20109341&name=customisedserver&description=jsmith%20cu
+stomised%20web%20server%20July%2021%202011
+</pre>
+
+<p>Server response:</p>
+
+<pre>
+HTTP/1.1 201 Created
+Content-Type: application/xml
+Content-Length: 427
+
+&lt;?xml version='1.0' encoding='utf-8' ?&gt;
+&lt;image href='http://localhost:3002/api/images/12346145' id='12346145'&gt;
+  &lt;name&gt;customisedserver&lt;/name&gt;
+  &lt;owner_id&gt;mandreou&lt;/owner_id&gt;
+  &lt;description&gt;customisedserver&lt;/description&gt;
+  &lt;architecture&gt;x86_64&lt;/architecture&gt;
+  &lt;state&gt;QUEUED&lt;/state&gt;
+  &lt;actions&gt;
+    &lt;link href='http://localhost:3002/api/instances;image_id=12346145' method='post' rel='create_instance' /&gt;
+  &lt;/actions&gt;
+&lt;/image&gt;
+</pre>
+
+<div class="alert alert-error">
+  <a class="close" data-dismiss="alert" href="#">×</a>
+  <strong>Note: </strong> 
+  <p>When you create an image from a stopped instance in <strong>vSphere</strong> driver, this particular instance is marked as <strong>template</strong> and it is also removed from Instances.</p>
+  
+  <p>Unlike other providers, vSphere does not support assigning a <strong>name</strong> and a <strong>description</strong> to the image when you create an image from a stopped instance. The image created in vSphere ignores these attributes passed to the API during the creation.</p>
+</div>
+
+<h4>Delete an image</h4>
+
+<p>
+To delete the specified image from the back-end cloud use call <strong>DELETE /api/images/:id</strong>. The Deltacloud server will return a <strong>HTTP 204 No Content</strong> after a succesful operation:
+</p>
+
+<p>Example request:</p>
+
+<pre>
+DELETE /api/images/12346145?format=xml HTTP/1.1
+Authorization: Basic AU1J3UB2121Afd1DdyQWxLaTYTmJMNF4zTXBoRGdhMDh2RUw5ZDAN9zVXVa==
+User-Agent: curl/7.20.1 (i386-redhat-linux-gnu)
+Host: localhost:3002
+Accept: */*
+</pre>
+
+<p>Server response:</p>
+
+<pre>
+HTTP/1.1 204 No Content
+</pre>
+
+  </div>
+</div>
+
+
+<a class="btn btn-inverse btn-large" style="float: right" href="/instance-states.html">Instance states <i class="icon-arrow-right icon-white" style="vertical-align:baseline"> </i></a>
+
+<br/>

Added: deltacloud/trunk/site/output/#index.md#
URL: http://svn.apache.org/viewvc/deltacloud/trunk/site/output/%23index.md%23?rev=1353588&view=auto
==============================================================================
--- deltacloud/trunk/site/output/#index.md# (added)
+++ deltacloud/trunk/site/output/#index.md# Mon Jun 25 15:05:02 2012
@@ -0,0 +1,77 @@
+--- 
+site_name: Deltacloud API
+title: Deltacloud API
+---
+
+<div class="row">
+<div class="span12 intro">
+  <div class="article-nav news well tweet"></div>
+</div>
+<div class="span4 grad1 about">
+<blockquote>
+<h3>What does Deltacloud give you?</h3>
+<ul>
+  <li><span style="font-size:small">
+  an opportunity to manage cloud instances the way you want
+  </span></li>
+  <li><span style="font-size:small">
+  a way to protect your apps from cloud API changes and incompatitibilities
+  </span></li>
+  <li><span style="font-size:small">
+  support for all major <a class="providers" href="#supported-providers.html" title="Supported providers">cloud service providers</a>
+  </span></li>
+</ul>
+<br/>
+
+<a class="btn btn-large" style="float:right" href="/about.html">Learn more</a>
+
+</blockquote>
+</div>
+
+<div class="span4 grad1 about">
+<blockquote>
+<h3>Developers info</h3>
+<br/>
+<h6>Deltacloud:</h6>
+<ul>
+  <li><span style="font-size:small">
+  is an open source Apache project
+  </span></li>
+  <li><span style="font-size:small">
+  is a <a href="#rest-api.html" title="API Documentation">REST-based API </a>for simple any-platform access
+  </span></li>
+  <li><span style="font-size:small">
+  is written in Ruby
+  </span></li>
+  <br/>
+  <br/>
+</ul>
+<br />
+
+<a class="btn btn-large" style="float:right" href="/how-to-contribute.html">Contribute to Deltacloud</a>
+<br/>
+
+</blockquote>
+</div>
+<div class="span4 grad1 about">
+  <blockquote>
+    <p>
+      <strong>Current stable version:</strong><br>
+      <a class="btn" href="/"> deltacloud-core-0.5.0</a>
+    </p>
+    <br/>
+    <p>
+      <strong>Found a bug?</strong><br>
+      <a class="btn" href="/"> Report it!</a>
+    </p>
+  </blockquote>
+</div>
+
+<div class="span12">
+<br/>
+<p>
+Deltacloud makes it easy for cloud providers to <a href="/.html">add their cloud</a> to the Deltacloud API.
+</p>
+</div>
+
+</div>

Added: deltacloud/trunk/site/output/#instance-states.md#
URL: http://svn.apache.org/viewvc/deltacloud/trunk/site/output/%23instance-states.md%23?rev=1353588&view=auto
==============================================================================
--- deltacloud/trunk/site/output/#instance-states.md# (added)
+++ deltacloud/trunk/site/output/#instance-states.md# Mon Jun 25 15:05:02 2012
@@ -0,0 +1,126 @@
+---
+site_name: Deltacloud API
+title: Instance states
+---
+<br/>
+
+<div class="alert alert-info">
+<a class="close" data-dismiss="alert" href="#">×</a>
+This section is currently being updated.
+</div>
+
+<div class="row">
+  <div class="span8">
+
+<h3 id="instance-states">Instance states</h3>
+
+<p>
+Each cloud defines a slightly different lifecycle model for instances. In some clouds, instances start running immediately after creation, in others, they enter a pending state and you need to start them explicitly.
+</p>
+
+<p>
+Differences between clouds are modelled by expressing the lifecycle of an instance as a finite state machine and capturing it in an instance states entity.The API defines the following states for an instance:</p>
+
+<dl>
+  <dt>start</dt>
+  <dd>an instance state before creation of an instance</dd>
+  <dt>pending</dt>
+  <dd>creation of an instance is in progress</dd>
+  <dt>running</dt>
+  <dd>an instance is running</dd>
+  <dt>shutting-down</dt>
+  <dd>a shutdown of an instance has been requested and is in progress</dd>
+  <dt>stopped</dt>
+  <dd>an instance is stopped</dd>
+  <dt>finished</dt>
+  <dd>all resources for an instance have now been freed</dd>
+</dl>
+
+  </div>
+  <div class="span4">
+
+<ul class="nav nav-list well">
+  <li class="nav-header">
+    REST API
+  </li>
+  <li><a href="/rest-api.html">Introduction</a></li>
+  <li><a href="/api-entry-point.html">API entry point</a></li>
+  <li><a href="/compute-resources.html">Compute resources</a></li>
+  <ul class="nav nav-list">
+    <li><a href="/realms.html">Realms</a></li>
+    <li><a href="/hardware-profiles.html">Hardware profiles</a></li>
+    <li><a href="/images.html">Images</a></li>
+    <li class="active"><a href="#instance-states">Instance states</a></li>
+    <li><a href="/instances.html">Instances</a></li>
+    <li><a href="/keys.html">Keys</a></li>
+    <li><a href="/firewalls.html">Firewalls</a></li>
+    <li><a href="/addresses.html">Addresses</a></li>
+    <li><a href="/load-balancers.html">Load balancers</a></li>
+  </ul>
+  <li><a href="/storage-resources.html">Storage resources</a></li>
+</ul>
+
+  </div>
+</div>
+
+<p>
+The details of a particular instance describes also the actions (state transitions) which can be performed on the instance. The possible instance actions are:
+</p>
+
+<dl>
+  <dt>start</dt>
+  <dd>starts the instance</dd>
+  <dt>stop</dt>
+  <dd>stops (and for some providers, shutdown) the instance</dd>
+  <dt>reboot</dt>
+  <dd>reboots the instance</dd>
+  <dt>destroy</dt>
+  <dd>stops the instance and completely destroys it</dd>
+</dl>
+
+<h4>Get an instance states entity</h4>
+
+To retrieve the instance_states entity for a back-end cloud use call <strong>GET /api/instance_states</strong>. The instance_states entity defines possible transitions between various states of an instance, specific for each back-end cloud. As a result, instance_states defines the finite state machine for instances from the given cloud.
+
+<p>Example request:</p>
+
+<pre>
+GET /api/instance_states?format=xml HTTP/1.1
+Authorization: Basic AU1J3UB2121Afd1DdyQWxLaTYTmJMNF4zTXBoRGdhMDh2RUw5ZDAN9zVXVa==
+User-Agent: curl/7.20.1 (i386-redhat-linux-gnu)
+Host: localhost:3002
+Accept: */*
+</pre>
+
+<p>Server response:</p>
+
+<pre>
+HTTP/1.1 200 OK
+Content-Type: application/xml
+Content-Length: 583
+
+&lt;states&gt;
+  &lt;state name='start'&gt;
+    &lt;transition action='create' to='pending'&gt;&lt;/transition&gt;
+  &lt;/state&gt;
+  &lt;state name='pending'&gt;
+    &lt;transition auto='true' to='running'&gt;&lt;/transition&gt;
+  &lt;/state&gt;
+  &lt;state name='running'&gt;
+    &lt;transition action='reboot' to='running'&gt;&lt;/transition&gt;
+    &lt;transition action='stop' to='shutting_down'&gt;&lt;/transition&gt;
+  &lt;/state&gt;
+  &lt;state name='shutting_down'&gt;
+    &lt;transition auto='true' to='stopped'&gt;&lt;/transition&gt;
+  &lt;/state&gt;
+  &lt;state name='stopped'&gt;
+    &lt;transition auto='true' to='finish'&gt;&lt;/transition&gt;
+  &lt;/state&gt;
+  &lt;state name='finish'&gt;
+  &lt;/state&gt;
+&lt;/states&gt;
+</pre>
+
+<a class="btn btn-inverse btn-large" style="float: right" href="/instances.html">Instances <i class="icon-arrow-right icon-white" style="vertical-align:baseline"> </i></a>
+
+<br/>

Added: deltacloud/trunk/site/output/#instances.md#
URL: http://svn.apache.org/viewvc/deltacloud/trunk/site/output/%23instances.md%23?rev=1353588&view=auto
==============================================================================
--- deltacloud/trunk/site/output/#instances.md# (added)
+++ deltacloud/trunk/site/output/#instances.md# Mon Jun 25 15:05:02 2012
@@ -0,0 +1,630 @@
+---
+site_name: Deltacloud API
+title: Instances
+---
+
+<br/>
+
+<div class="row">
+  <div class="span8">
+
+<h3 id="instances">Instances</h3>
+
+<p>
+An instance represents the core of all cloud compute activity: a running virtual machine. An instance is created from an image, with a specified hardware profile and in a given realm. Each instance can have a number of other attributes, not all of which are exposed for all back-end cloud providers. The full list of possible instance attributes is:
+</p>
+
+<table class="table table-condensed table-striped">
+  <thead>
+    <tr>
+      <th>Attribute</th>
+      <th>Meaning</th>
+    </tr>
+  </thead>
+  <tbody>
+    <tr>
+     <td>owner_id</td>
+     <td>the id of the cloud provider account that launched the instance</td>
+    </tr>
+    <tr>
+      <td>image_id</td>
+      <td>the id of the image from which the instance was launched</td>
+    </tr>
+    <tr>
+      <td>name</td>
+      <td>a human readable name for the instance given at launch time</td>
+    </tr>
+    <tr>
+      <td>realm_id</td>
+      <td>realm into which the instance was launched</td>
+    </tr>
+    <tr>
+      <td>state</td>
+      <td>current state of the instance (e.g. 'running')</td>
+    </tr>
+    <tr>
+      <td>actions</td>
+      <td>actions that a client may effect on the instance, based on current state</td>
+    </tr>
+    <tr>
+      <td>public_addresses</td>
+      <td>the globally routable IP address of the instance</td>
+    </tr>
+    <tr>
+      <td>private_addresses</td>
+      <td>the private IP address of the instance, routable within its private network</td>
+    </tr>
+    <tr>
+      <td>instance_profile</td>
+      <td>the specific values of memory, cpu, storage</td>
+    </tr>
+    <tr>
+      <td>launch_time</td>
+      <td>timestamp at which the instance was launched</td>
+    </tr>
+    <tr>
+      <td>keyname</td>
+      <td>name of authentication Key, if this method is used for authentication (e.g. EC2)</td>
+    </tr>
+    <tr>
+      <td>username</td>
+      <td>the username for authentication when connecting to the instance</td>
+    </tr>
+    <tr>
+      <td>password</td>
+      <td>the password used together with username above</td>
+    </tr>
+    <tr>
+      <td>firewalls</td>
+      <td>the firewalls that this instance was launched into (EC2 specific)</td>
+    </tr>
+  </tbody>
+</table>
+
+  </div>
+  <div class="span4">
+  
+<ul class="nav nav-list well">
+  <li class="nav-header">
+    REST API
+  </li>
+  <li><a href="/rest-api.html">Introduction</a></li>
+  <li><a href="/api-entry-point.html">API entry point</a></li>
+  <li><a href="/compute-resources.html">Compute resources</a></li>
+  <ul class="nav nav-list">
+    <li><a href="/compute-resources.html">Realms</a></li>
+    <li><a href="/hardware-profiles.html">Hardware profiles</a></li>
+    <li><a href="/images.html">Images</a></li>
+    <li><a href="/instance-states.html">Instance states</a></li>
+    <li class="active"><a href="#instances">Instances</a></li>
+    <li><a href="/keys.html">Keys</a></li>
+    <li><a href="/firewalls.html">Firewalls</a></li>
+    <li><a href="/addresses.html">Addresses</a></li>
+    <li><a href="/load-balancers.html">Load balancers</a></li>
+  </ul>
+  <li><a href="/storage-resources.html">Storage resources</a></li>
+</ul>
+
+  </div>
+</div>
+
+<ul class="nav nav-pills">
+  <li class="active"><a href="#tab1" data-toggle="tab">Get a list of all instances</a></li>
+  <li><a href="#tab2" data-toggle="tab">Get the details of an instance</a></li>
+  <li><a href="#tab3" data-toggle="tab">Launch an action</a></li>
+  <li><a href="#tab4" data-toggle="tab">Create an instance</a></li>
+</ul>
+
+<div class="tab-content">
+  <div class="tab-pane active" id="tab1">
+
+  <h4 id="list">Get a list of all current instances</h4>
+
+  <p>
+  To produce a list of all current instances in the given cloud (belonging to the specified account) use call <strong>GET /api/instances</strong>. The example below displays instances in the Amazon EC2 cloud.
+  </p>
+
+  <p>
+  Example request:
+  </p>
+
+<pre>
+GET /api/instances?format=xml HTTP/1.1
+Authorization: Basic AU1J3UB2121Afd1DdyQWxLaTYTmJMNF4zTXBoRGdhMDh2RUw5ZDAN9zVXVa==
+User-Agent: curl/7.20.1 (i386-redhat-linux-gnu)
+Host: localhost:3001
+Accept: */*
+</pre>
+
+  <p>Client response:</p>
+
+<pre>
+HTTP/1.1 200 OK
+Content-Type: application/xml
+Content-Length: 2790
+&lt;?xml version='1.0' encoding='utf-8' ?&gt;
+&lt;instances&gt;
+  &lt;instance href='http://localhost:3001/api/instances/i-1fbc627e' id='i-1fbc627e'&gt;
+    &lt;name&gt;ami-f51aff9c&lt;/name&gt;
+    &lt;owner_id&gt;393485797142&lt;/owner_id&gt;
+    &lt;image href='http://localhost:3001/api/images/ami-f51aff9c' id='ami-f51aff9c'&gt;&lt;/image&gt;
+    &lt;realm href='http://localhost:3001/api/realms/us-east-1c' id='us-east-1c'&gt;&lt;/realm&gt;
+    &lt;state&gt;RUNNING&lt;/state&gt;
+    &lt;hardware_profile href='http://localhost:3001/api/hardware_profiles/c1.medium' id='c1.medium'&gt;
+    &lt;/hardware_profile&gt;
+    &lt;actions&gt;
+      &lt;link href='http://localhost:3001/api/instances/i-1fbc627e/reboot' method='post' rel='reboot' /&gt;
+      &lt;link href='http://localhost:3001/api/instances/i-1fbc627e/stop' method='post' rel='stop' /&gt;
+      &lt;link href='http://localhost:3001/api/instances/i-1fbc627e/run;id=i-1fbc627e' method='post' rel='run' /&gt;
+    &lt;/actions&gt;
+    &lt;launch_time&gt;2011-07-22T11:29:48.000Z&lt;/launch_time&gt;
+    &lt;public_addresses&gt;&lt;address&gt;ec2-50-16-183-107.compute-1.amazonaws.com&lt;/address&gt;&lt;/public_addresses&gt;
+    &lt;private_addresses&gt;&lt;address&gt;domU-12-31-39-0F-79-D4.compute-1.internal&lt;/address&gt;&lt;/private_addresses&gt;
+    &lt;firewalls&gt;
+      &lt;firewall href='http://localhost:3001/api/firewalls/default' id='default'&gt;&lt;/firewall&gt;
+    &lt;/firewalls&gt;
+    &lt;authentication type='key'&gt;
+      &lt;login&gt;
+        &lt;keyname&gt;eftah&lt;/keyname&gt;
+      &lt;/login&gt;
+    &lt;/authentication&gt;
+  &lt;/instance&gt;
+  &lt;instance href='http://localhost:3001/api/instances/i-f3ba6492' id='i-f3ba6492'&gt;
+    &lt;name&gt;ami-2b5fba42&lt;/name&gt;
+    &lt;owner_id&gt;393485797142&lt;/owner_id&gt;
+    &lt;image href='http://localhost:3001/api/images/ami-2b5fba42' id='ami-2b5fba42'&gt;&lt;/image&gt;
+    &lt;realm href='http://localhost:3001/api/realms/us-east-1d' id='us-east-1d'&gt;&lt;/realm&gt;
+    &lt;state&gt;RUNNING&lt;/state&gt;
+    &lt;hardware_profile href='http://localhost:3001/api/hardware_profiles/m1.small' id='m1.small'&gt;
+    &lt;/hardware_profile&gt;
+    &lt;actions&gt;
+      &lt;link href='http://localhost:3001/api/instances/i-f3ba6492/reboot' method='post' rel='reboot' /&gt;
+      &lt;link href='http://localhost:3001/api/instances/i-f3ba6492/stop' method='post' rel='stop' /&gt;
+      &lt;link href='http://localhost:3001/api/instances/i-f3ba6492/run;id=i-f3ba6492' method='post' rel='run' /&gt;
+    &lt;/actions&gt;
+    &lt;launch_time&gt;2011-07-22T11:32:25.000Z&lt;/launch_time&gt;
+    &lt;public_addresses&gt;&lt;address&gt;ec2-184-73-78-87.compute-1.amazonaws.com&lt;/address&gt;&lt;/public_addresses&gt;
+    &lt;private_addresses&gt;&lt;address&gt;ip-10-196-89-221.ec2.internal&lt;/address&gt;&lt;/private_addresses&gt;
+    &lt;firewalls&gt;
+      &lt;firewall href='http://localhost:3001/api/firewalls/default' id='default'&gt;&lt;/firewall&gt;
+      &lt;firewall href='http://localhost:3001/api/firewalls/test' id='test'&gt;&lt;/firewall&gt;
+    &lt;/firewalls&gt;
+    &lt;authentication type='key'&gt;
+      &lt;login&gt;
+        &lt;keyname&gt;eftah&lt;/keyname&gt;
+      &lt;/login&gt;
+    &lt;/authentication&gt;
+  &lt;/instance&gt;
+&lt;/instances&gt;
+</pre>
+
+  </div>
+  <div class="tab-pane" id="tab2">
+
+  <h4 id="get-instance">Get the details of an instance</h4>
+
+  <p>
+  To get the details of a specific instance use call <strong>GET /api/instances/:id</strong>. The example below shows an instance launched in the Rackspace Cloudservers cloud. As you can see, the type of authentication is <strong>password</strong> but the username and password attributes are blank. The reason why these attributes are blank is that Rackspace only reports these values once, during instance creation and not for subsequent requests. To find an example of the response from an instance go to the <strong><em>Create an instance</em></strong> subsection.
+  </p>
+
+  <p>Example request:</p>
+
+<pre>
+GET /api/instances/20112212?format=xml HTTP/1.1
+Authorization: Basic AU1J3UB2121Afd1DdyQWxLaTYTmJMNF4zTXBoRGdhMDh2RUw5ZDAN9zVXVa==
+User-Agent: curl/7.20.1 (i386-redhat-linux-gnu)
+Host: localhost:3002
+Accept: */*
+</pre>
+
+  <p>Server response:</p>
+
+<pre>
+HTTP/1.1 200 OK
+Content-Type: application/xml
+Content-Length: 1167
+&lt;?xml version='1.0' encoding='utf-8' ?&gt;
+&lt;instance href='http://localhost:3002/api/instances/20112212' id='20112212'&gt;
+  &lt;name&gt;myserver&lt;/name&gt;
+  &lt;owner_id&gt;mandreou&lt;/owner_id&gt;
+  &lt;image href='http://localhost:3002/api/images/53' id='53'&gt;&lt;/image&gt;
+  &lt;realm href='http://localhost:3002/api/realms/us' id='us'&gt;&lt;/realm&gt;
+  &lt;state&gt;RUNNING&lt;/state&gt;
+  &lt;hardware_profile href='http://localhost:3002/api/hardware_profiles/1' id='1'&gt;
+  &lt;/hardware_profile&gt;
+  &lt;actions&gt;
+    &lt;link href='http://localhost:3002/api/instances/20112212/reboot' method='post' rel='reboot' /&gt;
+    &lt;link href='http://localhost:3002/api/instances/20112212/stop' method='post' rel='stop' /&gt;
+    &lt;link href='http://localhost:3002/api/instances/20112212/run;id=20112212' method='post' rel='run' /&gt;
+    &lt;link href='http://localhost:3002/api/images;instance_id=20112212' method='post' rel='create_image' /&gt;
+  &lt;/actions&gt;
+  &lt;public_addresses&gt;&lt;address&gt;50.57.116.72&lt;/address&gt;&lt;/public_addresses&gt;
+  &lt;private_addresses&gt;&lt;address&gt;10.182.143.64&lt;/address&gt;&lt;/private_addresses&gt;
+  &lt;authentication type='password'&gt;
+    &lt;login&gt;
+      &lt;username&gt;root&lt;/username&gt;
+      &lt;password&gt;&lt;/password&gt;
+    &lt;/login&gt;
+  &lt;/authentication&gt;
+&lt;/instance&gt;
+</pre>
+
+  </div>
+  <div class="tab-pane" id="tab3">
+
+  <h4 id="actions">Launch an action on an instance</h4>
+
+  <p>
+  To launch an action on an instance use call <strong>POST /api/instances/:id/:action</strong>. The valid actions for an instance are specified by the instance_states entity. The set of permissible actions that a client may perform on an instance at a given time depends on the current instance state. These are reported by the <code>&lt;actions&gt;</code> attribute in the Deltacloud server response to the <strong>GET /api/instances/:id</strong> call (Get the details of an instance subsection). The first example below shows a <strong>reboot</strong> action on a currently running instance, followed by a <strong>stop</strong> action.
+  </p>
+
+  <p>
+  After invoking the stop operation, the instance state may still be reported as <strong>RUNNING</strong> in the Deltacloud server response. It is because it may take some time for the instance state to change in the back-end cloud provider (and this will vary between providers). You can assure yourself that the action was performed correctly by requesting a list of instances or a by requesting a specific instance.
+  </p>
+
+  <p>
+  The Deltacloud server also allows a special 'run-on-instance' action for some cloud provider instances.This enables a client to perform a command on a running instance over <strong>SSH</strong>. The Deltacloud server will return the output of that command to the client. This is reported as the <strong>run</strong> action in the list of instance actions, if it is available. The <strong>cmd</strong> parameter specifies the command, which is executed on a running instance.The <strong>private_key</strong> parameter specifies the authentication for cloud providers that expect key based authentication for connecting to instances . For those cloud providers that use <strong>username/password</strong> for authentication, the <strong>password</strong> parameter specifies the authentication. Examples below illustrate the 'run-on-instance' feature for an Amazon EC2 instance and a Rackspace Cloudservers instance. The examples differ in how authentication is performed (private RSA Key 
 for EC2 and username/password for Rackspace).
+  </p>
+
+  <p>Example request (<strong>reboot</strong>):</p>
+
+<pre>
+POST /api/instances/i-f3ba6492/reboot?format=xml HTTP/1.1
+Authorization: Basic AU1J3UB2121Afd1DdyQWxLaTYTmJMNF4zTXBoRGdhMDh2RUw5ZDAN9zVXVa==
+User-Agent: curl/7.20.1 (i386-redhat-linux-gnu)
+Host: localhost:3001
+Accept: */*
+</pre>
+
+  <p>Server response:</p>
+
+<pre>
+HTTP/1.1 200 OK
+Content-Type: application/xml
+Content-Length: 1322
+
+&lt;?xml version='1.0' encoding='utf-8' ?&gt;
+&lt;instance href='http://localhost:3001/api/instances/i-f3ba6492' id='i-f3ba6492'&gt;
+  &lt;name&gt;ami-f51aff9c&lt;/name&gt;
+  &lt;owner_id&gt;393485797142&lt;/owner_id&gt;
+  &lt;image href='http://localhost:3001/api/images/ami-f51aff9c' id='ami-f51aff9c'&gt;&lt;/image&gt;
+  &lt;realm href='http://localhost:3001/api/realms/us-east-1c' id='us-east-1c'&gt;&lt;/realm&gt;
+  &lt;state&gt;RUNNING&lt;/state&gt;
+  &lt;hardware_profile href='http://localhost:3001/api/hardware_profiles/c1.medium' id='c1.medium'&gt;
+  &lt;/hardware_profile&gt;
+  &lt;actions&gt;
+    &lt;link href='http://localhost:3001/api/instances/i-f3ba6492/reboot' method='post' rel='reboot' /&gt;
+    &lt;link href='http://localhost:3001/api/instances/i-f3ba6492/stop' method='post' rel='stop' /&gt;
+    &lt;link href='http://localhost:3001/api/instances/i-f3ba6492/run;id=i-f3ba6492' method='post' rel='run' /&gt;
+  &lt;/actions&gt;
+  &lt;launch_time&gt;2011-07-22T11:29:48.000Z&lt;/launch_time&gt;
+  &lt;public_addresses&gt;&lt;address&gt;ec2-50-16-183-107.compute-1.amazonaws.com&lt;/address&gt;&lt;/public_addresses&gt;
+  &lt;private_addresses&gt;&lt;address&gt;domU-12-31-39-0F-79-D4.compute-1.internal&lt;/address&gt;&lt;/private_addresses&gt;
+  &lt;firewalls&gt;  &lt;firewall href='http://localhost:3001/api/firewalls/default' id='default'&gt;&lt;/firewall&gt;&lt;/firewalls&gt;
+  &lt;authentication type='key'&gt;
+    &lt;login&gt;
+      &lt;keyname&gt;eftah&lt;/keyname&gt;
+    &lt;/login&gt;
+  &lt;/authentication&gt;
+&lt;/instance&gt;
+</pre>
+
+  <p>Example request (<strong>stop</strong>):</p>
+
+<pre>
+POST /api/instances/20112212/stop?format=xml HTTP/1.1
+Authorization: Basic AU1J3UB2121Afd1DdyQWxLaTYTmJMNF4zTXBoRGdhMDh2RUw5ZDAN9zVXVa==
+User-Agent: curl/7.20.1 (i386-redhat-linux-gnu)
+Host: localhost:3002
+Accept: */*
+</pre>
+
+  <p>Server response:</p>
+
+<pre>
+HTTP/1.1 200 OK
+Content-Type: application/xml
+Content-Length: 1167
+
+&lt;?xml version='1.0' encoding='utf-8' ?&gt;
+&lt;instance href='http://localhost:3002/api/instances/20112212' id='20112212'&gt;
+  &lt;name&gt;myserver&lt;/name&gt;
+  &lt;owner_id&gt;mandreou&lt;/owner_id&gt;
+  &lt;image href='http://localhost:3002/api/images/53' id='53'&gt;&lt;/image&gt;
+  &lt;realm href='http://localhost:3002/api/realms/us' id='us'&gt;&lt;/realm&gt;
+  &lt;state&gt;STOPPED&lt;/state&gt;
+  &lt;hardware_profile href='http://localhost:3002/api/hardware_profiles/1' id='1'&gt;
+  &lt;/hardware_profile&gt;
+  &lt;actions&gt;
+    &lt;link href='http://localhost:3002/api/instances/20112212/reboot' method='post' rel='reboot' /&gt;
+    &lt;link href='http://localhost:3002/api/instances/20112212/stop' method='post' rel='stop' /&gt;
+    &lt;link href='http://localhost:3002/api/instances/20112212/run;id=20112212' method='post' rel='run' /&gt;
+    &lt;link href='http://localhost:3002/api/images;instance_id=20112212' method='post' rel='create_image' /&gt;
+  &lt;/actions&gt;
+  &lt;public_addresses&gt;&lt;address&gt;50.57.116.72&lt;/address&gt;&lt;/public_addresses&gt;
+  &lt;private_addresses&gt;&lt;address&gt;10.182.143.64&lt;/address&gt;&lt;/private_addresses&gt;
+  &lt;authentication type='password'&gt;
+    &lt;login&gt;
+      &lt;username&gt;root&lt;/username&gt;
+      &lt;password&gt;&lt;/password&gt;
+    &lt;/login&gt;
+  &lt;/authentication&gt;
+&lt;/instance&gt;
+</pre>
+
+  <p>
+  Example request (<strong>run-on-instance Amazon EC2</strong>): 
+  </p>
+
+<div class="alert alert-error">
+  <a class="close" data-dismiss="alert" href="#">×</a>
+  <strong>Note:</strong> 
+  <p>
+  Run-on-instance requests to EC2 instances will fail with <strong>502 Bad Gateway - Execution Expired</strong> if the firewall in which the instance was launched does not grant SSH access (tcp, port 22) to the requesting client's IP address. This access may be given using the <a href="/firewalls.html">firewalls</a> collection.</p>
+</div>
+
+<pre>
+POST /api/instances/i-afde73ce/run?format=xml HTTP/1.1
+Authorization: Basic AU1J3UB2121Afd1DdyQWxLaTYTmJMNF4zTXBoRGdhMDh2RUw5ZDAN9zVXVa==
+User-Agent: curl/7.20.1 (i386-redhat-linux-gnu)
+Host: localhost:3001
+Content-Length: 1927
+Content-Type: multipart/form-data; boundary=----------------------------332ed6691ab8
+
+------------------------------332ed6691ab8
+Content-Disposition: form-data; name="cmd"
+
+uname -a; ls -l
+------------------------------332ed6691ab8
+Content-Disposition: form-data; name="private_key"
+
+-----BEGIN RSA PRIVATE KEY-----.BTTEpATBAAKDAQEA4t3R/PgUo3KDDuX4
+vZZpZuXFkAA/5X2lFRY2/xsQqbPz9utPOsUoPf9Aajy+.vGRJrO2KAJ9U/JTNDzr
+3NPbG3aHYPSnwsSxkFSG4Q6ukqYlxT9TPF/+wvdxfAtp3nYw3ZGuSX/DOtToWtQ8
+F/+GvHTHKDQSB+TeEs1Sa/PFwxpspB+RqHbqOTWPsFOHL+9sZGTqd6D4B.R6DBNh
+9Dabu9BVZrl5BTOKlbAgrKnzsGKvaBST/D2.AB/HB9/GOT36OoBmEr1y9gFwu4Xf
+aKw+AXVf9y9TKxVD3TE5uB.oDZG8s4gr2e691xHG9YGzBBBbNzfFh94b3Td5JBGS
+zRDTKYBfOgv+Zu5N+WyeaZ0ab50DwK9BXYB5hsRu5zbAqObbTZkwN9qwBOZHzATX
+wVTZU+eTz.39OZPqu4fQwrBN13lDbUoZxlqT9g2+haQBB9sTDzQEZ08QKBgQDJyw
+lBBZqQKBgQDz5E2rL59lNS5pBxDO9r6B9rXtBBTZ5tZUWNFRvyNsxY5nJT03.KDw
+qo2VP5WDZeOhRWEUY96./pWN3hNFDkT44vDpeXQUh3rBHyD5DWvWxAze9Ds+UTO/
+esuLwP5vXhfoYp6gV9XG.BEBzSVq8kZ2kZtlbWHTR/SGepTkDgYEA9zwHTDhtKR2
+KS8/BSFZQ884ZqFkbwT9fTW6s0rgUSBDTUDgYEA9W5HXTOEPGFDnqBhKPLN.xD9D
+vZZpZuXFkAA/5X2lFRY2/xsQqbPz9utPOsUoPf9Aajy+.vGRJrO2KAJ9U/JTNDzr
+lBBZqQKBgQDz5E2rL59lNS5pBxDO9r6B9rXtBBTZ5tZUWNFRvyNsxY5nJT03.KDw
+F/+GvHTHKDQSB+TeEs1Sa/PFwxpspB+RqHbqOTWPsFOHL+9sZGTqd6D4B.R6DBNh
+wVTZU+eTz.39OZPqu4fQwrBN13lDbUoZxlqT9g2+haQBB9sTDzQEZ08QKBgQDJyw
+lBBZqQKBgQDz5E2rL59lNS5pBxDO9r6B9rXtBBTZ5tZUWNFRvyNsxY5nJT03.KDw
+DAAeVWKU1OyDXfN4v6Zn1nNrhSkdrd+XV0nTLExsfg==.-----END RSA PRIVAT
+E KEY-----
+------------------------------332ed6691ab8--
+</pre>
+
+  <p>Server response:</p>
+
+<pre>
+HTTP/1.1 200 OK
+Content-Type: application/xml
+Date: Mon, 25 Jul 2011 12:56:02 GMT
+Content-Length: 497
+
+&lt;instance href='http://localhost:3001/api/instances/i-afde73ce' id='i-afde73ce'&gt;
+  &lt;public_address&gt;
+    ec2-50-19-59-126.compute-1.amazonaws.com
+  &lt;/public_address&gt;
+  &lt;command&gt;
+    uname -a; ls -l
+  &lt;/command&gt;
+  &lt;output&gt;Linux domU-12-31-39-0F-E1-78 2.6.21.7-2.fc8xen #1 SMP Fri Feb 15 12:39:36 EST 2008 i686 i686 i386 GNU/Linux
+  total 140
+  -rw-r--r-- 1 root root 137263 Mar 26  2008 ec2-ami-tools-1.3-19974.noarch.rpm
+  -rw-r--r-- 1 root root      0 Mar 26  2008 firstlogin
+  &lt;/output&gt;
+&lt;/instance&gt;
+</pre>
+
+  <p>Example request (<strong>run-on-instance Rackspace Cloudservers</strong>):</p>
+
+<pre>
+POST /api/instances/20117112/run?format=xml HTTP/1.1
+Authorization: Basic AU1J3UB2121Afd1DdyQWxLaTYTmJMNF4zTXBoRGdhMDh2RUw5ZDAN9zVXVa==
+User-Agent: curl/7.20.1 (i386-redhat-linux-gnu)
+Host: localhost:3002
+Accept: */*
+Content-Length: 275
+Expect: 100-continue
+Content-Type: multipart/form-data; boundary=----------------------------9b05ece66f4d
+------------------------------9b05ece66f4d
+Content-Disposition: form-data; name="cmd"
+
+uname -a; ifconfig; pwd
+------------------------------9b05ece66f4d
+Content-Disposition: form-data; name="password"
+
+myserverqB2Uwk21I
+------------------------------9b05ece66f4d--
+</pre>
+
+  <p>Server response:</p>
+
+<pre>
+HTTP/1.1 200 OK
+Content-Type: application/xml
+Date: Mon, 25 Jul 2011 13:02:15 GMT
+Content-Length: 1781
+
+&lt;instance href='http://localhost:3002/api/instances/20117112' id='20117112'&gt;
+  &lt;public_address&gt;
+    50.57.117.249
+  &lt;/public_address&gt;
+  &lt;command&gt;
+    uname -a; ifconfig; pwd
+  &lt;/command&gt;
+  &lt;output&gt;Linux myserver 2.6.35.4-rscloud #8 SMP Mon Sep 20 15:54:33 UTC 2010 x86_64 x86_64 x86_64 GNU/Linux
+  eth0      Link encap:Ethernet  HWaddr 40:40:B1:7A:52:7E
+            inet addr:50.57.117.249  Bcast:50.57.117.255  Mask:255.255.255.0
+            inet6 addr: fe80::4240:b1ff:fe7a:527e/64 Scope:Link
+            UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
+            RX packets:54 errors:0 dropped:0 overruns:0 frame:0
+            TX packets:62 errors:0 dropped:0 overruns:0 carrier:0
+            collisions:0 txqueuelen:1000
+            RX bytes:5880 (5.7 KiB)  TX bytes:6331 (6.1 KiB)
+            Interrupt:24
+
+  eth1      Link encap:Ethernet  HWaddr 40:40:8E:4B:52:23
+            inet addr:10.182.131.159  Bcast:10.182.159.255  Mask:255.255.224.0
+            inet6 addr: fe80::4240:8eff:fe4b:5223/64 Scope:Link
+            UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
+            RX packets:3 errors:0 dropped:0 overruns:0 frame:0
+            TX packets:12 errors:0 dropped:0 overruns:0 carrier:0
+            collisions:0 txqueuelen:1000
+            RX bytes:188 (188.0 b)  TX bytes:720 (720.0 b)
+            Interrupt:25
+
+  lo        Link encap:Local Loopback
+            inet addr:127.0.0.1  Mask:255.0.0.0
+            inet6 addr: ::1/128 Scope:Host
+            UP LOOPBACK RUNNING  MTU:16436  Metric:1
+            RX packets:0 errors:0 dropped:0 overruns:0 frame:0
+            TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
+            collisions:0 txqueuelen:0
+            RX bytes:0 (0.0 b)  TX bytes:0 (0.0 b)
+
+  /root&lt;/output&gt;
+&lt;/instance&gt;
+</pre>
+
+  </div>
+  <div class="tab-pane" id="tab4">
+
+  <h4 id="post">Create a new instance</h4>
+
+  <p>
+  To create a new instance use call <strong>POST /api/instances</strong>. At least, clients must specify the image from which the virtual machine instance is created. Optionally, a client may also specify a hardware profile and a realm (with default values used otherwise). Clients can also provide a name for the new instance though this is not supported by all back-end cloud providers. You can check whether a given feature is available in the response to the Deltacloud server API entry point. The details of the new instance are returned in response to this operation.
+  </p>
+
+  <p>
+  To create an instance in the Amazon EC2 cloud a client can also specify the name of the used EC2 keypair as well as the firewalls (EC2 security groups) that the instance should be launched into. The EC2 keypair is specified with the parameter keyname while firewalls are specified sequentially as firewalls1 ... firewalls2 ... etc. 
+  </p>
+
+  <p>
+  See the example below. The values for public and private addresses are blank in the server response, because they have not yet been assigned by the cloud provider. Subsequent requests for the instance details will provide these values.
+  </p>
+
+  <p>
+  As with other POST operations in the Deltacloud API, clients may specify parameters as multipart/form-data or as x-www-url-form-urlencoded content type, as you can see in examples below.
+  </p>
+
+  <p>Client request (<strong>AWS EC2</strong>):</p>
+
+<pre>
+POST /api/instances?format=xml HTTP/1.1
+Authorization: Basic AU1J3UB2121Afd1DdyQWxLaTYTmJMNF4zTXBoRGdhMDh2RUw5ZDAN9zVXVa==
+User-Agent: curl/7.20.1 (i386-redhat-linux-gnu)
+Host: localhost:3001
+Accept: */*
+Content-Length: 107
+Content-Type: application/x-www-form-urlencoded
+
+keyname=eftah&image_id=ami-f51aff9c&realm_id=us-east-1c&hwp_id=c1.medium&
+firewalls1=default&firewalls2=test
+</pre>
+
+  <p>Server response:</p>
+
+<pre>
+HTTP/1.1 201 Created
+Content-Type: application/xml
+Content-Length: 1183
+
+&lt;?xml version='1.0' encoding='utf-8' ?&gt;
+&lt;instance href='http://localhost:3001/api/instances/i-cbb861aa' id='i-cbb861aa'&gt;
+  &lt;name&gt;ami-f51aff9c&lt;/name&gt;
+  &lt;owner_id&gt;393485797142&lt;/owner_id&gt;
+  &lt;image href='http://localhost:3001/api/images/ami-f51aff9c' id='ami-f51aff9c'&gt;&lt;/image&gt;
+  &lt;realm href='http://localhost:3001/api/realms/us-east-1c' id='us-east-1c'&gt;&lt;/realm&gt;
+  &lt;state&gt;PENDING&lt;/state&gt;
+  &lt;hardware_profile href='http://localhost:3001/api/hardware_profiles/c1.medium' id='c1.medium'&gt;
+  &lt;/hardware_profile&gt;
+  &lt;actions&gt;
+    &lt;link href='http://localhost:3001/api/instances/i-cbb861aa/stop' method='post' rel='stop' /&gt;
+    &lt;link href='http://localhost:3001/api/instances/i-cbb861aa/run;id=i-cbb861aa' method='post' rel='run' /&gt;
+  &lt;/actions&gt;
+  &lt;launch_time&gt;2011-07-22T16:09:45.000Z&lt;/launch_time&gt;
+  &lt;public_addresses&gt;&lt;/public_addresses&gt;
+  &lt;private_addresses&gt;&lt;/private_addresses&gt;
+  &lt;firewalls&gt;
+    &lt;firewall href='http://localhost:3001/api/firewalls/test' id='test'&gt;&lt;/firewall&gt;
+    &lt;firewall href='http://localhost:3001/api/firewalls/default' id='default'&gt;&lt;/firewall&gt;
+  &lt;/firewalls&gt;
+  &lt;authentication type='key'&gt;
+    &lt;login&gt;
+      &lt;keyname&gt;eftah&lt;/keyname&gt;
+    &lt;/login&gt;
+  &lt;/authentication&gt;
+&lt;/instance&gt;
+</pre>
+
+  <p>
+  In the following example you can see that the client provides the optional name parameter and that the created instance uses <strong>password</strong> type of authentication. Furthermore, the client uses a content-type of application/x-www-form-urlencoded. The username and password are returned with the details of the new instance:
+  </p>
+
+  <p>Example request: (<strong>Rackspace Cloudservers</strong>)</p>
+
+<pre>
+POST /api/instances?format=xml HTTP/1.1
+Authorization: Basic AU1J3UB2121Afd1DdyQWxLaTYTmJMNF4zTXBoRGdhMDh2RUw5ZDAN9zVXVa==
+User-Agent: curl/7.20.1 (i386-redhat-linux-gnu)
+Host: localhost:3002
+Accept: */*
+Content-Length: 34
+Content-Type: application/x-www-form-urlencoded
+
+image_id=53&hwp_id=1&name=myserver
+</pre>
+
+  <p>Server response:</p>
+
+<pre>
+HTTP/1.1 201 Created
+Content-Type: application/xml
+Content-Length: 883
+
+&lt;?xml version='1.0' encoding='utf-8' ?&gt;
+&lt;instance href='http://localhost:3002/api/instances/20112212' id='20112212'&gt;
+  &lt;name&gt;myserver&lt;/name&gt;
+  &lt;owner_id&gt;mandreou&lt;/owner_id&gt;
+  &lt;image href='http://localhost:3002/api/images/53' id='53'&gt;&lt;/image&gt;
+  &lt;realm href='http://localhost:3002/api/realms/us' id='us'&gt;&lt;/realm&gt;
+  &lt;state&gt;PENDING&lt;/state&gt;
+  &lt;hardware_profile href='http://localhost:3002/api/hardware_profiles/1' id='1'&gt;
+  &lt;/hardware_profile&gt;
+  &lt;actions&gt;
+    &lt;link href='http://localhost:3002/api/instances/20112212/run;id=20112212' method='post' rel='run' /&gt;
+  &lt;/actions&gt;
+  &lt;public_addresses&gt;&lt;address&gt;50.57.116.72&lt;/address&gt;&lt;/public_addresses&gt;
+  &lt;private_addresses&gt;&lt;address&gt;10.182.143.64&lt;/address&gt;&lt;/private_addresses&gt;
+  &lt;authentication type='password'&gt;
+    &lt;login&gt;
+      &lt;username&gt;root&lt;/username&gt;
+      &lt;password&gt;myserver4OvKh7Ak3&lt;/password&gt;
+    &lt;/login&gt;
+  &lt;/authentication&gt;
+&lt;/instance&gt;
+</pre>
+
+<div class="alert alert-error">
+  <a class="close" data-dismiss="alert" href="#">×</a>
+  <h4 class="alert-heading">Note:</h4>
+  <p>
+  The Deltacloud does not report potential errors, if you are creating an instance in <strong>vSphere</strong>. When you launch an instance, Deltacloud does not wait until the task is finished. Instead of that, Deltacloud creates a YAML representation of the instance in vSphere datastore. The YAML instance is in a 'PENDING' state until the 'real' instance is created. If the real instance fails to create, the YAML representation is removed. However, Deltacloud does not send you any error message.
+  </p>
+</div>
+
+  </div>
+</div>
+
+<a class="btn btn-inverse btn-large" style="float: right" href="/keys.html">Keys <i class="icon-arrow-right icon-white" style="vertical-align:baseline"> </i></a>
+
+<br/>
+

Added: deltacloud/trunk/site/output/#keys.md#
URL: http://svn.apache.org/viewvc/deltacloud/trunk/site/output/%23keys.md%23?rev=1353588&view=auto
==============================================================================
--- deltacloud/trunk/site/output/#keys.md# (added)
+++ deltacloud/trunk/site/output/#keys.md# Mon Jun 25 15:05:02 2012
@@ -0,0 +1,226 @@
+---
+site_name: Deltacloud API
+title: Keys
+---
+
+<br/>
+
+<div class="alert alert-info">
+<a class="close" data-dismiss="alert" href="#">×</a>
+This section is currently being updated.
+</div>
+
+<div class="row">
+  <div class="span8">
+
+<h3 id="keys">Keys</h3>
+
+<p>
+A key captures the credentials required to access an Instance. The Deltacloud API supports two main types of keys: the <strong>password</strong> type of key which have username and password attributes and the <strong>key</strong> type which have fingerprint and pem (private key) attributes (public/private keypair). The key type is determined by the back-end cloud provider.
+</p>
+
+<p>
+Some cloud providers require the specification of the credentials used for connecting to an instance as a parameter for instance creation. An example is the Amazon EC2 cloud which uses <strong>key</strong> type of keys and where the identifier of the key used with a given instance is supplied within the keyname parameter to the <a href="/instances.html#post">POST /api/instances</a> call.
+</p>
+
+<p>
+Other cloud providers report the instance credentials in response to instance creation and make them available for subsequent retrieval. For example, the Gogrid Cloud the <strong>password</strong> type of keys (note: the Rackspace cloud also reports credentials during instance creation though it does not provide a mechanism with which to retrieve those passwords thereafter).
+</p>
+
+<h4 id="get">Get a list of all keys</h4>
+
+<p>
+To get a list of all available keys use call <strong>GET /api/keys</strong>. The example shown below is for keys from the Amazon EC2 cloud, which are of type <strong>key</strong>. Note that the XML response does not contain the private key attribute. This is because EC2 only provides the private key once, when the key is created (see <a href="#create">key creation</a> for an example):
+</p>
+
+  </div>
+  <div class="span4">
+
+<ul class="nav nav-list well">
+  <li class="nav-header">
+    REST API
+  </li>
+  <li><a href="/rest-api.html">Introduction</a></li>
+  <li><a href="/api-entry-point.html">API entry point</a></li>
+  <li><a href="/compute-resources.html">Compute resources</a></li>
+  <ul class="nav nav-list">
+    <li><a href="/realms.html">Realms</a></li>
+    <li><a href="/hardware-profiles.html">Hardware profiles</a></li>
+    <li><a href="/images.html">Images</a></li>
+    <li><a href="/instance-states.html">Instance states</a></li>
+    <li><a href="/instances.html">Instances</a></li>
+    <li class="active"><a href="#keys">Keys</a></li>
+    <li><a href="/firewalls.html">Firewalls</a></li>
+    <li><a href="/addresses.html">Addresses</a></li>
+    <li><a href="/load-balancers.html">Load balancers</a></li>
+  </ul>
+  <li><a href="/storage-resources.html">Storage resources</a></li>
+</ul>
+
+  </div>
+</div>
+
+<p>Example request:</p>
+
+<pre>
+GET /api/keys?format=xml HTTP/1.1
+Authorization: Basic AU1J3UB2121Afd1DdyQWxLaTYTmJMNF4zTXBoRGdhMDh2RUw5ZDAN9zVXVa==
+User-Agent: curl/7.20.1 (i386-redhat-linux-gnu)
+Host: localhost:3001
+Accept: */*
+</pre>
+
+<p>Server response:</p>
+
+<pre>
+HTTP/1.1 200 OK
+Content-Type: application/xml
+Date: Tue, 26 Jul 2011 08:09:26 GMT
+Content-Length: 733
+
+&lt;?xml version='1.0' encoding='utf-8' ?&gt;
+&lt;keys&gt;
+  &lt;key href='http://localhost:3001/api/keys/deltacloud_jsmith' id='deltacloud_jsmith' type='key'&gt;
+    &lt;actions&gt;
+      &lt;link href='http://localhost:3001/api/keys/deltacloud_jsmith' method='delete' rel='destroy' /&gt;
+    &lt;/actions&gt;
+    &lt;fingerprint&gt;38:93:81:11:83:c2:c7:27:e8:79:17:e2:08:c9:13:99:73:90:8e:cc&lt;/fingerprint&gt;
+    &lt;state&gt;AVAILABLE&lt;/state&gt;
+  &lt;/key&gt;
+  &lt;key href='http://localhost:3001/api/keys/the_key' id='the_key' type='key'&gt;
+    &lt;actions&gt;
+      &lt;link href='http://localhost:3001/api/keys/the_key' method='delete' rel='destroy' /&gt;
+    &lt;/actions&gt;
+    &lt;fingerprint&gt;39:d3:9b:bb:93:92:97:27:e9:7d:b7:e2:09:9d:b3:dd:73:d0:9e:99&lt;/fingerprint&gt;
+    &lt;state&gt;AVAILABLE&lt;/state&gt;
+  &lt;/key&gt;
+&lt;/keys&gt;
+</pre>
+
+<h4>Get the description of a key</h4>
+
+<p>
+To get the XML description for a specific key use call <strong>GET /api/keys/:id</strong>. The example below shows a key of type <strong>password</strong> from the Gogrid cloud:
+</p>
+
+<p>Example request:</p>
+
+<pre>
+GET /api/keys/72398?format=xml HTTP/1.1
+Authorization: Basic AU1J3UB2121Afd1DdyQWxLaTYTmJMNF4zTXBoRGdhMDh2RUw5ZDAN9zVXVa==
+User-Agent: curl/7.21.2 (x86_64-apple-darwin10.3.1)
+Host: localhost:3001
+Accept: */*
+</pre>
+
+<p>Server response:</p>
+
+<pre>
+HTTP/1.1 200 OK
+Content-Type: application/xml
+Date: Tue, 26 Jul 2011 11:13:25 GMT
+Content-Length: 269
+
+&lt;?xml version='1.0' encoding='utf-8' ?&gt;
+&lt;key href='http://localhost:3001/api/keys/72398' id='72398' type='password'&gt;
+    &lt;actions&gt;
+    &lt;/actions&gt;
+    &lt;username&gt;&lt;![CDATA[26648]]&gt;&lt;/username&gt;
+    &lt;password&gt;&lt;![CDATA[3woc7UWdJsJEcm8@]]&gt;&lt;/password&gt;
+    &lt;state&gt;&lt;/state&gt;
+&lt;/key&gt;
+</pre>
+
+<h4 id="create">Create a new key</h4>
+
+<p>
+To create a new key use call <strong>POST /api/keys</strong>. Some back-end cloud providers allow a client to create new credentials for accessing Instances. The parameters (key attributes) required by this function will depend on the back-end and are specified in the relevant driver. At present only the Amazon EC2 cloud implements a key create method and this requires the key name to be specified as a parameter. It should be noted that the private key attribute of a newly created key is reported only once, in response to the create operation as shown in the example below. The client should save the private key for future use with instance authentication. In all subsequent calls, only the fingerprint attribute is displayed in the Deltacloud server response, as illustrated by the <a href="#get">GET /api/keys</a> call above.
+</p>
+
+<p>
+Note that as with other HTTP POST calls in the Deltacloud REST API, client requests may specify the required parameters as multipart/form-data, or using the application/x-www-form-urlencoded content type.
+</p>
+
+<p>Example request:</p>
+
+<pre>
+POST /api/keys?format=xml HTTP/1.1
+Authorization: Basic AU1J3UB2121Afd1DdyQWxLaTYTmJMNF4zTXBoRGdhMDh2RUw5ZDAN9zVXVa==
+User-Agent: curl/7.20.1 (i386-redhat-linux-gnu)
+Host: localhost:3001
+Accept: */*
+Content-Length: 19
+Content-Type: application/x-www-form-urlencoded
+
+name=jsmith_new_key
+</pre>
+
+<p>Server response:</p>
+
+<pre>
+HTTP/1.1 201 Created
+Content-Type: application/xml
+Date: Tue, 26 Jul 2011 10:58:58 GMT
+Content-Length: 2062
+
+&lt;?xml version='1.0' encoding='utf-8' ?&gt;
+&lt;key href='http://localhost:3001/api/keys/jsmith_new_key' id='jsmith_new_key' type='key'&gt;
+  &lt;actions&gt;
+    &lt;link href='http://localhost:3001/api/keys/jsmith_new_key' method='delete' rel='destroy' /&gt;
+  &lt;/actions&gt;
+  &lt;fingerprint&gt;c6:80:5c:0a:b8:66:0d:58:5a:bf:0f:c2:5d:35:d3:c7:49:f3:5a:5f&lt;/fingerprint&gt;
+  &lt;pem&gt;
+    &lt;![CDATA[-----BEGIN RSA PRIVATE KEY-----
+    MIIEpgIBAAKCAQEAsPIzLQEpoLkxd0WESPEWQ4AMn9e0T6jHIMl/a2GUx2TA2Q10n6i5h4VAXXrK
+    m9fNnPJhw1uRbuL7Oz57QSftGUfz05EaLOsvIEq3OXA0HqnFPF7Dd4yvy07KfgNHe2c26NqIqxgw
+    GCy6tfd/9iKQIlFCG8I/M6fgEG/vw30GP5EywYLS0J7lYfNHJAVAznjX0LoOWvT0zYajZ7gWJ30/
+    sQ/IFaKxC3BpT6K2aQP+RgAimALHinFuoT4+07SsrQXEezLemAG/gdbw3+7DL9BGq0CCoY1RxeC7
+    qNh9BJwHtq9QPYg/RKruiYak/TSoB71/VP67lJv0WEkCRJKEFpz5SQIDAQABAoIBAQChVyZcmdvI
+    JjS5aVSWYeWIBMD+GmPZ4q428iPR2LcdHHxPLVqyndkVfeXTlrwZX6umuMd1pw+zyRmEypL+NRaW
+    36mutnbkkEl3K0loASw07V3fjxSx9EDyo1Q1lG3gUpuZtHG7eCGaWWahtxwhZSCBehBKWVLhmefP
+    dRFs8Zn56LhfxByS/HcmHYddq1ggynFgg1DszYKTiJ0k5Zd/w4gh3GXH02S50cNFumJh9tbZNeDz
+    yqa6a12N21loZ/VRRL7lEjpf3K2n0DCQ5pp0I9/FiwuwHMWr6qPSsQt9N/XclNiVg7fz+btNsqVY
+    US1kBkvazoaANmF3VOXT9bmiFnuBAoGBAOkURD2uBe9UUl7xvWON7yS+tBcs1KyYDsTEhsS5dLdk
+    n73/5vyEVzozdywTR7lQWVQhWWwkK/FJd9Xo/VV5bGXl+MK/JxIQHrEhLzO1OeYEBiw2eKhigyDb
+    lm7pk/DuBNqgnA9YVnSvRYjpnvgBeb89CHvdhqn52GcbB2ShXurRAoGBAMJYyqNyl8CiIqesigts
+    tlRk0UmS/LS6I58f7nbcrkgO3ZDsYhXhj9aKSJx56bpWTwoFdl7nTSUwkFgq2ts3g7EPQbYD/5G6
+    kwpq0tvC23zZTfYvjExNVORh9PJBCrBl1tC/5nqYSrHC7H3Ys/SW3DF+0LPTdOtx5FwL5Utr3lT5
+    AoGBAM3Y8EvpHaS5O+ZOaY07FTHGmxa8qTelM6XkS4ICqGovnEUZdM8fskncmit6+6VWqQ38RhWT
+    /Jsk34k0NEkA7BMyf/i/CaqSQgj93co1C+VxOGJj2TwdhOHIDZv2/omSLQdJQYrr4a87/JVmftdZ
+    tkSHiq6afwwvdEfbPzRIsKOBAoGBAK5EjEAP6z+So1yS/J3N95ipZnmA0hUErBhtu5jdvXFj0w22
+    ySUxw5bvHLkjIJA0AF/OEhx7b9OfPm+wzdqwZugH9DZQU4TLNjqrGzRv//xtptjQPg/Vb//yToBE
+    Dl+qkftReEwJ70CCtykJfiQeeofvXRlCzZ6p28kl6Y+9w/mRAoGBANI8AGB1iUDMQDiEfTAuH7jB
+    nZTZUsfAaysoku3gyVmtcu1Zo7T02b8YW3ypuNu664KO7eNik9q68yKa7oDuLVrVj6Sh2DInoeW9
+    vbjp2KcyMVEPHzWh86LV9IY5oHjQxlK/PMhQWMEeysi6j2qFqrx2rqRhG6kZUcFHFoHQpmv2
+    -----END RSA PRIVATE KEY-----]]&gt;
+  &lt;/pem&gt;
+  &lt;state&gt;AVAILABLE&lt;/state&gt;
+&lt;/key&gt;
+</pre>
+
+<h4>Delete a key</h4>
+
+<p>
+To delete a key, specified by its <strong>:id</strong> attribute use call <strong>DELETE /api/keys/:id</strong>. Note that as with the :create operation, this feature is currently only available in the Amazon EC2 driver.
+</p>
+
+<p>Example request:</p>
+
+<pre>
+DELETE /api/keys/jsmith_new_key?format=xml HTTP/1.1
+Authorization: Basic AU1J3UB2121Afd1DdyQWxLaTYTmJMNF4zTXBoRGdhMDh2RUw5ZDAN9zVXVa==
+User-Agent: curl/7.20.1 (i386-redhat-linux-gnu)
+Host: localhost:3001
+Accept: */*
+</pre>
+
+<p>Server response:</p>
+
+<pre>
+HTTP/1.1 204 No Content
+Date: Tue, 26 Jul 2011 10:18:38 GMT
+</pre>
+
+<a class="btn btn-inverse btn-large" style="float: right" href="/firewalls.html">Firewalls <i class="icon-arrow-right icon-white" style="vertical-align:baseline"> </i></a>
+
+<br/>



Mime
View raw message