You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@jclouds.apache.org by ev...@apache.org on 2014/04/22 19:05:53 UTC

svn commit: r1589211 - in /jclouds/site-content: guides/openstack/index.html reference/configuration/index.html reference/logging/index.html

Author: everett
Date: Tue Apr 22 17:05:52 2014
New Revision: 1589211

URL: http://svn.apache.org/r1589211
Log:
deploy jclouds site content

Modified:
    jclouds/site-content/guides/openstack/index.html
    jclouds/site-content/reference/configuration/index.html
    jclouds/site-content/reference/logging/index.html

Modified: jclouds/site-content/guides/openstack/index.html
URL: http://svn.apache.org/viewvc/jclouds/site-content/guides/openstack/index.html?rev=1589211&r1=1589210&r2=1589211&view=diff
==============================================================================
--- jclouds/site-content/guides/openstack/index.html (original)
+++ jclouds/site-content/guides/openstack/index.html Tue Apr 22 17:05:52 2014
@@ -150,8 +150,8 @@
 <li><a href="#openstack">Get OpenStack</a></li>
 <li><a href="#install">Get jclouds</a></li>
 <li><a href="#terminology">Terminology</a></li>
-<li><a href="#nova">List Servers</a></li>
-<li><a href="#swift">List Containers</a></li>
+<li><a href="#nova">Nova: List Servers</a></li>
+<li><a href="#swift">Swift: Use Containers</a></li>
 <li><a href="#next">Next Steps</a></li>
 <li><a href="#pom">OpenStack Dependencies</a></li>
 </ol>
@@ -165,7 +165,11 @@
 
 <p>You can either install a private OpenStack cloud for yourself or use an existing OpenStack public cloud.</p>
 
-<h3><a id="clouds"></a>Public Clouds</h3>
+<h3><a id="private"></a>Private Clouds</h3>
+
+<p>If you don't have a private OpenStack cloud but still want to try it out, you can use <a href="http://devstack.org/">DevStack</a> to create your own mini-OpenStack cloud.</p>
+
+<h3><a id="public"></a>Public Clouds</h3>
 
 <p>Because the OpenStack API is also open, the jclouds APIs that talk to private OpenStack clouds work just as well with public OpenStack clouds. OpenStack is used by several large public clouds, both the <a href="https://www.hpcloud.com/">HP Cloud</a> (<a href="/guides/hpcloud">HP Cloud Getting Started Guide</a>) and <a href="http://www.rackspace.com/cloud/">Rackspace Cloud</a> (<a href="/guides/rackspace">Rackspace Getting Started Guide</a>) are based on it. If you don't want to sign up for a paid public cloud, you can use <a href="http://trystack.org/">TryStack</a>.</p>
 
@@ -194,7 +198,7 @@
 <li>Make a local copy of the <a href="#pom">pom.xml</a> file below in the jclouds directory.
 
 <ul>
-<li>mvn dependency:copy-dependencies "-DoutputDirectory=./lib"</li>
+<li><code>mvn dependency:copy-dependencies "-DoutputDirectory=./lib"</code></li>
 </ul>
 </li>
 <li>You should now have a directory with the following structure:
@@ -269,7 +273,7 @@
 </div>
 
 
-<h2><a id="nova"></a>List Servers</h2>
+<h2><a id="nova"></a>Nova: List Servers</h2>
 
 <h3><a id="nova-intro"></a>Introduction</h3>
 
@@ -301,82 +305,71 @@
 </ol>
 
 
-<div class="highlight"><pre><code class="java"><span class="kn">import</span> <span class="nn">static</span> <span class="n">com</span><span class="o">.</span><span class="na">google</span><span class="o">.</span><span class="na">common</span><span class="o">.</span><span class="na">io</span><span class="o">.</span><span class="na">Closeables</span><span class="o">.</span><span class="na">closeQuietly</span><span class="o">;</span>
-
-<span class="kn">import</span> <span class="nn">java.io.Closeable</span><span class="o">;</span>
-<span class="kn">import</span> <span class="nn">java.util.Set</span><span class="o">;</span>
-
+<div class="highlight"><pre><code class="java"><span class="kn">import</span> <span class="nn">com.google.common.collect.ImmutableSet</span><span class="o">;</span>
+<span class="kn">import</span> <span class="nn">com.google.common.io.Closeables</span><span class="o">;</span>
+<span class="kn">import</span> <span class="nn">com.google.inject.Module</span><span class="o">;</span>
 <span class="kn">import</span> <span class="nn">org.jclouds.ContextBuilder</span><span class="o">;</span>
-<span class="kn">import</span> <span class="nn">org.jclouds.compute.ComputeService</span><span class="o">;</span>
-<span class="kn">import</span> <span class="nn">org.jclouds.compute.ComputeServiceContext</span><span class="o">;</span>
 <span class="kn">import</span> <span class="nn">org.jclouds.logging.slf4j.config.SLF4JLoggingModule</span><span class="o">;</span>
 <span class="kn">import</span> <span class="nn">org.jclouds.openstack.nova.v2_0.NovaApi</span><span class="o">;</span>
-<span class="kn">import</span> <span class="nn">org.jclouds.openstack.nova.v2_0.NovaAsyncApi</span><span class="o">;</span>
 <span class="kn">import</span> <span class="nn">org.jclouds.openstack.nova.v2_0.domain.Server</span><span class="o">;</span>
 <span class="kn">import</span> <span class="nn">org.jclouds.openstack.nova.v2_0.features.ServerApi</span><span class="o">;</span>
-<span class="kn">import</span> <span class="nn">org.jclouds.rest.RestContext</span><span class="o">;</span>
 
