You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@deltacloud.apache.org by mf...@apache.org on 2012/06/25 14:34:17 UTC
[35/51] [partial] Site: Complete site revamp using bootstrap and docs
update
http://git-wip-us.apache.org/repos/asf/deltacloud/blob/d3232da0/site/output/#storage-snapshots.md#
----------------------------------------------------------------------
diff --git a/site/output/#storage-snapshots.md# b/site/output/#storage-snapshots.md#
new file mode 100644
index 0000000..b7bf07c
--- /dev/null
+++ b/site/output/#storage-snapshots.md#
@@ -0,0 +1,185 @@
+---
+site_name: Deltacloud API
+title: Storage snapshots
+---
+
+<br/>
+
+<div class="alert alert-info">
+<a class="close" data-dismiss="alert" href="#">×</a>
+This section is currently being updated.
+</div>
+
+<div class="row">
+ <div class="span8">
+
+<h3 id="snapshots">Storage snapshots</h3>
+
+<p>
+A storage_snapshot captures the point-in-time state of a storage_volume. Each snapshot has a created timestamp, and a storage_volume attribute referring to the volume from which the snapshot was made.
+</p>
+
+<h4>Get a list of all storage snapshots</h4>
+
+<p>
+To list all available storage snapshots use call <strong>GET /api/storage_snapshots</strong>. For Amazon EC2 this list includes any snapshots that are available to the requesting client account, including those that may not have been created by that account. As this list is very long the example below shows only part of the response:
+</p>
+
+ </div>
+ <div class="span4">
+
+<ul class="nav nav-list well">
+ <li class="nav-header">
+ REST API
+ </li>
+ <li><a href="/rest-api.html">Introduction</a></li>
+ <li><a href="/api-entry-point.html">API entry point</a></li>
+ <li><a href="/compute-resources.html">Compute resources</a></li>
+ <li><a href="/storage-resources.html">Storage resources</a></li>
+ <ul class="nav nav-list">
+ <li><a href="/storage-resources.html#volumes">Storage volumes</a></li>
+ <li class="active"><a href="#snapshots">Storage snapshots</a></li>
+ <li><a href="/blob-storage.html">Blob storage</a></li>
+ </ul>
+</ul>
+
+ </div>
+</div>
+
+<p>
+Example request:
+</p>
+
+<pre>
+GET /api/storage_snapshots?format=xml HTTP/1.1
+Authorization: Basic AU1J3UB2121Afd1DdyQWxLaTYTmJMNF4zTXBoRGdhMDh2RUw5ZDAN9zVXVa==
+User-Agent: curl/7.20.1 (i386-redhat-linux-gnu)
+Host: localhost:3001
+Accept: */*
+</pre>
+
+<p>Server response:</p>
+
+<pre>
+HTTP/1.1 200 OK
+Content-Type: application/xml
+Date: Thu, 28 Jul 2011 22:08:36 GMT
+Content-Length: 156897
+
+<?xml version='1.0' encoding='utf-8' ?>
+<storage_snapshots>
+ <storage_snapshot href='http://localhost:3001/api/storage_snapshots/snap-45b8d024' id='snap-45b8d024'>
+ <created>Thu Jul 28 21:54:19 UTC 2011</created>
+ <storage_volume href='http://localhost:3001/api/storage_volumes/vol-0bc0de60' id='vol-0bc0de60'></storage_volume>
+ </storage_snapshot>
+ <storage_snapshot href='http://localhost:3001/api/storage_snapshots/snap-d5a1c9b4' id='snap-d5a1c9b4'>
+ <created>Thu Jul 28 21:46:12 UTC 2011</created>
+ <storage_volume href='http://localhost:3001/api/storage_volumes/vol-99fbe5f2' id='vol-99fbe5f2'></storage_volume>
+ </storage_snapshot>
+ <storage_snapshot href='http://localhost:3001/api/storage_snapshots/snap-dda6cebc' id='snap-dda6cebc'>
+ <created>Thu Jul 28 21:51:55 UTC 2011</created>
+ <storage_volume href='http://localhost:3001/api/storage_volumes/vol-99fbe5f2' id='vol-99fbe5f2'></storage_volume>
+ </storage_snapshot>
+ <storage_snapshot href='http://localhost:3001/api/storage_snapshots/snap-d010f6b9' id='snap-d010f6b9'>
+ <created>Mon Oct 20 18:23:59 UTC 2008</created>
+ <storage_volume href='http://localhost:3001/api/storage_volumes/vol-351efb5c' id='vol-351efb5c'></storage_volume>
+ </storage_snapshot>
+ <storage_snapshot href='http://localhost:3001/api/storage_snapshots/snap-a310f6ca' id='snap-a310f6ca'>
+ <created>Mon Oct 20 18:25:53 UTC 2008</created>
+ <storage_volume href='http://localhost:3001/api/storage_volumes/vol-001efb69' id='vol-001efb69'></storage_volume>
+ </storage_snapshot>
+ (...)
+</storage_snapshots>
+</pre>
+
+<h4>Get the details for a storage snaphsot</h4>
+
+<p>
+To get all details for a specified storage snapshot, as shown below, use call <strong>GET /api/storage_snapshots/:id</strong>.
+</p>
+
+<p>Example request:</p>
+
+<pre>
+GET /api/storage_snapshots/snap-45b8d024?format=xml HTTP/1.1
+Authorization: Basic AU1J3UB2121Afd1DdyQWxLaTYTmJMNF4zTXBoRGdhMDh2RUw5ZDAN9zVXVa==
+User-Agent: curl/7.20.1 (i386-redhat-linux-gnu)
+Host: localhost:3001
+Accept: */*
+</pre>
+
+<p>Server response:</p>
+
+<pre>
+HTTP/1.1 200 OK
+Content-Type: application/xml
+Date: Thu, 28 Jul 2011 22:08:36 GMT
+Content-Length: 329
+
+<?xml version='1.0' encoding='utf-8' ?>
+<storage_snapshot href='http://localhost:3001/api/storage_snapshots/snap-45b8d024' id='snap-45b8d024'>
+ <created>Thu Jul 28 21:54:19 UTC 2011</created>
+ <storage_volume href='http://localhost:3001/api/storage_volumes/vol-0bc0de60' id='vol-0bc0de60'></storage_volume>
+</storage_snapshot>
+</pre>
+
+<h4>Create a new storage snapshot</h4>
+
+<p>
+To create a new storage_snapshot use call <strong>POST /api/storage_snapshots</strong>. Clients must specify the storage_volume from which the snapshot is created by supplying the volume_id parameter. The Deltacloud server responds with <strong>HTTP 201 Created</strong> after a succesful operation and provides details of the new storage_snapshot. Clients may specify operation parameters as multipart/form-data, or as application/x-www-form-urlencoded data:
+</p>
+
+<p>Example request:</p>
+
+<pre>
+POST /api/storage_snapshots?format=xml HTTP/1.1
+Authorization: Basic AU1J3UB2121Afd1DdyQWxLaTYTmJMNF4zTXBoRGdhMDh2RUw5ZDAN9zVXVa==
+User-Agent: curl/7.20.1 (i386-redhat-linux-gnu)
+Host: localhost:3001
+Accept: */*
+Content-Length: 22
+Content-Type: application/x-www-form-urlencoded
+
+volume_id=vol-99fbe5f2
+</pre>
+
+<p>Server response:</p>
+
+<pre>
+HTTP/1.1 201 Created
+Date: Thu, 28 Jul 2011 21:46:48 GMT
+Content-Length: 329
+
+<?xml version='1.0' encoding='utf-8' ?>
+<storage_snapshot href='http://localhost:3001/api/storage_snapshots/snap-d5a1c9b4' id='snap-d5a1c9b4'>
+ <created>Thu Jul 28 21:46:12 UTC 2011</created>
+ <storage_volume href='http://localhost:3001/api/storage_volumes/vol-99fbe5f2' id='vol-99fbe5f2'></storage_volume>
+</storage_snapshot>
+</pre>
+
+<h4>Delete a storage snapshot</h4>
+
+<p>
+To delete the specified storage_snapshot use call <strong>DELETE /api/storage_snapshots/:id</strong>. The operation returns a <strong>HTTP 204 No Content</strong> after a succesful operation:
+</p>
+
+<p>Example request:</p>
+
+<pre>
+DELETE /api/storage_snapshots/snap-dda6cebc?format=xml HTTP/1.1
+Authorization: Basic AU1J3UB2121Afd1DdyQWxLaTYTmJMNF4zTXBoRGdhMDh2RUw5ZDAN9zVXVa==
+User-Agent: curl/7.20.1 (i386-redhat-linux-gnu)
+Host: localhost:3001
+Accept: */*
+</pre>
+
+<p>Server response:</p>
+
+<pre>
+HTTP/1.1 204 No Content
+Date: Thu, 28 Jul 2011 22:26:07 GMT
+</pre>
+
+<a class="btn btn-inverse btn-large" style="float: right" href="/blob-storage.html">Blob storage <i class="icon-arrow-right icon-white" style="vertical-align:baseline"> </i></a>
+
+<br/>
http://git-wip-us.apache.org/repos/asf/deltacloud/blob/d3232da0/site/output/#usage.md#
----------------------------------------------------------------------
diff --git a/site/output/#usage.md# b/site/output/#usage.md#
new file mode 100644
index 0000000..6921528
--- /dev/null
+++ b/site/output/#usage.md#
@@ -0,0 +1,135 @@
+---
+site_name: Deltacloud API
+title: Usage
+---
+<br/>
+
+<h2 id="usingapi">Using API</h2>
+
+<h3>Creating an instance</h3>
+
+<h3>Switching a driver</h3>
+
+<h2 id="clients">Clients</h2>
+Instead of dealing with HTTP interface you can use various clients to communicate with Deltacloud server.
+
+<h3>The Deltacloud Ruby client</h3>
+You need to install Ruby client seperately to the Deltacloud API server. Assuming you already have Ruby and RubyGems setup, you can install the Deltacloud client by simply typing:
+
+<pre>$ sudo gem install deltacloud-client</pre>
+
+<p>The Deltacloud client consists of a Ruby library (packaged as a ruby gem) which you can use to interact with the Deltacloud server and control your cloud infrastructure across cloud providers. <p>
+
+<p>To use the client, you must require <strong>deltacloud</strong>:</p>
+
+<pre>require 'deltacloud'</pre>
+
+<p>Connect to a Deltacloud provider using these commands:</p>
+
+<pre>
+require 'deltacloud'
+
+api_url = 'http://localhost:3001/api'
+api_name = 'mockuser'
+api_password = 'mockpassword'
+
+client = DeltaCloud.new( api_name, api_password, api_url )
+
+# work with client here
+</pre>
+
+<p>In addition to creating a client, operations may occur within a block included on the initialization.</p>
+
+<pre>
+DeltaCloud.new( api_name, api_password, api_url ) do |client|
+ # work with client here
+end
+</pre>
+
+<p>In case of a failure, every underlying HTTP transport exceptions will be thrown away and returned back to the caller.</p>
+
+<a class="btn btn-inverse btn-large" style="float: right" href="/ruby-client.html">Work with the Ruby client</a>
+
+<br/>
+<br/>
+
+<h3>HTTP clients - cURL</h3>
+
+<p>
+Basically, you interact with the Deltacloud server via HTTP calls, so you can use any HTTP client to talk to Deltacloud using the <a href="/rest-api.html">REST API</a>.
+</p>
+
+<p>
+<a href="http://curl.haxx.se/">cURL</a> is a popular command line tool available on most modern linux distributions. See the following examples to learn how to use cURL to interact with Deltacloud. There is an assumption that the Deltacloud server is running on locahost:3001, and was started with the 'ec2' driver (i.e., deltacloudd -i ec2 ).
+</p>
+
+<p>
+Get a listing of all <strong>images</strong> available in the back-end cloud:
+</p>
+
+<pre>
+curl --user "pGbAJ1TsVg5PKs3BK27O:dPs47ralgBlldqYNbLg3scthsg4g8v0L9d6Mb5DK"
+"http://localhost:3001/api/images?format=xml"
+</pre>
+
+<p>
+The cURL <strong>--user</strong> option is used to specify the <strong>username:password</strong> credentials for access to the back-end cloud provider (Amazon EC2 in this case).</p>
+
+<p>Create a new <strong>instance</strong> from the image with id 'ami-f51aff9c', in realm 'us-east-1c', with the hardware profile 'c1.medium', in firewall 'default':
+</p>
+
+<pre>
+curl -X POST -F "keyname=eftah" -F "image_id=ami-f51aff9c"
+-F "realm_id=us-east-1c" -F "hwp_id=c1.medium" -F "firewalls1=default"
+--user "pGbAJ1TsVg5PKs3BK27O:dPs47ralgBlldqYNbLg3scthsg4g8v0L9d6Mb5DK"
+"http://localhost:3001/api/instances?format=xml"
+</pre>
+
+<p>Delete a <strong>firewall</strong> called 'develgroup':</p>
+
+<pre>
+curl -X DELETE
+--user "pGbAJ1TsVg5PKs3BK27O:dPs47ralgBlldqYNbLg3scthsg4g8v0L9d6Mb5DK"
+http://localhost:3001/api/firewalls/develgroup?format=xml
+</pre>
+
+<p>
+Create a <strong>blob</strong> called 'my_new_blob' within the bucket 'mybucket' from a local file with <strong>HTTP PUT</strong> specifying its content type and setting some some metadata <strong>key:value</strong> pairs:
+</p>
+
+<pre>
+curl -H 'content-type: text/html' -H 'X-Deltacloud-Blobmeta-Name:mariosblob'
+-H 'X-Deltacloud-Blobmeta-Version:2.1' --upload-file
+"/home/marios/Desktop/somefile.html"
+--user "pGbAJ1TsVg5PKs3BK27O:dPs47ralgBlldqYNbLg3scthsg4g8v0L9d6Mb5DK"
+http://localhost:3001/api/buckets/mybucket/my_new_blob?format=xml
+</pre>
+
+<p>
+Retrieve <strong>blob metadata</strong> for the blob called 'my_new_blob':
+</p>
+
+<pre>
+curl -iv -X HEAD
+--user "pGbAJ1TsVg5PKs3BK27O:dPs47ralgBlldqYNbLg3scthsg4g8v0L9d6Mb5DK"
+http://localhost:3001/api/buckets/mybucket/my_new_blob?format=xml
+</pre>
+
+<p>
+The <strong>'-iv'</strong> flags will ensure that cURL displays the request and response headers (blob metadata are reported in the response headers with an empty response body).
+</p>
+
+<h3>Libdeltacloud Client (C library)</h3>
+<p>
+Libdeltacloud is a C/C++ library for accessing the Deltacloud API. It exports convenient structures and functions for manipulating cloud objects through the deltacloud API.
+</p>
+
+Get the source code:
+<pre>
+$ git clone git://git.fedorahosted.org/deltacloud/libdeltacloud.git
+</pre>
+
+<p>
+<a href="http://deltacloud.apache.org/libdeltacloud/index.html">Full documentation</a> for the library contains the list of data structures, all documented files with brief descriptions and also the exapmles of working with libdeltacloud.
+</p>
+
http://git-wip-us.apache.org/repos/asf/deltacloud/blob/d3232da0/site/output/#write-new-driver.md#
----------------------------------------------------------------------
diff --git a/site/output/#write-new-driver.md# b/site/output/#write-new-driver.md#
new file mode 100644
index 0000000..5d54cb3
--- /dev/null
+++ b/site/output/#write-new-driver.md#
@@ -0,0 +1,140 @@
+---
+site_name: Deltacloud API
+title: Write New Provider Driver
+---
+
+<br/>
+
+<h3>Writing a provider driver</h3>
+
+<p>The deltacloud drivers are stored in <strong>deltacloud/server/lib/deltacloud/drivers</strong></p> To ad a driver for hypotetical <strong>Foo</strong> cloud, add a directory into /drivers/ and then a file for a driver itself:
+
+<pre>deltacloud/server/lib/deltacloud/drivers/foo/foo_driver.rb</pre>
+
+<p>You need to define a class <strong>Deltacloud::Drivers::Foo::FooDriver</strong> to this file. The class must be a subclass of the <strong>Deltacloud::BaseDriver</strong>.
+</p>
+
+<p>Set up which <a href="/rest-api.html#">collections</a> the provider for you are writing the driver supports - e.g. images, instances, keys, buckets/blobs (storage), etc.:</p>
+
+<pre>
+def supported_collections
+ DEFAULT_COLLECTIONS + [ :buckets ] - [ :storage_snapshots, :storage_volumes ]
+end
+</pre>
+
+<p>This declares that the driver supports the <strong>DEFAULT_COLLECTIONS</strong> (defined in <strong>deltacloud/server/lib/drivers.rb</strong>) except <a href="/rest-api.html#">storage_snapshots</a> and <a href="/rest-api.html#">storage_volumes</a> and also the <a href="/rest-api.html#">buckets</a> collection. A storage only cloud provider driver would support only the buckets colletion.</p>
+
+<p>
+Then, you can define the methods for each collection that your driver supports. The methods, as well as the routes to them, are defined in <strong>deltacloud/server/lib/deltacloud/server.rb</strong>. In general, you can look at the existing drivers to have the idea of how to implement any specific method.
+</p>
+
+<p>
+You should consider how the driver will be communicating with the cloud provider. Many of the existing drivers use external ruby gems for this purpose: for example, the <strong>ec2</strong> driver uses the <a href="https://github.com/appoxy/aws/">aws</a> gem, the <strong>rackspace</strong> driver uses the <a href="https://github.com/rackspace/ruby-cloudfiles">cloudfiles</a> and <a href="https://github.com/rackspace/ruby-cloudservers">cloudservers</a> gems. However, other drivers implement their own clients to communicate with the cloud provider, such as the IBM SBC driver and the Gogrid driver. This also explains why, under the <strong>/drivers</strong> directory, some drivers contain only the provider <strong>_driver.rb</strong> file, whilst others also define a <strong>provider_client.rb</strong> file. It is entirely up to you, whether you write your own client or use an existing one.
+</p>
+
+<p>Thus, your driver for the cloud provider foo may look like:</p>
+
+<pre>
+require 'deltacloud/base_driver'
+require 'foo_lib' # a library for talking to the foo cloud
+
+module Deltacloud
+ module Drivers
+ module Foo
+
+class FooDriver < Deltacloud::BaseDriver
+
+ def supported_collections
+ DEFAULT_COLLECTIONS + [ :buckets ]
+ end
+
+ def images(credentials, opts={})
+ client = new_foo_client(credentials)
+ # use client to get a list of images from the back-end cloud and then create
+ # a Deltacloud Image object for each of these. Filter the result
+ # (eg specific image requested) and return to user
+ end
+
+ def realms(credentials, opts={})
+ (...)
+ end
+
+ def instances(credentials, opts={})
+ (...)
+ end
+
+ ... ETC
+
+ private
+
+ def new_foo_client(credentials)
+ client = FooLib::Service.new({:user => credentials.user,
+ :pass => credentials.password })
+ end
+
+end
+ end
+ end
+ end
+</pre>
+
+<p>
+An important method for drivers that implement the <a href="/rest-api.html#">instances</a> collection is <strong>instance_states</strong>. This method represents the finite-state-machine for instances which varies across cloud providers. In some clouds an instance may be in the 'running' state after creation, whereas in other clouds an instance may need to be started explicitly. For example:
+</p>
+
+<pre>
+define_instance_states do
+ start.to( :pending ) .on( :create )
+ pending.to( :running ) .automatically
+ running.to( :running ) .on( :reboot )
+ running.to( :shutting_down ) .on( :stop )
+ shutting_down.to( :stopped ) .automatically
+ stopped.to( :finish ) .automatically
+end
+</pre>
+
+<p>
+The definiton of .to and on. etc is defined in <strong>/deltacloud/server/lib/deltacloud/state_machine.rb</strong>.
+</p>
+
+<p>Valid states are:</p>
+
+<ul>
+ <li><strong>:begin</strong></li>
+ <li><strong>:pending</strong></li>
+ <li><strong>:running</strong></li>
+ <li><strong>:shutting_down</strong></li>
+ <li><strong>:stopped</strong></li>
+ <li><strong>:end</strong></li>
+</ul>
+
+<p>The instance is located in the<strong>:begin</strong> state before being created. Immediately after being destroyed the instance is removed to the <strong>:end</strong> state.</p>
+
+<p>Valid transition actions are:</p>
+
+<ul>
+ <li><strong>:stop</strong></li>
+ <li><strong>:start</strong></li>
+ <li><strong>:reboot</strong></li>
+</ul>
+
+<p>The action <strong>:automatically</strong> may be used to indicate a tranisition that may occur without an action being triggered (see the example above).</p>
+
+<p>You can implement some other methods according to the collections you will be supporting:</p>
+
+<ul>
+ <li><strong>hardware_profiles(credentials, opts=nil)</strong></li>
+ <li><strong>images(credentials, opts=nil)</strong></li>
+ <li><strong>realms(credentials, opts=nil)</strong></li>
+ <li><strong>instances(credentials, opts=nil)</strong></li>
+ <li><strong>create_instance(credentials, image_id, opts)</strong></li>
+ <li><strong>reboot_instance(credentials, id)</strong></li>
+ <li><strong>stop_instance(credentials, id)</strong></li>
+ <li><strong>destroy_instance(credentials, id)</strong></li>
+</ul>
+
+<p>
+The <strong>hardware_profiles(...)</strong> method should return an array of HardwareProfile objects. The <strong>opts</strong> hash, if present, must be inspected for <strong>:id</strong> and <strong>:architecture</strong> keys. If these keys are present, the results should be filtered by the value associated with each key. The <strong>filter_on(...)</strong> helper method is used for this filtering and as you can see from existing driver method definitions, is invoked in many of the driver collection methods:
+</p>
+
+
http://git-wip-us.apache.org/repos/asf/deltacloud/blob/d3232da0/site/output/#writing-tests.md#
----------------------------------------------------------------------
diff --git a/site/output/#writing-tests.md# b/site/output/#writing-tests.md#
new file mode 100644
index 0000000..fe79d5c
--- /dev/null
+++ b/site/output/#writing-tests.md#
@@ -0,0 +1,57 @@
+---
+site_name: Deltacloud API
+title: Writing and running tests
+---
+
+<br/>
+
+<h3 id="test">Writing and running tests</h3>
+
+<p>
+You should add a test to every new feature or new driver you create to make sure, that everything is running as expected. There are two different directories in the Deltacloud project, where the tests are stored: <strong>/deltacloud/server/tests</strong> for Unit tests for drivers and <strong>/deltacloud/tests</strong> for Cucumber tests.
+</p>
+
+<p>Initiate the Unit tests:</p>
+
+<pre>
+$ cd /path/to/deltacloud/server
+$ rake test
+</pre>
+
+<p>This will invoke all Unit tests defined in <strong>/deltacloud/server/tests</strong> by inspecting the Rakefile in <strong>/deltacloud/server</strong>. To invoke a specific driver tests type:</p>
+
+<pre>
+$ cd /path/to/deltacloud/server
+$ rake test:rackspace
+ _OR_
+$ rake test:mock
+ _etc_
+</pre>
+
+<p>Initiate the Cucumber tests:</p>
+
+<pre>
+$ cd /path/to/deltacloud/server
+$ rake cucumber
+</pre>
+
+<p>Alternatively, you can invoke the cucumber tests directly without using Rakefile: </p>
+
+<pre>
+$ cd /path/to/deltacloud/server
+$ cucumber ../tests/mock
+ _OR_
+$ cucumber ../tests/ec2
+ _etc_
+</pre>
+
+<div class="btn-group">
+ <a class="btn dropdown-toggle" data-toggle="dropdown" href="#">
+ <i class="icon-arrow-left icon-white"></i> Back
+ <span class="caret"></span>
+ </a>
+<ul class="dropdown-menu">
+ <li><a href="/send-patch.html">Send a patch</a></li>
+ <li><a href="/write"></a></li>
+</ul>
+</div>
http://git-wip-us.apache.org/repos/asf/deltacloud/blob/d3232da0/site/output/.cairn
----------------------------------------------------------------------
diff --git a/site/output/.cairn b/site/output/.cairn
deleted file mode 100644
index e69de29..0000000
http://git-wip-us.apache.org/repos/asf/deltacloud/blob/d3232da0/site/output/Scripts/swfobject_modified.js
----------------------------------------------------------------------
diff --git a/site/output/Scripts/swfobject_modified.js b/site/output/Scripts/swfobject_modified.js
deleted file mode 100644
index 773f338..0000000
--- a/site/output/Scripts/swfobject_modified.js
+++ /dev/null
@@ -1,669 +0,0 @@
-/*! SWFObject v2.0 <http://code.google.com/p/swfobject/>
- Copyright (c) 2007 Geoff Stearns, Michael Williams, and Bobby van der Sluis
- This software is released under the MIT License <http://www.opensource.org/licenses/mit-license.php>
-*/
-
-var swfobject = function() {
-
- var UNDEF = "undefined",
- OBJECT = "object",
- SHOCKWAVE_FLASH = "Shockwave Flash",
- SHOCKWAVE_FLASH_AX = "ShockwaveFlash.ShockwaveFlash",
- FLASH_MIME_TYPE = "application/x-shockwave-flash",
- EXPRESS_INSTALL_ID = "SWFObjectExprInst",
-
- win = window,
- doc = document,
- nav = navigator,
-
- domLoadFnArr = [],
- regObjArr = [],
- timer = null,
- storedAltContent = null,
- storedAltContentId = null,
- isDomLoaded = false,
- isExpressInstallActive = false;
-
- /* Centralized function for browser feature detection
- - Proprietary feature detection (conditional compiling) is used to detect Internet Explorer's features
- - User agent string detection is only used when no alternative is possible
- - Is executed directly for optimal performance
- */
- var ua = function() {
- var w3cdom = typeof doc.getElementById != UNDEF && typeof doc.getElementsByTagName != UNDEF && typeof doc.createElement != UNDEF && typeof doc.appendChild != UNDEF && typeof doc.replaceChild != UNDEF && typeof doc.removeChild != UNDEF && typeof doc.cloneNode != UNDEF,
- playerVersion = [0,0,0],
- d = null;
- if (typeof nav.plugins != UNDEF && typeof nav.plugins[SHOCKWAVE_FLASH] == OBJECT) {
- d = nav.plugins[SHOCKWAVE_FLASH].description;
- if (d) {
- d = d.replace(/^.*\s+(\S+\s+\S+$)/, "$1");
- playerVersion[0] = parseInt(d.replace(/^(.*)\..*$/, "$1"), 10);
- playerVersion[1] = parseInt(d.replace(/^.*\.(.*)\s.*$/, "$1"), 10);
- playerVersion[2] = /r/.test(d) ? parseInt(d.replace(/^.*r(.*)$/, "$1"), 10) : 0;
- }
- }
- else if (typeof win.ActiveXObject != UNDEF) {
- var a = null, fp6Crash = false;
- try {
- a = new ActiveXObject(SHOCKWAVE_FLASH_AX + ".7");
- }
- catch(e) {
- try {
- a = new ActiveXObject(SHOCKWAVE_FLASH_AX + ".6");
- playerVersion = [6,0,21];
- a.AllowScriptAccess = "always"; // Introduced in fp6.0.47
- }
- catch(e) {
- if (playerVersion[0] == 6) {
- fp6Crash = true;
- }
- }
- if (!fp6Crash) {
- try {
- a = new ActiveXObject(SHOCKWAVE_FLASH_AX);
- }
- catch(e) {}
- }
- }
- if (!fp6Crash && a) { // a will return null when ActiveX is disabled
- try {
- d = a.GetVariable("$version"); // Will crash fp6.0.21/23/29
- if (d) {
- d = d.split(" ")[1].split(",");
- playerVersion = [parseInt(d[0], 10), parseInt(d[1], 10), parseInt(d[2], 10)];
- }
- }
- catch(e) {}
- }
- }
- var u = nav.userAgent.toLowerCase(),
- p = nav.platform.toLowerCase(),
- webkit = /webkit/.test(u) ? parseFloat(u.replace(/^.*webkit\/(\d+(\.\d+)?).*$/, "$1")) : false, // returns either the webkit version or false if not webkit
- ie = false,
- windows = p ? /win/.test(p) : /win/.test(u),
- mac = p ? /mac/.test(p) : /mac/.test(u);
- /*@cc_on
- ie = true;
- @if (@_win32)
- windows = true;
- @elif (@_mac)
- mac = true;
- @end
- @*/
- return { w3cdom:w3cdom, pv:playerVersion, webkit:webkit, ie:ie, win:windows, mac:mac };
- }();
-
- /* Cross-browser onDomLoad
- - Based on Dean Edwards' solution: http://dean.edwards.name/weblog/2006/06/again/
- - Will fire an event as soon as the DOM of a page is loaded (supported by Gecko based browsers - like Firefox -, IE, Opera9+, Safari)
- */
- var onDomLoad = function() {
- if (!ua.w3cdom) {
- return;
- }
- addDomLoadEvent(main);
- if (ua.ie && ua.win) {
- try { // Avoid a possible Operation Aborted error
- doc.write("<scr" + "ipt id=__ie_ondomload defer=true src=//:></scr" + "ipt>"); // String is split into pieces to avoid Norton AV to add code that can cause errors
- var s = getElementById("__ie_ondomload");
- if (s) {
- s.onreadystatechange = function() {
- if (this.readyState == "complete") {
- this.parentNode.removeChild(this);
- callDomLoadFunctions();
- }
- };
- }
- }
- catch(e) {}
- }
- if (ua.webkit && typeof doc.readyState != UNDEF) {
- timer = setInterval(function() { if (/loaded|complete/.test(doc.readyState)) { callDomLoadFunctions(); }}, 10);
- }
- if (typeof doc.addEventListener != UNDEF) {
- doc.addEventListener("DOMContentLoaded", callDomLoadFunctions, null);
- }
- addLoadEvent(callDomLoadFunctions);
- }();
-
- function callDomLoadFunctions() {
- if (isDomLoaded) {
- return;
- }
- if (ua.ie && ua.win) { // Test if we can really add elements to the DOM; we don't want to fire it too early
- var s = createElement("span");
- try { // Avoid a possible Operation Aborted error
- var t = doc.getElementsByTagName("body")[0].appendChild(s);
- t.parentNode.removeChild(t);
- }
- catch (e) {
- return;
- }
- }
- isDomLoaded = true;
- if (timer) {
- clearInterval(timer);
- timer = null;
- }
- var dl = domLoadFnArr.length;
- for (var i = 0; i < dl; i++) {
- domLoadFnArr[i]();
- }
- }
-
- function addDomLoadEvent(fn) {
- if (isDomLoaded) {
- fn();
- }
- else {
- domLoadFnArr[domLoadFnArr.length] = fn; // Array.push() is only available in IE5.5+
- }
- }
-
- /* Cross-browser onload
- - Based on James Edwards' solution: http://brothercake.com/site/resources/scripts/onload/
- - Will fire an event as soon as a web page including all of its assets are loaded
- */
- function addLoadEvent(fn) {
- if (typeof win.addEventListener != UNDEF) {
- win.addEventListener("load", fn, false);
- }
- else if (typeof doc.addEventListener != UNDEF) {
- doc.addEventListener("load", fn, false);
- }
- else if (typeof win.attachEvent != UNDEF) {
- win.attachEvent("onload", fn);
- }
- else if (typeof win.onload == "function") {
- var fnOld = win.onload;
- win.onload = function() {
- fnOld();
- fn();
- };
- }
- else {
- win.onload = fn;
- }
- }
-
- /* Main function
- - Will preferably execute onDomLoad, otherwise onload (as a fallback)
- */
- function main() { // Static publishing only
- var rl = regObjArr.length;
- for (var i = 0; i < rl; i++) { // For each registered object element
- var id = regObjArr[i].id;
- if (ua.pv[0] > 0) {
- var obj = getElementById(id);
- if (obj) {
- regObjArr[i].width = obj.getAttribute("width") ? obj.getAttribute("width") : "0";
- regObjArr[i].height = obj.getAttribute("height") ? obj.getAttribute("height") : "0";
- if (hasPlayerVersion(regObjArr[i].swfVersion)) { // Flash plug-in version >= Flash content version: Houston, we have a match!
- if (ua.webkit && ua.webkit < 312) { // Older webkit engines ignore the object element's nested param elements
- fixParams(obj);
- }
- setVisibility(id, true);
- }
- else if (regObjArr[i].expressInstall && !isExpressInstallActive && hasPlayerVersion("6.0.65") && (ua.win || ua.mac)) { // Show the Adobe Express Install dialog if set by the web page author and if supported (fp6.0.65+ on Win/Mac OS only)
- showExpressInstall(regObjArr[i]);
- }
- else { // Flash plug-in and Flash content version mismatch: display alternative content instead of Flash content
- displayAltContent(obj);
- }
- }
- }
- else { // If no fp is installed, we let the object element do its job (show alternative content)
- setVisibility(id, true);
- }
- }
- }
-
- /* Fix nested param elements, which are ignored by older webkit engines
- - This includes Safari up to and including version 1.2.2 on Mac OS 10.3
- - Fall back to the proprietary embed element
- */
- function fixParams(obj) {
- var nestedObj = obj.getElementsByTagName(OBJECT)[0];
- if (nestedObj) {
- var e = createElement("embed"), a = nestedObj.attributes;
- if (a) {
- var al = a.length;
- for (var i = 0; i < al; i++) {
- if (a[i].nodeName.toLowerCase() == "data") {
- e.setAttribute("src", a[i].nodeValue);
- }
- else {
- e.setAttribute(a[i].nodeName, a[i].nodeValue);
- }
- }
- }
- var c = nestedObj.childNodes;
- if (c) {
- var cl = c.length;
- for (var j = 0; j < cl; j++) {
- if (c[j].nodeType == 1 && c[j].nodeName.toLowerCase() == "param") {
- e.setAttribute(c[j].getAttribute("name"), c[j].getAttribute("value"));
- }
- }
- }
- obj.parentNode.replaceChild(e, obj);
- }
- }
-
- /* Fix hanging audio/video threads and force open sockets and NetConnections to disconnect
- - Occurs when unloading a web page in IE using fp8+ and innerHTML/outerHTML
- - Dynamic publishing only
- */
- function fixObjectLeaks(id) {
- if (ua.ie && ua.win && hasPlayerVersion("8.0.0")) {
- win.attachEvent("onunload", function () {
- var obj = getElementById(id);
- if (obj) {
- for (var i in obj) {
- if (typeof obj[i] == "function") {
- obj[i] = function() {};
- }
- }
- obj.parentNode.removeChild(obj);
- }
- });
- }
- }
-
- /* Show the Adobe Express Install dialog
- - Reference: http://www.adobe.com/cfusion/knowledgebase/index.cfm?id=6a253b75
- */
- function showExpressInstall(regObj) {
- isExpressInstallActive = true;
- var obj = getElementById(regObj.id);
- if (obj) {
- if (regObj.altContentId) {
- var ac = getElementById(regObj.altContentId);
- if (ac) {
- storedAltContent = ac;
- storedAltContentId = regObj.altContentId;
- }
- }
- else {
- storedAltContent = abstractAltContent(obj);
- }
- if (!(/%$/.test(regObj.width)) && parseInt(regObj.width, 10) < 310) {
- regObj.width = "310";
- }
- if (!(/%$/.test(regObj.height)) && parseInt(regObj.height, 10) < 137) {
- regObj.height = "137";
- }
- doc.title = doc.title.slice(0, 47) + " - Flash Player Installation";
- var pt = ua.ie && ua.win ? "ActiveX" : "PlugIn",
- dt = doc.title,
- fv = "MMredirectURL=" + win.location + "&MMplayerType=" + pt + "&MMdoctitle=" + dt,
- replaceId = regObj.id;
- // For IE when a SWF is loading (AND: not available in cache) wait for the onload event to fire to remove the original object element
- // In IE you cannot properly cancel a loading SWF file without breaking browser load references, also obj.onreadystatechange doesn't work
- if (ua.ie && ua.win && obj.readyState != 4) {
- var newObj = createElement("div");
- replaceId += "SWFObjectNew";
- newObj.setAttribute("id", replaceId);
- obj.parentNode.insertBefore(newObj, obj); // Insert placeholder div that will be replaced by the object element that loads expressinstall.swf
- obj.style.display = "none";
- win.attachEvent("onload", function() { obj.parentNode.removeChild(obj); });
- }
- createSWF({ data:regObj.expressInstall, id:EXPRESS_INSTALL_ID, width:regObj.width, height:regObj.height }, { flashvars:fv }, replaceId);
- }
- }
-
- /* Functions to abstract and display alternative content
- */
- function displayAltContent(obj) {
- if (ua.ie && ua.win && obj.readyState != 4) {
- // For IE when a SWF is loading (AND: not available in cache) wait for the onload event to fire to remove the original object element
- // In IE you cannot properly cancel a loading SWF file without breaking browser load references, also obj.onreadystatechange doesn't work
- var el = createElement("div");
- obj.parentNode.insertBefore(el, obj); // Insert placeholder div that will be replaced by the alternative content
- el.parentNode.replaceChild(abstractAltContent(obj), el);
- obj.style.display = "none";
- win.attachEvent("onload", function() { obj.parentNode.removeChild(obj); });
- }
- else {
- obj.parentNode.replaceChild(abstractAltContent(obj), obj);
- }
- }
-
- function abstractAltContent(obj) {
- var ac = createElement("div");
- if (ua.win && ua.ie) {
- ac.innerHTML = obj.innerHTML;
- }
- else {
- var nestedObj = obj.getElementsByTagName(OBJECT)[0];
- if (nestedObj) {
- var c = nestedObj.childNodes;
- if (c) {
- var cl = c.length;
- for (var i = 0; i < cl; i++) {
- if (!(c[i].nodeType == 1 && c[i].nodeName.toLowerCase() == "param") && !(c[i].nodeType == 8)) {
- ac.appendChild(c[i].cloneNode(true));
- }
- }
- }
- }
- }
- return ac;
- }
-
- /* Cross-browser dynamic SWF creation
- */
- function createSWF(attObj, parObj, id) {
- var r, el = getElementById(id);
- if (typeof attObj.id == UNDEF) { // if no 'id' is defined for the object element, it will inherit the 'id' from the alternative content
- attObj.id = id;
- }
- if (ua.ie && ua.win) { // IE, the object element and W3C DOM methods do not combine: fall back to outerHTML
- var att = "";
- for (var i in attObj) {
- if (attObj[i] != Object.prototype[i]) { // Filter out prototype additions from other potential libraries, like Object.prototype.toJSONString = function() {}
- if (i == "data") {
- parObj.movie = attObj[i];
- }
- else if (i.toLowerCase() == "styleclass") { // 'class' is an ECMA4 reserved keyword
- att += ' class="' + attObj[i] + '"';
- }
- else if (i != "classid") {
- att += ' ' + i + '="' + attObj[i] + '"';
- }
- }
- }
- var par = "";
- for (var j in parObj) {
- if (parObj[j] != Object.prototype[j]) { // Filter out prototype additions from other potential libraries
- par += '<param name="' + j + '" value="' + parObj[j] + '" />';
- }
- }
- el.outerHTML = '<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"' + att + '>' + par + '</object>';
- fixObjectLeaks(attObj.id); // This bug affects dynamic publishing only
- r = getElementById(attObj.id);
- }
- else if (ua.webkit && ua.webkit < 312) { // Older webkit engines ignore the object element's nested param elements: fall back to the proprietary embed element
- var e = createElement("embed");
- e.setAttribute("type", FLASH_MIME_TYPE);
- for (var k in attObj) {
- if (attObj[k] != Object.prototype[k]) { // Filter out prototype additions from other potential libraries
- if (k == "data") {
- e.setAttribute("src", attObj[k]);
- }
- else if (k.toLowerCase() == "styleclass") { // 'class' is an ECMA4 reserved keyword
- e.setAttribute("class", attObj[k]);
- }
- else if (k != "classid") { // Filter out IE specific attribute
- e.setAttribute(k, attObj[k]);
- }
- }
- }
- for (var l in parObj) {
- if (parObj[l] != Object.prototype[l]) { // Filter out prototype additions from other potential libraries
- if (l != "movie") { // Filter out IE specific param element
- e.setAttribute(l, parObj[l]);
- }
- }
- }
- el.parentNode.replaceChild(e, el);
- r = e;
- }
- else { // Well-behaving browsers
- var o = createElement(OBJECT);
- o.setAttribute("type", FLASH_MIME_TYPE);
- for (var m in attObj) {
- if (attObj[m] != Object.prototype[m]) { // Filter out prototype additions from other potential libraries
- if (m.toLowerCase() == "styleclass") { // 'class' is an ECMA4 reserved keyword
- o.setAttribute("class", attObj[m]);
- }
- else if (m != "classid") { // Filter out IE specific attribute
- o.setAttribute(m, attObj[m]);
- }
- }
- }
- for (var n in parObj) {
- if (parObj[n] != Object.prototype[n] && n != "movie") { // Filter out prototype additions from other potential libraries and IE specific param element
- createObjParam(o, n, parObj[n]);
- }
- }
- el.parentNode.replaceChild(o, el);
- r = o;
- }
- return r;
- }
-
- function createObjParam(el, pName, pValue) {
- var p = createElement("param");
- p.setAttribute("name", pName);
- p.setAttribute("value", pValue);
- el.appendChild(p);
- }
-
- function getElementById(id) {
- return doc.getElementById(id);
- }
-
- function createElement(el) {
- return doc.createElement(el);
- }
-
- function hasPlayerVersion(rv) {
- var pv = ua.pv, v = rv.split(".");
- v[0] = parseInt(v[0], 10);
- v[1] = parseInt(v[1], 10);
- v[2] = parseInt(v[2], 10);
- return (pv[0] > v[0] || (pv[0] == v[0] && pv[1] > v[1]) || (pv[0] == v[0] && pv[1] == v[1] && pv[2] >= v[2])) ? true : false;
- }
-
- /* Cross-browser dynamic CSS creation
- - Based on Bobby van der Sluis' solution: http://www.bobbyvandersluis.com/articles/dynamicCSS.php
- */
- function createCSS(sel, decl) {
- if (ua.ie && ua.mac) {
- return;
- }
- var h = doc.getElementsByTagName("head")[0], s = createElement("style");
- s.setAttribute("type", "text/css");
- s.setAttribute("media", "screen");
- if (!(ua.ie && ua.win) && typeof doc.createTextNode != UNDEF) {
- s.appendChild(doc.createTextNode(sel + " {" + decl + "}"));
- }
- h.appendChild(s);
- if (ua.ie && ua.win && typeof doc.styleSheets != UNDEF && doc.styleSheets.length > 0) {
- var ls = doc.styleSheets[doc.styleSheets.length - 1];
- if (typeof ls.addRule == OBJECT) {
- ls.addRule(sel, decl);
- }
- }
- }
-
- function setVisibility(id, isVisible) {
- var v = isVisible ? "visible" : "hidden";
- if (isDomLoaded) {
- getElementById(id).style.visibility = v;
- }
- else {
- createCSS("#" + id, "visibility:" + v);
- }
- }
-
- function getTargetVersion(obj) {
- if (!obj)
- return 0;
- var c = obj.childNodes;
- var cl = c.length;
- for (var i = 0; i < cl; i++) {
- if (c[i].nodeType == 1 && c[i].nodeName.toLowerCase() == "object") {
- c = c[i].childNodes;
- cl = c.length;
- i = 0;
- }
- if (c[i].nodeType == 1 && c[i].nodeName.toLowerCase() == "param" && c[i].getAttribute("name") == "swfversion") {
- return c[i].getAttribute("value");
- }
- }
- return 0;
- }
-
- function getExpressInstall(obj) {
- if (!obj)
- return "";
- var c = obj.childNodes;
- var cl = c.length;
- for (var i = 0; i < cl; i++) {
- if (c[i].nodeType == 1 && c[i].nodeName.toLowerCase() == "object") {
- c = c[i].childNodes;
- cl = c.length;
- i = 0;
- }
- if (c[i].nodeType == 1 && c[i].nodeName.toLowerCase() == "param" && c[i].getAttribute("name") == "expressinstall") {
- return c[i].getAttribute("value");
- }
- }
- return "";
- }
-
- return {
- /* Public API
- - Reference: http://code.google.com/p/swfobject/wiki/SWFObject_2_0_documentation
- */
- registerObject: function(objectIdStr, swfVersionStr, xiSwfUrlStr) {
- if (!ua.w3cdom || !objectIdStr) {
- return;
- }
- var obj = document.getElementById(objectIdStr);
- var xi = getExpressInstall(obj);
- var regObj = {};
- regObj.id = objectIdStr;
- regObj.swfVersion = swfVersionStr ? swfVersionStr : getTargetVersion(obj);
- regObj.expressInstall = xiSwfUrlStr ? xiSwfUrlStr : ((xi != "") ? xi : false);
- regObjArr[regObjArr.length] = regObj;
- setVisibility(objectIdStr, false);
- },
-
- getObjectById: function(objectIdStr) {
- var r = null;
- if (ua.w3cdom && isDomLoaded) {
- var o = getElementById(objectIdStr);
- if (o) {
- var n = o.getElementsByTagName(OBJECT)[0];
- if (!n || (n && typeof o.SetVariable != UNDEF)) {
- r = o;
- }
- else if (typeof n.SetVariable != UNDEF) {
- r = n;
- }
- }
- }
- return r;
- },
-
- embedSWF: function(swfUrlStr, replaceElemIdStr, widthStr, heightStr, swfVersionStr, xiSwfUrlStr, flashvarsObj, parObj, attObj) {
- if (!ua.w3cdom || !swfUrlStr || !replaceElemIdStr || !widthStr || !heightStr || !swfVersionStr) {
- return;
- }
- widthStr += ""; // Auto-convert to string to make it idiot proof
- heightStr += "";
- if (hasPlayerVersion(swfVersionStr)) {
- setVisibility(replaceElemIdStr, false);
- var att = (typeof attObj == OBJECT) ? attObj : {};
- att.data = swfUrlStr;
- att.width = widthStr;
- att.height = heightStr;
- var par = (typeof parObj == OBJECT) ? parObj : {};
- if (typeof flashvarsObj == OBJECT) {
- for (var i in flashvarsObj) {
- if (flashvarsObj[i] != Object.prototype[i]) { // Filter out prototype additions from other potential libraries
- if (typeof par.flashvars != UNDEF) {
- par.flashvars += "&" + i + "=" + flashvarsObj[i];
- }
- else {
- par.flashvars = i + "=" + flashvarsObj[i];
- }
- }
- }
- }
- addDomLoadEvent(function() {
- createSWF(att, par, replaceElemIdStr);
- if (att.id == replaceElemIdStr) {
- setVisibility(replaceElemIdStr, true);
- }
- });
- }
- else if (xiSwfUrlStr && !isExpressInstallActive && hasPlayerVersion("6.0.65") && (ua.win || ua.mac)) {
- setVisibility(replaceElemIdStr, false);
- addDomLoadEvent(function() {
- var regObj = {};
- regObj.id = regObj.altContentId = replaceElemIdStr;
- regObj.width = widthStr;
- regObj.height = heightStr;
- regObj.expressInstall = xiSwfUrlStr;
- showExpressInstall(regObj);
- });
- }
- },
-
- getFlashPlayerVersion: function() {
- return { major:ua.pv[0], minor:ua.pv[1], release:ua.pv[2] };
- },
-
- hasFlashPlayerVersion:hasPlayerVersion,
-
- createSWF: function(attObj, parObj, replaceElemIdStr) {
- if (ua.w3cdom && isDomLoaded) {
- return createSWF(attObj, parObj, replaceElemIdStr);
- }
- else {
- return undefined;
- }
- },
-
- createCSS: function(sel, decl) {
- if (ua.w3cdom) {
- createCSS(sel, decl);
- }
- },
-
- addDomLoadEvent:addDomLoadEvent,
-
- addLoadEvent:addLoadEvent,
-
- getQueryParamValue: function(param) {
- var q = doc.location.search || doc.location.hash;
- if (param == null) {
- return q;
- }
- if(q) {
- var pairs = q.substring(1).split("&");
- for (var i = 0; i < pairs.length; i++) {
- if (pairs[i].substring(0, pairs[i].indexOf("=")) == param) {
- return pairs[i].substring((pairs[i].indexOf("=") + 1));
- }
- }
- }
- return "";
- },
-
- // For internal usage only
- expressInstallCallback: function() {
- if (isExpressInstallActive && storedAltContent) {
- var obj = getElementById(EXPRESS_INSTALL_ID);
- if (obj) {
- obj.parentNode.replaceChild(storedAltContent, obj);
- if (storedAltContentId) {
- setVisibility(storedAltContentId, true);
- if (ua.ie && ua.win) {
- storedAltContent.style.display = "block";
- }
- }
- storedAltContent = null;
- storedAltContentId = null;
- isExpressInstallActive = false;
- }
- }
- }
-
- };
-
-}();
http://git-wip-us.apache.org/repos/asf/deltacloud/blob/d3232da0/site/output/about.html
----------------------------------------------------------------------
diff --git a/site/output/about.html b/site/output/about.html
new file mode 100644
index 0000000..d21ab0a
--- /dev/null
+++ b/site/output/about.html
@@ -0,0 +1,138 @@
+<!DOCTYPE html>
+<html lang="en">
+ <head>
+ <meta charset="utf-8">
+ <title>About</title>
+ <!-- Le HTML5 shim, for IE6-8 support of HTML elements -->
+ <!--[if lt IE 9]>
+ <script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script>
+ <![endif]-->
+
+ <!-- Le JavaScript -->
+ <script src="/assets/js/jquery-1.7.1.min.js" type="text/javascript"></script>
+ <script src="/assets/js/bootstrap-dropdown.js" type="text/javascript"></script>
+ <script src="/assets/js/jquery.tweet.js" type="text/javascript"></script>
+ <script src="/assets/js/application.js" type="text/javascript"></script>
+ <script src="/assets/js/bootstrap-transition.js"></script>
+ <script src="/assets/js/bootstrap-alert.js"></script>
+ <script src="/assets/js/bootstrap-modal.js"></script>
+ <script src="/assets/js/bootstrap-scrollspy.js"></script>
+ <script src="/assets/js/bootstrap-tab.js"></script>
+ <script src="/assets/js/bootstrap-tooltip.js"></script>
+ <script src="/assets/js/bootstrap-popover.js"></script>
+ <script src="/assets/js/bootstrap-button.js"></script>
+ <script src="/assets/js/bootstrap-collapse.js"></script>
+ <script src="/assets/js/bootstrap-carousel.js"></script>
+ <script src="/assets/js/bootstrap-typeahead.js"></script>
+
+ <!-- Le styles -->
+ <link href="/assets/css/bootstrap.css" rel="stylesheet">
+ <link href="/assets/css/application.css" rel="stylesheet">
+ <link rel="shortcut icon" href="/assets/img/favicon.ico">
+ </head>
+
+ <body>
+
+ <div class="navbar navbar-fixed-top">
+ <div class="navbar-inner">
+ <div class="container">
+ <a class="brand" href="/"><img src="/assets/img/logo.png" width="152"
+ alt="Deltacloud API"/></a>
+ <ul class="nav top-nav">
+ <li><a href="/">Home</a></li>
+ <li class="dropdown">
+ <a href="#" class="dropdown-toggle" data-toggle="dropdown">About<b class="caret"></b></a>
+ <ul class="dropdown-menu">
+ <li><a href="/about.html">What is Deltacloud?</a></li>
+ <li><a href="/supported-providers.html">Supported Providers</a></li>
+ </ul>
+ </li>
+ <li class="dropdown">
+ <a href="#" class="dropdown-toggle" data-toggle="dropdown">Installation<b class="caret"></b></a>
+ <ul class="dropdown-menu">
+ <li><a href="/install-deltacloud.html">Install Deltacloud</a></li>
+ <li><a href="/run-deltacloud-server.html">Run the Deltacloud Server</a></li>
+ </ul>
+ </li>
+ <li class="dropdown">
+ <a href="/usage.html" class="dropdown-toggle" data-toggle="dropdown">Usage<b class="caret"></b></a>
+ <ul class="dropdown-menu">
+ <li><a href="/usage.html#usingapi">Using API</a></li>
+ <li><a href="/usage.html#clients">Client Libraries</a></li>
+ <li><a href="/command-tools.html">Command Line Tools</a></li>
+ </ul>
+ </li>
+ <li class="dropdown">
+ <a href="#" class="dropdown-toggle" data-toggle="dropdown">Contribute<b class="caret"></b></a>
+ <ul class="dropdown-menu">
+ <li><a href="/getting-sources.html">Getting Sources</a></li>
+ <li><a href="/how-to-contribute.html">How Can I Contribute?</a></li>
+ </ul>
+ </li>
+ <li class="dropdown">
+ <a href="#" class="dropdown-toggle" data-toggle="dropdown">API<b class="caret"></b></a>
+ <ul class="dropdown-menu">
+ <li><a href="/rest-api.html">REST API</a></li>
+ <li><a href="/drivers.html">Drivers API</a></li>
+ </ul>
+ </li>
+ <li><a href="/contact.html">Contact</a></li>
+</ul>
+
+ </div>
+ </div>
+
+ </div>
+
+ <div class="container content">
+
+ <div class="row">
+
+<div class="span4">
+
+<br><h3>About Deltacloud</h3>
+<br><p>Deltacloud provides the API server and drivers necessary for connecting to cloud providers.</p>
+
+<p>Deltacloud maintains <strong>long-term stability</strong> for scripts, tools and applications and <strong>backward compatibility</strong> across different versions.</p>
+
+<p>Using single API Deltacloud enables management of resources in different clouds.</p>
+
+<p>Start an instance on an internal cloud, then with the same code start another on EC2 or RHEV-M.</p>
+</div>
+
+<br><div class="span8">
+ <img src="assets/img/diagram-soa.png" alt="Deltacloud API SOA diagram" align="center">
+</div>
+
+<div class="span12">
+
+<br><br><h3>How does Deltacloud work?</h3>
+<br><p>Deltacloud contains a cloud abstraction API. The API works as a wrapper around a large number of clouds, abstracting their differences. For every <a href="supported-providers.html" rel="tooltip" title="currently supported providers">provider</a> there is a driver "speaking" cloud provider's native API. It frees you from dealing with the particulars of each cloud's API.</p>
+
+<p>Install Deltacloud and start the <strong>deltacloudd</strong> daemon server. You can use your favourite HTTP client to talk to the server using the <a href="rest-api.html">Deltacloud REST API</a>. Deltacloud even comes with a HTML interface so you can simply use your web browser to control your cloud infrastructure straight out of the box. The HTML interface is written with the <a href="http://jquerymobile.com/">jQuery mobile</a> framework, so it is compatible with your mobile or tablet devices.</p>
+<br><img src="assets/img/deltacloud_concept.gif" alt="Deltacloud concept scheme"><br><a class="btn btn-inverse btn-large" style="float: right" href="install-deltacloud.html">Get Deltacloud</a>
+
+</div>
+</div>
+
+ <footer class="footer">
+ <p class="pull-right"><span class='icon-circle-arrow-up'> </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>
http://git-wip-us.apache.org/repos/asf/deltacloud/blob/d3232da0/site/output/addresses.html
----------------------------------------------------------------------
diff --git a/site/output/addresses.html b/site/output/addresses.html
new file mode 100644
index 0000000..f60cfbe
--- /dev/null
+++ b/site/output/addresses.html
@@ -0,0 +1,378 @@
+<!DOCTYPE html>
+<html lang="en">
+ <head>
+ <meta charset="utf-8">
+ <title>Addresses</title>
+ <!-- Le HTML5 shim, for IE6-8 support of HTML elements -->
+ <!--[if lt IE 9]>
+ <script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script>
+ <![endif]-->
+
+ <!-- Le JavaScript -->
+ <script src="/assets/js/jquery-1.7.1.min.js" type="text/javascript"></script>
+ <script src="/assets/js/bootstrap-dropdown.js" type="text/javascript"></script>
+ <script src="/assets/js/jquery.tweet.js" type="text/javascript"></script>
+ <script src="/assets/js/application.js" type="text/javascript"></script>
+ <script src="/assets/js/bootstrap-transition.js"></script>
+ <script src="/assets/js/bootstrap-alert.js"></script>
+ <script src="/assets/js/bootstrap-modal.js"></script>
+ <script src="/assets/js/bootstrap-scrollspy.js"></script>
+ <script src="/assets/js/bootstrap-tab.js"></script>
+ <script src="/assets/js/bootstrap-tooltip.js"></script>
+ <script src="/assets/js/bootstrap-popover.js"></script>
+ <script src="/assets/js/bootstrap-button.js"></script>
+ <script src="/assets/js/bootstrap-collapse.js"></script>
+ <script src="/assets/js/bootstrap-carousel.js"></script>
+ <script src="/assets/js/bootstrap-typeahead.js"></script>
+
+ <!-- Le styles -->
+ <link href="/assets/css/bootstrap.css" rel="stylesheet">
+ <link href="/assets/css/application.css" rel="stylesheet">
+ <link rel="shortcut icon" href="/assets/img/favicon.ico">
+ </head>
+
+ <body>
+
+ <div class="navbar navbar-fixed-top">
+ <div class="navbar-inner">
+ <div class="container">
+ <a class="brand" href="/"><img src="/assets/img/logo.png" width="152"
+ alt="Deltacloud API"/></a>
+ <ul class="nav top-nav">
+ <li><a href="/">Home</a></li>
+ <li class="dropdown">
+ <a href="#" class="dropdown-toggle" data-toggle="dropdown">About<b class="caret"></b></a>
+ <ul class="dropdown-menu">
+ <li><a href="/about.html">What is Deltacloud?</a></li>
+ <li><a href="/supported-providers.html">Supported Providers</a></li>
+ </ul>
+ </li>
+ <li class="dropdown">
+ <a href="#" class="dropdown-toggle" data-toggle="dropdown">Installation<b class="caret"></b></a>
+ <ul class="dropdown-menu">
+ <li><a href="/install-deltacloud.html">Install Deltacloud</a></li>
+ <li><a href="/run-deltacloud-server.html">Run the Deltacloud Server</a></li>
+ </ul>
+ </li>
+ <li class="dropdown">
+ <a href="/usage.html" class="dropdown-toggle" data-toggle="dropdown">Usage<b class="caret"></b></a>
+ <ul class="dropdown-menu">
+ <li><a href="/usage.html#usingapi">Using API</a></li>
+ <li><a href="/usage.html#clients">Client Libraries</a></li>
+ <li><a href="/command-tools.html">Command Line Tools</a></li>
+ </ul>
+ </li>
+ <li class="dropdown">
+ <a href="#" class="dropdown-toggle" data-toggle="dropdown">Contribute<b class="caret"></b></a>
+ <ul class="dropdown-menu">
+ <li><a href="/getting-sources.html">Getting Sources</a></li>
+ <li><a href="/how-to-contribute.html">How Can I Contribute?</a></li>
+ </ul>
+ </li>
+ <li class="dropdown">
+ <a href="#" class="dropdown-toggle" data-toggle="dropdown">API<b class="caret"></b></a>
+ <ul class="dropdown-menu">
+ <li><a href="/rest-api.html">REST API</a></li>
+ <li><a href="/drivers.html">Drivers API</a></li>
+ </ul>
+ </li>
+ <li><a href="/contact.html">Contact</a></li>
+</ul>
+
+ </div>
+ </div>
+
+ </div>
+
+ <div class="container content">
+
+ <p><br></p>
+
+<div class="row">
+ <div class="span9">
+
+<h3 id="addresses">Addresses</h3>
+
+<p>
+The addresses collection represents IP addresses and allows <strong>IP address management</strong>.
+</p>
+
+<p>
+This collection is currently implemented for the Amazon EC2 cloud driver. For EC2, IP address management corresponds to Amazon's 'Elastic IP' feature.
+</p>
+
+<br><p>
+The addresses collection supports these operations:
+</p>
+
+<ul>
+<li>creating an address</li>
+ <li>destroying an address</li>
+ <li>association an address with a running instance</li>
+ <li>dissociating an address from a running instance</li>
+</ul>
+<br><br><ul class="nav nav-pills">
+<li class="active"><a href="#tab1" data-toggle="tab">Get a list of all addresses</a></li>
+ <li><a href="#tab2" data-toggle="tab">Get the details of an address</a></li>
+ <li><a href="#tab3" data-toggle="tab">Create/delete an address</a></li>
+ <li><a href="#tab4" data-toggle="tab">Associate/disassociate an address</a></li>
+</ul>
+<hr>
+</div>
+ <div class="span3">
+
+<ul class="nav nav-list well">
+<li class="nav-header">
+ REST API
+ </li>
+ <li><a href="rest-api.html">Introduction</a></li>
+ <li><a href="api-entry-point.html">API entry point</a></li>
+ <li><a href="compute-resources.html">Compute resources</a></li>
+ <ul class="nav nav-list">
+<li><a href="compute-resources.html">Realms</a></li>
+ <li><a href="hardware-profiles.html">Hardware profiles</a></li>
+ <li><a href="images.html">Images</a></li>
+ <li><a href="instance-states.html">Instance states</a></li>
+ <li><a href="instances.html">Instances</a></li>
+ <li><a href="keys.html">Keys</a></li>
+ <li><a href="firewalls.html">Firewalls</a></li>
+ <li class="active"><a href="#addresses">Addresses</a></li>
+ <li><a href="load-balancers.html">Load balancers</a></li>
+ </ul>
+<li><a href="storage-resources.html">Storage resources</a></li>
+</ul>
+</div>
+</div>
+
+<div class="tab-content">
+ <div class="tab-pane active" id="tab1">
+
+<h4>Get a list of all addresses</h4>
+
+<p>
+To retrieve a list of all addresses use call <strong>GET /api/addresses</strong>.
+</p>
+
+<p>
+Example request:
+</p>
+
+<pre>
+GET /api/addresses?format=xml HTTP/1.1
+Authorization: Basic AU1J3UB2121Afd1DdyQWxLaTYTmJMNF4zTXBoRGdhMDh2RUw5ZDAN9zVXVa==
+User-Agent: curl/7.20.1 (i386-redhat-linux-gnu)
+Host: localhost:3001
+Accept: */*
+</pre>
+
+<p>
+Server response:
+</p>
+
+
+<pre style="margin-top:0px">
+HTTP/1.1 200 OK
+Content-Type: application/xml
+Date: Wed, 27 Jul 2011 12:55:16 GMT
+Content-Length: 817
+
+<?xml version='1.0' encoding='utf-8' ?>
+<addresses>
+ <address href='http://localhost:3001/api/addresses/107.20.232.251' id='107.20.232.251'>
+ <ip>107.20.232.251</ip>
+ <actions>
+ <link href='http://localhost:3001/api/addresses/107.20.232.251' method='delete' rel='destroy' />
+ <link href='http://localhost:3001/api/addresses/107.20.232.251/associate' method='post' rel='associate' />
+ </actions>
+ </address>
+ <address href='http://localhost:3001/api/addresses/107.20.234.161' id='107.20.234.161'>
+ <ip>107.20.234.161</ip>
+ <actions>
+ <link href='http://localhost:3001/api/addresses/107.20.234.161' method='delete' rel='destroy' />
+ <link href='http://localhost:3001/api/addresses/107.20.234.161/associate' method='post' rel='associate' />
+ </actions>
+ </address>
+</addresses>
+</pre>
+
+ </div>
+ <div class="tab-pane" id="tab2">
+
+<h4>Get the details of an address</h4>
+
+<p>
+To retrieve details for a specific address use call <strong>GET /api/addresses/:id</strong>.
+</p>
+
+<p>Example request:</p>
+
+<pre>
+GET /api/addresses/107.20.232.251?format=xml HTTP/1.1
+Authorization: Basic AU1J3UB2121Afd1DdyQWxLaTYTmJMNF4zTXBoRGdhMDh2RUw5ZDAN9zVXVa==
+User-Agent: curl/7.20.1 (i386-redhat-linux-gnu)
+Host: localhost:3001
+Accept: */*
+</pre>
+
+<p>Server response:</p>
+
+<pre>
+HTTP/1.1 200 OK
+Content-Type: application/xml
+Date: Wed, 27 Jul 2011 12:57:27 GMT
+Content-Length: 402
+
+<?xml version='1.0' encoding='utf-8' ?>
+<address href='http://localhost:3001/api/addresses/107.20.232.251' id='107.20.232.251'>
+ <ip>107.20.232.251</ip>
+ <actions>
+ <link href='http://localhost:3001/api/addresses/107.20.232.251' method='delete' rel='destroy' />
+ <link href='http://localhost:3001/api/addresses/107.20.232.251/associate' method='post' rel='associate' />
+ </actions>
+</address>
+</pre>
+
+ </div>
+ <div class="tab-pane" id="tab3">
+
+<h4>Create an address</h4>
+
+<p>
+To create a new address use call <strong>POST /api/addresses</strong>. The Deltacloud server will respond with <strong>HTTP 201 Created</strong> and provide the details of the new address after a succesful operation:
+</p>
+
+<p>Example request:</p>
+
+<pre>
+POST /api/addresses?format=xml HTTP/1.1
+Authorization: Basic AU1J3UB2121Afd1DdyQWxLaTYTmJMNF4zTXBoRGdhMDh2RUw5ZDAN9zVXVa==
+User-Agent: curl/7.20.1 (i386-redhat-linux-gnu)
+Host: localhost:3001
+Accept: */*
+</pre>
+
+<p>Server response:</p>
+
+<pre>
+HTTP/1.1 201 Created
+Content-Type: application/xml
+Content-Length: 388
+
+<?xml version='1.0' encoding='utf-8' ?>
+<address href='http://localhost:3001/api/addresses/107.20.232.251' id='107.20.232.251'>
+ <ip>107.20.232.251</ip>
+ <actions>
+ <link href='http://localhost:3001/api/addresses/107.20.232.251' method='delete' rel='destroy' />
+ <link href='http://localhost:3001/api/addresses/107.20.232.251/associate' method='post' rel='associate' />
+ </actions>
+</address>
+</pre>
+
+<h4>Delete an address</h4>
+
+<p>
+To delete a specified address use call <strong>DELETE /api/addresses/:id</strong>. The Deltacloud server responds with a <strong>HTTP 204 No Content</strong> after a succesful operation.
+</p>
+
+<p>Example request:</p>
+
+<pre>
+DELETE /api/addresses/107.20.232.251?format=xml HTTP/1.1
+Authorization: Basic AU1J3UB2121Afd1DdyQWxLaTYTmJMNF4zTXBoRGdhMDh2RUw5ZDAN9zVXVa==
+User-Agent: curl/7.20.1 (i386-redhat-linux-gnu)
+Host: localhost:3001
+Accept: */*
+</pre>
+
+<p>Server response:</p>
+
+<pre>
+HTTP/1.1 204 No Content
+Date: Wed, 27 Jul 2011 13:29:00 GMT
+</pre>
+
+ </div>
+ <div class="tab-pane" id="tab4">
+
+<h4>Associate an adress with an instance</h4>
+
+<p>
+To associate a given address with a running instance use call <strong>POST /api/addresses/:id/associate</strong>. The client must specify the <strong>instance_id</strong> as a parameter to this call. For Amazon EC2, the specified address will replace the currently assigned public_address of the instance. A succesful operation results in a <strong>HTTP 202 Accepted</strong> response. The example client request below specifies the required instance_id parameter using the application/x-www-form-urlencoded content-type, however client can also use multipart/form-data.
+</p>
+
+<p>Example request:</p>
+
+<pre>
+POST /api/addresses/107.20.232.251/associate?format=xml HTTP/1.1
+Authorization: Basic AU1J3UB2121Afd1DdyQWxLaTYTmJMNF4zTXBoRGdhMDh2RUw5ZDAN9zVXVa==
+User-Agent: curl/7.20.1 (i386-redhat-linux-gnu)
+Host: localhost:3001
+Accept: */*
+Content-Length: 22
+Content-Type: application/x-www-form-urlencoded
+
+instance_id=i-9d8a3dfc
+</pre>
+
+<p>Server response:</p>
+
+<pre>
+HTTP/1.1 202 Accepted
+Content-Type: application/xml
+Date: Wed, 27 Jul 2011 13:01:11 GMT
+Content-Length: 0
+</pre>
+
+<h4>Disassociate an address from an instance</h4>
+
+<p>
+To disassociate a given address from the instance to which it is currently assigned use call <strong>POST /api/addresses/:id/disassociate</strong>.
+</p>
+
+<p>Example request:</p>
+
+<pre>
+POST /api/addresses/107.20.232.251/disassociate?format=xml HTTP/1.1
+Authorization: Basic AU1J3UB2121Afd1DdyQWxLaTYTmJMNF4zTXBoRGdhMDh2RUw5ZDAN9zVXVa==
+User-Agent: curl/7.20.1 (i386-redhat-linux-gnu)
+Host: localhost:3001
+Accept: */*
+</pre>
+
+<p>Server response:</p>
+
+<pre>
+HTTP/1.1 202 Accepted
+Content-Type: application/xml
+Date: Wed, 27 Jul 2011 13:05:38 GMT
+Content-Length: 0
+</pre>
+
+ </div>
+</div>
+
+<p><a class="btn btn-inverse btn-large" style="float: right" href="load-balancers.html">Load Balancers <i class="icon-arrow-right icon-white" style="vertical-align:baseline"> </i></a></p>
+
+<p><br></p>
+
+ <footer class="footer">
+ <p class="pull-right"><span class='icon-circle-arrow-up'> </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>
http://git-wip-us.apache.org/repos/asf/deltacloud/blob/d3232da0/site/output/api-docs.html
----------------------------------------------------------------------
diff --git a/site/output/api-docs.html b/site/output/api-docs.html
new file mode 100644
index 0000000..ebb4771
--- /dev/null
+++ b/site/output/api-docs.html
@@ -0,0 +1,111 @@
+<!DOCTYPE html>
+<html lang="en">
+ <head>
+ <meta charset="utf-8">
+ <title>API Documentation</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">
+
+
+
+ <footer class="footer">
+ <p class="pull-right"><span class='icon-circle-arrow-up'> </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>
http://git-wip-us.apache.org/repos/asf/deltacloud/blob/d3232da0/site/output/api-docs/index.html
----------------------------------------------------------------------
diff --git a/site/output/api-docs/index.html b/site/output/api-docs/index.html
new file mode 100644
index 0000000..bb97da7
--- /dev/null
+++ b/site/output/api-docs/index.html
@@ -0,0 +1,96 @@
+<!DOCTYPE html>
+<html lang="en">
+ <head>
+ <meta charset="utf-8">
+ <title>API Documentation</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>
+
+ <!-- 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 class="active"><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">What is Deltacloud?</a></li>
+ <li><a href="/supported-providers">Supported Providers</a></li>
+ </ul>
+ </li>
+ <li class="dropdown">
+ <a href="#" class="dropdown-toggle" data-toggle="dropdown">Run API <b class="caret"></b></a>
+ <ul class="dropdown-menu">
+ <li><a href="/install-deltacloud">Install Deltacloud</a></li>
+ <li><a href="/run-deltacloud-server">Run the Deltacloud Server</a></li>
+ </ul>
+ </li>
+ <li class="dropdown">
+ <a href="#" class="dropdown-toggle" data-toggle="dropdown">Use API <b class="caret"></b></a>
+ <ul class="dropdown-menu">
+ <li><a href="/use-the-api">Using API</a></li>
+ <li><a href="/clients">Clients</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="/how-to-contribute">How Can I Contribute?</a></li>
+ <li><a href="/getting-sources">Getting the Sources</a></li>
+ </ul>
+ </li>
+ <li class="dropdown">
+ <a href="#" class="dropdown-toggle" data-toggle="dropdown">API Documentation <b class="caret"></b></a>
+ <ul class="dropdown-menu">
+ <li><a href="/rest-api">REST API</a></li>
+ <li><a href="/drivers">Drivers API</a></li>
+ <li><a href="/libdeltacloud">C library libdeltacloud</a></li>
+ </ul>
+ </li>
+ <li><a href="#contact">Contact</a></li>
+</ul>
+
+ </div>
+ </div>
+
+ </div>
+
+ <div class="container">
+
+
+
+ <footer class="footer">
+ <p class="footer-right">
+ <img src="/assets/img/asf_logo_wide.png" alt="Apache Software
+ Foundation"/>
+ </p>
+ <p>
+ <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.
+ </p>
+ </footer>
+
+ </div> <!-- /container -->
+
+ </body>
+</html>