On Aug 8, 2012, at 6:37 PM, mar...@redhat.com wrote:

ACK. Good job!

  -- Michal

> From: marios <mar...@redhat.com>
> 
> 
> Signed-off-by: marios <mar...@redhat.com>
> ---
> site/content/command-tools.md  |   16 ++-
> site/content/curl-examples.md  |  269 +++++++++++++++++++++++++++++
> site/content/usage.md          |   12 +-
> site/output/command-tools.html |   13 ++-
> site/output/curl-examples.html |  366 ++++++++++++++++++++++++++++++++++++++++
> site/output/usage.html         |    9 +-
> 6 files changed, 677 insertions(+), 8 deletions(-)
> create mode 100644 site/content/curl-examples.md
> create mode 100644 site/output/curl-examples.html
> 
> diff --git a/site/content/command-tools.md b/site/content/command-tools.md
> index a56e548..18bc20e 100644
> --- a/site/content/command-tools.md
> +++ b/site/content/command-tools.md
> @@ -5,6 +5,20 @@ title: Command Line Tools
> 
> <br/>
> 
> +
> +<h3 id="command">deltacloudc is being deprecated</h3>
> +
> +The deltacloudc command line tool is being deprecated. For now the code 
> making up deltacloudc has been moved to the /deltacloud/clients/console 
> directory but will ultimately be removed from the repo. If the command line 
> client is important to you then please <a href="/contact.html">let us 
> know</a>. A new command line client may be put onto the roadmap if there is 
> demand for one.
> +
> +The deltacloud core developers use (almost exclusively) <a 
> href="http://curl.haxx.se/";>cURL</a> as a command line client for working 
> with a deltacloud server. You can find more information on working with cURL 
> against deltacloud <a href="/curl-examples.html">here</a>.
> +
> +<hr/>
> +<br/>
> +<h1> /deprecated: </h1>
> +<br/>
> +<hr/>
> +<br/>
> +
> <h3 id="command">Using Deltacloud command tool</h3>
> 
> <p>Installing the Deltacloud Ruby client also gives you the 
> <strong>deltacloudc</strong> command line tool. This executable uses the 
> Deltacloud client library to speak to the Deltacloud server through the <a 
> href="/rest-api.html">REST API</a>. This means that you can control your 
> cloud infrastructure from the command line. The general usage pattern for 
> deltacloudc is:<p>
> @@ -18,7 +32,7 @@ title: Command Line Tools
>   </dd>
>   <dt>Operation</dt>
>   <dd>
> -  is collection dependant. All collections respond to 'index' and 'show' 
> operations (retrieve details on all objects in a given collection or on a 
> specific object). Some collections respond to 'create' and 'destroy' 
> operations. The collection of instances (realized virtual servers) responds 
> to operations for managing the instance lifecycle, such as 'stop' or 
> 'reboot'. 
> +  is collection dependant. All collections respond to 'index' and 'show' 
> operations (retrieve details on all objects in a given collection or on a 
> specific object). Some collections respond to 'create' and 'destroy' 
> operations. The collection of instances (realized virtual servers) responds 
> to operations for managing the instance lifecycle, such as 'stop' or 'reboot'.
>   </dd>
>   <dt>Options</dt>
>   <dd>
> diff --git a/site/content/curl-examples.md b/site/content/curl-examples.md
> new file mode 100644
> index 0000000..d3ddcbe
> --- /dev/null
> +++ b/site/content/curl-examples.md
> @@ -0,0 +1,269 @@
> +---
> +site_name: Deltacloud API
> +title: Working with cURL
> +---
> +
> +<br/>
> +
> +<div class="row">
> +
> +  <div class="span8">
> +
> +    <h3 id="command">Working with cURL as a command line client</h3>
> +
> +    <p> The <a href="http://curl.haxx.se/docs/";>cURL documentation</a> is 
> pretty comprehensive, but the following are some general points to remember 
> for using cURL against Deltacloud. All the examples on this page assume the 
> deltacloud server is running at localhost:3001: </p>
> +
> +  <ul>
> +    <li>
> +      Credentials are specified with <strong> --user "name:password"  
> </strong>
> +    </li>
> +    <li>
> +      Request headers are specified with <strong> -H "header: value" 
> </strong>. For the "Accept" header Deltacloud offers a convenient way of 
> specifying the desired response format; you can include the 
> <strong>"?format="</strong> parameter into the request URL rather than 
> setting the Accept header
> +    </li>
> +    <li>
> +      HTTP verbs are specified with <strong>-X VERB</strong>
> +    </li>
> +    <li>
> +      The <strong> -i </strong> flag will show you the response headers and 
> the <strong> -v </strong> flag will show you request and response headers as 
> well as info about cURL activity:
> +      <pre>
> +curl -v -X DELETE --user "username:password" -H "Accept: application/xml" 
> http://localhost:3001/api/keys/mykey
> +      </pre>
> +    </li>
> +  </ul>
> +
> +  </div>
> +
> +  <div class="span4">
> +
> +    <ul class="nav nav-list well">
> +      <li class="nav-header">cURL as a deltacloud client</li>
> +      <li class="active"><a href="#instances">Work with instances</a></li>
> +      <li><a href="#images">Work with images</a></li>
> +      <li><a href="#hardware_profiles">Work with hardware profiles</a></li>
> +      <li><a href="#realms">Work with realms</a></li>
> +      <li><a href="#keys">Work with keys</a></li>
> +      <li><a href="#firewalls">Work with firewalls</a></li>
> +      <li><a href="#addresses">Work with addresses</a></li>
> +      <li><a href="#load_balancers">Work with load balancers</a></li>
> +      <li><a href="#buckets">Work with buckets</a></li>
> +      <li><a href="#storage_volumes">Work with storage volumes</a></li>
> +      <li><a href="#storage_snapshots">Work with storage snapshots</a></li>
> +    </ul>
> +
> +  </div>
> +</div>
> +
> +<hr/>
> +
> +<h4 id="instances">Working with instances</h4>
> +
> +<p>Display a complete list of instances in xml format:</p>
> +
> +<pre> curl --user "user:pass" http://localhost:3001/api/instances?format=xml 
> </pre>
> +
> +Alternatively and if you prefer you can manually specify the Accept header:
> +
> +<pre> curl --user "user:pass" -H "Accept: application/xml" 
> http://localhost:3001/api/instances</pre>
> +
> +<p>Launch an instance. Note that in this example parameters are specified as 
> application/x-www-form-urlencoded through the use of the <strong> -d 
> </strong> flag:</p>
> +
> +<pre> curl -X POST --user "user:pass" -d 
> "image_id=ami-84db39ed&hwp_id=m1.small&keyname=marios_key"  
> http://localhost:3001/api/instances?format=xml </pre>
> +
> +<p>Alternatively, you can use the -F flag to specify the parameters as 
> multipart/form-data:</p>
> +
> +<pre> curl -X POST --user "user:pass" -F "image_id=ami-84db39ed" -F 
> "hwp_id=m1.small" -F "keyname=marios_key"  
> http://localhost:3001/api/instances?format=xml </pre>
> +
> +<p>Launch an instance action - reboot:</p>
> +
> +<pre> curl -X POST --user "user:pass" 
> http://localhost:3001/api/instances/reboot?format=xml </pre>
> +
> +<p>Run command on an instance (where available):</p>
> +
> +<pre> curl -X POST --user "user:pass" -F "cmd=uname -a; ls -l" -F 
> "private_key=`cat /location/of/ssh/keyfile`" 
> http://localhost:3001/api/instances/i-d77cd0ac/run?format=xml </pre>
> +
> +<h4 id="images">Working with images</h4>
> +
> +<p>Get the details of a specific image:</p>
> +
> +<pre> curl --user "user:pass" 
> http://localhost:3001/api/images/ami-3dc06a54?format=xml </pre>
> +
> +<p>Create an image from an existing instance (where available):</p>
> +
> +<pre>curl -X POST --user "user:pass" -d 
> "instance_id=i-d77cd0ac&name=mariostestimage" 
> http://localhost:3001/api/images?format=xml </pre>
> +
> +<p>Delete an image:</p>
> +
> +<pre>curl -X DELETE --user "user:pass" 
> http://localhost:3001/api/images/ami-3dc06a54?format=xml </pre>
> +
> +<h4 id="hardware_profiles">Working with hardware profiles</h4>
> +
> +<p>Get a list of all hardware profiles:</p>
> +
> +<pre> curl --user "user:pass" 
> http://localhost:3001/api/hardware_profiles?format=xml</pre>
> +
> +<p>Get the details of a specific hardware profile:</p>
> +
> +<pre> curl --user "user:pass" 
> http://localhost:3001/api/hardware_profiles/m2.4xlarge?format=xml </pre>
> +
> +<h4 id="realms">Working with realms</h4>
> +
> +<p>Get a list of all realms:</p>
> +
> +<pre> curl --user "user:pass" 
> http://localhost:3001/api/realms?format=xml</pre>
> +
> +<p>Get the details of a specific realm:</p>
> +
> +<pre> curl --user "user:pass" 
> http://localhost:3001/api/realms/us-east-1a?format=xml </pre>
> +
> +<h4 id="realms">Working with keys</h4>
> +
> +<p>Get a list of all keys:</p>
> +
> +<pre> curl --user "user:pass" http://localhost:3001/api/keys?format=xml</pre>
> +
> +<p>Create a new key (where available):</p>
> +
> +<pre> curl -X POST --user "user:pass" -d "name=mynewkey" 
> http://localhost:3001/api/keys?format=xml </pre>
> +
> +<p>Import an existing key (where available):</p>
> +
> +<pre> curl -X POST --user "user:pass" -F "name=mynewkey" -F "public_key=`cat 
> /location/of/public/key/id_rsa.pub`" 
> http://localhost:3001/api/keys?format=xml </pre>
> +
> +<p>Delete a key:</p>
> +
> +<pre> curl -X DELETE --user "user:pass" 
> http://localhost:3001/api/keys/mynewkey?format=xml </pre>
> +
> +<h4 id="firewalls">Working with firewalls</h4>
> +
> +<p>Get a list of all firewalls:</p>
> +
> +<pre> curl -v --user "user:pass" 
> http://localhost:3001/api/firewalls?format=xml </pre>
> +
> +<p>Create a new firewall:</p>
> +
> +<pre> curl -v -X POST --user "user:pass" -d 
> "name=my_new_firewall&description=a test firewall" 
> http://localhost:3001/api/firewalls?format=xml</pre>
> +
> +<p>Create a new firewall rule - port 22 tcp,  with one source firewall 
> (group) and 2 IP addresses:</p>
> +
> +<pre> curl -v -X POST --user "user:pass" -F "protocol=tcp" -F "port_from=22" 
> -F "port_to=22" -F "group1=default" -F "group1owner=821108636519" -F 
> "ip_address1=192.168.1.1/24" -F "ip_address2=65.128.31.27/32" 
> http://localhost:3001/api/firewalls/my_new_firewall/rules</pre>
> +
> +<p>Delete a firewall rule: </p>
> +
> +<pre> curl -v -X DELETE --user "user:pass" 
> http://localhost:3001/api/firewalls/marios_test_firewall/821108636519~tcp~22~22~@group,821108636519,default,@address,ipv4,192.168.1.1,24,@address,ipv4,65.128.31.27,32?format=xml
>  </pre>
> +
> +<p>Delete a firewall:</p>
> +
> +<pre>curl -v -X DELETE --user "user:pass" 
> http://localhost:3001/api/firewalls/marios_test_firewall?format=xml </pre>
> +
> +<h4 id="addresses">Working with addresses</h4>
> +
> +<p>Get a list of all addresses:</p>
> +
> +<pre> curl -v --user "user:pass" 
> http://localhost:3001/api/addresses?format=xml </pre>
> +
> +<p>Create a new address:</p>
> +
> +<pre> curl -v --user "user:pass" -X POST 
> http://localhost:3001/api/addresses?format=xml</pre>
> +
> +
> +<p>Associate an address with an instance:</p>
> +
> +<pre> curl -v -X POST --user "user:pass" -d "instance_id=i-d77cd0ac" 
> http://localhost:3001/api/addresses/23.23.176.127/associate?format=xml </pre>
> +
> +
> +<p>Disassociate an address from an instance:</p>
> +
> +<pre>curl -v -X POST --user "user:pass" 
> http://localhost:3001/api/addresses/23.23.176.127/disassociate?format=xml  
> </pre>
> +
> +<p>Delete an address:</p>
> +
> +<pre>curl -v -X DELETE --user "user:pass" 
> http://localhost:3001/api/addresses/23.23.176.127?format=xml  </pre>
> +
> +<h4 id="load_balancers">Working with load balancers</h4>
> +
> +<p>Get a list of all load balancers:</p>
> +
> +<pre> curl -v --user "user:pass" 
> http://localhost:3001/api/load_balancers?format=xml </pre>
> +
> +<p>Create a load balancer:</p>
> +
> +<pre> curl -v -X POST --user "user:pass" -d 
> "name=webtraffic-balancer&realm_id=us-east-1c&listener_protocol=HTTP&
> +listener_balancer_port=80&listener_instance_port=3001" 
> http://localhost:3001/api/load_balancers?format=xml </pre>
> +
> +<p>Register an instance with a load balancer:</p>
> +
> +<pre> curl -v -X POST --user "user:pass" -d "instance_id=i-4f06b52e" 
> http://localhost:3001/api/load_balancers/webtraffic-balancer/register?format=xml
>  </pre>
> +
> +<p>Unregister an instance from a load balancer:</p>
> +
> +<pre> curl -v -X POST --user "user:pass" -d  "instance_id=i-4f06b52e" 
> http://localhost:3001/api/load_balancers/webtraffic-balancer/unregister?format=xml
>  </pre>
> +
> +<p>Delete a load balancer:</p>
> +
> +<pre>curl -v --user "user:pass" -X DELETE 
> http://localhost:3001/api/load_balancers/web-traffic-balancer</pre>
> +
> +<h4 id="buckets">Working with buckets</h4>
> +
> +<p>Get the details of a bucket:</p>
> +
> +<pre>curl -v --user "user:pass" 
> http://localhost:3001/api/buckets/my_bucket?format=xml</pre>
> +
> +<p>Create a new bucket:</p>
> +
> +<pre>curl -v --user "user:pass" -X POST -d "name=shinynewbucket" 
> http://localhost:3001/api/buckets?format=xml</pre>
> +
> +<p>Create a new blob, specifying a content-type and some metadata:</p>
> +
> +<pre>curl -v --user "user:pass" -H "content-type: image/jpg" -H 
> 'X-Deltacloud-Blobmeta-Name:mariosblob' -H 'X-Deltacloud-Blobmeta-Author:me' 
> --upload-file "/some/location/image.jpg" 
> http://localhost:3001/api/buckets/shinynewbucket/newblob?format=xml </pre>
> +
> +<p> Note that the <strong>--upload-file</strong> parameter above causes cURL 
> to issue a HTTP PUT </p>
> +
> +<p> Get blob metadata: </p>
> +
> +<pre> curl -v --user "user:pass" -X HEAD 
> http://localhost:3001/api/buckets/shinynewbucket/newblob</pre>
> +
> +<p>Note that blob metadata is returned in the HTTP response headers. So the 
> use of the <strong>-v</strong> flag is important here or you will not see the 
> metadata.</p>
> +
> +<p>Update blob metadata:</p>
> +
> +<pre>curl -v --user "user:pass" -X POST -H 
> 'X-Deltacloud-Blobmeta-Name:mariosblobV2' -H 
> 'X-Deltacloud-Blobmeta-Version:v2.1.1'  
> http://localhost:3001/api/buckets/shinynewbucket/newblob?format=xml</pre>
> +
> +<p>Delete a blob:</p>
> +<pre>curl -v --user "user:pass" -X DELETE 
> http://localhost:3001/api/buckets/shinynewbucket/newblob?format=xml</pre>
> +
> +<p>Delete a bucket:</p>
> +<pre>curl -v --user "user:pass" -X DELETE 
> http://localhost:3001/api/bucket/shinynewbucket</pre>
> +
> +
> +<h4 id="storage_volumes">Working with storage volumes</h4>
> +
> +<p>Get a list of all storage volumes:</p>
> +
> +<pre>curl -v --user "user:pass" 
> http://localhost:3001/api/storage_volumes?format=xml</pre>
> +
> +<p>Create a new storage volume:</p>
> +
> +<pre>curl -v --user "user:pass" -X POST -d "capacity=10&realm_id=us-east-1c" 
> http://localhost:3001/api/storage_volumes?format=xml</pre>
> +
> +<p>Attach a volume to a running instance:</p>
> +
> +<pre>curl -v --user "user:pass" -X POST -d 
> "instance_id=i-b100b3d0&device=/dev/sdi" 
> http://localhost:3001/api/storage_volumes/vol-0bc0de60/attach?format=xml</pre>
> +
> +<p>Detach a volume (from whichever instance it is connected to):</p>
> +
> +<pre>curl -v --user "user:pass" -X POST  
> http://localhost:3001/api/storage_volumes/vol-0bc0de60/detach?format=xml</pre>
> +
> +<p>Delete a storage volume:</p>
> +<pre>curl -v --user "user:pass" -X DELETE 
> http://localhost:3001/api/storage_volumes/vol-0bc0de60?format=xml</pre>
> +
> +<h4 id="storage_snapshots">Working with storage snapshots</h4>
> +
> +<p>Get details about a specific storage snapshot:</p>
> +<pre>curl -v --user "user:pass" 
> http://localhost:3001/api/storage_snapshots/snap-45b8d024?format=xml</pre>
> +
> +<p>Create a new storage snapshot:</p>
> +<pre>curl -v --user "user:pass" -X POST -d "volume_id=vol-99fbe5f2" 
> http://localhost:3001/api/storage_snapshots?format=xml</pre>
> +
> +<p>Delete a storage snapshot:</p>
> +<pre>curl -v --user "user:pass" -X DELETE 
> http://localhost:3001/api/storage_snapshots/snap-dda6cebc?format=xml</pre>
> +
> diff --git a/site/content/usage.md b/site/content/usage.md
> index b63efc9..bf5d2cb 100644
> --- a/site/content/usage.md
> +++ b/site/content/usage.md
> @@ -1,4 +1,4 @@
> ---- 
> +---
> site_name: Deltacloud API
> title: Usage
> ---
> @@ -10,7 +10,7 @@ title: Usage
> 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: 
> +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>
> 
> @@ -129,6 +129,12 @@ 
> http://localhost:3001/api/buckets/mybucket/my_new_blob?format=xml
> 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>
> 
> +
> +<a class="btn btn-inverse btn-large" style="float: right" 
> href="/curl-examples.html">Working with cURL</a>
> +
> +<br/>
> +<br/>
> +
> <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.
> @@ -144,7 +150,7 @@ As of version 0.9, libdeltacloud is mostly <strong>API 
> stable</strong>, but not
> </p>
> 
> <p>
> -Due to the magic of libtool versioning, programs built against an older 
> version of libdeltacloud will refuse to run against a newer version of 
> libdeltacloud if the size of the structures has changed. If this happens, 
> then the program must be recompiled against the newer libdeltacloud. 
> +Due to the magic of libtool versioning, programs built against an older 
> version of libdeltacloud will refuse to run against a newer version of 
> libdeltacloud if the size of the structures has changed. If this happens, 
> then the program must be recompiled against the newer libdeltacloud.
> </p>
> 
> <a class="btn btn-inverse btn-large" style="float: right" 
> href="http://deltacloud.apache.org/libdeltacloud/index.html";>Libdeltacloud 
> documentation</a>
> diff --git a/site/output/command-tools.html b/site/output/command-tools.html
> index e6dd5ac..9589925 100644
> --- a/site/output/command-tools.html
> +++ b/site/output/command-tools.html
> @@ -88,6 +88,17 @@
> 
>       <p><br></p>
> 
> +<h3 id="command">deltacloudc is being deprecated</h3>
> +
> +<p>The deltacloudc command line tool is being deprecated. For now the code 
> making up deltacloudc has been moved to the /deltacloud/clients/console 
> directory but will ultimately be removed from the repo. If the command line 
> client is important to you then please <a href="contact.html">let us 
> know</a>. A new command line client may be put onto the roadmap if there is 
> demand for one.</p>
> +
> +<p>The deltacloud core developers use (almost exclusively) <a 
> href="http://curl.haxx.se/";>cURL</a> as a command line client for working 
> with a deltacloud server. You can find more information on working with cURL 
> against deltacloud <a href="curl-examples.html">here</a>.</p>
> +
> +<hr><p><br></p>
> +<h1> /deprecated: </h1>
> +<p><br></p>
> +<hr><p><br></p>
> +
> <h3 id="command">Using Deltacloud command tool</h3>
> 
> <p>Installing the Deltacloud Ruby client also gives you the 
> <strong>deltacloudc</strong> command line tool. This executable uses the 
> Deltacloud client library to speak to the Deltacloud server through the <a 
> href="rest-api.html">REST API</a>. This means that you can control your cloud 
> infrastructure from the command line. The general usage pattern for 
> deltacloudc is:</p><p>
> @@ -101,7 +112,7 @@
>   </dd>
>   <dt>Operation</dt>
>   <dd>
> -  is collection dependant. All collections respond to 'index' and 'show' 
> operations (retrieve details on all objects in a given collection or on a 
> specific object). Some collections respond to 'create' and 'destroy' 
> operations. The collection of instances (realized virtual servers) responds 
> to operations for managing the instance lifecycle, such as 'stop' or 
> 'reboot'. 
> +  is collection dependant. All collections respond to 'index' and 'show' 
> operations (retrieve details on all objects in a given collection or on a 
> specific object). Some collections respond to 'create' and 'destroy' 
> operations. The collection of instances (realized virtual servers) responds 
> to operations for managing the instance lifecycle, such as 'stop' or 'reboot'.
>   </dd>
>   <dt>Options</dt>
>   <dd>
> diff --git a/site/output/curl-examples.html b/site/output/curl-examples.html
> new file mode 100644
> index 0000000..c0d2da6
> --- /dev/null
> +++ b/site/output/curl-examples.html
> @@ -0,0 +1,366 @@
> +<!DOCTYPE html>
> +<html lang="en">
> +  <head>
> +    <meta charset="utf-8">
> +    <title>Working with cURL</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="span8">
> +
> +    <h3 id="command">Working with cURL as a command line client</h3>
> +
> +    <p> The <a href="http://curl.haxx.se/docs/";>cURL documentation</a> is 
> pretty comprehensive, but the following are some general points to remember 
> for using cURL against Deltacloud. All the examples on this page assume the 
> deltacloud server is running at localhost:3001: </p>
> +
> +  <ul>
> +<li>
> +      Credentials are specified with <strong> --user "name:password"  
> </strong>
> +    </li>
> +    <li>
> +      Request headers are specified with <strong> -H "header: value" 
> </strong>. For the "Accept" header Deltacloud offers a convenient way of 
> specifying the desired response format; you can include the 
> <strong>"?format="</strong> parameter into the request URL rather than 
> setting the Accept header
> +    </li>
> +    <li>
> +      HTTP verbs are specified with <strong>-X VERB</strong>
> +    </li>
> +    <li>
> +      The <strong> -i </strong> flag will show you the response headers and 
> the <strong> -v </strong> flag will show you request and response headers as 
> well as info about cURL activity:
> +      <pre>
> +curl -v -X DELETE --user "username:password" -H "Accept: application/xml" 
> http://localhost:3001/api/keys/mykey
> +      </pre>
> +    </li>
> +  </ul>
> +</div>
> +
> +  <div class="span4">
> +
> +    <ul class="nav nav-list well">
> +<li class="nav-header">cURL as a deltacloud client</li>
> +      <li class="active"><a href="#instances">Work with instances</a></li>
> +      <li><a href="#images">Work with images</a></li>
> +      <li><a href="#hardware_profiles">Work with hardware profiles</a></li>
> +      <li><a href="#realms">Work with realms</a></li>
> +      <li><a href="#keys">Work with keys</a></li>
> +      <li><a href="#firewalls">Work with firewalls</a></li>
> +      <li><a href="#addresses">Work with addresses</a></li>
> +      <li><a href="#load_balancers">Work with load balancers</a></li>
> +      <li><a href="#buckets">Work with buckets</a></li>
> +      <li><a href="#storage_volumes">Work with storage volumes</a></li>
> +      <li><a href="#storage_snapshots">Work with storage snapshots</a></li>
> +    </ul>
> +</div>
> +</div>
> +
> +<hr><h4 id="instances">Working with instances</h4>
> +
> +<p>Display a complete list of instances in xml format:</p>
> +
> +<pre> curl --user "user:pass" http://localhost:3001/api/instances?format=xml 
> </pre>
> +
> +<p>Alternatively and if you prefer you can manually specify the Accept 
> header:</p>
> +
> +<pre> curl --user "user:pass" -H "Accept: application/xml" 
> http://localhost:3001/api/instances</pre>
> +
> +<p>Launch an instance. Note that in this example parameters are specified as 
> application/x-www-form-urlencoded through the use of the <strong> -d 
> </strong> flag:</p>
> +
> +<pre> curl -X POST --user "user:pass" -d 
> "image_id=ami-84db39ed&amp;hwp_id=m1.small&amp;keyname=marios_key"  
> http://localhost:3001/api/instances?format=xml </pre>
> +
> +<p>Alternatively, you can use the -F flag to specify the parameters as 
> multipart/form-data:</p>
> +
> +<pre> curl -X POST --user "user:pass" -F "image_id=ami-84db39ed" -F 
> "hwp_id=m1.small" -F "keyname=marios_key"  
> http://localhost:3001/api/instances?format=xml </pre>
> +
> +<p>Launch an instance action - reboot:</p>
> +
> +<pre> curl -X POST --user "user:pass" 
> http://localhost:3001/api/instances/reboot?format=xml </pre>
> +
> +<p>Run command on an instance (where available):</p>
> +
> +<pre> curl -X POST --user "user:pass" -F "cmd=uname -a; ls -l" -F 
> "private_key=`cat /location/of/ssh/keyfile`" 
> http://localhost:3001/api/instances/i-d77cd0ac/run?format=xml </pre>
> +
> +<h4 id="images">Working with images</h4>
> +
> +<p>Get the details of a specific image:</p>
> +
> +<pre> curl --user "user:pass" 
> http://localhost:3001/api/images/ami-3dc06a54?format=xml </pre>
> +
> +<p>Create an image from an existing instance (where available):</p>
> +
> +<pre>curl -X POST --user "user:pass" -d 
> "instance_id=i-d77cd0ac&amp;name=mariostestimage" 
> http://localhost:3001/api/images?format=xml </pre>
> +
> +<p>Delete an image:</p>
> +
> +<pre>curl -X DELETE --user "user:pass" 
> http://localhost:3001/api/images/ami-3dc06a54?format=xml </pre>
> +
> +<h4 id="hardware_profiles">Working with hardware profiles</h4>
> +
> +<p>Get a list of all hardware profiles:</p>
> +
> +<pre> curl --user "user:pass" 
> http://localhost:3001/api/hardware_profiles?format=xml</pre>
> +
> +<p>Get the details of a specific hardware profile:</p>
> +
> +<pre> curl --user "user:pass" 
> http://localhost:3001/api/hardware_profiles/m2.4xlarge?format=xml </pre>
> +
> +<h4 id="realms">Working with realms</h4>
> +
> +<p>Get a list of all realms:</p>
> +
> +<pre> curl --user "user:pass" 
> http://localhost:3001/api/realms?format=xml</pre>
> +
> +<p>Get the details of a specific realm:</p>
> +
> +<pre> curl --user "user:pass" 
> http://localhost:3001/api/realms/us-east-1a?format=xml </pre>
> +
> +<h4 id="realms">Working with keys</h4>
> +
> +<p>Get a list of all keys:</p>
> +
> +<pre> curl --user "user:pass" http://localhost:3001/api/keys?format=xml</pre>
> +
> +<p>Create a new key (where available):</p>
> +
> +<pre> curl -X POST --user "user:pass" -d "name=mynewkey" 
> http://localhost:3001/api/keys?format=xml </pre>
> +
> +<p>Import an existing key (where available):</p>
> +
> +<pre> curl -X POST --user "user:pass" -F "name=mynewkey" -F "public_key=`cat 
> /location/of/public/key/id_rsa.pub`" 
> http://localhost:3001/api/keys?format=xml </pre>
> +
> +<p>Delete a key:</p>
> +
> +<pre> curl -X DELETE --user "user:pass" 
> http://localhost:3001/api/keys/mynewkey?format=xml </pre>
> +
> +<h4 id="firewalls">Working with firewalls</h4>
> +
> +<p>Get a list of all firewalls:</p>
> +
> +<pre> curl -v --user "user:pass" 
> http://localhost:3001/api/firewalls?format=xml </pre>
> +
> +<p>Create a new firewall:</p>
> +
> +<pre> curl -v -X POST --user "user:pass" -d 
> "name=my_new_firewall&amp;description=a test firewall" 
> http://localhost:3001/api/firewalls?format=xml</pre>
> +
> +<p>Create a new firewall rule - port 22 tcp,  with one source firewall 
> (group) and 2 IP addresses:</p>
> +
> +<pre> curl -v -X POST --user "user:pass" -F "protocol=tcp" -F "port_from=22" 
> -F "port_to=22" -F "group1=default" -F "group1owner=821108636519" -F 
> "ip_address1=192.168.1.1/24" -F "ip_address2=65.128.31.27/32" 
> http://localhost:3001/api/firewalls/my_new_firewall/rules</pre>
> +
> +<p>Delete a firewall rule: </p>
> +
> +<pre> curl -v -X DELETE --user "user:pass" 
> http://localhost:3001/api/firewalls/marios_test_firewall/821108636519~tcp~22~22~@group,821108636519,default,@address,ipv4,192.168.1.1,24,@address,ipv4,65.128.31.27,32?format=xml
>  </pre>
> +
> +<p>Delete a firewall:</p>
> +
> +<pre>curl -v -X DELETE --user "user:pass" 
> http://localhost:3001/api/firewalls/marios_test_firewall?format=xml </pre>
> +
> +<h4 id="addresses">Working with addresses</h4>
> +
> +<p>Get a list of all addresses:</p>
> +
> +<pre> curl -v --user "user:pass" 
> http://localhost:3001/api/addresses?format=xml </pre>
> +
> +<p>Create a new address:</p>
> +
> +<pre> curl -v --user "user:pass" -X POST 
> http://localhost:3001/api/addresses?format=xml</pre>
> +
> +<p>Associate an address with an instance:</p>
> +
> +<pre> curl -v -X POST --user "user:pass" -d "instance_id=i-d77cd0ac" 
> http://localhost:3001/api/addresses/23.23.176.127/associate?format=xml </pre>
> +
> +<p>Disassociate an address from an instance:</p>
> +
> +<pre>curl -v -X POST --user "user:pass" 
> http://localhost:3001/api/addresses/23.23.176.127/disassociate?format=xml  
> </pre>
> +
> +<p>Delete an address:</p>
> +
> +<pre>curl -v -X DELETE --user "user:pass" 
> http://localhost:3001/api/addresses/23.23.176.127?format=xml  </pre>
> +
> +<h4 id="load_balancers">Working with load balancers</h4>
> +
> +<p>Get a list of all load balancers:</p>
> +
> +<pre> curl -v --user "user:pass" 
> http://localhost:3001/api/load_balancers?format=xml </pre>
> +
> +<p>Create a load balancer:</p>
> +
> +<pre> curl -v -X POST --user "user:pass" -d 
> "name=webtraffic-balancer&amp;realm_id=us-east-1c&amp;listener_protocol=HTTP&amp;
> +listener_balancer_port=80&amp;listener_instance_port=3001" 
> http://localhost:3001/api/load_balancers?format=xml </pre>
> +
> +<p>Register an instance with a load balancer:</p>
> +
> +<pre> curl -v -X POST --user "user:pass" -d "instance_id=i-4f06b52e" 
> http://localhost:3001/api/load_balancers/webtraffic-balancer/register?format=xml
>  </pre>
> +
> +<p>Unregister an instance from a load balancer:</p>
> +
> +<pre> curl -v -X POST --user "user:pass" -d  "instance_id=i-4f06b52e" 
> http://localhost:3001/api/load_balancers/webtraffic-balancer/unregister?format=xml
>  </pre>
> +
> +<p>Delete a load balancer:</p>
> +
> +<pre>curl -v --user "user:pass" -X DELETE 
> http://localhost:3001/api/load_balancers/web-traffic-balancer</pre>
> +
> +<h4 id="buckets">Working with buckets</h4>
> +
> +<p>Get the details of a bucket:</p>
> +
> +<pre>curl -v --user "user:pass" 
> http://localhost:3001/api/buckets/my_bucket?format=xml</pre>
> +
> +<p>Create a new bucket:</p>
> +
> +<pre>curl -v --user "user:pass" -X POST -d "name=shinynewbucket" 
> http://localhost:3001/api/buckets?format=xml</pre>
> +
> +<p>Create a new blob, specifying a content-type and some metadata:</p>
> +
> +<pre>curl -v --user "user:pass" -H "content-type: image/jpg" -H 
> 'X-Deltacloud-Blobmeta-Name:mariosblob' -H 'X-Deltacloud-Blobmeta-Author:me' 
> --upload-file "/some/location/image.jpg" 
> http://localhost:3001/api/buckets/shinynewbucket/newblob?format=xml </pre>
> +
> +<p> Note that the <strong>--upload-file</strong> parameter above causes cURL 
> to issue a HTTP PUT </p>
> +
> +<p> Get blob metadata: </p>
> +
> +<pre> curl -v --user "user:pass" -X HEAD 
> http://localhost:3001/api/buckets/shinynewbucket/newblob</pre>
> +
> +<p>Note that blob metadata is returned in the HTTP response headers. So the 
> use of the <strong>-v</strong> flag is important here or you will not see the 
> metadata.</p>
> +
> +<p>Update blob metadata:</p>
> +
> +<pre>curl -v --user "user:pass" -X POST -H 
> 'X-Deltacloud-Blobmeta-Name:mariosblobV2' -H 
> 'X-Deltacloud-Blobmeta-Version:v2.1.1'  
> http://localhost:3001/api/buckets/shinynewbucket/newblob?format=xml</pre>
> +
> +<p>Delete a blob:</p>
> +<pre>curl -v --user "user:pass" -X DELETE 
> http://localhost:3001/api/buckets/shinynewbucket/newblob?format=xml</pre>
> +
> +<p>Delete a bucket:</p>
> +<pre>curl -v --user "user:pass" -X DELETE 
> http://localhost:3001/api/bucket/shinynewbucket</pre>
> +
> +<h4 id="storage_volumes">Working with storage volumes</h4>
> +
> +<p>Get a list of all storage volumes:</p>
> +
> +<pre>curl -v --user "user:pass" 
> http://localhost:3001/api/storage_volumes?format=xml</pre>
> +
> +<p>Create a new storage volume:</p>
> +
> +<pre>curl -v --user "user:pass" -X POST -d 
> "capacity=10&amp;realm_id=us-east-1c" 
> http://localhost:3001/api/storage_volumes?format=xml</pre>
> +
> +<p>Attach a volume to a running instance:</p>
> +
> +<pre>curl -v --user "user:pass" -X POST -d 
> "instance_id=i-b100b3d0&amp;device=/dev/sdi" 
> http://localhost:3001/api/storage_volumes/vol-0bc0de60/attach?format=xml</pre>
> +
> +<p>Detach a volume (from whichever instance it is connected to):</p>
> +
> +<pre>curl -v --user "user:pass" -X POST  
> http://localhost:3001/api/storage_volumes/vol-0bc0de60/detach?format=xml</pre>
> +
> +<p>Delete a storage volume:</p>
> +<pre>curl -v --user "user:pass" -X DELETE 
> http://localhost:3001/api/storage_volumes/vol-0bc0de60?format=xml</pre>
> +
> +<h4 id="storage_snapshots">Working with storage snapshots</h4>
> +
> +<p>Get details about a specific storage snapshot:</p>
> +<pre>curl -v --user "user:pass" 
> http://localhost:3001/api/storage_snapshots/snap-45b8d024?format=xml</pre>
> +
> +<p>Create a new storage snapshot:</p>
> +<pre>curl -v --user "user:pass" -X POST -d "volume_id=vol-99fbe5f2" 
> http://localhost:3001/api/storage_snapshots?format=xml</pre>
> +
> +<p>Delete a storage snapshot:</p>
> +<pre>curl -v --user "user:pass" -X DELETE 
> http://localhost:3001/api/storage_snapshots/snap-dda6cebc?format=xml</pre>
> +
> +      <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>
> diff --git a/site/output/usage.html b/site/output/usage.html
> index 3d34f5f..abe58d5 100644
> --- a/site/output/usage.html
> +++ b/site/output/usage.html
> @@ -94,7 +94,7 @@
> <p>Instead of dealing with HTTP interface you can use various clients to 
> communicate with Deltacloud server.</p>
> 
> <h3>The Deltacloud Ruby Client</h3>
> -<p>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: </p>
> +<p>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:</p>
> 
> <pre>$ sudo gem install deltacloud-client</pre>
> 
> @@ -210,7 +210,10 @@ 
> http://localhost:3001/api/buckets/mybucket/my_new_blob?format=xml
> 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>
> +
> +<a class="btn btn-inverse btn-large" style="float: right" 
> href="curl-examples.html">Working with cURL</a>
> +
> +<br><br><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>
> @@ -225,7 +228,7 @@ As of version 0.9, libdeltacloud is mostly <strong>API 
> stable</strong>, but not
> </p>
> 
> <p>
> -Due to the magic of libtool versioning, programs built against an older 
> version of libdeltacloud will refuse to run against a newer version of 
> libdeltacloud if the size of the structures has changed. If this happens, 
> then the program must be recompiled against the newer libdeltacloud. 
> +Due to the magic of libtool versioning, programs built against an older 
> version of libdeltacloud will refuse to run against a newer version of 
> libdeltacloud if the size of the structures has changed. If this happens, 
> then the program must be recompiled against the newer libdeltacloud.
> </p>
> 
> <a class="btn btn-inverse btn-large" style="float: right" 
> href="http://deltacloud.apache.org/libdeltacloud/index.html";>Libdeltacloud 
> documentation</a>
> -- 
> 1.7.6.5
> 

Michal Fojtik
http://deltacloud.org
mfoj...@redhat.com



Reply via email to