-<span class="kn">import</span> <span class="nn">com.google.common.collect.ImmutableSet</span><span class="o">;</span>
-<span class="kn">import</span> <span class="nn">com.google.inject.Module</span><span class="o">;</span>
+<span class="kn">import</span> <span class="nn">java.io.Closeable</span><span class="o">;</span>
+<span class="kn">import</span> <span class="nn">java.io.IOException</span><span class="o">;</span>
+<span class="kn">import</span> <span class="nn">java.util.Set</span><span class="o">;</span>
 
 <span class="kd">public</span> <span class="kd">class</span> <span class="nc">JCloudsNova</span> <span class="kd">implements</span> <span class="n">Closeable</span> <span class="o">{</span>
-   <span class="kd">private</span> <span class="n">ComputeService</span> <span class="n">compute</span><span class="o">;</span>
-   <span class="kd">private</span> <span class="n">RestContext</span><span class="o">&lt;</span><span class="n">NovaApi</span><span class="o">,</span> <span class="n">NovaAsyncApi</span><span class="o">&gt;</span> <span class="n">nova</span><span class="o">;</span>
-   <span class="kd">private</span> <span class="n">Set</span><span class="o">&lt;</span><span class="n">String</span><span class="o">&gt;</span> <span class="n">zones</span><span class="o">;</span>
-
-   <span class="kd">public</span> <span class="kd">static</span> <span class="kt">void</span> <span class="nf">main</span><span class="o">(</span><span class="n">String</span><span class="o">[]</span> <span class="n">args</span><span class="o">)</span> <span class="o">{</span>
-      <span class="n">JCloudsNova</span> <span class="n">jCloudsNova</span> <span class="o">=</span> <span class="k">new</span> <span class="n">JCloudsNova</span><span class="o">();</span>
-
-      <span class="k">try</span> <span class="o">{</span>
-         <span class="n">jCloudsNova</span><span class="o">.</span><span class="na">init</span><span class="o">();</span>
-         <span class="n">jCloudsNova</span><span class="o">.</span><span class="na">listServers</span><span class="o">();</span>
-         <span class="n">jCloudsNova</span><span class="o">.</span><span class="na">close</span><span class="o">();</span>
-      <span class="o">}</span>
-      <span class="k">catch</span> <span class="o">(</span><span class="n">Exception</span> <span class="n">e</span><span class="o">)</span> <span class="o">{</span>
-         <span class="n">e</span><span class="o">.</span><span class="na">printStackTrace</span><span class="o">();</span>
-      <span class="o">}</span>
-      <span class="k">finally</span> <span class="o">{</span>
-         <span class="n">jCloudsNova</span><span class="o">.</span><span class="na">close</span><span class="o">();</span>
-      <span class="o">}</span>
-   <span class="o">}</span>
-
-   <span class="kd">private</span> <span class="kt">void</span> <span class="nf">init</span><span class="o">()</span> <span class="o">{</span>
-      <span class="n">Iterable</span><span class="o">&lt;</span><span class="n">Module</span><span class="o">&gt;</span> <span class="n">modules</span> <span class="o">=</span> <span class="n">ImmutableSet</span><span class="o">.&lt;</span><span class="n">Module</span><span class="o">&gt;</span> <span class="n">of</span><span class="o">(</span><span class="k">new</span> <span class="n">SLF4JLoggingModule</span><span class="o">());</span>
-
-      <span class="n">String</span> <span class="n">provider</span> <span class="o">=</span> <span class="s">&quot;openstack-nova&quot;</span><span class="o">;</span>
-      <span class="n">String</span> <span class="n">identity</span> <span class="o">=</span> <span class="s">&quot;demo:demo&quot;</span><span class="o">;</span> <span class="c1">// tenantName:userName</span>
-      <span class="n">String</span> <span class="n">password</span> <span class="o">=</span> <span class="s">&quot;devstack&quot;</span><span class="o">;</span> <span class="c1">// demo account uses ADMIN_PASSWORD too</span>
-
-      <span class="n">ComputeServiceContext</span> <span class="n">context</span> <span class="o">=</span> <span class="n">ContextBuilder</span><span class="o">.</span><span class="na">newBuilder</span><span class="o">(</span><span class="n">provider</span><span class="o">)</span>
-            <span class="o">.</span><span class="na">endpoint</span><span class="o">(</span><span class="s">&quot;http://172.16.0.1:5000/v2.0/&quot;</span><span class="o">)</span>
-            <span class="o">.</span><span class="na">credentials</span><span class="o">(</span><span class="n">identity</span><span class="o">,</span> <span class="n">password</span><span class="o">)</span>
-            <span class="o">.</span><span class="na">modules</span><span class="o">(</span><span class="n">modules</span><span class="o">)</span>
-            <span class="o">.</span><span class="na">buildView</span><span class="o">(</span><span class="n">ComputeServiceContext</span><span class="o">.</span><span class="na">class</span><span class="o">);</span>
-      <span class="n">compute</span> <span class="o">=</span> <span class="n">context</span><span class="o">.</span><span class="na">getComputeService</span><span class="o">();</span>
-      <span class="n">nova</span> <span class="o">=</span> <span class="n">context</span><span class="o">.</span><span class="na">unwrap</span><span class="o">();</span>
-      <span class="n">zones</span> <span class="o">=</span> <span class="n">nova</span><span class="o">.</span><span class="na">getApi</span><span class="o">().</span><span class="na">getConfiguredZones</span><span class="o">();</span>
-   <span class="o">}</span>
-
-   <span class="kd">private</span> <span class="kt">void</span> <span class="nf">listServers</span><span class="o">()</span> <span class="o">{</span>
-      <span class="k">for</span> <span class="o">(</span><span class="n">String</span> <span class="nl">zone:</span> <span class="n">zones</span><span class="o">)</span> <span class="o">{</span>
-         <span class="n">ServerApi</span> <span class="n">serverApi</span> <span class="o">=</span> <span class="n">nova</span><span class="o">.</span><span class="na">getApi</span><span class="o">().</span><span class="na">getServerApiForZone</span><span class="o">(</span><span class="n">zone</span><span class="o">);</span>
-
-         <span class="n">System</span><span class="o">.</span><span class="na">out</span><span class="o">.</span><span class="na">println</span><span class="o">(</span><span class="s">&quot;Servers in &quot;</span> <span class="o">+</span> <span class="n">zone</span><span class="o">);</span>
-
-         <span class="k">for</span> <span class="o">(</span><span class="n">Server</span> <span class="nl">server:</span> <span class="n">serverApi</span><span class="o">.</span><span class="na">listInDetail</span><span class="o">().</span><span class="na">concat</span><span class="o">())</span> <span class="o">{</span>
-            <span class="n">System</span><span class="o">.</span><span class="na">out</span><span class="o">.</span><span class="na">println</span><span class="o">(</span><span class="s">&quot;  &quot;</span> <span class="o">+</span> <span class="n">server</span><span class="o">);</span>
-         <span class="o">}</span>
-      <span class="o">}</span>
-   <span class="o">}</span>
-
-   <span class="kd">public</span> <span class="kt">void</span> <span class="nf">close</span><span class="o">()</span> <span class="o">{</span>
-      <span class="n">closeQuietly</span><span class="o">(</span><span class="n">compute</span><span class="o">.</span><span class="na">getContext</span><span class="o">());</span>
-   <span class="o">}</span>
+    <span class="kd">private</span> <span class="kd">final</span> <span class="n">NovaApi</span> <span class="n">novaApi</span><span class="o">;</span>
+    <span class="kd">private</span> <span class="kd">final</span> <span class="n">Set</span><span class="o">&lt;</span><span class="n">String</span><span class="o">&gt;</span> <span class="n">zones</span><span class="o">;</span>
+
+    <span class="kd">public</span> <span class="kd">static</span> <span class="kt">void</span> <span class="nf">main</span><span class="o">(</span><span class="n">String</span><span class="o">[]</span> <span class="n">args</span><span class="o">)</span> <span class="kd">throws</span> <span class="n">IOException</span> <span class="o">{</span>
+        <span class="n">JCloudsNova</span> <span class="n">jcloudsNova</span> <span class="o">=</span> <span class="k">new</span> <span class="n">JCloudsNova</span><span class="o">();</span>
+
+        <span class="k">try</span> <span class="o">{</span>
+            <span class="n">jcloudsNova</span><span class="o">.</span><span class="na">listServers</span><span class="o">();</span>
+            <span class="n">jcloudsNova</span><span class="o">.</span><span class="na">close</span><span class="o">();</span>
+        <span class="o">}</span> <span class="k">catch</span> <span class="o">(</span><span class="n">Exception</span> <span class="n">e</span><span class="o">)</span> <span class="o">{</span>
+            <span class="n">e</span><span class="o">.</span><span class="na">printStackTrace</span><span class="o">();</span>
+        <span class="o">}</span> <span class="k">finally</span> <span class="o">{</span>
+            <span class="n">jcloudsNova</span><span class="o">.</span><span class="na">close</span><span class="o">();</span>
+        <span class="o">}</span>
+    <span class="o">}</span>
+
+    <span class="kd">public</span> <span class="nf">JCloudsNova</span><span class="o">()</span> <span class="o">{</span>
+        <span class="n">Iterable</span><span class="o">&lt;</span><span class="n">Module</span><span class="o">&gt;</span> <span class="n">modules</span> <span class="o">=</span> <span class="n">ImmutableSet</span><span class="o">.&lt;</span><span class="n">Module</span><span class="o">&gt;</span><span class="n">of</span><span class="o">(</span><span class="k">new</span> <span class="n">SLF4JLoggingModule</span><span class="o">());</span>
+
+        <span class="n">String</span> <span class="n">provider</span> <span class="o">=</span> <span class="s">&quot;openstack-nova&quot;</span><span class="o">;</span>
+        <span class="n">String</span> <span class="n">identity</span> <span class="o">=</span> <span class="s">&quot;demo:demo&quot;</span><span class="o">;</span> <span class="c1">// tenantName:userName</span>
+        <span class="n">String</span> <span class="n">credential</span> <span class="o">=</span> <span class="s">&quot;devstack&quot;</span><span class="o">;</span>
+
+        <span class="n">novaApi</span> <span class="o">=</span> <span class="n">ContextBuilder</span><span class="o">.</span><span class="na">newBuilder</span><span class="o">(</span><span class="n">provider</span><span class="o">)</span>
+                <span class="o">.</span><span class="na">endpoint</span><span class="o">(</span><span class="s">&quot;http://xxx.xxx.xxx.xxx:5000/v2.0/&quot;</span><span class="o">)</span>
+                <span class="o">.</span><span class="na">credentials</span><span class="o">(</span><span class="n">identity</span><span class="o">,</span> <span class="n">credential</span><span class="o">)</span>
+                <span class="o">.</span><span class="na">modules</span><span class="o">(</span><span class="n">modules</span><span class="o">)</span>
+                <span class="o">.</span><span class="na">buildApi</span><span class="o">(</span><span class="n">NovaApi</span><span class="o">.</span><span class="na">class</span><span class="o">);</span>
+        <span class="n">zones</span> <span class="o">=</span> <span class="n">novaApi</span><span class="o">.</span><span class="na">getConfiguredZones</span><span class="o">();</span>
+    <span class="o">}</span>
+
+    <span class="kd">private</span> <span class="kt">void</span> <span class="nf">listServers</span><span class="o">()</span> <span class="o">{</span>
+        <span class="k">for</span> <span class="o">(</span><span class="n">String</span> <span class="n">zone</span> <span class="o">:</span> <span class="n">zones</span><span class="o">)</span> <span class="o">{</span>
+            <span class="n">ServerApi</span> <span class="n">serverApi</span> <span class="o">=</span> <span class="n">novaApi</span><span class="o">.</span><span class="na">getServerApiForZone</span><span class="o">(</span><span class="n">zone</span><span class="o">);</span>
+
+            <span class="n">System</span><span class="o">.</span><span class="na">out</span><span class="o">.</span><span class="na">println</span><span class="o">(</span><span class="s">&quot;Servers in &quot;</span> <span class="o">+</span> <span class="n">zone</span><span class="o">);</span>
+
+            <span class="k">for</span> <span class="o">(</span><span class="n">Server</span> <span class="n">server</span> <span class="o">:</span> <span class="n">serverApi</span><span class="o">.</span><span class="na">listInDetail</span><span class="o">().</span><span class="na">concat</span><span class="o">())</span> <span class="o">{</span>
+                <span class="n">System</span><span class="o">.</span><span class="na">out</span><span class="o">.</span><span class="na">println</span><span class="o">(</span><span class="s">&quot;  &quot;</span> <span class="o">+</span> <span class="n">server</span><span class="o">);</span>
+            <span class="o">}</span>
+        <span class="o">}</span>
+    <span class="o">}</span>
+
+    <span class="kd">public</span> <span class="kt">void</span> <span class="nf">close</span><span class="o">()</span> <span class="kd">throws</span> <span class="n">IOException</span> <span class="o">{</span>
+        <span class="n">Closeables</span><span class="o">.</span><span class="na">close</span><span class="o">(</span><span class="n">novaApi</span><span class="o">,</span> <span class="kc">true</span><span class="o">);</span>
+    <span class="o">}</span>
 <span class="o">}</span>
 </code></pre></div>
 
 
-<p>In the init() method note that</p>
+<p>In the constructor note that</p>
 
 <ul>
 <li><code>String provider = "openstack-nova";</code>
@@ -397,11 +390,11 @@
 <li>The demo account uses ADMIN_PASSWORD too</li>
 </ul>
 </li>
-<li><code>.endpoint("http://172.16.0.1:5000/v2.0/")</code>
+<li><code>.endpoint("http://xxx.xxx.xxx.xxx:5000/v2.0/")</code>
 
 <ul>
 <li>This is the Keystone endpoint that jclouds needs to connect with to get more info (services and endpoints) from OpenStack</li>
-<li>When the devstack installation completes successfully, one of the last few lines will read something like "<code>Keystone is serving at http://172.16.0.1:5000/v2.0/</code>"</li>
+<li>When a DevStack installation completes successfully, one of the last few lines will read something like "<code>Keystone is serving at http://xxx.xxx.xxx.xxx:5000/v2.0/</code>"</li>
 <li>Set the endpoint to this URL depending on the method used to get OpenStack above.</li>
 </ul>
 </li>
@@ -410,18 +403,18 @@
 
 <h3><a id="nova-compile"></a>Compile and Run</h3>
 
-<pre><code>javac -classpath ".:lib/*" JCloudsNova.java
+<pre><code>$ javac -classpath ".:lib/*" JCloudsNova.java
 
-java -classpath ".:lib/*" JCloudsNova
+$ java -classpath ".:lib/*" JCloudsNova
 
-[logging output]
 Servers in RegionOne
-[logging output]
-  Server{uuid=...}
+  Server{id=...}
   ...
+
+# You'll see a lot of logging in the output
 </code></pre>
 
-<h2><a id="swift"></a>List Containers</h2>
+<h2><a id="swift"></a>Swift: Use Containers</h2>
 
 <h3><a id="swift-intro"></a>Introduction</h3>
 
@@ -453,147 +446,153 @@ Servers in RegionOne
 </ol>
 
 
-<div class="highlight"><pre><code class="java"><span class="kn">import</span> <span class="nn">static</span> <span class="n">com</span><span class="o">.</span><span class="na">google</span><span class="o">.</span><span class="na">common</span><span class="o">.</span><span class="na">io</span><span class="o">.</span><span class="na">Closeables</span><span class="o">.</span><span class="na">closeQuietly</span><span class="o">;</span>
+<div class="highlight"><pre><code class="java"><span class="kn">import</span> <span class="nn">com.google.common.collect.ImmutableMap</span><span class="o">;</span>
+<span class="kn">import</span> <span class="nn">com.google.common.collect.ImmutableSet</span><span class="o">;</span>
+<span class="kn">import</span> <span class="nn">com.google.common.io.Closeables</span><span class="o">;</span>
+<span class="kn">import</span> <span class="nn">com.google.inject.Module</span><span class="o">;</span>
+<span class="kn">import</span> <span class="nn">org.jclouds.ContextBuilder</span><span class="o">;</span>
+<span class="kn">import</span> <span class="nn">org.jclouds.io.Payload</span><span class="o">;</span>
+<span class="kn">import</span> <span class="nn">org.jclouds.logging.slf4j.config.SLF4JLoggingModule</span><span class="o">;</span>
+<span class="kn">import</span> <span class="nn">org.jclouds.openstack.swift.v1.SwiftApi</span><span class="o">;</span>
+<span class="kn">import</span> <span class="nn">org.jclouds.openstack.swift.v1.domain.Container</span><span class="o">;</span>
+<span class="kn">import</span> <span class="nn">org.jclouds.openstack.swift.v1.features.ContainerApi</span><span class="o">;</span>
+<span class="kn">import</span> <span class="nn">org.jclouds.openstack.swift.v1.features.ObjectApi</span><span class="o">;</span>
+<span class="kn">import</span> <span class="nn">org.jclouds.openstack.swift.v1.options.CreateContainerOptions</span><span class="o">;</span>
 
 <span class="kn">import</span> <span class="nn">java.io.Closeable</span><span class="o">;</span>
+<span class="kn">import</span> <span class="nn">java.io.IOException</span><span class="o">;</span>
 <span class="kn">import</span> <span class="nn">java.util.Set</span><span class="o">;</span>
 
-<span class="kn">import</span> <span class="nn">org.jclouds.ContextBuilder</span><span class="o">;</span>
-<span class="kn">import</span> <span class="nn">org.jclouds.blobstore.BlobStore</span><span class="o">;</span>
-<span class="kn">import</span> <span class="nn">org.jclouds.blobstore.BlobStoreContext</span><span class="o">;</span>
-<span class="kn">import</span> <span class="nn">org.jclouds.logging.slf4j.config.SLF4JLoggingModule</span><span class="o">;</span>
-<span class="kn">import</span> <span class="nn">org.jclouds.openstack.swift.CommonSwiftAsyncClient</span><span class="o">;</span>
-<span class="kn">import</span> <span class="nn">org.jclouds.openstack.swift.CommonSwiftClient</span><span class="o">;</span>
-<span class="kn">import</span> <span class="nn">org.jclouds.openstack.swift.domain.ContainerMetadata</span><span class="o">;</span>
-<span class="kn">import</span> <span class="nn">org.jclouds.rest.RestContext</span><span class="o">;</span>
-
-<span class="kn">import</span> <span class="nn">com.google.common.collect.ImmutableSet</span><span class="o">;</span>
-<span class="kn">import</span> <span class="nn">com.google.inject.Module</span><span class="o">;</span>
+<span class="kn">import</span> <span class="nn">static</span> <span class="n">com</span><span class="o">.</span><span class="na">google</span><span class="o">.</span><span class="na">common</span><span class="o">.</span><span class="na">io</span><span class="o">.</span><span class="na">ByteSource</span><span class="o">.</span><span class="na">wrap</span><span class="o">;</span>
+<span class="kn">import</span> <span class="nn">static</span> <span class="n">org</span><span class="o">.</span><span class="na">jclouds</span><span class="o">.</span><span class="na">io</span><span class="o">.</span><span class="na">Payloads</span><span class="o">.</span><span class="na">newByteSourcePayload</span><span class="o">;</span>
 
 <span class="kd">public</span> <span class="kd">class</span> <span class="nc">JCloudsSwift</span> <span class="kd">implements</span> <span class="n">Closeable</span> <span class="o">{</span>
-   <span class="kd">private</span> <span class="n">BlobStore</span> <span class="n">storage</span><span class="o">;</span>
-   <span class="kd">private</span> <span class="n">RestContext</span><span class="o">&lt;</span><span class="n">CommonSwiftClient</span><span class="o">,</span> <span class="n">CommonSwiftAsyncClient</span><span class="o">&gt;</span> <span class="n">swift</span><span class="o">;</span>
+    <span class="kd">public</span> <span class="kd">static</span> <span class="kd">final</span> <span class="n">String</span> <span class="n">CONTAINER_NAME</span> <span class="o">=</span> <span class="s">&quot;jclouds-example&quot;</span><span class="o">;</span>
+    <span class="kd">public</span> <span class="kd">static</span> <span class="kd">final</span> <span class="n">String</span> <span class="n">OBJECT_NAME</span> <span class="o">=</span> <span class="s">&quot;jclouds-example.txt&quot;</span><span class="o">;</span>
 
-   <span class="kd">public</span> <span class="kd">static</span> <span class="kt">void</span> <span class="nf">main</span><span class="o">(</span><span class="n">String</span><span class="o">[]</span> <span class="n">args</span><span class="o">)</span> <span class="o">{</span>
-      <span class="n">JCloudsSwift</span> <span class="n">jCloudsSwift</span> <span class="o">=</span> <span class="k">new</span> <span class="n">JCloudsSwift</span><span class="o">();</span>
+    <span class="kd">private</span> <span class="n">SwiftApi</span> <span class="n">swiftApi</span><span class="o">;</span>
 
-      <span class="k">try</span> <span class="o">{</span>
-         <span class="n">jCloudsSwift</span><span class="o">.</span><span class="na">init</span><span class="o">();</span>
-         <span class="n">jCloudsSwift</span><span class="o">.</span><span class="na">listContainers</span><span class="o">();</span>
-         <span class="n">jCloudsSwift</span><span class="o">.</span><span class="na">close</span><span class="o">();</span>
-      <span class="o">}</span>
-      <span class="k">catch</span> <span class="o">(</span><span class="n">Exception</span> <span class="n">e</span><span class="o">)</span> <span class="o">{</span>
-         <span class="n">e</span><span class="o">.</span><span class="na">printStackTrace</span><span class="o">();</span>
-      <span class="o">}</span>
-      <span class="k">finally</span> <span class="o">{</span>
-         <span class="n">jCloudsSwift</span><span class="o">.</span><span class="na">close</span><span class="o">();</span>
-      <span class="o">}</span>
-   <span class="o">}</span>
-
-   <span class="kd">private</span> <span class="kt">void</span> <span class="nf">init</span><span class="o">()</span> <span class="o">{</span>
-      <span class="n">Iterable</span><span class="o">&lt;</span><span class="n">Module</span><span class="o">&gt;</span> <span class="n">modules</span> <span class="o">=</span> <span class="n">ImmutableSet</span><span class="o">.&lt;</span><span class="n">Module</span><span class="o">&gt;</span> <span class="n">of</span><span class="o">(</span>
-            <span class="k">new</span> <span class="nf">SLF4JLoggingModule</span><span class="o">());</span>
-
-      <span class="n">String</span> <span class="n">provider</span> <span class="o">=</span> <span class="s">&quot;swift-keystone&quot;</span><span class="o">;</span>
-      <span class="n">String</span> <span class="n">identity</span> <span class="o">=</span> <span class="s">&quot;demo:demo&quot;</span><span class="o">;</span> <span class="c1">// tenantName:userName</span>
-      <span class="n">String</span> <span class="n">password</span> <span class="o">=</span> <span class="s">&quot;devstack&quot;</span><span class="o">;</span> <span class="c1">// demo account uses ADMIN_PASSWORD too</span>
-
-      <span class="n">BlobStoreContext</span> <span class="n">context</span> <span class="o">=</span> <span class="n">ContextBuilder</span><span class="o">.</span><span class="na">newBuilder</span><span class="o">(</span><span class="n">provider</span><span class="o">)</span>
-            <span class="o">.</span><span class="na">endpoint</span><span class="o">(</span><span class="s">&quot;http://172.16.0.1:5000/v2.0/&quot;</span><span class="o">)</span>
-            <span class="o">.</span><span class="na">credentials</span><span class="o">(</span><span class="n">identity</span><span class="o">,</span> <span class="n">password</span><span class="o">)</span>
-            <span class="o">.</span><span class="na">modules</span><span class="o">(</span><span class="n">modules</span><span class="o">)</span>
-            <span class="o">.</span><span class="na">buildView</span><span class="o">(</span><span class="n">BlobStoreContext</span><span class="o">.</span><span class="na">class</span><span class="o">);</span>
-      <span class="n">storage</span> <span class="o">=</span> <span class="n">context</span><span class="o">.</span><span class="na">getBlobStore</span><span class="o">();</span>
-      <span class="n">swift</span> <span class="o">=</span> <span class="n">context</span><span class="o">.</span><span class="na">unwrap</span><span class="o">();</span>
-   <span class="o">}</span>
-
-   <span class="kd">private</span> <span class="kt">void</span> <span class="nf">listContainers</span><span class="o">()</span> <span class="o">{</span>
-      <span class="n">System</span><span class="o">.</span><span class="na">out</span><span class="o">.</span><span class="na">println</span><span class="o">(</span><span class="s">&quot;List Containers&quot;</span><span class="o">);</span>
-      <span class="n">Set</span><span class="o">&lt;</span><span class="n">ContainerMetadata</span><span class="o">&gt;</span> <span class="n">containers</span> <span class="o">=</span> <span class="n">swift</span><span class="o">.</span><span class="na">getApi</span><span class="o">().</span><span class="na">listContainers</span><span class="o">();</span>
-
-      <span class="k">for</span> <span class="o">(</span><span class="n">ContainerMetadata</span> <span class="nl">container:</span> <span class="n">containers</span><span class="o">)</span> <span class="o">{</span>
-         <span class="n">System</span><span class="o">.</span><span class="na">out</span><span class="o">.</span><span class="na">println</span><span class="o">(</span><span class="s">&quot;  &quot;</span> <span class="o">+</span> <span class="n">container</span><span class="o">);</span>
-      <span class="o">}</span>
-   <span class="o">}</span>
-
-   <span class="kd">public</span> <span class="kt">void</span> <span class="nf">close</span><span class="o">()</span> <span class="o">{</span>
-      <span class="n">closeQuietly</span><span class="o">(</span><span class="n">storage</span><span class="o">.</span><span class="na">getContext</span><span class="o">());</span>
-   <span class="o">}</span>
+    <span class="kd">public</span> <span class="kd">static</span> <span class="kt">void</span> <span class="nf">main</span><span class="o">(</span><span class="n">String</span><span class="o">[]</span> <span class="n">args</span><span class="o">)</span> <span class="kd">throws</span> <span class="n">IOException</span> <span class="o">{</span>
+        <span class="n">JCloudsSwift</span> <span class="n">jcloudsSwift</span> <span class="o">=</span> <span class="k">new</span> <span class="n">JCloudsSwift</span><span class="o">();</span>
+
+        <span class="k">try</span> <span class="o">{</span>
+            <span class="n">jcloudsSwift</span><span class="o">.</span><span class="na">createContainer</span><span class="o">();</span>
+            <span class="n">jcloudsSwift</span><span class="o">.</span><span class="na">uploadObjectFromString</span><span class="o">();</span>
+            <span class="n">jcloudsSwift</span><span class="o">.</span><span class="na">listContainers</span><span class="o">();</span>
+            <span class="n">jcloudsSwift</span><span class="o">.</span><span class="na">close</span><span class="o">();</span>
+        <span class="o">}</span> <span class="k">catch</span> <span class="o">(</span><span class="n">Exception</span> <span class="n">e</span><span class="o">)</span> <span class="o">{</span>
+            <span class="n">e</span><span class="o">.</span><span class="na">printStackTrace</span><span class="o">();</span>
+        <span class="o">}</span> <span class="k">finally</span> <span class="o">{</span>
+            <span class="n">jcloudsSwift</span><span class="o">.</span><span class="na">close</span><span class="o">();</span>
+        <span class="o">}</span>
+    <span class="o">}</span>
+
+    <span class="kd">public</span> <span class="nf">JCloudsSwift</span><span class="o">()</span> <span class="o">{</span>
+        <span class="n">Iterable</span><span class="o">&lt;</span><span class="n">Module</span><span class="o">&gt;</span> <span class="n">modules</span> <span class="o">=</span> <span class="n">ImmutableSet</span><span class="o">.&lt;</span><span class="n">Module</span><span class="o">&gt;</span><span class="n">of</span><span class="o">(</span>
+                <span class="k">new</span> <span class="nf">SLF4JLoggingModule</span><span class="o">());</span>
+
+        <span class="n">String</span> <span class="n">provider</span> <span class="o">=</span> <span class="s">&quot;openstack-swift&quot;</span><span class="o">;</span>
+        <span class="n">String</span> <span class="n">identity</span> <span class="o">=</span> <span class="s">&quot;demo:demo&quot;</span><span class="o">;</span> <span class="c1">// tenantName:userName</span>
+        <span class="n">String</span> <span class="n">credential</span> <span class="o">=</span> <span class="s">&quot;devstack&quot;</span><span class="o">;</span>
+
+        <span class="n">swiftApi</span> <span class="o">=</span> <span class="n">ContextBuilder</span><span class="o">.</span><span class="na">newBuilder</span><span class="o">(</span><span class="n">provider</span><span class="o">)</span>
+                <span class="o">.</span><span class="na">endpoint</span><span class="o">(</span><span class="s">&quot;http://xxx.xxx.xxx.xxx:5000/v2.0/&quot;</span><span class="o">)</span>
+                <span class="o">.</span><span class="na">credentials</span><span class="o">(</span><span class="n">identity</span><span class="o">,</span> <span class="n">credential</span><span class="o">)</span>
+                <span class="o">.</span><span class="na">modules</span><span class="o">(</span><span class="n">modules</span><span class="o">)</span>
+                <span class="o">.</span><span class="na">buildApi</span><span class="o">(</span><span class="n">SwiftApi</span><span class="o">.</span><span class="na">class</span><span class="o">);</span>
+    <span class="o">}</span>
+
+    <span class="kd">private</span> <span class="kt">void</span> <span class="nf">createContainer</span><span class="o">()</span> <span class="o">{</span>
+        <span class="n">System</span><span class="o">.</span><span class="na">out</span><span class="o">.</span><span class="na">println</span><span class="o">(</span><span class="s">&quot;Create Container&quot;</span><span class="o">);</span>
+
+        <span class="n">ContainerApi</span> <span class="n">containerApi</span> <span class="o">=</span> <span class="n">swiftApi</span><span class="o">.</span><span class="na">containerApiInRegion</span><span class="o">(</span><span class="s">&quot;RegionOne&quot;</span><span class="o">);</span>
+        <span class="n">CreateContainerOptions</span> <span class="n">options</span> <span class="o">=</span> <span class="n">CreateContainerOptions</span><span class="o">.</span><span class="na">Builder</span>
+                <span class="o">.</span><span class="na">metadata</span><span class="o">(</span><span class="n">ImmutableMap</span><span class="o">.</span><span class="na">of</span><span class="o">(</span>
+                        <span class="s">&quot;key1&quot;</span><span class="o">,</span> <span class="s">&quot;value1&quot;</span><span class="o">,</span>
+                        <span class="s">&quot;key2&quot;</span><span class="o">,</span> <span class="s">&quot;value2&quot;</span><span class="o">));</span>
+
+        <span class="n">containerApi</span><span class="o">.</span><span class="na">createIfAbsent</span><span class="o">(</span><span class="n">CONTAINER_NAME</span><span class="o">,</span> <span class="n">options</span><span class="o">);</span>
+
+        <span class="n">System</span><span class="o">.</span><span class="na">out</span><span class="o">.</span><span class="na">println</span><span class="o">(</span><span class="s">&quot;  &quot;</span> <span class="o">+</span> <span class="n">CONTAINER_NAME</span><span class="o">);</span>
+    <span class="o">}</span>
+
+    <span class="kd">private</span> <span class="kt">void</span> <span class="nf">uploadObjectFromString</span><span class="o">()</span> <span class="o">{</span>
+        <span class="n">System</span><span class="o">.</span><span class="na">out</span><span class="o">.</span><span class="na">println</span><span class="o">(</span><span class="s">&quot;Upload Object From String&quot;</span><span class="o">);</span>
+
+        <span class="n">ObjectApi</span> <span class="n">objectApi</span> <span class="o">=</span> <span class="n">swiftApi</span><span class="o">.</span><span class="na">objectApiInRegionForContainer</span><span class="o">(</span><span class="s">&quot;RegionOne&quot;</span><span class="o">,</span> <span class="n">CONTAINER_NAME</span><span class="o">);</span>
+        <span class="n">Payload</span> <span class="n">payload</span> <span class="o">=</span> <span class="n">newByteSourcePayload</span><span class="o">(</span><span class="n">wrap</span><span class="o">(</span><span class="s">&quot;Hello World&quot;</span><span class="o">.</span><span class="na">getBytes</span><span class="o">()));</span>
+
+        <span class="n">objectApi</span><span class="o">.</span><span class="na">replace</span><span class="o">(</span><span class="n">OBJECT_NAME</span><span class="o">,</span> <span class="n">payload</span><span class="o">,</span> <span class="n">ImmutableMap</span><span class="o">.</span><span class="na">of</span><span class="o">(</span><span class="s">&quot;key1&quot;</span><span class="o">,</span> <span class="s">&quot;value1&quot;</span><span class="o">));</span>
+
+        <span class="n">System</span><span class="o">.</span><span class="na">out</span><span class="o">.</span><span class="na">println</span><span class="o">(</span><span class="s">&quot;  &quot;</span> <span class="o">+</span> <span class="n">OBJECT_NAME</span><span class="o">);</span>
+    <span class="o">}</span>
+
+    <span class="kd">private</span> <span class="kt">void</span> <span class="nf">listContainers</span><span class="o">()</span> <span class="o">{</span>
+        <span class="n">System</span><span class="o">.</span><span class="na">out</span><span class="o">.</span><span class="na">println</span><span class="o">(</span><span class="s">&quot;List Containers&quot;</span><span class="o">);</span>
+
+        <span class="n">ContainerApi</span> <span class="n">containerApi</span> <span class="o">=</span> <span class="n">swiftApi</span><span class="o">.</span><span class="na">containerApiInRegion</span><span class="o">(</span><span class="s">&quot;RegionOne&quot;</span><span class="o">);</span>
+        <span class="n">Set</span><span class="o">&lt;</span><span class="n">Container</span><span class="o">&gt;</span> <span class="n">containers</span> <span class="o">=</span> <span class="n">containerApi</span><span class="o">.</span><span class="na">list</span><span class="o">().</span><span class="na">toSet</span><span class="o">();</span>
+
+        <span class="k">for</span> <span class="o">(</span><span class="n">Container</span> <span class="n">container</span> <span class="o">:</span> <span class="n">containers</span><span class="o">)</span> <span class="o">{</span>
+            <span class="n">System</span><span class="o">.</span><span class="na">out</span><span class="o">.</span><span class="na">println</span><span class="o">(</span><span class="s">&quot;  &quot;</span> <span class="o">+</span> <span class="n">container</span><span class="o">);</span>
+        <span class="o">}</span>
+    <span class="o">}</span>
+
+    <span class="kd">public</span> <span class="kt">void</span> <span class="nf">close</span><span class="o">()</span> <span class="kd">throws</span> <span class="n">IOException</span> <span class="o">{</span>
+        <span class="n">Closeables</span><span class="o">.</span><span class="na">close</span><span class="o">(</span><span class="n">swiftApi</span><span class="o">,</span> <span class="kc">true</span><span class="o">);</span>
+    <span class="o">}</span>
 <span class="o">}</span>
 </code></pre></div>
 
 
 <h3><a id="swift-compile"></a>Compile and Run</h3>
 
-<pre><code>javac -classpath ".:lib/*" JCloudsSwift.java
+<pre><code>$ javac -classpath ".:lib/*" JCloudsSwift.java
 
-java -classpath ".:lib/*" JCloudsSwift
+$ java -classpath ".:lib/*" JCloudsSwift
 
-[logging output]
+Create Container
+  jclouds-example
+Upload Object From String
+  jclouds-example.txt
 List Containers
-[logging output]
-  ContainerMetadata{name=...}
+  Container{name=...}
   ...
+
+# You'll see a lot of logging in the output
 </code></pre>
 
 <h2><a id="next"></a>Next Steps</h2>
 
 <ul>
-<li>Try the example above with a keystone endpoint that defines multiple storage regions. For this init() becomes:</li>
+<li>Try the List Servers example above with one of the public clouds. For the Rackspace Cloud the constructor becomes:</li>
 </ul>
 
 
-<div class="highlight"><pre><code class="java"><span class="kd">private</span> <span class="kt">void</span> <span class="nf">init</span><span class="o">()</span> <span class="o">{</span>
-   <span class="n">Iterable</span><span class="o">&lt;</span><span class="n">Module</span><span class="o">&gt;</span> <span class="n">modules</span> <span class="o">=</span> <span class="n">ImmutableSet</span><span class="o">.&lt;</span><span class="n">Module</span><span class="o">&gt;</span> <span class="n">of</span><span class="o">(</span><span class="k">new</span> <span class="n">SLF4JLoggingModule</span><span class="o">());</span>
+<div class="highlight"><pre><code class="java"><span class="kn">import</span> <span class="nn">org.jclouds.Constants</span><span class="o">;</span>
+<span class="kn">import</span> <span class="nn">org.jclouds.openstack.keystone.v2_0.config.CredentialTypes</span><span class="o">;</span>
+<span class="kn">import</span> <span class="nn">org.jclouds.openstack.keystone.v2_0.config.KeystoneProperties</span><span class="o">;</span>
 
-   <span class="n">String</span> <span class="n">provider</span> <span class="o">=</span> <span class="s">&quot;swift-keystone&quot;</span><span class="o">;</span> <span class="c1">//Region selection is limited to swift-keystone provider</span>
-   <span class="n">String</span> <span class="n">identity</span> <span class="o">=</span> <span class="s">&quot;demo:demo&quot;</span><span class="o">;</span>
-   <span class="n">String</span> <span class="n">password</span> <span class="o">=</span> <span class="s">&quot;devstack&quot;</span><span class="o">;</span>
-   <span class="n">String</span> <span class="n">endpoint</span> <span class="o">=</span> <span class="s">&quot;http://keystone-endpoint.example.com/v2.0&quot;</span><span class="o">;</span>
-   <span class="n">String</span> <span class="n">region</span> <span class="o">=</span> <span class="s">&quot;RegionOne&quot;</span><span class="o">;</span>
-
-   <span class="c1">// If your keystone endpoint has multiple storage regions</span>
-   <span class="c1">// then it is recommended that you specify which region to use.</span>
-   <span class="c1">// You can do this via the &quot;jclouds.region&quot; property</span>
-   <span class="n">Properties</span> <span class="n">properties</span> <span class="o">=</span> <span class="k">new</span> <span class="n">Properties</span><span class="o">();</span>
-   <span class="n">properties</span><span class="o">.</span><span class="na">setProperty</span><span class="o">(</span><span class="n">LocationConstants</span><span class="o">.</span><span class="na">PROPERTY_REGION</span><span class="o">,</span> <span class="n">region</span><span class="o">);</span>
-
-   <span class="n">BlobStoreContext</span> <span class="n">context</span> <span class="o">=</span> <span class="n">ContextBuilder</span><span class="o">.</span><span class="na">newBuilder</span><span class="o">(</span><span class="n">provider</span><span class="o">)</span>
-         <span class="o">.</span><span class="na">endpoint</span><span class="o">(</span><span class="n">endpoint</span><span class="o">)</span>
-         <span class="o">.</span><span class="na">credentials</span><span class="o">(</span><span class="n">identity</span><span class="o">,</span> <span class="n">password</span><span class="o">)</span>
-         <span class="o">.</span><span class="na">modules</span><span class="o">(</span><span class="n">modules</span><span class="o">)</span>
-         <span class="o">.</span><span class="na">overrides</span><span class="o">(</span><span class="n">properties</span><span class="o">)</span>
-         <span class="o">.</span><span class="na">buildView</span><span class="o">(</span><span class="n">BlobStoreContext</span><span class="o">.</span><span class="na">class</span><span class="o">);</span>
-   <span class="n">storage</span> <span class="o">=</span> <span class="n">context</span><span class="o">.</span><span class="na">getBlobStore</span><span class="o">();</span>
-   <span class="n">swift</span> <span class="o">=</span> <span class="n">context</span><span class="o">.</span><span class="na">unwrap</span><span class="o">();</span>
-<span class="o">}</span>
-</code></pre></div>
+<span class="c1">// snip</span>
 
+<span class="kd">public</span> <span class="nf">JCloudsNova</span><span class="o">()</span> <span class="o">{</span>
+    <span class="n">Iterable</span><span class="o">&lt;</span><span class="n">Module</span><span class="o">&gt;</span> <span class="n">modules</span> <span class="o">=</span> <span class="n">ImmutableSet</span><span class="o">.&lt;</span><span class="n">Module</span><span class="o">&gt;</span><span class="n">of</span><span class="o">(</span><span class="k">new</span> <span class="n">SLF4JLoggingModule</span><span class="o">());</span>
 
-<ul>
-<li>Try the example above with one of the public clouds. For the Rackspace Cloud init() becomes:</li>
-</ul>
+    <span class="n">Properties</span> <span class="n">overrides</span> <span class="o">=</span> <span class="k">new</span> <span class="n">Properties</span><span class="o">();</span>
+    <span class="n">overrides</span><span class="o">.</span><span class="na">setProperty</span><span class="o">(</span><span class="n">KeystoneProperties</span><span class="o">.</span><span class="na">CREDENTIAL_TYPE</span><span class="o">,</span> <span class="n">CredentialTypes</span><span class="o">.</span><span class="na">PASSWORD_CREDENTIALS</span><span class="o">);</span>
+    <span class="n">overrides</span><span class="o">.</span><span class="na">setProperty</span><span class="o">(</span><span class="n">Constants</span><span class="o">.</span><span class="na">PROPERTY_API_VERSION</span><span class="o">,</span> <span class="s">&quot;2&quot;</span><span class="o">);</span>
 
+    <span class="n">String</span> <span class="n">provider</span> <span class="o">=</span> <span class="s">&quot;openstack-nova&quot;</span><span class="o">;</span>
+    <span class="n">String</span> <span class="n">identity</span> <span class="o">=</span> <span class="s">&quot;username&quot;</span><span class="o">;</span>
+    <span class="n">String</span> <span class="n">credential</span> <span class="o">=</span> <span class="s">&quot;password&quot;</span><span class="o">;</span>
 
-<div class="highlight"><pre><code class="java"><span class="kd">private</span> <span class="kt">void</span> <span class="nf">init</span><span class="o">()</span> <span class="o">{</span>
-   <span class="n">Iterable</span><span class="o">&lt;</span><span class="n">Module</span><span class="o">&gt;</span> <span class="n">modules</span> <span class="o">=</span> <span class="n">ImmutableSet</span><span class="o">.&lt;</span><span class="n">Module</span><span class="o">&gt;</span> <span class="n">of</span><span class="o">(</span><span class="k">new</span> <span class="n">SLF4JLoggingModule</span><span class="o">());</span>
-   <span class="n">Properties</span> <span class="n">overrides</span> <span class="o">=</span> <span class="k">new</span> <span class="n">Properties</span><span class="o">();</span>
-   <span class="n">overrides</span><span class="o">.</span><span class="na">setProperty</span><span class="o">(</span><span class="n">KeystoneProperties</span><span class="o">.</span><span class="na">CREDENTIAL_TYPE</span><span class="o">,</span> <span class="n">CredentialTypes</span><span class="o">.</span><span class="na">PASSWORD_CREDENTIALS</span><span class="o">);</span>
-   <span class="n">overrides</span><span class="o">.</span><span class="na">setProperty</span><span class="o">(</span><span class="n">Constants</span><span class="o">.</span><span class="na">PROPERTY_API_VERSION</span><span class="o">,</span> <span class="s">&quot;2&quot;</span><span class="o">);</span>
-
-   <span class="n">String</span> <span class="n">provider</span> <span class="o">=</span> <span class="s">&quot;openstack-nova&quot;</span><span class="o">;</span>
-   <span class="n">String</span> <span class="n">identity</span> <span class="o">=</span> <span class="s">&quot;myUsername&quot;</span><span class="o">;</span> <span class="c1">// userName</span>
-   <span class="n">String</span> <span class="n">password</span> <span class="o">=</span> <span class="s">&quot;myPassword&quot;</span><span class="o">;</span>
-
-   <span class="n">ComputeServiceContext</span> <span class="n">context</span> <span class="o">=</span> <span class="n">ContextBuilder</span><span class="o">.</span><span class="na">newBuilder</span><span class="o">(</span><span class="n">provider</span><span class="o">)</span>
-         <span class="o">.</span><span class="na">endpoint</span><span class="o">(</span><span class="s">&quot;https://identity.api.rackspacecloud.com/v2.0/&quot;</span><span class="o">)</span>
-         <span class="o">.</span><span class="na">credentials</span><span class="o">(</span><span class="n">identity</span><span class="o">,</span> <span class="n">password</span><span class="o">)</span>
-         <span class="o">.</span><span class="na">modules</span><span class="o">(</span><span class="n">modules</span><span class="o">)</span>
-         <span class="o">.</span><span class="na">overrides</span><span class="o">(</span><span class="n">overrides</span><span class="o">)</span>
-         <span class="o">.</span><span class="na">buildView</span><span class="o">(</span><span class="n">ComputeServiceContext</span><span class="o">.</span><span class="na">class</span><span class="o">);</span>
-   <span class="n">compute</span> <span class="o">=</span> <span class="n">context</span><span class="o">.</span><span class="na">getComputeService</span><span class="o">();</span>
-   <span class="n">nova</span> <span class="o">=</span> <span class="n">context</span><span class="o">.</span><span class="na">unwrap</span><span class="o">();</span>
-   <span class="n">zones</span> <span class="o">=</span> <span class="n">nova</span><span class="o">.</span><span class="na">getApi</span><span class="o">().</span><span class="na">getConfiguredZones</span><span class="o">();</span>
+    <span class="n">novaApi</span> <span class="o">=</span> <span class="n">ContextBuilder</span><span class="o">.</span><span class="na">newBuilder</span><span class="o">(</span><span class="n">provider</span><span class="o">)</span>
+            <span class="o">.</span><span class="na">endpoint</span><span class="o">(</span><span class="s">&quot;https://identity.api.rackspacecloud.com/v2.0/&quot;</span><span class="o">)</span>
+            <span class="o">.</span><span class="na">credentials</span><span class="o">(</span><span class="n">identity</span><span class="o">,</span> <span class="n">credential</span><span class="o">)</span>
+            <span class="o">.</span><span class="na">modules</span><span class="o">(</span><span class="n">modules</span><span class="o">)</span>
+            <span class="o">.</span><span class="na">overrides</span><span class="o">(</span><span class="n">overrides</span><span class="o">)</span>
+            <span class="o">.</span><span class="na">buildApi</span><span class="o">(</span><span class="n">NovaApi</span><span class="o">.</span><span class="na">class</span><span class="o">);</span>
+    <span class="n">zones</span> <span class="o">=</span> <span class="n">novaApi</span><span class="o">.</span><span class="na">getConfiguredZones</span><span class="o">();</span>
 <span class="o">}</span>
 </code></pre></div>
 
@@ -609,13 +608,13 @@ List Containers
 
 <h2><a id="pom"></a>OpenStack Dependencies</h2>
 
-<p>This pom.xml file specifies all of the dependencies you'll need to work with OpenStack. Replace the jclouds.version X.X.X with the latest version available according to the <a href="/releasenotes/">Release Notes</a>.</p>
+<p>This pom.xml file specifies all of the dependencies you'll need to work with OpenStack.</p>
 
 <div class="highlight"><pre><code class="xml"><span class="nt">&lt;project</span> <span class="na">xmlns=</span><span class="s">&quot;http://maven.apache.org/POM/4.0.0&quot;</span> <span class="na">xmlns:xsi=</span><span class="s">&quot;http://www.w3.org/2001/XMLSchema-instance&quot;</span>
   <span class="na">xsi:schemaLocation=</span><span class="s">&quot;http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd&quot;</span><span class="nt">&gt;</span>
   <span class="nt">&lt;modelVersion&gt;</span>4.0.0<span class="nt">&lt;/modelVersion&gt;</span>
   <span class="nt">&lt;properties&gt;</span>
-    <span class="nt">&lt;jclouds.version&gt;</span>X.X.X<span class="nt">&lt;/jclouds.version&gt;</span>
+    <span class="nt">&lt;jclouds.version&gt;</span>1.7.2<span class="nt">&lt;/jclouds.version&gt;</span>
   <span class="nt">&lt;/properties&gt;</span>
   <span class="nt">&lt;groupId&gt;</span>org.apache.jclouds.examples<span class="nt">&lt;/groupId&gt;</span>
   <span class="nt">&lt;artifactId&gt;</span>openstack-examples<span class="nt">&lt;/artifactId&gt;</span>
@@ -632,7 +631,7 @@ List Containers
       <span class="nt">&lt;artifactId&gt;</span>jclouds-sshj<span class="nt">&lt;/artifactId&gt;</span>
       <span class="nt">&lt;version&gt;</span>${jclouds.version}<span class="nt">&lt;/version&gt;</span>
     <span class="nt">&lt;/dependency&gt;</span>
-    <span class="c">&lt;!-- OpenStack dependencies --&gt;</span>
+    <span class="c">&lt;!-- jclouds OpenStack dependencies --&gt;</span>
     <span class="nt">&lt;dependency&gt;</span>
       <span class="nt">&lt;groupId&gt;</span>org.apache.jclouds.api<span class="nt">&lt;/groupId&gt;</span>
       <span class="nt">&lt;artifactId&gt;</span>openstack-keystone<span class="nt">&lt;/artifactId&gt;</span>
@@ -644,8 +643,8 @@ List Containers
       <span class="nt">&lt;version&gt;</span>${jclouds.version}<span class="nt">&lt;/version&gt;</span>
     <span class="nt">&lt;/dependency&gt;</span>
     <span class="nt">&lt;dependency&gt;</span>
-      <span class="nt">&lt;groupId&gt;</span>org.apache.jclouds.api<span class="nt">&lt;/groupId&gt;</span>
-      <span class="nt">&lt;artifactId&gt;</span>swift<span class="nt">&lt;/artifactId&gt;</span>
+      <span class="nt">&lt;groupId&gt;</span>org.apache.jclouds.labs<span class="nt">&lt;/groupId&gt;</span>
+      <span class="nt">&lt;artifactId&gt;</span>openstack-swift<span class="nt">&lt;/artifactId&gt;</span>
       <span class="nt">&lt;version&gt;</span>${jclouds.version}<span class="nt">&lt;/version&gt;</span>
     <span class="nt">&lt;/dependency&gt;</span>
     <span class="nt">&lt;dependency&gt;</span>

Modified: jclouds/site-content/reference/configuration/index.html
URL: http://svn.apache.org/viewvc/jclouds/site-content/reference/configuration/index.html?rev=1589211&r1=1589210&r2=1589211&view=diff
==============================================================================
--- jclouds/site-content/reference/configuration/index.html (original)
+++ jclouds/site-content/reference/configuration/index.html Tue Apr 22 17:05:52 2014
@@ -145,15 +145,7 @@
             <div class="page-header">
                 <h1>Configuration</h1>
             </div>
-            <h2>HTTP Proxy</h2>
-
-<p>In order to use jclouds with an http proxy, you must use the default http engine and
-specify the proxy parameters as system properties to the java virtual machine.</p>
-
-<pre><code>-Dhttps.proxyHost=proxy  -Dhttps.proxyPort=3128
-</code></pre>
-
-<h2>Enterprise</h2>
+            <h2>Enterprise</h2>
 
 <p>Enterprise configuration attempts to make the best choices for you, with regards to which components to use to power your connections to the cloud. Specifically, this chooses <code>joda</code> dates, <code>bouncycastle</code> encryption, and <code>apache HTTP Client 4.0</code> connection pools.</p>
 

Modified: jclouds/site-content/reference/logging/index.html
URL: http://svn.apache.org/viewvc/jclouds/site-content/reference/logging/index.html?rev=1589211&r1=1589210&r2=1589211&view=diff
==============================================================================
--- jclouds/site-content/reference/logging/index.html (original)
+++ jclouds/site-content/reference/logging/index.html Tue Apr 22 17:05:52 2014
@@ -149,6 +149,7 @@
 <li><a href="#install">Install</a></li>
 <li><a href="#configure">Configure</a></li>
 <li><a href="#enable">Enable</a></li>
+<li><a href="#proxy">HTTP(S) Proxy</a></li>
 </ol>
 
 
@@ -277,7 +278,58 @@
 </code></pre></div>
 
 
+<h2><a id="proxy"></a>HTTP(S) Proxy</h2>
 
+<p>This is optional and not necessary for regular jclouds logging.</p>
+
+<p>There may be times when you need to see every bit and byte being sent with jclouds to/from a cloud provider. To do this you can use an HTTP(S) proxy to capture all traffic that's being transmitted, like <a href="http://www.charlesproxy.com/">Charles Proxy</a> or <a href="http://www.telerik.com/fiddler">Fiddler</a>.</p>
+
+<p>For example, to work with an HTTPS endpoint of a cloud provider using Charles you need to enable SSL Proxying:</p>
+
+<ol>
+<li>Proxy > Proxy Settings > SSL tab</li>
+<li>Check Enable SSL Proxying</li>
+<li>Add Locations, e.g.
+
+<ol>
+<li>*.rackspacecloud.com</li>
+<li>*.clouddrive.com</li>
+</ol>
+</li>
+</ol>
+
+
+<p>jclouds also requires some configuration to use a proxy.</p>
+
+<div class="highlight"><pre><code class="java"><span class="kn">import</span> <span class="nn">static</span> <span class="n">org</span><span class="o">.</span><span class="na">jclouds</span><span class="o">.</span><span class="na">Constants</span><span class="o">.*;</span>
+
+<span class="c1">// snip</span>
+
+<span class="n">Properties</span> <span class="n">overrides</span> <span class="o">=</span> <span class="k">new</span> <span class="n">Properties</span><span class="o">();</span>
+<span class="n">overrides</span><span class="o">.</span><span class="na">setProperty</span><span class="o">(</span><span class="n">PROPERTY_PROXY_HOST</span><span class="o">,</span> <span class="s">&quot;localhost&quot;</span><span class="o">);</span>
+<span class="n">overrides</span><span class="o">.</span><span class="na">setProperty</span><span class="o">(</span><span class="n">PROPERTY_PROXY_PORT</span><span class="o">,</span> <span class="s">&quot;8888&quot;</span><span class="o">);</span>
+<span class="n">overrides</span><span class="o">.</span><span class="na">setProperty</span><span class="o">(</span><span class="n">PROPERTY_TRUST_ALL_CERTS</span><span class="o">,</span> <span class="s">&quot;true&quot;</span><span class="o">);</span>
+
+<span class="n">Iterable</span><span class="o">&lt;</span><span class="n">Module</span><span class="o">&gt;</span> <span class="n">modules</span> <span class="o">=</span> <span class="n">ImmutableSet</span><span class="o">.&lt;</span><span class="n">Module</span><span class="o">&gt;</span> <span class="n">of</span><span class="o">(</span>
+    <span class="k">new</span> <span class="nf">SLF4JLoggingModule</span><span class="o">());</span>
+
+<span class="n">MyContext</span> <span class="n">context</span> <span class="o">=</span> <span class="n">ContextBuilder</span><span class="o">.</span><span class="na">newBuilder</span><span class="o">(</span><span class="s">&quot;my-cloud-provider&quot;</span><span class="o">)</span>
+    <span class="o">.</span><span class="na">credentials</span><span class="o">(</span><span class="s">&quot;myIdentity&quot;</span><span class="o">,</span> <span class="s">&quot;myCredential&quot;</span><span class="o">)</span>
+    <span class="o">.</span><span class="na">modules</span><span class="o">(</span><span class="n">modules</span><span class="o">)</span>
+    <span class="o">.</span><span class="na">overrides</span><span class="o">(</span><span class="n">overrides</span><span class="o">)</span>
+    <span class="o">.</span><span class="na">buildView</span><span class="o">(</span><span class="n">MyContext</span><span class="o">.</span><span class="na">class</span><span class="o">);</span>
+
+<span class="c1">// Or</span>
+
+<span class="n">MyApi</span> <span class="n">myApi</span> <span class="o">=</span> <span class="n">ContextBuilder</span><span class="o">.</span><span class="na">newBuilder</span><span class="o">(</span><span class="s">&quot;my-cloud-provider&quot;</span><span class="o">)</span>
+    <span class="o">.</span><span class="na">credentials</span><span class="o">(</span><span class="s">&quot;myIdentity&quot;</span><span class="o">,</span> <span class="s">&quot;myCredential&quot;</span><span class="o">)</span>
+    <span class="o">.</span><span class="na">modules</span><span class="o">(</span><span class="n">modules</span><span class="o">)</span>
+    <span class="o">.</span><span class="na">overrides</span><span class="o">(</span><span class="n">overrides</span><span class="o">)</span>
+    <span class="o">.</span><span class="na">buildApi</span><span class="o">(</span><span class="n">MyApi</span><span class="o">.</span><span class="na">class</span><span class="o">);</span>
+</code></pre></div>
+
+
+<p>When you make requests to an API through Charles, you'll see that all request/response information has been captured in one of it's sessions.</p>
 
             <div class="row clearfix">
                 <div id="footer" class="col-md-12 column">