You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@deltacloud.apache.org by ma...@redhat.com on 2011/08/31 11:07:00 UTC

[PATCH 2/3] Updates Site docs - easy Download/Get started instructions, with examples using the ruby client, deltacloudc, and curl. Also updated contact information page for project.

From: marios <ma...@redhat.com>


Signed-off-by: marios <ma...@redhat.com>
---
 site/content/_drivers.mdown                |    3 +-
 site/content/_navigation.haml              |    5 +-
 site/content/_providers.haml               |    4 +-
 site/content/contact.mdown                 |   30 ++++
 site/content/documentation.haml            |    2 +-
 site/content/download.mdown                |  257 ++++++++++++++++++++++++++--
 site/content/index.haml                    |   19 ++-
 site/content/styles/deltacloud_concept.gif |  Bin 0 -> 19082 bytes
 8 files changed, 288 insertions(+), 32 deletions(-)
 create mode 100644 site/content/contact.mdown
 create mode 100644 site/content/styles/deltacloud_concept.gif

diff --git a/site/content/_drivers.mdown b/site/content/_drivers.mdown
index 56254fe..811cbbc 100644
--- a/site/content/_drivers.mdown
+++ b/site/content/_drivers.mdown
@@ -53,9 +53,8 @@ The driver and provider can be selected in one of two ways:
    effect as using the two request headers mentioned above.
 
 ## Notes on specific drivers
-
 <table providers></table>
-
+<a name=providers>.
 ### EC2 Driver
 
 For the Amazon EC2 you need to install the
diff --git a/site/content/_navigation.haml b/site/content/_navigation.haml
index 8a2e002..6586267 100644
--- a/site/content/_navigation.haml
+++ b/site/content/_navigation.haml
@@ -3,8 +3,9 @@ filter: haml
 ---
 - menu = [ { :href => "index.html", :title => "Deltacloud Home", :text => "Home" }, |
   { :href => "download.html", :title => "Get the latest releases", :text => "Download" }, |
-  { :href => "contribute.html", :title => "Information about design/development process", :text => "Contribute" }, |
-  { :href => "documentation.html", :title => "Project documentation", :text => "Documentation" } ] |
+  { :href => "contribute.html", :title => "Information about design/development process", :text => "Developers" }, |
+  { :href => "documentation.html", :title => "Project documentation", :text => "Documentation" }, |
+  { :href => "contact.html", :title => "Contact us!", :text => "Contact"} ] |
 
 #navigation
   #menu.container
diff --git a/site/content/_providers.haml b/site/content/_providers.haml
index d713858..bae2432 100644
--- a/site/content/_providers.haml
+++ b/site/content/_providers.haml
@@ -55,10 +55,10 @@ filter:
     %th.emptycell &nbsp;
     %th
       %strong Create
-      new containers
+      new buckets
     %th
       %strong Update/delete
-      containers
+      buckets
     %th
       %strong Create
       new blobs
