| <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> |
| <html><head> |
| <title> |
| Deltacloud - Documentation |
| </title> |
| <meta content="" name="keywords"> |
| <meta content="" name="description"> |
| <meta content="text/html; charset=UTF-8" http-equiv="Content-Type"> |
| <link href="http://deltacloud.apache.org/styles/favicon.ico" rel="shortcut icon" type="image/x-icon"> |
| <link href="documentation_files/default.css" rel="StyleSheet" title="Main style" type="text/css"> |
| <link href="documentation_files/default-debug.css" rel="Alternate StyleSheet" title="Debug main style" type="text/css"> |
| </head> |
| <body><div style="background: red"><h1>2015/07/20 - Apache Deltacloud has been retired. </h1><h2>For more information, please explore the <a href="http://attic.apache.org/">Attic</a>. </h2></div> |
| <div id="header"> |
| <div class="container"> |
| <div id="headerLogo" onclick="location.href='index.html';" style="cursor: pointer;"> |
| <h1> |
| Deltacloud - Many clouds. One API. No problem. |
| </h1> |
| </div> |
| </div> |
| </div> |
| <div id="navigation"> |
| <div class="container" id="menu"> |
| <ul class="l0"> |
| <li> |
| <a class="inactive" href="http://deltacloud.apache.org/index.html" title="Deltacloud Home">Home</a> |
| </li> |
| <li> |
| <a class="inactive" href="http://deltacloud.apache.org/download.html" title="Get the latest releases">Download</a> |
| </li> |
| <li> |
| <a class="inactive" href="http://deltacloud.apache.org/developers.html" title="Information for developers">Developers</a> |
| </li> |
| <li> |
| <a class="active" href="http://deltacloud.apache.org/documentation.html" title="Project documentation">Documentation</a> |
| </li> |
| <li> |
| <a class="inactive" href="http://deltacloud.apache.org/contact.html" title="Contact us!">Contact</a> |
| </li> |
| </ul> |
| </div> |
| </div> |
| <div id="subnavigation"> |
| <div class="container" id="submenu"> |
| <ul class="l1"> |
| <li> |
| <a class="active" href="http://deltacloud.apache.org/documentation.html"> |
| Installation |
| </a> |
| </li> |
| <li> |
| <a class="inactive" href="http://deltacloud.apache.org/api.html"> |
| REST API |
| </a> |
| </li> |
| <li> |
| <a class="inactive" href="http://deltacloud.apache.org/drivers.html"> |
| Drivers |
| </a> |
| </li> |
| <li> |
| <a class="inactive" href="http://deltacloud.apache.org/client-ruby.html"> |
| Ruby Client |
| </a> |
| </li> |
| <li> |
| <a class="inactive" href="http://deltacloud.apache.org/libdeltacloud.html"> |
| Libdeltacloud |
| </a> |
| </li> |
| </ul> |
| </div> |
| </div> |
| <div id="frontpageHeader"></div> |
| <div id="main"> |
| <div class="container" id="content-deltacloud"> |
| <h1>Documentation</h1> |
| <p>The Deltacloud documentation is divided into the following parts:</p> |
| <ul> |
| <li> |
| <a href="http://deltacloud.apache.org/documentation.html"> |
| Installation, dependencies and quick-start (this page) |
| </a> |
| </li> |
| <li> |
| <a href="http://deltacloud.apache.org/api.html"> |
| REST API definition |
| </a> |
| </li> |
| <li> |
| <a href="http://deltacloud.apache.org/drivers.html"> |
| Information about currently supported drivers |
| </a> |
| </li> |
| <li> |
| <a href="http://deltacloud.apache.org/client-ruby.html"> |
| The Deltacloud Ruby client |
| </a> |
| </li> |
| <li> |
| <a href="http://deltacloud.apache.org/libdeltacloud.html"> |
| The libdeltacloud C library |
| </a> |
| </li> |
| </ul> |
| <br> |
| <br> |
| <hr> |
| <br> |
| <a name="install_deltacloud"></a> |
| <h1>Install Deltacloud</h1> |
| This page lists the libraries and packages that you will need in order to install |
| the Deltacloud server, a "Hello Deltacloud" quick-start guide as well as some |
| information on interacting with the Deltacloud server after a succesful installation. |
| <h2>Installation of Deltacloud itself</h2> |
| Once you've setup all the dependencies listed below, installing Deltacloud is as easy as |
| typing: |
| <br> |
| <br> |
| <pre><code>$ sudo gem install deltacloud-core</code></pre> |
| And |
| <strong>thats it!</strong> |
| The |
| <strong>gem install</strong> |
| 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 |
| <a href="http://www.apache.org/dist/deltacloud/"> |
| Apache website. |
| </a> |
| <br> |
| <br> |
| <hr> |
| <br> |
| <a name="dependencies"></a> |
| <h2>Installation dependencies</h2> |
| The Deltacloud server relies on a number of external rubygems and other libraries. |
| You must have the following packages installed before trying to install and |
| run the Deltacloud server. Please note that the names of the packages below |
| may differ for your distribution (e.g. 'ruby-devel' vs 'ruby-dev'). In short, you need: |
| <br> |
| <br> |
| <ul> |
| <li>ruby and ruby-devel,</li> |
| <li>gem (RubyGems),</li> |
| <li>gcc-c++,</li> |
| <li>libxml2 and libxml2-devel,</li> |
| <li>libxslt and libxslt-devel,</li> |
| <li>rake</li> |
| </ul> |
| More info on getting these follows: |
| <h3>ruby and ruby-devel</h3> |
| You need to |
| <a href="http://www.ruby-lang.org/en/downloads/"> |
| install ruby. |
| </a> |
| You can check to see if you already have a ruby installation by typing: |
| <br> |
| <br> |
| <pre><code>$ ruby -v</code></pre> |
| If you see something that looks like the following: |
| <br> |
| <br> |
| <pre><code>ruby 1.8.7 (2010-08-16 patchlevel 302) [i686-linux]</code></pre> |
| then you can skip the ruby installation. Deltacloud requires ruby to be |
| at least version 1.8.7. You also need the development headers (ruby-devel) as |
| Deltacloud relies on some rubygems with C extensions. If you use a package manager |
| such as yum or apt-get: |
| <br> |
| <br> |
| <pre><code>sudo yum install ruby |
| sudo yum install ruby-devel</code></pre> |
| OR |
| <br> |
| <br> |
| <pre><code>sudo apt-get install ruby |
| sudo apt-get install ruby-devel</code></pre> |
| <h3>gem (RubyGems)</h3> |
| Deltacloud relies on a number of ruby gems so you also need to |
| <a href="http://docs.rubygems.org/read/chapter/3"> |
| install RubyGems. |
| </a> |
| As with ruby, you can check if you already have the |
| <strong>gem</strong> |
| executable installed by typing |
| <strong>gem -v</strong> |
| . Again, your package manager can help with the installation: |
| <br> |
| <br> |
| <pre><code>$ sudo yum install rubygems</code></pre> |
| <h3>gcc-c++, libxml2, libxml2-devel, libxslt, libxslt-devel</h3> |
| These are required to build RubyGems that have C extensions. Again, typically |
| the easiest way to get these is with you package manager: |
| <br> |
| <br> |
| <pre><code>$ sudo yum install gcc-c++ |
| $ sudo yum install libxml libxml2-devel |
| $ sudo yum install libxslt libxslt-devel</code></pre> |
| <h3>rake</h3> |
| <a href="http://rake.rubyforge.org/"> |
| Rake |
| </a> |
| is Ruby's Make and is itself a ruby gem. Once you have RubyGems installed you can |
| get rake with: |
| <br> |
| <br> |
| <pre><code>$ sudo gem install rake</code></pre> |
| <br> |
| <br> |
| <hr> |
| <br> |
| <a name="quick_start"></a> |
| <h1>"Hello Deltacloud!", quick-start guide</h1> |
| This guide assumes a linux environment. Some of the Deltacloud developers |
| are running recent versions of |
| <a href="http://fedoraproject.org/"> |
| Fedora. |
| </a> |
| 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 |
| <a href="http://deltacloud.apache.org/contact.html"> |
| let us know, |
| </a> |
| we'd love to hear from you! |
| <h2>Running the Deltacloud server</h2> |
| After you succesfully install Deltacloud, you can start the server by typing |
| <strong> |
| deltacloudd -i |
| <em> |
| provider_id. |
| </em> |
| </strong> |
| The |
| <strong> |
| <em> |
| provider_id |
| </em> |
| </strong> |
| 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: |
| <br> |
| <br> |
| <pre><code>deltacloudd -i mock</code></pre> |
| 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 |
| <a href="http://deltacloud.apache.org/drivers.html#providers"> |
| all available |
| </a> |
| <strong> |
| <em> |
| provider_ids |
| </em> |
| </strong> |
| that can be used with the |
| <strong>deltacloudd</strong> |
| executable. |
| <br> |
| <br> |
| <pre><code>$ deltacloudd -l |
| <br> |
| Available drivers: |
| * condor |
| * vsphere |
| * opennebula |
| * eucalyptus |
| * rhevm |
| * sbc |
| * azure |
| * gogrid |
| * mock |
| * rackspace |
| * rimuhosting |
| * terremark |
| * ec2</code></pre> |
| After you start the server, the Deltacloud HTML interface is available at |
| <strong> |
| http://localhost:3001/api |
| </strong> |
| - open this address in your web browser. If you want to see XML output from the |
| server in the browser, append |
| <strong> |
| <em> |
| format=xml |
| </em> |
| </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> |
| <em> |
| format=html |
| </em> |
| </strong> |
| to each URL. Your browser will prompt you for |
| <a href="http://deltacloud.apache.org/drivers.html#credentials"> |
| credentials |
| </a> |
| when you invoke an operation that requires |
| <a href="http://deltacloud.apache.org/api.html#authentication"> |
| authentication. |
| </a> |
| <br> |
| <br> |
| The '-h' flag will list all available options for |
| <strong>deltacloudd.</strong> |
| For example, to start the Deltacloud server with the Rackspace driver on port 10000 |
| you can use: |
| <br> |
| <br> |
| <pre><code>$ deltacloudd -i rackspace -P 10000</code></pre> |
| 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: |
| <br> |
| <br> |
| <pre><code>$ deltacloudd -i ec2 -P 5000 -r 192.168.10.200</code></pre> |
| This will make the Deltacloud server available at the address |
| <strong> |
| http://192.168.10.200:5000/api. |
| </strong> |
| <br> |
| <br> |
| <br> |
| <br> |
| <hr> |
| <br> |
| <h2>The Deltacloud ruby client</h2> |
| The Deltacloud project also maintains a ruby client, which you need to install |
| seperately 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 |
| <strong> |
| 192.168.10.244:5000 |
| </strong> |
| <br> |
| <br> |
| <pre><code>require 'deltacloud' |
| <br> |
| api_url = 'http://192.168.10.244:5000/api' |
| api_name = 'TK2PJCAN9R1HKG2FK24Z' |
| api_password = 'aLe27rZlRhlBcVoQbL4JsVtaNga12vEL9d9kS5CA' |
| <br> |
| client = DeltaCloud.new( api_name, api_password, api_url ) |
| <br> |
| # get a list of currently running instances (virtual machines) |
| client.instances.each do |instance| |
| puts instance.name |
| end |
| <br> |
| <div id="do">other work with client here</div></code></pre> |
| More comprehensive information on using the Deltacloud ruby client in this way |
| can be found in the |
| <a href="http://deltacloud.apache.org/client-ruby.html"> |
| client documentation. |
| </a> |
| Assuming you already have Ruby and RubyGems setup, you can install the Deltacloud |
| client by simply typing: |
| <br> |
| <br> |
| <pre><code>$ sudo gem install deltacloud-client</code></pre> |
| Installing the Deltacloud client also gives you the |
| <strong> |
| deltacloudc |
| </strong> |
| command line tool. This executable makes use of the Deltacloud client library to speak to the |
| Deltacloud server using the |
| <a href="http://deltacloud.apache.org/api.html"> |
| REST API. |
| </a> |
| 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: |
| <br> |
| <br> |
| <pre><code>$ deltacloudc collection operation [options]</code></pre> |
| <ul> |
| <li> |
| <strong> |
| <em> |
| collection |
| </em> |
| </strong> |
| refers to the Deltacloud object collections, such as Instances, |
| Images, Buckets, Realms etc, as described in greater detail in the |
| <a href="http://deltacloud.apache.org/api.html#h1"> |
| REST API |
| </a> |
| </li> |
| <li> |
| <strong> |
| <em> |
| operation |
| </em> |
| </strong> |
| 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. |
| </li> |
| <li> |
| <strong> |
| <em> |
| options |
| </em> |
| </strong> |
| are listed by invoking |
| <strong>deltacloudc -h</strong> |
| One important option is |
| <strong>-u,</strong> |
| with which you specify the API_URL where the Deltacloud server is running. The API_URL |
| takes the form |
| <strong> |
| http://[user]:[password]@[api_url]:[port]/[api] |
| </strong> |
| (examples follow). Alternatively, rather than having to supply the API_URL for every |
| invocation of |
| <strong> |
| deltacloudc |
| </strong> |
| 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 |
| <a href="http://deltacloud.apache.org/drivers.html#credentials"> |
| here. |
| </a> |
| </li> |
| </ul> |
| The following examples assume that the Deltacloud server is running on your local machine |
| port 3001 (the |
| <strong>deltacloudd</strong> |
| server daemon defaults to 'localhost:3001') and was started with the 'mock' provider |
| (i.e. |
| <strong>deltacloudd -i mock</strong> |
| ). |
| To list all collections available in the current driver: |
| <br> |
| <br> |
| <pre><code>$ deltacloudc -l -u http://mockuser:mockpassword@localhost:3001/api</code></pre> |
| To get a list of all |
| <strong>images:</strong> |
| <br> |
| <br> |
| <pre><code>$ deltacloudc images index -u http://mockuser:mockpassword@localhost:3001/api</code></pre> |
| To list all operations for the |
| <strong>buckets</strong> |
| collection: |
| <br> |
| <br> |
| <pre><code>$ deltacloudc buckets -l -u http://mockuser:mockpassword@localhost:3001/api</code></pre> |
| To create a new blob in the bucket called 'bucket1': |
| <br> |
| <br> |
| <pre><code>$ deltacloudc blob create -i 'my_new_blob' -b 'bucket1' -f /home/marios/file.txt</code></pre> |
| <br> |
| <br> |
| <hr> |
| <br> |
| <h2>Other HTTP clients - cURL</h2> |
| As interaction with the Deltacloud server is via HTTP calls, you can use any |
| HTTP client to talk to it using the Deltacloud |
| <a href="http://deltacloud.apache.org/api.html"> |
| REST API. |
| </a> |
| One popular command line tool available on most modern linux distributions is |
| <a href="http://curl.haxx.se/"> |
| cURL. |
| </a> |
| 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., |
| <strong>deltacloudd -i ec2</strong> |
| ). |
| To get a |
| <a href="http://deltacloud.apache.org/api.html#list_images"> |
| listing of all images |
| </a> |
| available in the back-end cloud: |
| <br> |
| <br> |
| <pre><code>curl --user "pGbAJ1TsVg5PKs3BK27O:dPs47ralgBlldqYNbLg3scthsg4g8v0L9d6Mb5DK" |
| "http://localhost:3001/api/images?format=xml"</code></pre> |
| The cURL |
| <strong>--user</strong> |
| option is used to specify the |
| <strong>username:password</strong> |
| <a href="http://deltacloud.apache.org/drivers.html#credentials"> |
| credentials |
| </a> |
| for access to the back-end cloud provider (Amazon EC2 in this case). |
| To |
| <a href="http://deltacloud.apache.org/api.html#create_instance"> |
| create a new instance |
| </a> |
| from the |
| <a href="http://deltacloud.apache.org/api.html#h3_3"> |
| image |
| </a> |
| with id 'ami-f51aff9c', in |
| <a href="http://deltacloud.apache.org/api.html#h3_1"> |
| realm |
| </a> |
| 'us-east-1c', with the |
| <a href="http://deltacloud.apache.org/api.html#h3_2"> |
| hardware profile |
| </a> |
| 'c1.medium', in |
| <a href="http://deltacloud.apache.org/api.html#h3_7"> |
| firewall |
| </a> |
| 'default': |
| <br> |
| <br> |
| <pre><code>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"</code></pre> |
| To |
| <a href="http://deltacloud.apache.org/api.html#delete_firewall"> |
| delete a firewall |
| </a> |
| called 'develgroup': |
| <br> |
| <br> |
| <pre><code>curl -X DELETE |
| --user "pGbAJ1TsVg5PKs3BK27O:dPs47ralgBlldqYNbLg3scthsg4g8v0L9d6Mb5DK" |
| http://localhost:3001/api/firewalls/develgroup?format=xml</code></pre> |
| To |
| <a href="http://deltacloud.apache.org/api.html#create_blob"> |
| create a blob |
| </a> |
| called 'my_new_blob' within the |
| <a href="http://deltacloud.apache.org/api.html#h4_3"> |
| bucket |
| </a> |
| 'mybucket' from a local file with |
| <strong> |
| <em> |
| HTTP PUT |
| </em> |
| </strong> |
| specifying its content type and setting some some metadata |
| <strong> |
| <em> |
| key:value |
| </em> |
| </strong> |
| pairs: |
| <br> |
| <br> |
| <pre><code>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</code></pre> |
| To |
| <a href="http://deltacloud.apache.org/api.html#h4_3_10"> |
| retrieve blob metadata |
| </a> |
| for the blob called 'my_new_blob': |
| <br> |
| <br> |
| <pre><code>curl -iv -X HEAD |
| --user "pGbAJ1TsVg5PKs3BK27O:dPs47ralgBlldqYNbLg3scthsg4g8v0L9d6Mb5DK" |
| http://localhost:3001/api/buckets/mybucket/my_new_blob?format=xml</code></pre> |
| 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). |
| </div> |
| </div> |
| <div id="footer-deltacloud"> |
| <div class="container"> |
| <p> |
| <a href="http://www.apache.org/"> |
| <img alt="Apache Software Foundation Logo" src="documentation_files/asf_logo_wide.png"> |
| </a> |
| </p> |
| <p id="disclaimer"> |
| Apache Deltacloud is a top-level project at the Apache |
| Software Foundation, 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. |
| </p> |
| </div> |
| </div> |
| |
| <script type="text/javascript"> |
| var pkBaseURL = (("https:" == document.location.protocol) ? "https://stats.salasaga.org/aeolus/piwik/" : "http://stats.salasaga.org/aeolus/piwik/"); |
| document.write(unescape("%3Cscript src='" + pkBaseURL + "piwik.js' type='text/javascript'%3E%3C/script%3E")); |
| </script><script src="documentation_files/piwik.js" type="text/javascript"></script> |
| <script type="text/javascript"> |
| //<![CDATA[ |
| try { |
| var piwikTracker = Piwik.getTracker(pkBaseURL + "piwik.php", 2); |
| piwikTracker.trackPageView(); |
| piwikTracker.enableLinkTracking(); |
| } catch( err ) {} |
| //]]> |
| </script> |
| <noscript> |
| <p> |
| <img alt='' src='http://stats.salasaga.org/aeolus/piwik/piwik.php?idsite=2' style='border:0' /> |
| </p> |
| </noscript> |
| |
| </body></html> |