deltacloud-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From mar...@apache.org
Subject svn commit: r1353588 [11/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/#load-balancers.md#
URL: http://svn.apache.org/viewvc/deltacloud/trunk/site/output/%23load-balancers.md%23?rev=1353588&view=auto
==============================================================================
--- deltacloud/trunk/site/output/#load-balancers.md# (added)
+++ deltacloud/trunk/site/output/#load-balancers.md# Mon Jun 25 15:05:02 2012
@@ -0,0 +1,317 @@
+---
+site_name: Deltacloud API
+title: Load balancers
+---
+
+<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="load">Load balancers</h3>
+
+<p>
+Load balancers allow distribution of ingress network traffic received by a specified IP address to a number of running instances. For example, a number of instances that are fulfilling the role of web servers can be attached to a single load_balancer. It allows you to handle a large number of requests without influence on website performance.
+</p>
+
+<p>
+This collection is not supported by all back-end cloud providers and at present, it is implemented for the Gogrid and Amazon EC2 cloud drivers. A load_balancer is launched into a specific realm and typically only instances within this realm may be 'attached' to the balancer. Each load_balancer also has a <strong>list of instances</strong>, a <strong>public address</strong> representing the IP address that the balancer will respond on to client requests, a <strong>created_at</strong> timestamp and a list of <strong>listeners</strong>. Each <strong>listener</strong> has a <strong>protocol</strong> (e.g. TCP), a <strong>load balancer port</strong> and an <strong>instance port</strong>. The load balancer represents the port on which the balancer accepts connections. The instance port represents the port on which network traffic is forwarded to instances in the <strong>instance list</strong>.
+</p>
+
+<h4>Get a list of all buckets</h4>
+
+<p>
+To retrieve details of all load_balancers use call <strong>GET /api/load_balancers</strong>.
+</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><a href="/keys.html">Keys</a></li>
+    <li><a href="/firewalls.html">Firewalls</a></li>
+    <li><a href="/addresses.html">Addresses</a></li>
+    <li class="active"><a href="#load">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 details</a></li>
+  <li><a href="#tab2" data-toggle="tab">Get the deteails of an address</a></li>
+  <li><a href="#tab3" data-toggle="tab">Create/delete an address</a></li>
+  <li><a href="#tab4" data-toggle="tab">Associate/disassociate an address</a></li>
+</ul>
+
+<div class="tab-content">
+  <div class="tab-pane active" id="tab1">
+  
+
+<h4>Get a list of all buckets</h4>
+
+<p>
+To retrieve details of all load_balancers use call <strong>GET /api/load_balancers</strong>.
+</p>
+
+<p>
+Example request:
+</p>
+
+<pre>
+GET /api/load_balancers?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: Thu, 28 Jul 2011 13:37:19 GMT
+Content-Length: 1844
+
+&lt;?xml version='1.0' encoding='utf-8' ?&gt;
+&lt;load_balancers&gt;
+  &lt;load_balancer href='http://localhost:3001/api/load_balancers/webtraffic-balancer' id='webtraffic-balancer'&gt;
+    &lt;actions&gt;
+      &lt;link href='http://localhost:3001/api/load_balancers/webtraffic-balancer' method='delete' rel='destroy' /&gt;
+      &lt;link href='http://localhost:3001/api/load_balancers/webtraffic-balancer/register' method='post' rel='register' /&gt;
+    &lt;/actions&gt;
+    &lt;public_addresses&gt;
+      &lt;address&gt;webtraffic-balancer-1306196965.us-east-1.elb.amazonaws.com&lt;/address&gt;
+    &lt;/public_addresses&gt;
+    &lt;created_at&gt;Thu Jul 28 13:29:52 UTC 2011&lt;/created_at&gt;
+    &lt;realm href='http://localhost:3001/api/realms/us-east-1a' id='us-east-1a'&gt;&lt;/realm&gt;
+    &lt;listeners&gt;
+      &lt;listener protocol='HTTP'&gt;
+        &lt;load_balancer_port&gt;80&lt;/load_balancer_port&gt;
+        &lt;instance_port&gt;3001&lt;/instance_port&gt;
+      &lt;/listener&gt;
+    &lt;/listeners&gt;
+    &lt;instances&gt;
+    &lt;/instances&gt;
+  &lt;/load_balancer&gt;
+  &lt;load_balancer href='http://localhost:3001/api/load_balancers/secure-site-balancer' id='secure-site-balancer'&gt;
+    &lt;actions&gt;
+      &lt;link href='http://localhost:3001/api/load_balancers/secure-site-balancer' method='delete' rel='destroy' /&gt;
+      &lt;link href='http://localhost:3001/api/load_balancers/secure-site-balancer/register' method='post' rel='register' /&gt;
+    &lt;/actions&gt;
+    &lt;public_addresses&gt;
+      &lt;address&gt;secure-site-balancer-1347100846.us-east-1.elb.amazonaws.com&lt;/address&gt;
+    &lt;/public_addresses&gt;
+    &lt;created_at&gt;Thu Jul 28 13:36:29 UTC 2011&lt;/created_at&gt;
+    &lt;realm href='http://localhost:3001/api/realms/us-east-1a' id='us-east-1a'&gt;&lt;/realm&gt;
+    &lt;listeners&gt;
+      &lt;listener protocol='HTTP'&gt;
+        &lt;load_balancer_port&gt;443&lt;/load_balancer_port&gt;
+        &lt;instance_port&gt;443&lt;/instance_port&gt;
+      &lt;/listener&gt;
+    &lt;/listeners&gt;
+    &lt;instances&gt;
+    &lt;/instances&gt;
+  &lt;/load_balancer&gt;
+&lt;/load_balancers&gt;
+</pre>
+
+<h4>Get the details for a load balancer</h4>
+
+<p>To retrieve details for a specific load balancer use call <strong>GET /api/load_balancers/:id</strong>.</p>
+
+<p>Example request:</p>
+
+<pre>
+GET /api/load_balancers/secure-site-balancer?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: Thu, 28 Jul 2011 18:11:49 GMT
+Content-Length: 1361
+
+&lt;?xml version='1.0' encoding='utf-8' ?&gt;
+&lt;load_balancer href='http://localhost:3001/api/load_balancers/secure-site-balancer' id='secure-site-balancer'&gt;
+  &lt;actions&gt;
+    &lt;link href='http://localhost:3001/api/load_balancers/secure-site-balancer' method='delete' rel='destroy' /&gt;
+    &lt;link href='http://localhost:3001/api/load_balancers/secure-site-balancer/register' method='post' rel='register' /&gt;
+  &lt;/actions&gt;
+  &lt;public_addresses&gt;
+    &lt;address&gt;secure-site-balancer-1347100846.us-east-1.elb.amazonaws.com&lt;/address&gt;
+  &lt;/public_addresses&gt;
+  &lt;created_at&gt;Thu Jul 28 13:36:29 UTC 2011&lt;/created_at&gt;
+  &lt;realm href='http://localhost:3001/api/realms/us-east-1a' id='us-east-1a'&gt;&lt;/realm&gt;
+  &lt;listeners&gt;
+    &lt;listener protocol='HTTP'&gt;
+      &lt;load_balancer_port&gt;443&lt;/load_balancer_port&gt;
+      &lt;instance_port&gt;443&lt;/instance_port&gt;
+    &lt;/listener&gt;
+  &lt;/listeners&gt;
+  &lt;instances&gt;
+    &lt;instance href='http://localhost:3001/api/instances/i-4f06b52e' id='i-4f06b52e'&gt;
+      &lt;link href='http://localhost:3001/api/load_balancers/secure-site-balancer/unregister?instance_id=i-4f06b52e' rel='unregister' /&gt;
+    &lt;/instance&gt;
+    &lt;instance href='http://localhost:3001/api/instances/i-d706b5b6' id='i-d706b5b6'&gt;
+      &lt;link href='http://localhost:3001/api/load_balancers/secure-site-balancer/unregister?instance_id=i-d706b5b6' rel='unregister' /&gt;
+    &lt;/instance&gt;
+  &lt;/instances&gt;
+&lt;/load_balancer&gt;
+</pre>
+
+<h4>Create a load balancer</h4>
+
+<p>
+To create a new load_balancer use call <strong>POST /api/load_balancers</strong>. Clients must provide the load_balancer <strong>name</strong>, the <strong>realm_id</strong> to which the balancer is applied, a <strong>listener_protocol</strong> which the balancer will respond to (one of <strong>HTTP</strong> or <strong>TCP</strong>), the <strong>listener_balancer_port</strong> which specifies the port that the load_balancer will be expecting network traffic on and finally the <strong>listener_instance_port</strong> which specifies the port on which instances will be receiving network traffic forwarded by the load_balancer. As with other operations in the Deltacloud API, parameters may be specified by a requesting client using multipart/form-data or as application/x-www-form-urlencoded data.
+</p>
+
+<p>Example request:</p>
+
+<pre>
+OST /api/load_balancers?format=xml HTTP/1.1
+Authorization: Basic AU1J3UB2121Afd1DdyQWxLaTYTmJMNF4zTXBoRGdhMDh2RUw5ZDAN9zVXVa==
+User-Agent: curl/7.20.1 (i386-redhat-linux-gnu)
+Host: localhost:3001
+Accept: */*
+Content-Length: 121
+Content-Type: application/x-www-form-urlencoded
+
+name=webtraffic-balancer&realm_id=us-east-1c&listener_protocol=HTTP&
+listener_balancer_port=80&listener_instance_port=3001
+</pre>
+
+<p>Server response:</p>
+
+<pre>
+HTTP/1.1 201 Created
+Content-Type: application/xml
+Date: Thu, 28 Jul 2011 13:30:05 GMT
+Content-Length: 884
+
+&lt;?xml version='1.0' encoding='utf-8' ?&gt;
+&lt;load_balancer href='http://localhost:3001/api/load_balancers/webtraffic-balancer' id='webtraffic-balancer'&gt;
+  &lt;actions&gt;
+    &lt;link href='http://localhost:3001/api/load_balancers/webtraffic-balancer' method='delete' rel='destroy' /&gt;
+    &lt;link href='http://localhost:3001/api/load_balancers/webtraffic-balancer/register' method='post' rel='register' /&gt;
+  &lt;/actions&gt;
+  &lt;public_addresses&gt;
+    &lt;address&gt;webtraffic-balancer-1306196965.us-east-1.elb.amazonaws.com&lt;/address&gt;
+  &lt;/public_addresses&gt;
+  &lt;created_at&gt;Thu Jul 28 13:29:52 UTC 2011&lt;/created_at&gt;
+  &lt;realm href='http://localhost:3001/api/realms/us-east-1a' id='us-east-1a'&gt;&lt;/realm&gt;
+  &lt;listeners&gt;
+    &lt;listener protocol='HTTP'&gt;
+      &lt;load_balancer_port&gt;80&lt;/load_balancer_port&gt;
+      &lt;instance_port&gt;3001&lt;/instance_port&gt;
+    &lt;/listener&gt;
+  &lt;/listeners&gt;
+  &lt;instances&gt;
+  &lt;/instances&gt;
+&lt;/load_balancer&gt;
+</pre>
+
+<h4>Delete a load balancer</h4>
+
+<p>To delete the specified load_balancer from the back-end cloud provider use call <strong>DELETE /api/load_balancers/:id</strong>. The Deltacloud server will respond with <strong>HTTP 204 No Content</strong> for a succesful operation:</p>
+
+<p>Example request:</p>
+
+<pre>
+DELETE /api/load_balancers/webtraffic-balancer?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: Thu, 28 Jul 2011 13:23:33 GMT
+</pre>
+
+<h4>Register an instance with a load balancer</h4>
+
+<p>
+To register a running instance with a specified load_balancer use call <strong>POST /api/load_balancers/:id/register</strong>. Clients must provide the <strong>instance_id</strong> as a parameter to the request. The Deltacloud server will respond with a <strong>HTTP 204 No Content</strong> after a succesful operation. The Deltacloud server will accept client request parameters encoded as multipart/form-data or as application/x-www-form-urlencoded data.
+</p>
+
+<p>Example request:</p>
+
+<pre>
+POST /api/load_balancers/secure-site-balancer/register?format=xml HTTP/1.1
+Authorization: Basic AU1J3UB2121Afd1DdyQWxLaTYTmJMNF4zTXBoRGdhMDh2RUw5ZDAN9zVXVa==
+User-Agent: curl/7.20.1 (i386-redhat-linux-gnu)
+Host: localhost:3001
+Accept: */*
+Content-Length: 22
+Content-Type: application/x-www-form-urlencoded
+
+instance_id=i-4f06b52e
+</pre>
+
+Server response:
+
+<pre>
+HTTP/1.1 204 No Content
+Date: Thu, 28 Jul 2011 18:20:03 GMT
+</pre>
+
+<h4>Unreagister an instance from a load balancer</h4>
+
+<p>
+To unregister a specified instance from the given load_balancer use call <strong>POST /api/load_balancers/:id/unregister</strong>. The client must supply the <strong>instance_id</strong> parameter to identify the instance, either as multipart/form-data or as application/x-www-form-urlencoded data.
+</p>
+
+<p>Example request:</p>
+
+<pre>
+POST /api/load_balancers/secure-site-balancer/unregister?format=xml HTTP/1.1
+Authorization: Basic AU1J3UB2121Afd1DdyQWxLaTYTmJMNF4zTXBoRGdhMDh2RUw5ZDAN9zVXVa==
+User-Agent: curl/7.20.1 (i386-redhat-linux-gnu)
+Host: localhost:3001
+Accept: */*
+Content-Length: 22
+Content-Type: application/x-www-form-urlencoded
+
+instance_id=i-4f06b52e
+</pre>
+
+<p>Server response:</p>
+
+<pre>
+HTTP/1.1 204 No Content
+Date: Thu, 28 Jul 2011 19:09:17 GMT
+</pre>
+
+<a class="btn btn-inverse btn-large" style="float: right" href="/storage-resources.html">Storage resources <i class="icon-arrow-right icon-white" style="vertical-align:baseline"> </i></a>
+
+<br/>

Added: deltacloud/trunk/site/output/#rest-api.md#
URL: http://svn.apache.org/viewvc/deltacloud/trunk/site/output/%23rest-api.md%23?rev=1353588&view=auto
==============================================================================
--- deltacloud/trunk/site/output/#rest-api.md# (added)
+++ deltacloud/trunk/site/output/#rest-api.md# Mon Jun 25 15:05:02 2012
@@ -0,0 +1,184 @@
+--- 
+site_name: Deltacloud API
+title: REST API
+---
+
+<br/>
+
+<div class="row">
+  <div class="span9">
+
+<h3 id="rest">REST API</h3>
+
+<p>
+Apache Deltacloud is a REST-based (HATEOAS) cloud abstraction API. It enables management of resources in different IaaS clouds using a single API. There are back-end drivers communicating with each cloud provider's native API and the Deltacloud Core Framework provides the basis for implementing drivers to new IaaS clouds. Apache Deltacloud currently supports many back-end <a href="/drivers.html#drivers">cloud providers</a>.
+</p>
+
+<p>
+With Deltacloud project, you don't have to limit yourself to a single cloud provider. Instead of taking care of a number of clouds, you are dealing with just one API abstraction.
+</p>
+
+<h3 id="collections">Collections</h3>
+
+<p style="margin-bottom:0px">
+The following terms describe abstractions used in the Apache Deltacloud API. Each collection represents an entity in the back-end provider cloud, such as a running virtual server or a server image. Please note that the list of supported collections may differ from cloud to cloud. Only the appropriate collections are exposed for a given back-end driver (e.g. the Microsoft Azure driver currently exposes only the Buckets collection).
+</p>
+
+  </div>
+  <div class="span3">
+
+<ul class="nav nav-list well">
+  <li class="nav-header">
+    REST API
+  </li>
+  <li class="active"><a href="#rest">Introduction</a></li>
+  <ul class="nav nav-list">
+    <li><a href="#collections">Collections</a></li>
+    <li><a href="#requests">Client requests</a></li>
+    <li><a href="#auth">Authentication</a></li>
+    <li><a href="#response">Server responses</a></li>
+    <li><a href="#conv">API conventions</a></li>
+    <li><a href="#stab">API stability</a></li>
+    <li><a href="#doc">Online documentation</a></li>
+  </ul>
+  <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>
+
+  </div>
+</div>
+
+<dl class="dl dl-horizontal">
+<dt><h4>Realms</h4></dt>
+  <dd>
+  A distinct organizational unit within the back-end cloud, for exapmle a datacenter. A realm may but does not necessarily represent the geographical location of the compute resources which you access.
+  </dd>
+  <dt><h4>Instances</h4></dt>
+  <dd>
+  A realized virtual server, running in a given back-end cloud. Instances are instantiated from server images.
+  </dd>
+  <dt><h4>Images</h4></dt>
+  <dd>
+  Templates (virtual machine images) from which instances are created. Each image defines the root partition and initial storage for the instance operating system.
+  <dt><h4>Instance states</h4></dt>
+  <dd>
+  Instance states represent the instance lifecycle. at any time an instance is in one of states: start, pending, running, stopped, shutting_down, finished.
+  </dd>
+  <dt><h4>Keys</h4></dt>
+  <dd>
+  Keys represent credentials used to access a running instance. Keys can take the form of key (e.g. an RSA key) or of password (with username and password attributes).
+  </dd>
+  <dt><h4>Storage volume</h4></dt>
+  <dd>
+  A virtual storage device that can be attached to an instance and mounted by the OS.
+  </dd>
+  <dt><h4>Storage snapshot</h4></dt>
+  <dd>
+  Storage snapshots are copies, snapshots of a storage volume at a specified time.
+  </dd>
+  <dt><h4>Bucket</h4></dt>
+  <dd>
+  A container for data blobs. The organizational unit of a generic key ==> value based on data store (such as Rackspace CloudFiles or Amazon S3). Individual data items, blobs, are exposed as a subcollection under a bucket.
+  </dd>
+  <dt><h4>Blob</h4></dt>
+  <dd>
+  A generic binary data item that exists within a specified bucket (an object in Amazon S3 and Rackspace CloudFiles).
+  </dd>
+  <dt><h4>Address</h4></dt>
+  <dd>
+  Address represents an IP address. Depending on the back-end cloud provider address can be public or private. Public address represents a unique, globally routable IP address, private address represents an address routable only within a private network.
+  </dd>
+  <dt><h4>Load Balancer</h4></dt>
+  <dd>
+  A load balancer allows a distribution of ingress network traffic received by a specified IP address to a number of instances.
+  </dd>
+  <dt><h4>Firewalls</h4></dt>
+  <dd>Sets of rules that govern the accessibility of a running instance over the public Internet.
+  </dd>
+  <dt><h4>Metrics</h4></dt>
+  <dd>
+  Metrics collection provides useful information about your cloud resources, e.g. CPU utilization or network throughput. It may be helpful for developers for better scaling and monitoring. The collection is currently supported only for Amazon EC2 cloud. It collects information from Amazon CloudWatch service.
+  </dd>
+</dl>
+
+<h3 id="requests">Client Requests</h3>
+
+<p>
+In accordance with REST principles, clients make requests through HTTP with the usual meanings assigned to the standard HTTP verbs GET, POST, PUT, and DELETE.
+</p>
+
+<p>
+Beyond the generally accepted REST design principles, Apache Deltacloud follows the guidelines discussed in the Fedora Project <a href="http://fedoraproject.org/wiki/Cloud_APIs_REST_Style_Guide">Cloud APIs Rest Style Guide</a>.
+</p>
+
+<p>
+The URL space of the API is structured into collections of resources. The top level entities used in the Deltacloud API are: realms, images, instance states, instances, keys, storage volume, storage snapshots, blob storage, hardware profiles and drivers.
+</p>
+
+<h3 id="auth">Authentication</h3>
+
+<p>
+The Deltacloud API server is stateless and does not keep any information about the current client. The Deltalcloud server does not store the credentials for the back-end cloud, which the server is talking to. Instead, the server uses HTTP basic authentication and clients have to send the username/password for the back-end cloud on every request.
+</p>
+
+<p>
+The specifics of what needs to be sent varies from cloud to cloud; some cloud providers request a username and password for API access, the others use special-purpose API keys. Check the list of the <a href="/drivers.html#credentials">credentials</a> to find out what kind of information a specific cloud provider expects.
+</p>
+
+<h3 id="response">Server responses</h3>
+
+<p>
+The server can respond to client requests in various formats. The appropriate response format is determined by HTTP content negotiation. The primary format is XML, which is the basis for this document. Output is also available as JSON and as HTML (mostly for tesing). Clients can also explicitly request a specific response format by including the <strong>format=</strong> request parameter (e.g. http://deltacloudserver.foo/api?format=xml or http://deltacloudserver.foo/api?format=json).
+</p>
+
+<p>
+In general (especially for the HTML interface), list operations such as <strong>GET /api/realms</strong> will provide a list of objects of this resource type with only brief details. Full details can be retrieved by making a request <strong>GET /api/realms/:id</strong> to the URL of the individual realm.
+</p>
+
+<h3 id="conv">API conventions</h3>
+
+<p>
+Any XML element, which represents an object (such as an instance), has a <strong>href</strong> and an <strong>id</strong> attribute. The href attribute provides the URL at which object-specific actions can be performed (e.g. a GET action applied to the URL will return details of the object). The id provides an identifier of the object, which is unique within its collection (there is a unique id for each Instance, Image, Realm etc).
+</p>
+
+<p>
+Objects also have a human-readable name. The name is provided in a <code>&lt;name/&gt;</code> child element of the object’s container tag.
+</p>
+
+<h3 id="stab">API stability and evolution</h3>
+
+<p>
+Every change to the API is made in a way that allows old clients to work against newer versions of the the API server.
+</p>
+
+<p>
+You may come across the following changes in newer versions of the API:
+</p>
+
+<ul>
+  <li>adding new collections, or supporting new operations on existing collections</li>
+  <li>adding optional parameters to existing operations</li>
+  <li>adding additional attributes and elements to the XML/JSON responses</li>
+</ul>
+
+<p>
+On the other hand, these changes would violate API stability and therefore they are not made:
+</p>
+
+<ul>
+  <li>removing an operation on a collection</li>
+  <li>making an optional parameter for an operation mandatory</li>
+  <li>removing attributes or elements from XML responses</li>
+</ul>
+
+<h3 id="doc">Online documentation</h3>
+
+<p>
+Automatically generated documentation can be accessed on every server running the Deltacloud Core API service through the URL <a href="http://localhost:3001/api/docs/">http://localhost:3001/api/docs/</a>. The documentation is both available in HTML and XML, though the XML format is not part of this specification, and may change in an incompatible way.
+</p>
+
+<a class="btn btn-inverse btn-large" style="float: right" href="/api-entry-point.html">API entry point <i class="icon-arrow-right icon-white" style="vertical-align:baseline"> </i></a>
+
+<br/>
+

Added: deltacloud/trunk/site/output/#run-deltacloud-server.md#
URL: http://svn.apache.org/viewvc/deltacloud/trunk/site/output/%23run-deltacloud-server.md%23?rev=1353588&view=auto
==============================================================================
--- deltacloud/trunk/site/output/#run-deltacloud-server.md# (added)
+++ deltacloud/trunk/site/output/#run-deltacloud-server.md# Mon Jun 25 15:05:02 2012
@@ -0,0 +1,50 @@
+--- 
+site_name: Deltacloud API
+title: Run the Deltacloud server
+---
+<br/>
+<h2> Quick-start guide</h2>
+<p>This guide focuses on a linux environment. Some of the Deltacloud developers are running recent versions of <a href="http://fedoraproject.org/">Fedora</a>. However, you should be able to install Deltacloud on any OS that supports Ruby. If you are having any problems with installation, please <a href="/contact.html">let us know</a>, we'd love to hear from you!</p>
+
+<h3>Running the Deltacloud server</h3>
+<p>Start the server by typing <strong>deltacloudd -i driver_id</strong>.</p>
+<p>The <strong>driver_id</strong> is the name of the cloud provider that you have an account with, for example <code>deltacloudd -i ec2</code>.</p>
+<p>If you don't yet have an account with a cloud provider, you can still try the Deltacloud mock driver:</p> 
+<pre>deltacloudd -i mock</pre>
+<p>This will start the Deltacloud server on your local machine with the mock driver, accepting connections on port 3001 (default). From version 0.4.0 of Deltacloud, you can use the '-l' flag to see all available <strong>driver_ids</strong> that can be used with the <strong>deltacloudd</strong> executable:</p>
+<pre>
+$ deltacloudd -l
+
+Available drivers:
+* condor
+* vsphere
+* opennebula
+* eucalyptus
+* rhevm
+* sbc
+* azure
+* gogrid
+* mock
+* rackspace
+* rimuhosting
+* terremark
+* ec2
+</pre>
+
+<h2>Deltacloud HTML interface</h2>
+<p>After you start the server, you are ready to use the Deltacloud HTML interface.</p>
+<p>Open the following address in your web browser:</p>
+<pre>http://localhost:3001/api</pre>
+<p>To display the XML output from the server in the browser, append <strong>format=xml</strong> to each URL. On Webkit based browsers like Safari, you might need to instruct the server explicitly to <a href="http://www.gethifi.com/blog/webkit-team-admits-accept-header-error">return HTML</a>. Do this by appending <strong>format=html</strong> to each URL.</p>
+<p>Your browser will prompt you for credentials when you invoke an operation that requires authentication.</p>
+
+The '-h' flag will list all available options for deltacloudd. For example, to start the Deltacloud server with the Rackspace driver on port 10000 you can use:</p>
+
+<pre>$ deltacloudd -i rackspace -p 10000</pre>
+
+<p>You may want to install the server on another machine and make Deltacloud available on your local network. To do this you need to bind the Deltacloud server to an address other than 'localhost' (default). For instance, if you install and start Deltacloud on a machine with the IP address 192.168.10.200 you should start the server with:</p>
+
+<pre>$ deltacloudd -i ec2 -p 5000 -r 192.168.10.200</pre>
+
+<p>This will make the Deltacloud server available at the address <strong>http://192.168.10.200:5000/api</strong>.</p>
+

Added: deltacloud/trunk/site/output/#send-patch.md#
URL: http://svn.apache.org/viewvc/deltacloud/trunk/site/output/%23send-patch.md%23?rev=1353588&view=auto
==============================================================================
--- deltacloud/trunk/site/output/#send-patch.md# (added)
+++ deltacloud/trunk/site/output/#send-patch.md# Mon Jun 25 15:05:02 2012
@@ -0,0 +1,243 @@
+---
+site_name: Deltacloud API
+title: Send a Patch
+---
+
+<br/>
+
+<h3>Formatting and sending patches</h3>
+
+<p>
+The Deltacloud community works with <a href="http://book.git-scm.com/">Git</a>. The process of contributing to the project we prefer contains these steps: <strong>local_branch → patch → review → accept → commit</strong> process for contributing to the project. This is how the typical workflow used by the core developers looks like:
+</p>
+
+<ol>
+  <li>
+  <p>
+  Set the following settings inside the git configuration file. The config file is located in the root of the Deltacloud project in a hidden <strong>.git</strong> directory. Open the config file with your preferred editor:
+  </p>
+
+<pre>
+$ vim deltacloud/.git/config
+</pre>
+
+  <p>
+  Add the following information to the configuration file and replace the relevant values with your own ones:
+  </p>
+
+<pre>
+[sendemail]
+signedoffbycc = no
+chainreplyto = no
+smtpserver = your_smpt.server.address
+thread = yes
+from = your_email_address
+suppresscc = all
+to = dev@deltacloud.apache.org
+
+[core]
+whitespace = trailing-space,space-before-tab
+
+[apply]
+whitespace = error-all
+</pre>
+
+  </li>
+  <li>
+  <p>
+  Get the latest HEAD of the Deltacloud git repo. You will gain one local branch called master:
+  </p>
+
+<pre>
+$ git branch
+* master
+</pre>
+
+  </li>
+  <li>
+  <p>
+  Fetch the latest changes from the git repo:
+  </p>
+
+<pre>
+$ git pull
+</pre>
+
+  </li>
+  <li>
+  <p>
+  Create a new local branch for your edits and give it a name:
+  </p>
+
+<pre>
+$ git checkout -b my_new_branch
+</pre>
+
+  </li>
+  <li>
+  <p>
+  Make your changes and then check, what you've edited:
+  </p>
+
+<pre>
+$ git status
+</pre>
+
+  </li>
+  <li>
+  <p>
+  Commit these changes to your local branch:
+  </p>
+
+<pre>
+$ git commit -a
+</pre>
+  
+  <p>
+  This will open an editor (e.g. vi). Enter a commit message. The message should be short and succinct and individual lines shouldn't be longer than 80 characters. See the recent commits with their commit messages to find an inspiration:</p>
+  
+<pre>
+$ git log
+</pre>
+
+  <p>
+  When you commit your changes to your local branch, the local branch will be different from your <strong>local master</strong> branch. Other developers may have already committed their changes to the <strong>remote master</strong> branch in the Apache git repo in the meantime. Thus, you need to fetch any new changes and merge them into your <strong>local master</strong>.
+  </p>
+
+  </li>
+  <li>
+  <p>
+  Change to master and fetch upstream changes (it there are any):
+  </p>
+  
+<pre>
+$ git checkout master
+$ git pull
+</pre>
+  
+  <p>
+  Your <strong>local</strong> master is now up-to-date with the <strong>remote</strong> master in the git repo.
+  </p>
+  </li>
+  <li>
+  <p>
+  Rebase the local master onto the branch containing your changes:
+  </p>
+  
+<pre>
+$ git rebase master my_new_branch
+</pre>
+  
+  <p>
+  This allows you to make patches against master and send them to the Deltacloud mailing list.
+  </p>
+  
+<pre>
+$ git format-patch -o /path/to/where/you/keep/patches/ master
+$ git send-email --compose --subject 'some subject'
+  --thread /path/to/where/you/keep/patches/*
+</pre>
+  
+  <p>
+  The other members of the community will review your patches. The patch has to receive at least one <strong>ACK </strong>and no <strong>NACK</strong> to be approved. Then the patch will be committed by one of the Deltacloud developers with commit rights to the Apache repo. If noone is responding to your patch sent to mailing list, feel free to remind yourself after few days.
+  </p>
+  </li>
+</ol>
+
+<p>
+You can also contribute to the project by reviewing patches sent by other contributors:
+</p>
+
+<ol>
+  <li>
+  <p>
+  Make a new branch where you will apply the patches and test:
+  </p>
+
+<pre>
+$ git checkout -b jsmith_patches
+</pre>
+
+  </li>
+  <li>
+  <p>
+  Save the patches to a known location and make sure you're on the right branch . Then apply.
+  </p>
+  
+<pre>
+$ git checkout jsmith_patches
+
+$ cat /path/to/patches/0001-name-of-patch.txt | git apply
+</pre>
+or
+<pre>
+$ git am /path/to/patches/0001-name-of-patch.eml
+</pre>
+
+  <p>
+  You can use <strong>git am</strong> ("apply mail") to apply patches in mail format, or <strong>git apply</strong> for plain-text patches. If you use <strong>git apply</strong>, you will only apply the patches, whereas <strong>git am</strong> will also commit the patches to the local branch (preserving the author's commit messages). However, the difference between <strong>git am</strong> and <strong>git apply</strong> is insignificant for the purpose of reviewing patches. It depends on whether you want to save the patches as plain-text or in .mbox email format.
+  </p>
+
+  </li>
+  <li>
+
+<p>
+If you think the patches are working correctly, send an <strong>ACK</strong> to the Deltacloud <a href="http://mail-archives.apache.org/mod_mbox/deltacloud-dev/">mailing list</a>. Similarly, if you think the patches could cause a problem, send a <strong>NACK</strong> and explain the issue you have found.
+</p>
+  </li>
+</ol>
+
+<a class="btn btn-inverse btn-large" style="float: right" data-toggle="modal" href="#tests">Test the driver</a>
+
+<br/>
+
+<div class="modal hide" id="tests">
+  <div class="modal-header">
+    <button class="close" data-dismiss="modal">×</button>
+    <h3>Writing and running tests</h3>
+  </div>
+  <div class="modal-body">
+
+<p>
+You should add a test to every new feature or new driver you create to make sure, that everything is running as expected. There are two different directories in the Deltacloud project, where the tests are stored: <strong>/deltacloud/server/tests</strong> for Unit tests for drivers and <strong>/deltacloud/tests</strong> for Cucumber tests.
+</p>
+
+<p>Initiate the Unit tests:</p>
+
+<pre>
+$ cd /path/to/deltacloud/server
+$ rake test
+</pre>
+
+<p>This will invoke all Unit tests defined in <strong>/deltacloud/server/tests</strong> by inspecting the Rakefile in <strong>/deltacloud/server</strong>. To invoke a specific driver tests type:</p>
+
+<pre>
+$ cd /path/to/deltacloud/server
+$ rake test:rackspace
+  _OR_
+$ rake test:mock
+  _etc_
+</pre>
+
+<p>Initiate the Cucumber tests:</p>
+
+<pre>
+$ cd /path/to/deltacloud/server
+$ rake cucumber
+</pre>
+
+<p>Alternatively, you can invoke the cucumber tests directly without using Rakefile: </p>
+
+<pre>
+$ cd /path/to/deltacloud/server
+$ cucumber ../tests/mock
+  _OR_
+$ cucumber ../tests/ec2
+  _etc_
+</pre>
+
+  </div>
+  <div class="modal-footer">
+    <a href="#" class="btn" data-dismiss="modal">Close</a>
+  </div>
+</div>

Added: deltacloud/trunk/site/output/#storage-resources.md#
URL: http://svn.apache.org/viewvc/deltacloud/trunk/site/output/%23storage-resources.md%23?rev=1353588&view=auto
==============================================================================
--- deltacloud/trunk/site/output/#storage-resources.md# (added)
+++ deltacloud/trunk/site/output/#storage-resources.md# Mon Jun 25 15:05:02 2012
@@ -0,0 +1,333 @@
+---
+site_name: Deltacloud API
+title: Storage resources
+---
+
+<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="resources">Storage resources</h3>
+
+<p>
+Storage resources are divided into two groups: storage volumes can be attached to a running instance (accessible by the instance OS), and blob storage which represents a generic 'key &lt;−−&gt; value' based data store, as implemented by Rackspace CloudFiles or Amazon S3. Storage snapshots represent a storage volume, a backup which is created at a particular point of time (a snapshot).
+</p>
+
+<h3 id="volumes">Storage Volumes</h3>
+
+<p style="margin-bottom:0px">
+A storage_volume has a <strong>capacity</strong> expressed in Gigabytes, a <strong>created</strong> timestamp, a <strong>realm_id</strong> specifying the realm in which the volume exists, a <strong>state</strong> (for Amazon EC2 this is one of creating | available | in-use | deleting | deleted | error) and a set of <strong>actions</strong>. When attached to an instance, a storage_volume will also expose a <strong>mount</strong> element
+</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 class="active"><a href="#resources">Storage resources</a></li>
+  <ul class="nav nav-list">
+    <li><a href="#volumes">Storage volumes</a></li>
+    <li><a href="/storage-snapshots.html">Storage snaphots</a></li>
+    <li><a href="/blob-storage.html">Blob storage</a></li>
+  </ul>
+</ul>
+
+  </div>
+</div>
+
+
+<p style="margin-top:0px">
+which contains the attributes <strong>instance </strong>and <strong>device</strong>, specifying the instance to which the volume is attached and the mount point (e.g. /dev/sdh), respectively.
+</p>
+
+<h4>Get a list of all storage volumes</h4>
+
+<p>
+To list all storage volumes use call <strong>GET /api/storage_volumes</strong>.
+</p>
+
+<p>
+Example request:
+</p>
+
+<pre>
+GET /api/storage_volumes?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: Thu, 28 Jul 2011 21:04:09 GMT
+Content-Length: 1341
+
+&lt;?xml version='1.0' encoding='utf-8' ?&gt;
+&lt;storage_volumes&gt;
+  &lt;storage_volume href='http://localhost:3001/api/storage_volumes/vol-0bc0de60' id='vol-0bc0de60'&gt;
+    &lt;created&gt;Thu Jul 28 20:44:18 UTC 2011&lt;/created&gt;
+    &lt;capacity unit='GB'&gt;10&lt;/capacity&gt;
+        &lt;realm_id&gt;us-east-1c&lt;/realm_id&gt;
+    &lt;state&gt;AVAILABLE&lt;/state&gt;
+    &lt;actions&gt;
+      &lt;link href='http://localhost:3001/api/storage_volumes/vol-0bc0de60/attach' method='post' rel='attach' /&gt;
+      &lt;link href='http://localhost:3001/api/storage_volumes/vol-0bc0de60/detach' method='post' rel='detach' /&gt;
+      &lt;link href='http://localhost:3001/api/storage_volumes/vol-0bc0de60' method='delete' rel='destroy' /&gt;
+    &lt;/actions&gt;
+  &lt;/storage_volume&gt;
+  &lt;storage_volume href='http://localhost:3001/api/storage_volumes/vol-99fbe5f2' id='vol-99fbe5f2'&gt;
+    &lt;created&gt;Thu Jul 28 20:56:07 UTC 2011&lt;/created&gt;
+    &lt;capacity unit='GB'&gt;15&lt;/capacity&gt;
+    &lt;realm_id&gt;us-east-1c&lt;/realm_id&gt;
+    &lt;state&gt;AVAILABLE&lt;/state&gt;
+    &lt;actions&gt;
+      &lt;link href='http://localhost:3001/api/storage_volumes/vol-99fbe5f2/attach' method='post' rel='attach' /&gt;
+      &lt;link href='http://localhost:3001/api/storage_volumes/vol-99fbe5f2/detach' method='post' rel='detach' /&gt;
+      &lt;link href='http://localhost:3001/api/storage_volumes/vol-99fbe5f2' method='delete' rel='destroy' /&gt;
+    &lt;/actions&gt;
+  &lt;/storage_volume&gt;
+&lt;/storage_volumes&gt;
+</pre>
+
+<h4>Get the details for a storage volume</h4>
+
+<p>
+To retrieve the details for the specified storage_volume use call <strong>GET /api/storage_volumes/:id</strong>.
+</p>
+
+<p>Example request:</p>
+
+<pre>
+GET /api/storage_volumes/vol-99fbe5f2?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: Thu, 28 Jul 2011 21:06:39 GMT
+Content-Length: 794
+&lt;?xml version='1.0' encoding='utf-8' ?&gt;
+&lt;storage_volume href='http://localhost:3001/api/storage_volumes/vol-99fbe5f2' id='vol-99fbe5f2'&gt;
+  &lt;created&gt;Thu Jul 28 20:56:07 UTC 2011&lt;/created&gt;
+  &lt;capacity unit='GB'&gt;15&lt;/capacity&gt;
+  &lt;realm_id&gt;us-east-1c&lt;/realm_id&gt;
+  &lt;state&gt;IN-USE&lt;/state&gt;
+  &lt;mount&gt;
+    &lt;instance href='i-b100b3d0' id='i-b100b3d0'&gt;&lt;/instance&gt;
+    &lt;device name='/dev/sdh'&gt;&lt;/device&gt;
+  &lt;/mount&gt;
+  &lt;actions&gt;
+    &lt;link href='http://localhost:3001/api/storage_volumes/vol-99fbe5f2/attach' method='post' rel='attach' /&gt;
+    &lt;link href='http://localhost:3001/api/storage_volumes/vol-99fbe5f2/detach' method='post' rel='detach' /&gt;
+    &lt;link href='http://localhost:3001/api/storage_volumes/vol-99fbe5f2' method='delete' rel='destroy' /&gt;
+  &lt;/actions&gt;
+&lt;/storage_volume&gt;
+</pre>
+
+<h4>Create a new storage volume</h4>
+
+<p>
+To create a new storage_volume use call <strong>POST /api/storage_volumes</strong>. A client may specify a <strong>snapshot_id</strong> from which to instantiate the storage_volume though this is optional. The <strong>capacity</strong> parameter, expressed in Gigabytes, is also optional and will default to 1 Gigabyte. Finally clients may also specify the <strong>realm_id</strong> as a storage_volume can typically only be attached to instances running within the specified realm. If the realm is not specified it will default to the first realm returned by the cloud provider. A succesful operation will return <strong>HTTP 201 Created</strong> with the details of the newly created storage_volume.
+</p>
+
+<p>
+As with the other <strong>POST</strong> operations in the Deltacloud API, clients may choose to specify operation parameters as multipart/form-data or as application/x-www-form-urlencoded data.
+</p>
+
+<p>Example request:</p>
+
+<pre>
+POST /api/storage_volumes?format=xml HTTP/1.1
+Authorization: Basic AU1J3UB2121Afd1DdyQWxLaTYTmJMNF4zTXBoRGdhMDh2RUw5ZDAN9zVXVa==
+User-Agent: curl/7.20.1 (i386-redhat-linux-gnu)
+Host: localhost:3001
+Accept: */*
+Content-Length: 31
+Content-Type: application/x-www-form-urlencoded
+
+capacity=10&realm_id=us-east-1c
+</pre>
+
+<p>Server response:</p>
+
+<pre>
+HTTP/1.1 201 Created
+Date: Thu, 28 Jul 2011 20:44:27 GMT
+Content-Length: 649
+
+&lt;?xml version='1.0' encoding='utf-8' ?&gt;
+&lt;storage_volume href='http://localhost:3001/api/storage_volumes/vol-0bc0de60' id='vol-0bc0de60'&gt;
+  &lt;created&gt;Thu Jul 28 20:44:18 UTC 2011&lt;/created&gt;
+  &lt;capacity unit='GB'&gt;10&lt;/capacity&gt;
+  &lt;realm_id&gt;us-east-1c&lt;/realm_id&gt;
+  &lt;state&gt;CREATING&lt;/state&gt;
+  &lt;actions&gt;
+    &lt;link href='http://localhost:3001/api/storage_volumes/vol-0bc0de60/attach' method='post' rel='attach' /&gt;
+    &lt;link href='http://localhost:3001/api/storage_volumes/vol-0bc0de60/detach' method='post' rel='detach' /&gt;
+    &lt;link href='http://localhost:3001/api/storage_volumes/vol-0bc0de60' method='delete' rel='destroy' /&gt;
+  &lt;/actions&gt;
+&lt;/storage_volume&gt;
+</pre>
+
+<h4>Delete a storage volume</h4>
+
+<p>
+To delete the specified storage_volume use call <strong>DELETE /api/storage_volumes/:id</strong>. The operation will return a <strong>HTTP 204 No Content</strong> after a succesful operation. Note that the operation will fail if the given storage_volume is currently attached to an instance.
+</p>
+
+<p>Example request:</p>
+
+<pre>
+DELETE /api/storage_volumes/vol-0bc0de60?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: Thu, 28 Jul 2011 22:34:29 GMT
+</pre>
+
+<p>Example request: (error deleting a volume currently attached to an instance)</p>
+
+<pre>
+DELETE /api/storage_volumes/vol-0bc0de60?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 502 Bad Gateway
+Content-Type: application/xml
+Date: Thu, 28 Jul 2011 22:30:07 GMT
+Content-Length: 617
+
+&lt;error status='502' url='/api/storage_volumes/vol-0bc0de60?format=xml'&gt;
+  &lt;kind&gt;backend_error&lt;/kind&gt;
+  &lt;backend driver='ec2'&gt;
+    &lt;code&gt;502&lt;/code&gt;
+  &lt;/backend&gt;
+  &lt;message&gt;&lt;![CDATA[Client.VolumeInUse: Volume vol-0bc0de60 is currently attached to i-b100b3d0
+  REQUEST=ec2.us-east-1.amazonaws.com:443/?AWSAccessKeyId=AKIAJATNOR5HKG3FK27Q&Action=DeleteVolume&SignatureMethod=HmacSHA256&SignatureVersion=2&Timestamp=2011-07-28T22%3A30%3A00.000Z&Version=2010-08-31&VolumeId=vol-0bc0de60&Signature=WnZTd9vFaUZEwfuifyo3%2FWa2HBEG1S7R8Iv%2FHqc%2BmqE%3D
+  REQUEST ID=5dff67bb-d63a-4055-b550-f323fa16e185]]&gt;&lt;/message&gt;
+&lt;/error&gt;
+</pre>
+
+<h4>Attach a storage volume to a running instance</h4>
+
+<p>
+To attach the specified storage_volume to a running instance use call <strong>POST /api/storage_volumes/:id/attach</strong>. Clients must specify the <strong>instance_id</strong> and the <strong>device</strong> as parameters. The device parameter is used as the 'mount point', that is, the location at which the storage_volume will be exposed to the given instance (e.g., /dev/sdh). The Deltacloud server will respond with a <strong>HTTP 202 Accepted</strong> after a succesful attach operation together with details of the storage_volume. Note in the example below that the state is reported as 'unknown' although the <strong>mount</strong> element is present, as the processing has not yet been completed (hence the 202 status code). Clients may specify the required parameters as multipart/form-data or as application/x-www-form-urlencoded data.
+</p>
+
+<p>Example request:</p>
+
+<pre>
+POST /api/storage_volumes/vol-0bc0de60/attach?format=xml HTTP/1.1
+Authorization: Basic AU1J3UB2121Afd1DdyQWxLaTYTmJMNF4zTXBoRGdhMDh2RUw5ZDAN9zVXVa==
+User-Agent: curl/7.20.1 (i386-redhat-linux-gnu)
+Host: localhost:3001
+Accept: */*
+Content-Length: 38
+Content-Type: application/x-www-form-urlencoded
+
+instance_id=i-b100b3d0&device=/dev/sdi
+</pre>
+
+<p>Server response:</p>
+
+<pre>
+HTTP/1.1 202 Accepted
+Date: Thu, 28 Jul 2011 21:36:17 GMT
+Content-Length: 709
+
+&lt;?xml version='1.0' encoding='utf-8' ?&gt;
+&lt;storage_volume href='http://localhost:3001/api/storage_volumes/vol-0bc0de60' id='vol-0bc0de60'&gt;
+  &lt;capacity unit='GB'&gt;&lt;/capacity&gt;
+  &lt;device&gt;/dev/sdi&lt;/device&gt;
+  &lt;state&gt;unknown&lt;/state&gt;
+  &lt;mount&gt;
+    &lt;instance href='i-b100b3d0' id='i-b100b3d0'&gt;&lt;/instance&gt;
+    &lt;device name='/dev/sdi'&gt;&lt;/device&gt;
+  &lt;/mount&gt;
+  &lt;actions&gt;
+    &lt;link href='http://localhost:3001/api/storage_volumes/vol-0bc0de60/attach' method='post' rel='attach' /&gt;
+    &lt;link href='http://localhost:3001/api/storage_volumes/vol-0bc0de60/detach' method='post' rel='detach' /&gt;
+    &lt;link href='http://localhost:3001/api/storage_volumes/vol-0bc0de60' method='delete' rel='destroy' /&gt;
+  &lt;/actions&gt;
+&lt;/storage_volume&gt;
+</pre>
+
+<h4>Detach a storage volume from an instance</h4>
+
+<p>
+To detache the given storage_volume from the instance to which it is currently attached use call <strong>POST /api/storage_volumes/:id/detach</strong>. A succesful operation will return <strong>HTTP 201 Accepted</strong> together with details of the storage_volume. Note in the example that like the attach operation above, <strong>state</strong> is reported as 'unknown' and the <strong>mount</strong> element is still present as the processing has not yet been completed (hence the 202 status code).
+</p>
+
+<p>Example request:</p>
+
+<pre>
+POST /api/storage_volumes/vol-0bc0de60/detach?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 202 Accepted
+Content-Type: application/xml
+Date: Thu, 28 Jul 2011 21:29:18 GMT
+Content-Length: 709
+
+&lt;?xml version='1.0' encoding='utf-8' ?&gt;
+&lt;storage_volume href='http://localhost:3001/api/storage_volumes/vol-0bc0de60' id='vol-0bc0de60'&gt;
+  &lt;capacity unit='GB'&gt;&lt;/capacity&gt;
+  &lt;device&gt;/dev/sdi&lt;/device&gt;
+  &lt;state&gt;unknown&lt;/state&gt;
+  &lt;mount&gt;
+    &lt;instance href='i-b100b3d0' id='i-b100b3d0'&gt;&lt;/instance&gt;
+    &lt;device name='/dev/sdi'&gt;&lt;/device&gt;
+  &lt;/mount&gt;
+  &lt;actions&gt;
+    &lt;link href='http://localhost:3001/api/storage_volumes/vol-0bc0de60/attach' method='post' rel='attach' /&gt;
+    &lt;link href='http://localhost:3001/api/storage_volumes/vol-0bc0de60/detach' method='post' rel='detach' /&gt;
+    &lt;link href='http://localhost:3001/api/storage_volumes/vol-0bc0de60' method='delete' rel='destroy' /&gt;
+  &lt;/actions&gt;
+&lt;/storage_volume&gt;
+</pre>
+
+<a class="btn btn-inverse btn-large" style="float: right" href="/storage-snapshots.html">Storage snapshots <i class="icon-arrow-right icon-white" style="vertical-align:baseline"> </i></a>
+
+<br/>
+

Added: deltacloud/trunk/site/output/#storage-snapshots.md#
URL: http://svn.apache.org/viewvc/deltacloud/trunk/site/output/%23storage-snapshots.md%23?rev=1353588&view=auto
==============================================================================
--- deltacloud/trunk/site/output/#storage-snapshots.md# (added)
+++ deltacloud/trunk/site/output/#storage-snapshots.md# Mon Jun 25 15:05:02 2012
@@ -0,0 +1,185 @@
+---
+site_name: Deltacloud API
+title: Storage snapshots
+---
+
+<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="snapshots">Storage snapshots</h3>
+
+<p>
+A storage_snapshot captures the point-in-time state of a storage_volume. Each snapshot has a created timestamp, and a storage_volume attribute referring to the volume from which the snapshot was made.
+</p>
+
+<h4>Get a list of all storage snapshots</h4>
+
+<p>
+To list all available storage snapshots use call <strong>GET /api/storage_snapshots</strong>. For Amazon EC2 this list includes any snapshots that are available to the requesting client account, including those that may not have been created by that account. As this list is very long the example below shows only part of the response:
+</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 class="active"><a href="#snapshots">Storage snapshots</a></li>
+    <li><a href="/blob-storage.html">Blob storage</a></li>
+  </ul>
+</ul>
+
+  </div>
+</div>
+
+<p>
+Example request:
+</p>
+
+<pre>
+GET /api/storage_snapshots?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: Thu, 28 Jul 2011 22:08:36 GMT
+Content-Length: 156897
+
+&lt;?xml version='1.0' encoding='utf-8' ?&gt;
+&lt;storage_snapshots&gt;
+  &lt;storage_snapshot href='http://localhost:3001/api/storage_snapshots/snap-45b8d024' id='snap-45b8d024'&gt;
+    &lt;created&gt;Thu Jul 28 21:54:19 UTC 2011&lt;/created&gt;
+    &lt;storage_volume href='http://localhost:3001/api/storage_volumes/vol-0bc0de60' id='vol-0bc0de60'&gt;&lt;/storage_volume&gt;
+  &lt;/storage_snapshot&gt;
+  &lt;storage_snapshot href='http://localhost:3001/api/storage_snapshots/snap-d5a1c9b4' id='snap-d5a1c9b4'&gt;
+    &lt;created&gt;Thu Jul 28 21:46:12 UTC 2011&lt;/created&gt;
+    &lt;storage_volume href='http://localhost:3001/api/storage_volumes/vol-99fbe5f2' id='vol-99fbe5f2'&gt;&lt;/storage_volume&gt;
+  &lt;/storage_snapshot&gt;
+  &lt;storage_snapshot href='http://localhost:3001/api/storage_snapshots/snap-dda6cebc' id='snap-dda6cebc'&gt;
+    &lt;created&gt;Thu Jul 28 21:51:55 UTC 2011&lt;/created&gt;
+    &lt;storage_volume href='http://localhost:3001/api/storage_volumes/vol-99fbe5f2' id='vol-99fbe5f2'&gt;&lt;/storage_volume&gt;
+  &lt;/storage_snapshot&gt;
+  &lt;storage_snapshot href='http://localhost:3001/api/storage_snapshots/snap-d010f6b9' id='snap-d010f6b9'&gt;
+    &lt;created&gt;Mon Oct 20 18:23:59 UTC 2008&lt;/created&gt;
+    &lt;storage_volume href='http://localhost:3001/api/storage_volumes/vol-351efb5c' id='vol-351efb5c'&gt;&lt;/storage_volume&gt;
+  &lt;/storage_snapshot&gt;
+  &lt;storage_snapshot href='http://localhost:3001/api/storage_snapshots/snap-a310f6ca' id='snap-a310f6ca'&gt;
+    &lt;created&gt;Mon Oct 20 18:25:53 UTC 2008&lt;/created&gt;
+    &lt;storage_volume href='http://localhost:3001/api/storage_volumes/vol-001efb69' id='vol-001efb69'&gt;&lt;/storage_volume&gt;
+  &lt;/storage_snapshot&gt;
+  (...)
+&lt;/storage_snapshots&gt;
+</pre>
+
+<h4>Get the details for a storage snaphsot</h4>
+
+<p>
+To get all details for a specified storage snapshot, as shown below, use call <strong>GET /api/storage_snapshots/:id</strong>.
+</p>
+
+<p>Example request:</p>
+
+<pre>
+GET /api/storage_snapshots/snap-45b8d024?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: Thu, 28 Jul 2011 22:08:36 GMT
+Content-Length: 329
+
+&lt;?xml version='1.0' encoding='utf-8' ?&gt;
+&lt;storage_snapshot href='http://localhost:3001/api/storage_snapshots/snap-45b8d024' id='snap-45b8d024'&gt;
+  &lt;created&gt;Thu Jul 28 21:54:19 UTC 2011&lt;/created&gt;
+  &lt;storage_volume href='http://localhost:3001/api/storage_volumes/vol-0bc0de60' id='vol-0bc0de60'&gt;&lt;/storage_volume&gt;
+&lt;/storage_snapshot&gt;
+</pre>
+
+<h4>Create a new storage snapshot</h4>
+
+<p>
+To create a new storage_snapshot use call <strong>POST /api/storage_snapshots</strong>. Clients must specify the storage_volume from which the snapshot is created by supplying the volume_id parameter. The Deltacloud server responds with <strong>HTTP 201 Created</strong> after a succesful operation and provides details of the new storage_snapshot. Clients may specify operation parameters as multipart/form-data, or as application/x-www-form-urlencoded data:
+</p>
+
+<p>Example request:</p>
+
+<pre>
+POST /api/storage_snapshots?format=xml HTTP/1.1
+Authorization: Basic AU1J3UB2121Afd1DdyQWxLaTYTmJMNF4zTXBoRGdhMDh2RUw5ZDAN9zVXVa==
+User-Agent: curl/7.20.1 (i386-redhat-linux-gnu)
+Host: localhost:3001
+Accept: */*
+Content-Length: 22
+Content-Type: application/x-www-form-urlencoded
+
+volume_id=vol-99fbe5f2
+</pre>
+
+<p>Server response:</p>
+
+<pre>
+HTTP/1.1 201 Created
+Date: Thu, 28 Jul 2011 21:46:48 GMT
+Content-Length: 329
+
+&lt;?xml version='1.0' encoding='utf-8' ?&gt;
+&lt;storage_snapshot href='http://localhost:3001/api/storage_snapshots/snap-d5a1c9b4' id='snap-d5a1c9b4'&gt;
+  &lt;created&gt;Thu Jul 28 21:46:12 UTC 2011&lt;/created&gt;
+  &lt;storage_volume href='http://localhost:3001/api/storage_volumes/vol-99fbe5f2' id='vol-99fbe5f2'&gt;&lt;/storage_volume&gt;
+&lt;/storage_snapshot&gt;
+</pre>
+
+<h4>Delete a storage snapshot</h4>
+
+<p>
+To delete the specified storage_snapshot use call <strong>DELETE /api/storage_snapshots/:id</strong>. The operation returns a <strong>HTTP 204 No Content</strong> after a succesful operation:
+</p>
+
+<p>Example request:</p>
+
+<pre>
+DELETE /api/storage_snapshots/snap-dda6cebc?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: Thu, 28 Jul 2011 22:26:07 GMT
+</pre>
+
+<a class="btn btn-inverse btn-large" style="float: right" href="/blob-storage.html">Blob storage <i class="icon-arrow-right icon-white" style="vertical-align:baseline"> </i></a>
+
+<br/>

Added: deltacloud/trunk/site/output/#usage.md#
URL: http://svn.apache.org/viewvc/deltacloud/trunk/site/output/%23usage.md%23?rev=1353588&view=auto
==============================================================================
--- deltacloud/trunk/site/output/#usage.md# (added)
+++ deltacloud/trunk/site/output/#usage.md# Mon Jun 25 15:05:02 2012
@@ -0,0 +1,135 @@
+--- 
+site_name: Deltacloud API
+title: Usage
+---
+<br/>
+
+<h2 id="usingapi">Using API</h2>
+
+<h3>Creating an instance</h3>
+
+<h3>Switching a driver</h3>
+
+<h2 id="clients">Clients</h2>
+Instead of dealing with HTTP interface you can use various clients to communicate with Deltacloud server.
+
+<h3>The Deltacloud Ruby client</h3>
+You need to install Ruby client seperately to the Deltacloud API server. Assuming you already have Ruby and RubyGems setup, you can install the Deltacloud client by simply typing: 
+
+<pre>$ sudo gem install deltacloud-client</pre>
+
+<p>The Deltacloud client consists of a Ruby library (packaged as a ruby gem) which you can use to interact with the Deltacloud server and control your cloud infrastructure across cloud providers. <p>
+
+<p>To use the client, you must require <strong>deltacloud</strong>:</p>
+
+<pre>require 'deltacloud'</pre>
+
+<p>Connect to a Deltacloud provider using these commands:</p>
+
+<pre>
+require 'deltacloud'
+
+api_url      = 'http://localhost:3001/api'
+api_name     = 'mockuser'
+api_password = 'mockpassword'
+
+client = DeltaCloud.new( api_name, api_password, api_url )
+
+# work with client here
+</pre>
+
+<p>In addition to creating a client, operations may occur within a block included on the initialization.</p>
+
+<pre>
+DeltaCloud.new( api_name, api_password, api_url ) do |client|
+  # work with client here
+end
+</pre>
+
+<p>In case of a failure, every underlying HTTP transport exceptions will be thrown away and returned back to the caller.</p>
+
+<a class="btn btn-inverse btn-large" style="float: right" href="/ruby-client.html">Work with the Ruby client</a>
+
+<br/>
+<br/>
+
+<h3>HTTP clients - cURL</h3>
+
+<p>
+Basically, you interact with the Deltacloud server via HTTP calls, so you can use any HTTP client to talk to Deltacloud using the <a href="/rest-api.html">REST API</a>.
+</p>
+
+<p>
+<a href="http://curl.haxx.se/">cURL</a> is a popular command line tool available on most modern linux distributions. See the following examples to learn how to use cURL to interact with Deltacloud. There is an assumption that the Deltacloud server is running on locahost:3001, and was started with the 'ec2' driver (i.e., deltacloudd -i ec2 ).
+</p>
+
+<p>
+Get a listing of all <strong>images</strong> available in the back-end cloud:
+</p>
+
+<pre>
+curl  --user "pGbAJ1TsVg5PKs3BK27O:dPs47ralgBlldqYNbLg3scthsg4g8v0L9d6Mb5DK"
+"http://localhost:3001/api/images?format=xml"
+</pre>
+
+<p>
+The cURL <strong>--user</strong> option is used to specify the <strong>username:password</strong> credentials for access to the back-end cloud provider (Amazon EC2 in this case).</p>
+
+<p>Create a new <strong>instance</strong> from the image with id 'ami-f51aff9c', in realm 'us-east-1c', with the hardware profile 'c1.medium', in firewall 'default':
+</p>
+
+<pre>
+curl -X POST -F "keyname=eftah" -F "image_id=ami-f51aff9c"
+-F "realm_id=us-east-1c" -F "hwp_id=c1.medium" -F "firewalls1=default"
+--user "pGbAJ1TsVg5PKs3BK27O:dPs47ralgBlldqYNbLg3scthsg4g8v0L9d6Mb5DK"
+"http://localhost:3001/api/instances?format=xml"
+</pre>
+
+<p>Delete a <strong>firewall</strong> called 'develgroup':</p>
+
+<pre>
+curl -X DELETE
+--user "pGbAJ1TsVg5PKs3BK27O:dPs47ralgBlldqYNbLg3scthsg4g8v0L9d6Mb5DK"
+http://localhost:3001/api/firewalls/develgroup?format=xml
+</pre>
+
+<p>
+Create a <strong>blob</strong> called 'my_new_blob' within the bucket 'mybucket' from a local file with <strong>HTTP PUT</strong> specifying its content type and setting some some metadata <strong>key:value</strong> pairs:
+</p>
+
+<pre>
+curl -H 'content-type: text/html' -H 'X-Deltacloud-Blobmeta-Name:mariosblob'
+-H 'X-Deltacloud-Blobmeta-Version:2.1' --upload-file
+"/home/marios/Desktop/somefile.html"
+--user "pGbAJ1TsVg5PKs3BK27O:dPs47ralgBlldqYNbLg3scthsg4g8v0L9d6Mb5DK"
+http://localhost:3001/api/buckets/mybucket/my_new_blob?format=xml
+</pre>
+
+<p>
+Retrieve <strong>blob metadata</strong> for the blob called 'my_new_blob':
+</p>
+
+<pre>
+curl -iv -X HEAD
+--user "pGbAJ1TsVg5PKs3BK27O:dPs47ralgBlldqYNbLg3scthsg4g8v0L9d6Mb5DK"
+http://localhost:3001/api/buckets/mybucket/my_new_blob?format=xml
+</pre>
+
+<p>
+The <strong>'-iv'</strong> flags will ensure that cURL displays the request and response headers (blob metadata are reported in the response headers with an empty response body).
+</p>
+
+<h3>Libdeltacloud Client (C library)</h3>
+<p>
+Libdeltacloud is a C/C++ library for accessing the Deltacloud API. It exports convenient structures and functions for manipulating cloud objects through the deltacloud API.
+</p>
+
+Get the source code:
+<pre>
+$ git clone git://git.fedorahosted.org/deltacloud/libdeltacloud.git
+</pre>
+
+<p>
+<a href="http://deltacloud.apache.org/libdeltacloud/index.html">Full documentation</a> for the library contains the list of data structures, all documented files with brief descriptions and also the exapmles of working with libdeltacloud.
+</p>
+

Added: deltacloud/trunk/site/output/#write-new-driver.md#
URL: http://svn.apache.org/viewvc/deltacloud/trunk/site/output/%23write-new-driver.md%23?rev=1353588&view=auto
==============================================================================
--- deltacloud/trunk/site/output/#write-new-driver.md# (added)
+++ deltacloud/trunk/site/output/#write-new-driver.md# Mon Jun 25 15:05:02 2012
@@ -0,0 +1,140 @@
+---
+site_name: Deltacloud API
+title: Write New Provider Driver
+---
+
+<br/>
+
+<h3>Writing a provider driver</h3>
+
+<p>The deltacloud drivers are stored in <strong>deltacloud/server/lib/deltacloud/drivers</strong></p> To ad a driver for hypotetical <strong>Foo</strong> cloud, add a directory into /drivers/ and then a file for a driver itself:
+
+<pre>deltacloud/server/lib/deltacloud/drivers/foo/foo_driver.rb</pre>
+
+<p>You need to define a class <strong>Deltacloud::Drivers::Foo::FooDriver</strong> to this file. The class must be a subclass of the <strong>Deltacloud::BaseDriver</strong>.
+</p>
+
+<p>Set up which <a href="/rest-api.html#">collections</a> the provider for you are writing the driver supports - e.g. images, instances, keys, buckets/blobs (storage), etc.:</p>
+
+<pre>
+def supported_collections
+  DEFAULT_COLLECTIONS + [ :buckets ] - [ :storage_snapshots, :storage_volumes ]
+end
+</pre>
+
+<p>This declares that the driver supports the <strong>DEFAULT_COLLECTIONS</strong> (defined in <strong>deltacloud/server/lib/drivers.rb</strong>) except <a href="/rest-api.html#">storage_snapshots</a> and <a href="/rest-api.html#">storage_volumes</a> and also the <a href="/rest-api.html#">buckets</a> collection. A storage only cloud provider driver would support only the buckets colletion.</p>
+
+<p>
+Then, you can define the methods for each collection that your driver supports. The methods, as well as the routes to them, are defined in <strong>deltacloud/server/lib/deltacloud/server.rb</strong>. In general, you can look at the existing drivers to have the idea of how to implement any specific method.
+</p>
+
+<p>
+You should consider how the driver will be communicating with the cloud provider. Many of the existing drivers use external ruby gems for this purpose: for example, the <strong>ec2</strong> driver uses the <a href="https://github.com/appoxy/aws/">aws</a> gem, the <strong>rackspace</strong> driver uses the <a href="https://github.com/rackspace/ruby-cloudfiles">cloudfiles</a> and <a href="https://github.com/rackspace/ruby-cloudservers">cloudservers</a> gems. However, other drivers implement their own clients to communicate with the cloud provider, such as the IBM SBC driver and the Gogrid driver. This also explains why, under the <strong>/drivers</strong> directory, some drivers contain only the provider <strong>_driver.rb</strong> file, whilst others also define a <strong>provider_client.rb</strong> file. It is entirely up to you, whether you write your own client or use an existing one.
+</p>
+
+<p>Thus, your driver for the cloud provider foo may look like:</p>
+
+<pre>
+require 'deltacloud/base_driver'
+require 'foo_lib' # a library for talking to the foo cloud
+
+module Deltacloud
+  module Drivers
+    module Foo
+
+class FooDriver < Deltacloud::BaseDriver
+
+    def supported_collections
+      DEFAULT_COLLECTIONS + [ :buckets ]
+    end
+
+    def images(credentials, opts={})
+      client = new_foo_client(credentials)
+      # use client to get a list of images from the back-end cloud and then create
+      # a Deltacloud Image object for each of these. Filter the result
+      # (eg specific image requested) and return to user
+    end
+
+    def realms(credentials, opts={})
+      (...)
+    end
+
+    def instances(credentials, opts={})
+      (...)
+    end
+
+    ... ETC
+
+    private
+
+    def new_foo_client(credentials)
+      client = FooLib::Service.new({:user => credentials.user,
+                                    :pass => credentials.password })
+    end
+
+end
+        end
+      end
+    end
+</pre>
+
+<p>
+An important method for drivers that implement the <a href="/rest-api.html#">instances</a> collection is <strong>instance_states</strong>. This method represents the finite-state-machine for instances which varies across cloud providers. In some clouds an instance may be in the 'running' state after creation, whereas in other clouds an instance may need to be started explicitly. For example:
+</p>
+
+<pre>
+define_instance_states do
+  start.to( :pending )          .on( :create )
+  pending.to( :running )        .automatically
+  running.to( :running )        .on( :reboot )
+  running.to( :shutting_down )  .on( :stop )
+  shutting_down.to( :stopped )  .automatically
+  stopped.to( :finish )         .automatically
+end
+</pre>
+
+<p>
+The definiton of .to and on. etc is defined in <strong>/deltacloud/server/lib/deltacloud/state_machine.rb</strong>.
+</p>
+
+<p>Valid states are:</p>
+
+<ul>
+  <li><strong>:begin</strong></li>
+  <li><strong>:pending</strong></li>
+  <li><strong>:running</strong></li>
+  <li><strong>:shutting_down</strong></li>
+  <li><strong>:stopped</strong></li>
+  <li><strong>:end</strong></li>
+</ul>
+
+<p>The instance is located in the<strong>:begin</strong> state before being created. Immediately after being destroyed the instance is removed to the <strong>:end</strong> state.</p>
+
+<p>Valid transition actions are:</p>
+
+<ul>
+  <li><strong>:stop</strong></li>
+  <li><strong>:start</strong></li>
+  <li><strong>:reboot</strong></li>
+</ul>
+
+<p>The action <strong>:automatically</strong> may be used to indicate a tranisition that may occur without an action being triggered (see the example above).</p>
+
+<p>You can implement some other methods according to the collections you will be supporting:</p>
+
+<ul>
+  <li><strong>hardware_profiles(credentials, opts=nil)</strong></li>
+  <li><strong>images(credentials, opts=nil)</strong></li>
+  <li><strong>realms(credentials, opts=nil)</strong></li>
+  <li><strong>instances(credentials, opts=nil)</strong></li>
+  <li><strong>create_instance(credentials, image_id, opts)</strong></li>
+  <li><strong>reboot_instance(credentials, id)</strong></li>
+  <li><strong>stop_instance(credentials, id)</strong></li>
+  <li><strong>destroy_instance(credentials, id)</strong></li>
+</ul>
+
+<p>
+The <strong>hardware_profiles(...)</strong> method should return an array of HardwareProfile objects. The <strong>opts</strong> hash, if present, must be inspected for <strong>:id</strong> and <strong>:architecture</strong> keys. If these keys are present, the results should be filtered by the value associated with each key. The <strong>filter_on(...)</strong> helper method is used for this filtering and as you can see from existing driver method definitions, is invoked in many of the driver collection methods:
+</p>
+
+

Added: deltacloud/trunk/site/output/#writing-tests.md#
URL: http://svn.apache.org/viewvc/deltacloud/trunk/site/output/%23writing-tests.md%23?rev=1353588&view=auto
==============================================================================
--- deltacloud/trunk/site/output/#writing-tests.md# (added)
+++ deltacloud/trunk/site/output/#writing-tests.md# Mon Jun 25 15:05:02 2012
@@ -0,0 +1,57 @@
+---
+site_name: Deltacloud API
+title: Writing and running tests
+---
+
+<br/>
+
+<h3 id="test">Writing and running tests</h3>
+
+<p>
+You should add a test to every new feature or new driver you create to make sure, that everything is running as expected. There are two different directories in the Deltacloud project, where the tests are stored: <strong>/deltacloud/server/tests</strong> for Unit tests for drivers and <strong>/deltacloud/tests</strong> for Cucumber tests.
+</p>
+
+<p>Initiate the Unit tests:</p>
+
+<pre>
+$ cd /path/to/deltacloud/server
+$ rake test
+</pre>
+
+<p>This will invoke all Unit tests defined in <strong>/deltacloud/server/tests</strong> by inspecting the Rakefile in <strong>/deltacloud/server</strong>. To invoke a specific driver tests type:</p>
+
+<pre>
+$ cd /path/to/deltacloud/server
+$ rake test:rackspace
+  _OR_
+$ rake test:mock
+  _etc_
+</pre>
+
+<p>Initiate the Cucumber tests:</p>
+
+<pre>
+$ cd /path/to/deltacloud/server
+$ rake cucumber
+</pre>
+
+<p>Alternatively, you can invoke the cucumber tests directly without using Rakefile: </p>
+
+<pre>
+$ cd /path/to/deltacloud/server
+$ cucumber ../tests/mock
+  _OR_
+$ cucumber ../tests/ec2
+  _etc_
+</pre>
+
+<div class="btn-group">
+  <a class="btn dropdown-toggle" data-toggle="dropdown" href="#">
+    <i class="icon-arrow-left icon-white"></i> Back
+    <span class="caret"></span>
+  </a>
+<ul class="dropdown-menu">
+  <li><a href="/send-patch.html">Send a patch</a></li>
+  <li><a href="/write"></a></li>
+</ul>
+</div>

Added: deltacloud/trunk/site/output/about.html
URL: http://svn.apache.org/viewvc/deltacloud/trunk/site/output/about.html?rev=1353588&view=auto
==============================================================================
--- deltacloud/trunk/site/output/about.html (added)
+++ deltacloud/trunk/site/output/about.html Mon Jun 25 15:05:02 2012
@@ -0,0 +1,138 @@
+<!DOCTYPE html>
+<html lang="en">
+  <head>
+    <meta charset="utf-8">
+    <title>About</title>
+    <!-- Le HTML5 shim, for IE6-8 support of HTML elements -->
+    <!--[if lt IE 9]>
+    <script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script>
+    <![endif]-->
+
+    <!-- Le JavaScript -->
+    <script src="/assets/js/jquery-1.7.1.min.js" type="text/javascript"></script>
+    <script src="/assets/js/bootstrap-dropdown.js" type="text/javascript"></script>
+    <script src="/assets/js/jquery.tweet.js" type="text/javascript"></script>
+    <script src="/assets/js/application.js" type="text/javascript"></script>
+    <script src="/assets/js/bootstrap-transition.js"></script>
+    <script src="/assets/js/bootstrap-alert.js"></script>
+    <script src="/assets/js/bootstrap-modal.js"></script>
+    <script src="/assets/js/bootstrap-scrollspy.js"></script>
+    <script src="/assets/js/bootstrap-tab.js"></script>
+    <script src="/assets/js/bootstrap-tooltip.js"></script>
+    <script src="/assets/js/bootstrap-popover.js"></script>
+    <script src="/assets/js/bootstrap-button.js"></script>
+    <script src="/assets/js/bootstrap-collapse.js"></script>
+    <script src="/assets/js/bootstrap-carousel.js"></script>
+    <script src="/assets/js/bootstrap-typeahead.js"></script>
+
+    <!-- Le styles -->
+    <link href="/assets/css/bootstrap.css" rel="stylesheet">
+    <link href="/assets/css/application.css" rel="stylesheet">
+    <link rel="shortcut icon" href="/assets/img/favicon.ico">
+  </head>
+
+  <body>
+
+    <div class="navbar navbar-fixed-top">
+      <div class="navbar-inner">
+        <div class="container">
+          <a class="brand" href="/"><img src="/assets/img/logo.png" width="152"
+            alt="Deltacloud API"/></a>
+          <ul class="nav top-nav">
+  <li><a href="/">Home</a></li>
+  <li class="dropdown">
+    <a href="#" class="dropdown-toggle" data-toggle="dropdown">About<b class="caret"></b></a>
+    <ul class="dropdown-menu">
+      <li><a href="/about.html">What is Deltacloud?</a></li>
+      <li><a href="/supported-providers.html">Supported Providers</a></li>
+    </ul>
+  </li>
+  <li class="dropdown">
+    <a href="#" class="dropdown-toggle" data-toggle="dropdown">Installation<b class="caret"></b></a>
+    <ul class="dropdown-menu">
+      <li><a href="/install-deltacloud.html">Install Deltacloud</a></li>
+      <li><a href="/run-deltacloud-server.html">Run the Deltacloud Server</a></li>
+    </ul>
+  </li>
+  <li class="dropdown">
+    <a href="/usage.html" class="dropdown-toggle" data-toggle="dropdown">Usage<b class="caret"></b></a>
+    <ul class="dropdown-menu">
+      <li><a href="/usage.html#usingapi">Using API</a></li>
+      <li><a href="/usage.html#clients">Client Libraries</a></li>
+      <li><a href="/command-tools.html">Command Line Tools</a></li>
+    </ul>
+  </li>
+  <li class="dropdown">
+    <a href="#" class="dropdown-toggle" data-toggle="dropdown">Contribute<b class="caret"></b></a>
+    <ul class="dropdown-menu">
+      <li><a href="/getting-sources.html">Getting Sources</a></li>
+      <li><a href="/how-to-contribute.html">How Can I Contribute?</a></li>
+    </ul>
+  </li>
+  <li class="dropdown">
+    <a href="#" class="dropdown-toggle" data-toggle="dropdown">API<b class="caret"></b></a>
+    <ul class="dropdown-menu">
+      <li><a href="/rest-api.html">REST API</a></li>
+      <li><a href="/drivers.html">Drivers API</a></li>
+    </ul>
+  </li>
+  <li><a href="/contact.html">Contact</a></li>
+</ul>
+
+        </div>
+      </div>
+
+    </div>
+
+    <div class="container content">
+
+      <div class="row">
+
+<div class="span4">
+
+<br><h3>About Deltacloud</h3>
+<br><p>Deltacloud provides the API server and drivers necessary for connecting to cloud providers.</p> 
+
+<p>Deltacloud maintains <strong>long-term stability</strong> for scripts, tools and applications and <strong>backward compatibility</strong> across different versions.</p>
+
+<p>Using single API Deltacloud enables management of resources in different clouds.</p>
+
+<p>Start an instance on an internal cloud, then with the same code start another on EC2 or RHEV-M.</p>
+</div>
+
+<br><div class="span8">
+  <img src="assets/img/diagram-soa.png" alt="Deltacloud API SOA diagram" align="center">
+</div>
+
+<div class="span12">
+
+<br><br><h3>How does Deltacloud work?</h3>
+<br><p>Deltacloud contains a cloud abstraction API. The API works as a wrapper around a large number of clouds, abstracting their differences. For every <a href="supported-providers.html" rel="tooltip" title="currently supported providers">provider</a> there is a driver "speaking" cloud provider's native API. It frees you from dealing with the particulars of each cloud's API.</p>
+
+<p>Install Deltacloud and start the <strong>deltacloudd</strong> daemon server. You can use your favourite HTTP client to talk to the server using the <a href="rest-api.html">Deltacloud REST API</a>. Deltacloud even comes with a HTML interface so you can simply use your web browser to control your cloud infrastructure straight out of the box. The HTML interface is written with the <a href="http://jquerymobile.com/">jQuery mobile</a> framework, so it is compatible with your mobile or tablet devices.</p>
+<br><img src="assets/img/deltacloud_concept.gif" alt="Deltacloud concept scheme"><br><a class="btn btn-inverse btn-large" style="float: right" href="install-deltacloud.html">Get Deltacloud</a>
+
+</div>
+</div>
+
+      <footer class="footer">
+        <p class="pull-right"><span class='icon-circle-arrow-up'>&nbsp;</span><a href="#">Back to top</a></p>
+        <div class='row'>
+          <div class='span3'>
+            <img src="/assets/img/asf.png" alt="Apache Software Foundation"/>
+          </div>
+          <div class='span9'>
+            <strong>Apache Deltacloud</strong> is a top-level project at the <a
+              href="http://www.apache.org">Apache Software Foundation</a>,
+            having graduated from the ASF Incubator in October
+            2011. Through a collaborative and meritocratic development process, Apache
+            projects deliver enterprise-grade, freely available software products that
+            attract large communities of users. 
+          </div>
+        </div>
+      </footer>
+
+    </div> <!-- /container -->
+
+  </body>
+</html>

Added: deltacloud/trunk/site/output/addresses.html
URL: http://svn.apache.org/viewvc/deltacloud/trunk/site/output/addresses.html?rev=1353588&view=auto
==============================================================================
--- deltacloud/trunk/site/output/addresses.html (added)
+++ deltacloud/trunk/site/output/addresses.html Mon Jun 25 15:05:02 2012
@@ -0,0 +1,378 @@
+<!DOCTYPE html>
+<html lang="en">
+  <head>
+    <meta charset="utf-8">
+    <title>Addresses</title>
+    <!-- Le HTML5 shim, for IE6-8 support of HTML elements -->
+    <!--[if lt IE 9]>
+    <script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script>
+    <![endif]-->
+
+    <!-- Le JavaScript -->
+    <script src="/assets/js/jquery-1.7.1.min.js" type="text/javascript"></script>
+    <script src="/assets/js/bootstrap-dropdown.js" type="text/javascript"></script>
+    <script src="/assets/js/jquery.tweet.js" type="text/javascript"></script>
+    <script src="/assets/js/application.js" type="text/javascript"></script>
+    <script src="/assets/js/bootstrap-transition.js"></script>
+    <script src="/assets/js/bootstrap-alert.js"></script>
+    <script src="/assets/js/bootstrap-modal.js"></script>
+    <script src="/assets/js/bootstrap-scrollspy.js"></script>
+    <script src="/assets/js/bootstrap-tab.js"></script>
+    <script src="/assets/js/bootstrap-tooltip.js"></script>
+    <script src="/assets/js/bootstrap-popover.js"></script>
+    <script src="/assets/js/bootstrap-button.js"></script>
+    <script src="/assets/js/bootstrap-collapse.js"></script>
+    <script src="/assets/js/bootstrap-carousel.js"></script>
+    <script src="/assets/js/bootstrap-typeahead.js"></script>
+
+    <!-- Le styles -->
+    <link href="/assets/css/bootstrap.css" rel="stylesheet">
+    <link href="/assets/css/application.css" rel="stylesheet">
+    <link rel="shortcut icon" href="/assets/img/favicon.ico">
+  </head>
+
+  <body>
+
+    <div class="navbar navbar-fixed-top">
+      <div class="navbar-inner">
+        <div class="container">
+          <a class="brand" href="/"><img src="/assets/img/logo.png" width="152"
+            alt="Deltacloud API"/></a>
+          <ul class="nav top-nav">
+  <li><a href="/">Home</a></li>
+  <li class="dropdown">
+    <a href="#" class="dropdown-toggle" data-toggle="dropdown">About<b class="caret"></b></a>
+    <ul class="dropdown-menu">
+      <li><a href="/about.html">What is Deltacloud?</a></li>
+      <li><a href="/supported-providers.html">Supported Providers</a></li>
+    </ul>
+  </li>
+  <li class="dropdown">
+    <a href="#" class="dropdown-toggle" data-toggle="dropdown">Installation<b class="caret"></b></a>
+    <ul class="dropdown-menu">
+      <li><a href="/install-deltacloud.html">Install Deltacloud</a></li>
+      <li><a href="/run-deltacloud-server.html">Run the Deltacloud Server</a></li>
+    </ul>
+  </li>
+  <li class="dropdown">
+    <a href="/usage.html" class="dropdown-toggle" data-toggle="dropdown">Usage<b class="caret"></b></a>
+    <ul class="dropdown-menu">
+      <li><a href="/usage.html#usingapi">Using API</a></li>
+      <li><a href="/usage.html#clients">Client Libraries</a></li>
+      <li><a href="/command-tools.html">Command Line Tools</a></li>
+    </ul>
+  </li>
+  <li class="dropdown">
+    <a href="#" class="dropdown-toggle" data-toggle="dropdown">Contribute<b class="caret"></b></a>
+    <ul class="dropdown-menu">
+      <li><a href="/getting-sources.html">Getting Sources</a></li>
+      <li><a href="/how-to-contribute.html">How Can I Contribute?</a></li>
+    </ul>
+  </li>
+  <li class="dropdown">
+    <a href="#" class="dropdown-toggle" data-toggle="dropdown">API<b class="caret"></b></a>
+    <ul class="dropdown-menu">
+      <li><a href="/rest-api.html">REST API</a></li>
+      <li><a href="/drivers.html">Drivers API</a></li>
+    </ul>
+  </li>
+  <li><a href="/contact.html">Contact</a></li>
+</ul>
+
+        </div>
+      </div>
+
+    </div>
+
+    <div class="container content">
+
+      <p><br></p>
+
+<div class="row">
+  <div class="span9">
+
+<h3 id="addresses">Addresses</h3>
+
+<p>
+The addresses collection represents IP addresses and allows <strong>IP address management</strong>. 
+</p>
+
+<p>
+This collection is currently implemented for the Amazon EC2 cloud driver. For EC2, IP address management corresponds to Amazon's 'Elastic IP' feature. 
+</p>
+
+<br><p>
+The addresses collection supports these operations:
+</p>
+
+<ul>
+<li>creating an address</li>
+  <li>destroying an address</li>
+  <li>association an address with a running instance</li>
+  <li>dissociating an address from a running instance</li>
+</ul>
+<br><br><ul class="nav nav-pills">
+<li class="active"><a href="#tab1" data-toggle="tab">Get a list of all addresses</a></li>
+  <li><a href="#tab2" data-toggle="tab">Get the details of an address</a></li>
+  <li><a href="#tab3" data-toggle="tab">Create/delete an address</a></li>
+  <li><a href="#tab4" data-toggle="tab">Associate/disassociate an address</a></li>
+</ul>
+<hr>
+</div>
+  <div class="span3">
+
+<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><a href="instances.html">Instances</a></li>
+    <li><a href="keys.html">Keys</a></li>
+    <li><a href="firewalls.html">Firewalls</a></li>
+    <li class="active"><a href="#addresses">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>
+
+<div class="tab-content">
+  <div class="tab-pane active" id="tab1">
+  
+<h4>Get a list of all addresses</h4>
+
+<p>
+To retrieve a list of all addresses use call <strong>GET /api/addresses</strong>.
+</p>
+
+<p>
+Example request:
+</p>
+
+<pre>
+GET /api/addresses?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 style="margin-top:0px">
+HTTP/1.1 200 OK
+Content-Type: application/xml
+Date: Wed, 27 Jul 2011 12:55:16 GMT
+Content-Length: 817
+
+&lt;?xml version='1.0' encoding='utf-8' ?&gt;
+&lt;addresses&gt;
+  &lt;address href='http://localhost:3001/api/addresses/107.20.232.251' id='107.20.232.251'&gt;
+    &lt;ip&gt;107.20.232.251&lt;/ip&gt;
+    &lt;actions&gt;
+      &lt;link href='http://localhost:3001/api/addresses/107.20.232.251' method='delete' rel='destroy' /&gt;
+      &lt;link href='http://localhost:3001/api/addresses/107.20.232.251/associate' method='post' rel='associate' /&gt;
+    &lt;/actions&gt;
+  &lt;/address&gt;
+  &lt;address href='http://localhost:3001/api/addresses/107.20.234.161' id='107.20.234.161'&gt;
+    &lt;ip&gt;107.20.234.161&lt;/ip&gt;
+    &lt;actions&gt;
+      &lt;link href='http://localhost:3001/api/addresses/107.20.234.161' method='delete' rel='destroy' /&gt;
+      &lt;link href='http://localhost:3001/api/addresses/107.20.234.161/associate' method='post' rel='associate' /&gt;
+    &lt;/actions&gt;
+  &lt;/address&gt;
+&lt;/addresses&gt;
+</pre>
+
+  </div>
+  <div class="tab-pane" id="tab2">
+
+<h4>Get the details of an address</h4>
+
+<p>
+To retrieve details for a specific address use call <strong>GET /api/addresses/:id</strong>.
+</p>
+
+<p>Example request:</p>
+
+<pre>
+GET /api/addresses/107.20.232.251?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: Wed, 27 Jul 2011 12:57:27 GMT
+Content-Length: 402
+
+&lt;?xml version='1.0' encoding='utf-8' ?&gt;
+&lt;address href='http://localhost:3001/api/addresses/107.20.232.251' id='107.20.232.251'&gt;
+  &lt;ip&gt;107.20.232.251&lt;/ip&gt;
+  &lt;actions&gt;
+    &lt;link href='http://localhost:3001/api/addresses/107.20.232.251' method='delete' rel='destroy' /&gt;
+    &lt;link href='http://localhost:3001/api/addresses/107.20.232.251/associate' method='post' rel='associate' /&gt;
+  &lt;/actions&gt;
+&lt;/address&gt;
+</pre>
+
+  </div>
+  <div class="tab-pane" id="tab3">
+
+<h4>Create an address</h4>
+
+<p>
+To create a new address use call <strong>POST /api/addresses</strong>. The Deltacloud server will respond with <strong>HTTP 201 Created</strong> and provide the details of the new address after a succesful operation:
+</p>
+
+<p>Example request:</p>
+
+<pre>
+POST /api/addresses?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 201 Created
+Content-Type: application/xml
+Content-Length: 388
+
+&lt;?xml version='1.0' encoding='utf-8' ?&gt;
+&lt;address href='http://localhost:3001/api/addresses/107.20.232.251' id='107.20.232.251'&gt;
+  &lt;ip&gt;107.20.232.251&lt;/ip&gt;
+  &lt;actions&gt;
+    &lt;link href='http://localhost:3001/api/addresses/107.20.232.251' method='delete' rel='destroy' /&gt;
+    &lt;link href='http://localhost:3001/api/addresses/107.20.232.251/associate' method='post' rel='associate' /&gt;
+  &lt;/actions&gt;
+&lt;/address&gt;
+</pre>
+
+<h4>Delete an address</h4>
+
+<p>
+To delete a specified address use call <strong>DELETE /api/addresses/:id</strong>. The Deltacloud server responds with a <strong>HTTP 204 No Content</strong> after a succesful operation.
+</p>
+
+<p>Example request:</p>
+
+<pre>
+DELETE /api/addresses/107.20.232.251?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: Wed, 27 Jul 2011 13:29:00 GMT
+</pre>
+
+  </div>
+  <div class="tab-pane" id="tab4">
+
+<h4>Associate an adress with an instance</h4>
+
+<p>
+To associate a given address with a running instance use call <strong>POST /api/addresses/:id/associate</strong>. The client must specify the <strong>instance_id</strong> as a parameter to this call. For Amazon EC2, the specified address will replace the currently assigned public_address of the instance. A succesful operation results in a <strong>HTTP 202 Accepted</strong> response. The example client request below specifies the required instance_id parameter using the application/x-www-form-urlencoded content-type, however client can also use multipart/form-data.
+</p>
+
+<p>Example request:</p>
+
+<pre>
+POST /api/addresses/107.20.232.251/associate?format=xml HTTP/1.1
+Authorization: Basic AU1J3UB2121Afd1DdyQWxLaTYTmJMNF4zTXBoRGdhMDh2RUw5ZDAN9zVXVa==
+User-Agent: curl/7.20.1 (i386-redhat-linux-gnu)
+Host: localhost:3001
+Accept: */*
+Content-Length: 22
+Content-Type: application/x-www-form-urlencoded
+
+instance_id=i-9d8a3dfc
+</pre>
+
+<p>Server response:</p>
+
+<pre>
+HTTP/1.1 202 Accepted
+Content-Type: application/xml
+Date: Wed, 27 Jul 2011 13:01:11 GMT
+Content-Length: 0
+</pre>
+
+<h4>Disassociate an address from an instance</h4>
+
+<p>
+To disassociate a given address from the instance to which it is currently assigned use call <strong>POST /api/addresses/:id/disassociate</strong>.
+</p>
+
+<p>Example request:</p>
+
+<pre>
+POST /api/addresses/107.20.232.251/disassociate?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 202 Accepted
+Content-Type: application/xml
+Date: Wed, 27 Jul 2011 13:05:38 GMT
+Content-Length: 0
+</pre>
+
+  </div>
+</div>
+
+<p><a class="btn btn-inverse btn-large" style="float: right" href="load-balancers.html">Load Balancers  <i class="icon-arrow-right icon-white" style="vertical-align:baseline"> </i></a></p>
+
+<p><br></p>
+
+      <footer class="footer">
+        <p class="pull-right"><span class='icon-circle-arrow-up'>&nbsp;</span><a href="#">Back to top</a></p>
+        <div class='row'>
+          <div class='span3'>
+            <img src="/assets/img/asf.png" alt="Apache Software Foundation"/>
+          </div>
+          <div class='span9'>
+            <strong>Apache Deltacloud</strong> is a top-level project at the <a
+              href="http://www.apache.org">Apache Software Foundation</a>,
+            having graduated from the ASF Incubator in October
+            2011. Through a collaborative and meritocratic development process, Apache
+            projects deliver enterprise-grade, freely available software products that
+            attract large communities of users. 
+          </div>
+        </div>
+      </footer>
+
+    </div> <!-- /container -->
+
+  </body>
+</html>



Mime
View raw message