diff --git a/site/content/contact.mdown b/site/content/contact.mdown
new file mode 100644
index 0000000..17a97ec
--- /dev/null
+++ b/site/content/contact.mdown
@@ -0,0 +1,30 @@
+---
+title: Deltacloud - Contact
+extension: html
+filter: markdown
+---
+
+Contact us!
+========
+
+We'd love to hear about your experiences with Deltacloud:
+
+* [deltacloud-dev@incubator.apache.org](http://mail-archives.apache.org/mod_mbox/incubator-deltacloud-dev/)
+  is our mailing list where you can ask questions or see all the latest patches and development activity
+  at the bleeding edge of the project,
+* The [#deltacloud](http://webchat.freenode.net/) irc channel on Freenode is where
+  the developers hang out and where you can usually get the fastest answers to your questions,
+* Our [Teambox](http://teambox.com/projects/deltacloud) page is where we keep the latest
+  task lists and where you can comment on or suggest new features for the project,
+* We have a [github](https://github.com/apache/deltacloud) page which is a mirror of the
+  apache git repo, if you prefer to get the code or contribute that way.
+* We track bugs in [Apache JIRA](https://issues.apache.org/jira/browse/DTACLOUD). If you are
+  have found a problem with Deltacloud you can check if it is already known to the Deltacloud
+  developers or [report it here](https://issues.apache.org/jira/secure/CreateIssue!default.jspa).
+
+Please don't hesitate to get in touch if you have any questions about the project,
+if you've had any issues with installing or using Deltacloud or even just to tell us
+how great you think Deltacloud is! You might want to contribute a translation of
+the Deltacloud documentation (or even this webpage), you may want to contribute
+to the code and need some help getting started.
+
diff --git a/site/content/documentation.haml b/site/content/documentation.haml
index 8019d08..d5d8c32 100644
--- a/site/content/documentation.haml
+++ b/site/content/documentation.haml
@@ -46,7 +46,7 @@ filter:
   stored on the server.  The exact credentials for logging into the server,
   and where you find them, depends on the backend cloud that the server is
   talking to.
-
+%a(name="credentials")
 %p
   The following table gives details about how to set up the server and what
   credentials to provide for each of the supported clouds. The entry from
diff --git a/site/content/download.mdown b/site/content/download.mdown
index dee8181..b531579 100644
--- a/site/content/download.mdown
+++ b/site/content/download.mdown
@@ -4,25 +4,200 @@ extension: html
 filter: markdown
 ---
 
-Download
+Download Deltacloud
 ========
 
-Official releases can be downloaded from the
-[Apache website](http://www.apache.org/dist/incubator/deltacloud/)
+<img src="styles/deltacloud_concept.gif" alt="Deltacloud conceptual overview" width=850 />
 
-### Deltacloud Core ###
+Deltacloud provides the API server and drivers necessary for connecting
+to the [cloud providers](./drivers.html#providers "Deltacloud drivers").
+Install Deltacloud and start the ***deltacloudd*** daemon server. You can use your
+favourite HTTP client to talk to the server using the
+[Deltacloud REST API](api.html "Deltacloud REST API"). 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. As of Deltacloud 0.4.0, the HTML interface
+is written with the [jQuery mobile](http://jquerymobile.com "jquery mobile")
+framework so it plays especially well with your mobile or tablet devices.
 
-Deltacloud Core provides the API server and drivers necessary for connecting
-to the cloud providers.
+### "Hello Deltacloud!" - Quick start ###
 
-We also make Ruby gems of each release available. You can install it by
-typing the following command:
+This guide assumes a linux environment. Some of the Deltacloud developers
+are running recent versions of [Fedora](http://fedoraproject.org "Fedora Project").
+However, as Deltacloud is written in Ruby you should be able to install it on
+any OS that supports Ruby. If you have succesfully installed Deltacloud or are
+having any problems doing so, please [let us know](contact.html) -
+we'd love to hear from you.
+
+The two main pre-requisites to a fast Deltacloud installation are **Ruby**
+and **RubyGems**. Deltacloud will run trouble-free on Ruby versions
+1.8.6 and 1.8.7 though you should also be fine with version 1.9. You can contribute
+to this project by [letting us know](contact.html) of any issues you may come across
+with particular Ruby or RubyGem versions; your input is highly appreciated!
+
+#### Get Deltacloud ####
+
+First you need to [install ruby](http://www.ruby-lang.org/en/downloads/ "Install Ruby").
+You can check to see if you already have a ruby installation by typing:
+
+    $ ruby -v
+
+If you see something that looks like the following:
+
+    $ ruby 1.8.6 (2010-09-02 patchlevel 420) [i386-linux]
+
+then you can skip the ruby installation (you need ruby that is at *least* version 1.8.6).
+
+Deltacloud relies on a number of ruby gems so you also need to
+[install RubyGems](http://docs.rubygems.org/read/chapter/3 "Install RubyGems"). As above, you can
+check if you already have the ***gem*** executable installed by typing:
+
+    $ gem -v
+
+Once you have Ruby and RubyGems, installing Deltacloud is as easy as typing:
 
     $ sudo gem install deltacloud-core
 
+**And thats it!** Yes, really. The **gem install** command will automatically fetch and install
+all other gems that the Deltacloud server needs if you don't already have these. As an alternative
+you can get the latest releases of Deltacloud from the
+[Apache website](http://www.apache.org/dist/incubator/deltacloud/).
+
+
+
+#### Run Deltacloud ####
+
+After you succesfully install Deltacloud, you can start the server by typing
+***deltacloudd -i \<provider_id\>***. The ***\<provider_id\>*** is the name of the cloud
+provider that you have an account with, for example 'ec2'. If you don't yet have an account
+with a cloud provider, you can still try the Deltacloud mock driver:
+
+    $ deltacloudd -i mock
+
+This will start the Deltacloud server on your local machine with the mock driver, accepting
+connections on port 3001 (the default). From version 0.4.0 of Deltacloud, you can use the '-l'
+ flag to see [all available](./drivers.html#providers "Deltacloud drivers")
+ ***\<provider_id\>***s that can be used with the **deltacloudd** executable.
+
+    $ deltacloudd -l
+    Available drivers:
+
+    * condor
+    * vsphere
+    * opennebula
+    * eucalyptus
+    * rhevm
+    * sbc
+    * azure
+    * gogrid
+    * mock
+    * rackspace
+    * rimuhosting
+    * terremark
+    * ec2
+
+**After you start the server, the Deltacloud HTML interface is available at** *http://localhost:3001/api* ** open this address in your web browser**.
+
+Your browser will prompt you for [credentials](documentation.html#credentials)
+when you invoke an operation that requires [authentication](api.html#authentication).
+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:
+
+    $ deltacloudd -i rackspace -P 10000
+
+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:
+
+    $ deltacloudd -i ec2 -P 5000 -r 192.168.10.200
+
+This will make the Deltacloud server available at the address **http://192.168.10.200:5000/api**.
+
+
 Additional Tools
 ----------------
-These are complementary to the essential Core components.
+The following are complementary to the Deltacloud server.
+
+### Deltacloud Client ###
+
+The Deltacloud project also maintains a ruby client, which you need to install
+separately to the Deltacloud API server. The Deltacloud client consists of a
+ ruby library (packaged as a ruby gem) which you can use to programmatically
+interact with the Deltacloud server and control your cloud infrastructure
+across cloud providers. For example, assuming the Deltacloud server is
+running at **192.168.10.244:5000**
+
+    require 'deltacloud'
+
+    api_url      = 'http://192.168.10.244:5000/api'
+    api_name     = 'TK2PJCAN9R1HKG2FK24Z'
+    api_password = 'aLe27rZlRhlBcVoQbL4JsVtaNga12vEL9d9kS5CA'
+
+    client = DeltaCloud.new( api_name, api_password, api_url )
+
+    # get a list of currently running instances (virtual machines)
+    client.instances.each do |instance|
+      puts instance.name
+    end
+
+    #do other work with client here
+
+More comprehensive information on using the Deltacloud ruby client in this way
+can be found in [the documentation](client-ruby.html).
+
+Assuming you already have Ruby and RubyGems setup, you can install the Deltacloud
+client by simply typing:
+
+    $ sudo gem install deltacloud-client
+
+Installing the Deltacloud client also gives you the **deltacloudc** command line
+tool. This executable makes use of the Deltacloud client library to speak to the
+Deltacloud server using the [REST API](api.html). This allows you to to control
+your IAAS cloud infrastructure form the command line; even better if you are
+familiar with linux scripting, you can knock up a bash script in no time
+to automate your cloud infrastructure tasks.
+
+The general usage pattern for deltacloudc is:
+
+    $ deltacloudc collection operation [options]
+
+ * <em><b>collection</b></em> refers to the Deltacloud object collections, such as Instances,
+   Images, Buckets, Realms etc, as described in greater detail in the
+   [REST API](api.html#h1)
+ * <em><b>operation</b></em> 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, respectively); some collections respond to 'create' and 'destroy'
+   operations. The instances collection (realised virtual servers) responds to operations
+   for managing the instance lifecycle, such as 'stop', 'reboot' etc.
+ * <em><b>options</b></em> are listed by invoking <b>deltacloudc -h</b>. One important
+   option is <b>-u</b>, with which you specify the API\_URL at which the Deltacloud server
+   is running. The API\_URL takes the form <b>http://[user]:[password]@[api_url]:[port]/[api]</b>
+   (examples follow). Alternatively, rather than having to supply the API\_URL for every
+   invocation of <b>deltacloudc</b> you have the choice of setting the API\_URL environment
+   variable (e.g., export API\_URL=http://mockuser:mockpassword@localhost:3001/api). A listing of the credentials you need to provide for each back-end cloud provider
+is available [here](documentation.html#credentials).
+
+
+The following examples assume that the Deltacloud server is running on your local machine
+port 3001 (the **deltacloudd** server daemon defaults to 'localhost:3001') and was started
+with the 'mock' provider (i.e. **deltacloudd -i mock**).
+
+To list all collections available in the current driver:
+
+    $ deltacloudc -l -u http://mockuser:mockpassword@localhost:3001/api
+
+To get a list of all **images**:
+
+    $ deltacloudc images index -u http://mockuser:mockpassword@localhost:3001/api
+
+To list all operations for the **buckets** collection:
+
+    $ deltacloudc buckets -l -u http://mockuser:mockpassword@localhost:3001/api
+
+To create a new blob in the bucket called 'bucket1':
+
+    $ deltacloudc blob create -i 'my_new_blob' -b 'bucket1' -f /home/marios/file.txt
+
 
 ### libdeltacloud ###
 
@@ -38,19 +213,67 @@ Or you can download the RPMs for Fedora 12 and 13:
 
 Contributed by Chris Lalancette.
 
+### Other HTTP clients - cURL
 
-### Deltacloud Client ###
+As interaction with the Deltacloud server is via HTTP calls, you can use any
+HTTP client to talk to it using the Deltacloud
+[REST API](api.html "Deltacloud REST API"). One popular command line tool available
+on most modern linux distributions is [cURL](http://curl.haxx.se/ "cURL"). We
+give some examples here of how you can use cURL to interact with Deltacloud,
+demonstrating the flexibility and power of the Deltacloud REST API.
+
+The following examples assume the Deltacloud server is running on locahost:3001,
+and was started with the 'ec2' driver (i.e., **deltacloudd -i ec2**)
+
+To get a [listing of all images](api.html#list_images) available in the
+back-end cloud:
+
+    curl  --user "pGbAJ1TsVg5PKs3BK27O:dPs47ralgBlldqYNbLg3scthsg4g8v0L9d6Mb5DK"
+    "http://localhost:3001/api/images?format=xml"
+
+The cURL **--user** option is used to specify the **username:password**
+[credentials](documentation.html#credentials)
+for access to the back-end cloud provider (Amazon EC2 in this case).
+
+To [create a new instance](api.html#create_instance) from the
+[image](api.html#h3_3) with id 'ami-f51aff9c', in [realm](api.html#h3_1)
+ 'us-east-1c', with the [hardware profile](api.html#h3_2) 'c1.medium',
+in [firewall](api.html#h3_7) 'default':
+
+    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"
+
+To [delete a firewall](api.html#delete_firewall) called 'develgroup':
+
+    curl -X DELETE
+    --user "pGbAJ1TsVg5PKs3BK27O:dPs47ralgBlldqYNbLg3scthsg4g8v0L9d6Mb5DK"
+    http://localhost:3001/api/firewalls/develgroup?format=xml
+
+To [create a blob](api.html#create_blob) called 'my_new_blob' within the
+[bucket](api.html#h4_3) 'mybucket' from a local file with ***HTTP PUT***,
+specifying its content type and setting some some metadata ***key:value***
+pairs:
+
+    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
 
-Deltacloud Client is a command line tool that communicates with the
-Deltacloud&nbsp;API.
+To [retrieve blob metadata](api.html#h4_3_10) for the blob called 'my_new_blob':
 
-Type the following command to install it:
+    curl -iv -X HEAD
+    --user "pGbAJ1TsVg5PKs3BK27O:dPs47ralgBlldqYNbLg3scthsg4g8v0L9d6Mb5DK"
+    http://localhost:3001/api/buckets/mybucket/my_new_blob?format=xml
 
-    $ gem install deltacloud-client
+Note the use of the '-iv' flags here which will ensure that cURL displays the
+request and response headers (blob metadata is reported in the response headers,
+with an empty response body).
 
 ### Your name here ###
 
-Do you have a tool to make Deltacloud more useful? Let us know on our
-[deltacloud-devel mailing list][deltacloud-devel] and we'll post it here!
+Do you have a tool to make Deltacloud more useful? [Let us know](contact.html)
+and we'll add your contributions to this page!
 
-[deltacloud-devel]: mailto:deltacloud-dev-subscribe@incubator.apache.org
diff --git a/site/content/index.haml b/site/content/index.haml
index 70284d8..32737ae 100644
--- a/site/content/index.haml
+++ b/site/content/index.haml
@@ -12,14 +12,17 @@ filter: haml
   .colleft
     %p
       %em
-        Deltacloud Core
+        Deltacloud
       gives you:
     %ul
       %li
-        REST API (simple, any-platform access)
+        A
+        %a{ :href => "api.html" }
+          RESTful API
+        for simple, any-platform access
       %li
-        %a.providers{ :href => "#providers", :title => "Supported providers" }
-          Support for all major cloud service providers
+        Support for all
+        %a.providers{ :href => "#providers", :title => "Supported providers" }          major cloud service providers
       %li
         Backward compatibility across versions, providing long-term stability for scripts, tools and applications
       %li
@@ -30,11 +33,11 @@ filter: haml
   .right
     %img{ :src => "styles/diagram-soa.png", :height => "265", :alt => "diagram-soa", :width => "620", :style => "margin-bottom:1em;" }
   %p.foot
-    The
+    %em Deltacloud
+    makes it easy for cloud providers to
     %a{ :href => "documentation.html" }
-      Deltacloud Core
-    makes it easy for cloud
-    providers to add their cloud to the Deltacloud common API.
+      add their cloud
+    to the Deltacloud API.
 #news
   .recent
     %h2
diff --git a/site/content/styles/deltacloud_concept.gif b/site/content/styles/deltacloud_concept.gif
new file mode 100644
index 0000000000000000000000000000000000000000..54e2eb57b7b950ced3b540a6e1c46f3b5d7ba50e
GIT binary patch
literal 19082
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...@N>7aT
zvEP@*?@Dz*X`1+YudYLA#@-kW?$zYjLE3E%kO2r)oS-`Bo$4+qWe`#4FehJNyV;Hu
z(YVX0Y@JTuOca^9*&}jm{WX9SU%?>AJIR(X&E8fK&g~NiqDD>+!T*tOF0v7VDh=n*
zQqKWpAjS+#+vPGPWkoo4pI?u?wVWFXR%LQR3ef4@#?>N=>j-&BNbD8gGbe3QhC>+1
z?V$=PYpDQ&2!j#0gtH-dje+v4tQ5zrKnEThb>k3WL@)`ju^`#3VP#7r)QBPH2yGrp
zQ=vrSl2^aHibmJ4)^~G67V5Lp0k7gLeH6%P;PAPl^wI!-tM%!O_DMt{-~JrpZEsqD
z<R_{EFjDi?+?Fj)I*2nEhg2z}Y!8Em)Z#`<#!<4vnBUx0kTNsV9;7i-2RkGq_oWUZ
z$nbdVq7@+V(IjH`>rcqE+7kJv&GMUil-5vt>qZ3VQw2GBrS?)hch(18F&bfug*3sL
zU#?O4AKKbxu=7UG7m#^<XYr(ueT<^1t$Z#zwTTo7*C3R1vbB<oN(VJ!jP4^fF_4YV
zWU<7+KxOp3&#7639RFlZN1z1cYsBQ`bPM&H#$5IgLpg#^aBIfF3W&YOGZ+nx;^`J1
zt5VYqnld=udcW1Oa?Jm`vC%R5(n)@yfbCX#iqrhubb9026PPCV6Viq6Ieu#&5vg8_
zZ!wi;$I{xd<5u91l$>W44^MWo`dx-e9=KhH1wQS%EqFzgN2xGr4{f@rItG2zc-6DY
zQ*I+#X!bX3^2PhAP;FyS$JlDtZkSS^Jq*BuU0NVLe};jYp9y$<wgxYVP`94q`f&@-
zd^v1GV9%+*FHHO`T>2)eg*@@yH_Bk2k130`)EA>4u^VVO<0;eERYfD<B)a8jirPi*
z@RsgX1B_Ih62zDL7Du1ld!&a*BRqnx!HyESjN&Q=C)i3)QE{8)<T9zt|GH*X7xSkR
zBDV#?(g5^Cv>o-~db%A9%Ou~A((o&NlW@%yahOXd7Sh#?$faf#5zQ0$S-!w1VoG(r
zH5KRweUM%~DVxIy2akyemtQ48eCQ1Y3oi_XK4brb;m(F<h=i&Anf9U<tIBu$EXbq2
zM73WkpgC}r-JUhYr`?LY`ZE!%*}LiVZ-pyI?W_BT-yfd~oi*({skktkvk``ycccek
zPh@H;3~|`6)P%wpbB61kq&y9V=7h$0j0nmNgaT{zIFHCwa1L-XZX_I-s*(~)xq!nM
zO1K=W3$7Uk9CtO<2ywzAa{mOOOc>c61UM&dfI2i*GjlwIExkV@NO+o;$Z{M5zr>HI
zw*tEPT1U%y&d49FXGY@vAt;^dtGLJWi_D=vOj<G8#CVlrDv@OWX-Wejq8m|l#Avl6
zFI*fs%sCuCUtphg#y-TOQ<nj*@%ZIvsO1(pg61gk71elb7!7#5*XFI7HxJ@&#%X@;
z$5)qCgF-9nvq@hQ`cF;08#qG9zkCWPU{FgALoqVK9f5hW7fA!(VJsijtgr_bnTa4)
zjJKUXEDX2dIE?}W<j>)NbDXHP`_Pzb%(FGuySrPOvafaK1ZD*^K7HFm{mu)wn4%N|
z_S<TQfN_Z{Bi7^=+_Oag4MJQu!k0Epwkih$m24BIJk<BiSCBb9pQpDG(@rw0Q<Jr?
zJ!ycgFPbJuKlFTLQVSv2TDootVy%$p;kS&~+~_pv`99|DWLxm0ZkI-27Pr|TpPWHK
zZH(vZo#RDAvn}510L~X2$2ca>cFz60Sc`E8&NP0)2zw!cbx&U>dUVD?AcNJEHWb40
z5%%dxKe8Qt6C+!W(f>@=-iwc4Tl^?E(AbsY2jYpuv_{nGjgRwmrek@NpAOqID{v0*
z2!GY0|6|W<`f=KH+%Ly)Uqj&8$C)QTL?R31jwgkJ32jyU^Vj&7#ov9LGo$vGj+Aqe
z;RAVV(2X+PHMr18@janstfjb3un`d*pLi4>Nxh$Tiss8-N(~CAWRQ1LGqhOF9>1#+
z_jJ=yupmvu3#>uQyBoaTT&-3KtW$n@#!a)imSopn?!@%eVqx<`$N2Zgz@n!%-!|71
z|Fzde%X`?<yjXn~76>jgrigx{h~$x4(&}Q|bTmC%TpJJS?CAIOde*BUYC9BBo}AVt
z@w@ESNmOGT;oz;T^7?Dcv%VvF@8|0U0=~)hn$vzmZl=;7Zw>B<u?si$FKD*+@Ku9{
z-_21_^_BXjoIT67ocqLeGCJ0*rSFu30TO%s0kL=!8(Jg$qF-BWF=M6hEHrOMn?pqf
zB}0ZDg=O|!-A^^Q@Ar`lJffut6{Xpe!h38JPDnclf+LO2jn>jD>`we(LYw(YYJeXa
zMaf<f()QqZ&NH5VI6-$DD8o%0S5E#s5fd`IR-8k`KlD}U9R`=z=Z@S2-`GUA%%D*s
z?GM!O3%iP83ltIDml}2W>V5Cp18oMwVW*iix18E>P`b47!ZmJq-~Q|8?V}Y;+L>e?
zD?c56)HD^<`8E&FeZRT9oBbnb#IKpH*~{F`fH|dNRbNcAz;c7d1k$yt=z-K&*qh?!
z)YA7K*8+68kW?7=u)CLs+6sT0S9byHlF!ATQHLC|^(VjI??<NO1j)wRC@`1pt`LIM
zDv+svh+%*CmkxjDlMhy(#lFu^)Ah@F_C#l?df)*hP#9Si|013U!E@x380YW~5HN@@
zCT|};NFXM)q4_Rxm^I6X<J|^=$U~9IL7tFu2*y4{E;i)o-=EdhT`<UTqSxQ9hjf=6
zqN^ODZy#c4=p=gHO4$;DVTjWuY9|hDp&lJVhz+x$hS?j~*I%?!HI!%8bklEjrBKME
z-9D}(>R;ZHlORm|iIaHwMM*%8=+P{Ju#wWFqI9Y32v*#21OS#vVdyEZ=)HuoEc*A%
zNXx#?tR2t9OlZb^PLvxZ>Z^duDSz%=j+7p@1fy4#`L}z~r?OuGqr<X&OC!o+XYXsD
zj+FSzrY81w6A}EAr5B>iQZ^DsUO>?7aw6MlEo`#OU*g)8GygO<%SOp)QI0fJkVdJ=
z8O<t9_r_^cs+iXIZ!yHfo-^;_462C1qif#(mVN(6bD(yM?AkDMWGc07Yq;{E`g#kR
zLOXE8K=9|b&rIz7uBF0dK@U)9#7>Ur%gBH<`(vwB1z}3nld^FyG1dMy`V)$}zh>h#
z&mTK!P57}Bm~Rir(NP{!<l6>J#70e8WDLd;4`SmhClf~}lU65_4<}RZCR4#vX_Qmx
z>{A(HQ<<o#tcy+_E#*m8<?PW(F{5tJrxWeL>bav+J0T;y>^&EJW$H#~Z=?Kz*(p1Z
z-gmti-7MAby(%C@rZ<Q;Z(#BIEpe5W;94!nDuISL@bQQ!s$rJS;~`VcfPO%+=#sWB
zd{CpcO=gC?yP1EwE34F=T_%H7Rk}qb3L{;fH6sx<@x@Z(4RP-icCB<weu=rJn|(JD
zKB9FI_v!&s!W&m%fr`cSp>JwO1Ez;ZWsQ8t2EcQRlyea{Y%}z8E2z0uqq#N5xeozz
z>rrzXS#uvN=Qi8tG90FO`!El6Q)yr3u(|hhTX&E=qtu@c(gP@nW8v&;Gp#Vk`MuEp
zrjF{#A?fG7$)Y6X5`MU$7NnN}C2ofj_E1aPn2u7!EELLoyMV-Olf{DHs8f!;;qTSl
zp6K(}{o)v3afj+A(n>q+(c@Rk;al)a5_;agu;iv%e>hfA7AH+Nqj)%hwVJtkp|!N4
zp(IB?XH<8eq_MO@nsKiSGM@RB$&&z`u^wHBs?gk?>Hnsw23=O|7gP3&TI#!)2scuT
zW*ock)lC~zSaeVcFro_dm@e1QkGj|V8o()M$2;BL^O%qwvNHi{To`_uKPx*fG_4>X
zK6?<pSfMfF$CxQPWI)%b_bbZ)`(3oSJYfOnyFR7$e4_2LRNyQOHz)PfphCuguzgZq
zTl?^CMUiS1$+4;=zN(B~MH#Q6omN!>jk?)&oar@A8I?5}b!zhG|CP?G9<AyKi2aR{
z{l`e~_)a;Jf7YBGK;_T*{X#$I3tF>pj5iwv$Tqf|9bxj+n8`H~PuDRR>tp`DYD;Az
zqPhI9Ps7DS0f9@;wx%y}o+4940sq@im#kt)vW#h%KnV1^Mw#qBS2>~k;6t?z;RhHq
zt^1?b1B}-Loz{Z_*PlhN2WPK`RINYHW>usjz!hJpTqdnTQpzE-)eo68JJut_&5*E-
z)9yZ5abq`Pf*%cXRo81+S*JP$VQtG~-Xpm}@`oy=GUclZW0(8|Gi?YJPDMEFqG_dW
zy|k{a-<uryjoj>yse=mM+8<&##tf+*|EzrP$kA;Otq=HP=5oFfwwjW%wjP;Pi{(?3
ztQ$up>z`^)j11{lYeQbKZ{)3QHp(N<4maQ8ZZ%VFwNyz4pGlKsfx0jR(zHZevxwH{
zt*)1fcv(cCSp)(V$7=MBuRsDPYwJDkcHMG>fW^D#;RH0YJU#t`?Z!iW9b5c$A{)0`
zgH_wpYc#8tR&aKK^ti71z;d<TdV!G|)8(P|Z1LhYk&u?{H79GnA<*%n$fW)j8nV-q
zJWS`X&D(38X+MM=_uTn}ySta$dGEJHTiN=#DjpbGwUbOBKsdA)y?d&ic%LBker!AL
zMaxI+-Ja}-vzJv<*}GTSmePx$$=aO-j`$%C>+l!xlt!)j!SZ8J>ptkGhrgDbp{%?W
z97!vR?XKmk4o~t1ZTjSi`o{=<qxas9?e-fFarTK^F>z6u6G24UpK9(Ak*?pDBf{8r
z`81RAesj`|?!mlFc@L0~peMY`5<iV4$%8)o8}H8H5)sMmxocV<zx>Q-VkA9j#qF5L
z6>0m=-fpr3!6dPd;z)FRkwpKabJKH}EoMK}qsxDUn7TMZ+-ff~ZeQR(ufh}@PoF#5
zKAfi1KEGKJYZo9dxMCydd|>y-KC~dscc!X$Fe0{)i1z7$9Q8O2=74}8(Ufpc!fKCf
z^+1Vw$VW3g_QiqQbuvL~IqRqzGba(F#GyveAo?G~tt_V_&Q4%{^7D~MPFkcs=aGTL
zk)g_wk;##<^N~r=k!j44S<aF9V<*+BBg^q4s}D!k$4=HUYTDD41a=(Iti2@1l(e+N
z{g-V{&d1I{&O(L`%G$>+Z;stNkDta^^OPP^cmQJv;%O$~(mC<n5uM|whnFOz;4~N!
z4#Biv`U3mw{)iKZ(4)!caP^=^sf&n{vE#5GC$DtcR#y<pJ1$Omr;#eBVbrc5uOu1&
z(^!)ztQ<FvXzr;9CfqIt&TDZnsR%fPnh~_6X8_Jf4w@H-is{WT00@TLy(}u|>~)MA
zC-rLXo3s4OlReCTxHj2<98oSrsM)$#c<Q=u>#_oa9CGugE2dO%@~0`LXa~X{&Jo-z
zlciqTwQtnwa|nu#&r5<65I6|1Y{HJK1XZw<y$a6(tvi7GoJf-fs%f?m@l@_*IzSPF
z%0M)HDE&F-4*Rjfl&IF265kYb3a1AH{FBg}u(p2=?_-iW@J2zdG*g$<3V9xP8G!Ey
zQvdAI9Fy9C`IEe2-bJ0KvwP=yEop0$lt6|A6n6w!ZR6<Wfiv(xgfzZ@$Z^8#3$`4u
z<@vwF=bY_KwH^ffE_qFSS&)5EN{_YGr*T%7uOULo@(iog&3h3fAd07G03%L<r@AkY
z&>V~^_AGAx$}_!>J5w{a@%6m!<O#^@P^h>(@XP1pA`%^*0aA|%=8Q8ScOTyT566Ly
zn#>7XlkWhJlMmkGwoRc*7%{~JvB~fUBx4yAgg;3K#$du_2vO#k3TVWLG@)`A5X_Ci
zQ;huT+?10RK1N5fg?B;_p7$|~AaUCMAj~6GCGP8u{^1}qQ?)rWOWYiNL+3HmPiuiX
zoAi8OJXW!2kB9|KQgX@4?9m|Oq;d7#Cr*x+?UeDV+8|NTI|-zlit}m`dlE!&?4D2R
zoe(JFan1>5@_|4$!n?~DDipKuq!QZoqnJwBlJ_7S^v%fJaM(uK_Yi23Gr^d1*D;3x
zg^tT%bMrU|Lq+c8lOCY)wkdUzY?=^b)K~`WD`iu?gzMkDPs<GVx%nD?!~HFe=Nrpb
zx8HYHwl7P?Mm#Gr@tguLIllnRbE@?Is<D&OWKkiC(SEOw1#itJ>e!!?1Q}74(sIbZ
zD~MS1K`Y|K2IHW+ZsqWOm3`t^_kIitmv0DhAi0u9Y18B4<I|p7UvnpVhE4jb5d1&~
z9dHNQyna);xr*xkdGV3P37<?wB>%B==E1LCL7H2nGzH?5sS&mp+YO78^?n>BMM1?^
z>cH~#52@$m##wU?L#!H3i4Ng;aS#X^QPK4yVlwElWCh8$AKo+xc5py*3Q0>?(xM)V
zsDurYVQRI)?m@nB0gvoqGMs_?q5KisiU)HIZ-3Y`HZCVPCY4mhouXQs*_PO+;-R?V
zQCZwvtw{QPqM6|}?6zb&82sseLh8Tz1Z%ZiR@nNdOA>+!Yao+(XVk3d`|yEW|5!cN
zw&4^4HGs=Wn*1{eeismbFYX;a>}5AcM$+fo{&>2&pL;&vpXfh-<?_6$Cp2X+piTET
zyYw5w*c;x7=Z{XFM^CVQ&CL|8C5?M;k?_eZR&@!TOPVy{jctGQbsEayHvxTITC0G>
z;NOQUq+NBeM1}SE;MW9I+(#1VG2;Uw?d(`9grewKukpA+l;6Dg!uz+6)ix@upV2&=
z`aJk;YZdONy!liNYr9$e<Xu!2@aFlFVD&38B<p!s{vVots&fAn0E8eBPlDBU(H0zu
zi$`kZv$z)-Nz7%?;ChW1Pok>wx!^{pjHe+~Gx*(Z*r&7D<%5hu^w9~FZ1yQNHEJ-p
zQoPsA#aY|Qd`UbWOhD$ey1YyUAEtDE$Fo|aXKg@Li%!VqH?c7JnjiweG}{=*P|5z_
zA8TZ66ta48M7WOTmmWucX=NQwpd>|f-Rm7bNem{yqMDxuH&KrKXBhRm*x<8IOXV_b
z>hlwvrr{B6jiYOeMpwqGuvu$})htv=SG9V5eF!|D5rjQ$38ii@-y)s?Ef!@6php9b
z=9w-F_V<P<f6`w(6>e5Joh0K`cud~%{bKW-0`+6RW+gBY;^LI|<x<LB=E9b9Dy(;s
zjtv#8GlV$OUeVH|nTvlA#{dbrjUB{7-hkA72PbyayS_U!c@vjs;fC(|zAm&0{l%fL
zb}0~17DXeFYd}cHN{dL~i4jxAgX>X!d`31^Q>L-J=A%cF8lv_wg`p)2MJ!ab_fhlF
zq)-~Ms)bRB)=%vK3OMT5&rcX*87h>&E}d^0Hd}{kvNF7w#~fzGZ(X*pNP1&Z6#4v`
zn%WFUkMc7rKqP9g0LX98l}~SMW>pd%BUP@(;q1d*&PCW$6UC26s7d4);wFzHmJWd8
zQtvbaKwxfGJ#@Ib5L+_N+7$+b3)LG0<=JPA;1p3WDy9&3n~s2RDKUzHltmLZq}_-;
z_tc@5Q80uhbPtHn;Nt_!Eik_uCZ-DvX?&_8wx|fU@Qe4<eWF5i3^_^xY$7acJF<P@
zH=KhgGE9$JL10c5K$%pc+0xwq$Behxy`aHJLDB$zO*9^#2VEHz-2?Y%EN_p{SdKKk
z@Mt>otU)iGu}pe^<bO?$B*V<wVU;S$_qJn0(`Vtz(luI``os;X+v$N}xwHVDnVR$Y
zFlNi)w7a>0rCg(qn4{^K?NR`c1PY^Efk+hrfas(g2n@#B`~?Taj*gqur!bh*Mmc^|
z_DBEn9a$$SZK*<P(tZBk1S>6r=zCE3V3;Ls`+sU{%qbdbYfd{hwUZXe8WQp@N(vqc
zr(-~5x&cNE3AkBnPto5=4@1nv$sD;#Ui|BY6x+?ccsQr3mNlgw_2rknOoTlMjrY5h
zhT}6^QOaF2huSU?kKro_D?j4?7Vbe+dllM26@B&RYQyrb?`rGm6WGs>G_OL@Q+$tx
z+nHVWWPj6>iMgq<h>8KQZ{F<J_^)<ehE^au62M|W+F^xAN3aZzBi%yK55C<0ELtG`
z52)kiC{k`daAxnMR#H$qhrCxLF;8LG^Wk=5?Lj<zsYw<};bCK8R-h7X6lqOcq&^)O
zA7zI@1}tVNFdmX5Tx|jIKI1cH5u1?lXb_uL;jmrou`1I>eWF~(fN8_IViMyCbJyi)
z+12qLa}#LsPOx*4L@DtDb>hHK*~B<6nENb=^6owB+E99mKjR?%*WBKZEtL`kTWqZL
zpb}{F+q6_An^7@a7%eI(lu{o#+TImMh9btJHfI^FQ-vj2M`co9JE9f4)#G?t5lK-S
zZIv!+%FjzJuCOa{f5=_a7>Ey@q*hpfEE@`msKcBJB8wW^AFT<1E646pCjdUE!vS$C
z!tAR=Fc^h&<4sYg1lqm&F_H;8u7pMpCW4JNl+m>IVxdxT8(tAHzBh}kp?Y92@l9lb
zQF0+Z0Z2FOsxhdJ7`QJMM^>_&J8z`pYBn`Ywa5)8$U^JVy0IybAh=!}#ppK9Xrq8a
zOW}H~ft0uNEI2#{Sz;cnQC3x>Ds{_slYpvN_bRkfLb}=JvcX{J{J%@pbWIp0hnUA%
z`8*bOdbL_TC&z1mf1qH_X~^y$qC`+mm+30u?DnZg{n3c|Lh+SoQG!`D@~TuPQV8Sr
zxw0CIB(>Fz+@om3>sB}Y#k$@-;9n1NB1XzPsJlEzl@Xtx7Ce6aR@_;v8Gv~WAgO;7
zFQ(YS%#=v!zMiYFlcK*IzGt><$V`yEieR-ZVK?R7yl*CZ15ZCg<5gf7w=p0&Ptt#`
zorR!7Ky53kRD?|At&_+t98!tF3R<?7oChKL0(Bly1*g3fC=Z_%b5+f1ZXh!g;#@3u
zM$=Y<*sL?f`5J)RdiT1o9#AEaywAv>MT(P*^+tDN6b0OVv_Ai}vx?9#8M%mV@AG(J
zb+$7rsn_N7tcrmD-i&}Y>*Mii|8*>65I~KA5$yQ_rms(vNj*g5na9~&M3N$eunw}R
z0S&tFUSI;3=wOw5bsPMbN4W~$L53AS&Kq$8cic$PVJnogsHn3cfe2g0jR|6;P%YGj
za=TReCmd9vmhK-^yxuhJEJ?MLTFy&Rn}W)u%-as{Vc>w%qod}oBS}g*J3M(ud7gct
z1P#YfGSXL)IR9hNB}VR<@BFNj6pjEpey?SvweQm>$YPW#r%IirO^f>+XYG3XSWy^a
z(ppZHCTg9o9e8fYFnzQl=Oja)LHMr6*SEq@o?D~dV$DB(7$rur`Or1Up-1ok>XH$)
zb~V8r#Vytq@s%DKy`jb8)iKm`<4Tx}CUUpCtK=(SV#%y?9(Hoh^z637I@Zk^R~Dz&
zdPcfCW^PGJ3%*mE*pU<Z`kmdx+T1|ppu~nDTH}{+a=))ZTq8lRc+yRC`_c}VlYgZa
z?puu(s+YJ^NnLClopXRl#@XFrkFk3PK|>A?%S2JN9p3zposC+&c=ZiAvSBxRWUc>U
z6UdP%^=dcnfNJV%b_<C!Nz9#tcNITc47H@(^!6w>7q!4)A;dPgj<{8%E94MV4_0Mo
z@FahVU&B*<FYNitVJksylJSIePQP-S^?l(h+DCi-;-GfTXsg4d=#MivRJT<#f)|`i
zNrAmzzJ!_*U?}g^>7B*u83D3acuN*K`8O2GQCD1Df^B*M_Oas_EM20?D=`x}C3wt?
z*AQ(;gE!>zjsQOX*8df;uC}Ca>qt^Hn>nlK`vIn2&A4y}(?J~iwBKngD4@z;G4-nq
zo{Z1mzD^{)DACdV8ND>XC*{_s2RIb%d>Fj~`(VI*Dokjz_X!*Ja&KQ5WQ|OX&Jeo|
z?IU6ZGmMJW*;o$(g|HWsDnY5m?;)qDBN^zD!=(u?qI&aKZ*8#8#}6G-)WGGOH@?=j
zv&C`xT2n2IFEFvln&PeasMN-7T#>a&TEiXOy&LIG9D^9Ww3z$6n0@PbB@7j?k3u(q
zMOO^UV#e}$kft_(Xr4n!ZKH61aRPS;L%TLX@aJ_Z|JFYw)}s69lP~|~X*^hIjztw>
z1`glzWzS3Er~9DJ*pa*q5?KqFocxxz1>q&0-HXQa+WS()bmMD@KWz|Dx$|D%4zjOv
zYdrRpT}fw^!2qyB&p5h!l?u9x`aY#u>d8X98>LjKSNwTfJ1LsDPtj&AijY_x8WB&;
zwED*w#mKt4q|U_fort-g2;HvE4I0b@QhSfazXxEH^|Qu9cF{uwu^c&eZrir;XdXf>
ze(G7bT835l&bZzVBc1`1*Tj5f65fy9PJV}3F;%eIpl$9Zz2NYsJ^)v3P&|XUhV_%!
zo46Yiw%O#*4u_>sI})JQpguQfYITr^a2EvK)n>$&BifN!Fo3Lxy@R3-hse|`BoldE
zR6h3v&Q*LqKoLhz5$r+hEtfaYg+O=gM+j8bUfJi5k^)C{kj#!sVQS1D5dml>6~!`D
zH9Hs~o7Az6u)FGFE*$^ysKJ^dPK^eT8-v?Zrcy~f{W(M1W(OZ{TirxUqYli*3-X^$
zf}sd#8Ka<;rL4?RKhraHtu!pZ7j)^7{&51^2k)C6>MQRc0DbePS<&a$>fnYHkgel|
z6{XoG!5Lt%f&ajK+8*7LVza06-=9XageXR{Au1s|d%dXB+AYa{l?h-DJLcn6X-0cc
zm6Qw~TU|1;GF(@$fQ49zmYbvb*QgUccGU2L!z!_paVG;t9IohhbiQ4}XpC}?NV3Wq
zGw9IgF^MXo&9&1%{7W*5L&<I}V~i01Evq9}0;8VbR@e)2-ip8R<>c~Rj`pKZvMV3e
z!`sp`a&{s|2kaV4WjJd{L8iwz0L`<1|6_(jI!sIYmiyGG?6KhTeMToEoiO_ldz6O^
z{Fuqkcf3Sbf-7IHI!y4B?T_kza4rX{>gK6}K$+q#AzZ^Cbw>9SlbA7vTJ^LYXFFVK
z`zdGMn0b0}6I%gl<x+...@C->+5&x!MudBypa+`oKN1
zSYr?6PQ4jDP$w{$W$@si_Wyt-ibk5*>~boLZA7ATRfrv#mo&4Sa{=6rSq6&X@*54V
zuA!t+>$J2{{naYX-1dJyxz0yZ)g<QIkLADNDHy0N7<Vg}=P6vSE&RY!yz7=Pm|whE
zTXK9>@`I<8w5~MaP+{No)nkiNLEbVE_cEEfq8pw{3Ery5?o~496(3bnz1*LkGKNFX
zta9BVQ9R`-C?63n$Bvr1Cf@qay7~`Xc>{F~^Sq69?zJG-#^buC%ewOGy0`y$>)m;)
zN%@RuPs1O;3&LnRevR@x0%Pv8M*FIi@+gZ!-ew!Vw-$VzUVM!phjs~<4!`=YbN7an
z`tG{AcVSPB2QiOxG?#d=c+d3FCgAEGix`D}92R<UoyC0bot@tQdzv^r=JVl;-SF4|
z=;D12-!Lb?4>`Y6*OUEH)JrRll%1N9VjeY{hH)?ciJ*pwO|*^OqE_57Dvc$`nEz|&
zg;^hNe_g}O0RQZG!>k~POeBgnS+OyD^v~bp+5FMk1os8J#zj(rr5`7cRZ=R!Cv8qc
zBP5Mw1FlOdjsIcfwYq%5Q-`AfD9oPDhtoRoKbG>Ce$_<aV@~78V$V{>uU&c#=(yst
zgs<v1)!sVc+vSZry8^q%p6Yu$T^_H0b&uK%c)lS$=qJqZaW3EGY}ywTJm8(>By6G-
z6X?mV)#wv=Vlhr`iyg%E5X2M1^G_N*k!U&vxt{W>oLP*Y3F0%R2-bXPyok!}^xH*q
zGf=NqAJUJL^A9o3B9Cn_xMqX6dz8wGBsEuLz_7VyC@av;4Y<m#D)4Q6b@oIeSAZG;
z>YEpaz5Od@3~!zOBIJD&#tqbe^kv`m*k19QmzRp!x1WM<n+}f@v*u7z;F)IcK1Rbw
z@!o*+x950ye+5<RC>1Birt7!|4XQ3PQod<zu6~4FX|--3^b`T!8z-0Mzd2V<3<iIn
z<KD=4|I&$3Gk|PtqWAnvUjDlv=oM7AQoQ_e`OO4_dzw4wGbtzlT5V3M<Hq;*F#BgQ
zN_yZdD2zW1!#)8KXd!2P1lNQZcZGb<nvrp5_<URsmtNmY0K}GHm}TDJAE7S|UP=vx
zsd-k0^1@I_V=`4Cx+kbpXJ2|3VU@{mw;EQUlhnzz4|KX<#%C>zD{14vImU_W7$@Iq
zabL<ryY(O0_Hpcs#hdFf?rbb|o*tLS78oi93~;ph>NsIePm$T1iKK}5bX1tTqGfbV
zi08`!!c}DMP*|MQc6}<2o2E6%27tGEb8I5Q`6US(<#iTzgO(Z{U@Vb8_ofparDJQp
z;mqWTZQ{`#y<<Xo7PX@9TeIz~1m)Y1D1Xt38-$+dBNhsA?;`#!zJ_vin@+uhqdTJq
zx`7$nKs9;ktJli0;4f&3@>|PUpv`X3i_#Uw_uugqx%Gi6&@jA65LUiL9NwZ2o0)G#
zB~$(VAG~mB2T_(cRHi5-5wW<TD...@X3Wg2105n>UFTh*s6w5qpLtAze{x92gUOqS-L
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
P2>};r004^~0000x*v(fv

literal 0
HcmV?d00001

-- 
1.7.3.4


Re: [PATCH 2/3] Updates Site docs - easy Download/Get started instructions, with examples using the ruby client, deltacloudc, and curl. Also updated contact information page for project.

Posted by David Lutterkort <lu...@redhat.com>.
On Wed, 2011-08-31 at 12:07 +0300, marios@redhat.com wrote:
> From: marios <ma...@redhat.com>
> 
> 
> Signed-off-by: marios <ma...@redhat.com>

ACK.

> diff --git a/site/content/contact.mdown b/site/content/contact.mdown

Nice .. definitely more end-user friendly.

> new file mode 100644
> index 0000000..17a97ec
> --- /dev/null
> +++ b/site/content/contact.mdown

> +* We track bugs in [Apache JIRA](https://issues.apache.org/jira/browse/DTACLOUD). If you are
> +  have found a problem with Deltacloud you can check if it is already known to the Deltacloud

Small typo: s/are have/have/

> diff --git a/site/content/download.mdown b/site/content/download.mdown
> index dee8181..b531579 100644

I like ths content, but I think it should go into something like 'Quick
start' or 'Installation instructions' underneath Documentation, or as a
separate toplevel link.

The download page should be very short, and just list where the tarballs
are, what gems to install (should be in the order Server, Client,
libdeltacloud) and pointers to svn and git. Basically, a reminder for
people who just want to get the bits quickly.

> --- a/site/content/download.mdown
> +++ b/site/content/download.mdown
> @@ -4,25 +4,200 @@ extension: html
>  filter: markdown
 
> -### Deltacloud Core ###
> +Deltacloud provides the API server and drivers necessary for connecting
> +to the [cloud providers](./drivers.html#providers "Deltacloud drivers").

I think this should also link to /documentation.html#credentials, since
what credentials to supply is the first question any user has. We should
probably add a sentence to that page along the lines of

   For details on the capabilities of each driver
   see /drivers.html#providers

David