Modified: jclouds/site-content/guides/profitbricks/index.html
URL: 
http://svn.apache.org/viewvc/jclouds/site-content/guides/profitbricks/index.html?rev=1923693&r1=1923692&r2=1923693&view=diff
==============================================================================
--- jclouds/site-content/guides/profitbricks/index.html (original)
+++ jclouds/site-content/guides/profitbricks/index.html Mon Feb 10 07:25:53 2025
@@ -153,240 +153,215 @@
 
 <p>This guide will show you how to programmatically use the ProfitBricks 
provider in jclouds to perform common management tasks available in the 
ProfitBricks Data Center Designer.</p>
 
-<h2>Table of Contents</h2>
+<h2 id="table-of-contents">Table of Contents</h2>
 
 <ul>
-<li><a href="#concepts">Concepts</a></li>
-<li><a href="#getting-started">Getting Started</a></li>
-<li><a href="#portable-abstraction-usage">Portable Abstraction Usage</a></li>
-<li><a href="#how-to-create-a-data-center">How to: Create a Data 
Center</a></li>
-<li><a href="#how-to-delete-a-data-center">How to: Delete a Data 
Center</a></li>
-<li><a href="#how-to-create-a-server">How to: Create a Server</a></li>
-<li><a href="#how-to-list-available-disk-and-iso-images">How to: List 
Available Disk and ISO Images</a></li>
-<li><a href="#how-to-create-a-storage-volume">How to: Create a Storage 
Volume</a></li>
-<li><a href="#how-to-update-cores-memory-and-disk">How to: Update Cores, 
Memory, and Disk</a></li>
-<li><a href="#how-to-attach-and-detach-a-storage-volume">How to: Attach and 
Detach a Storage Volume</a></li>
-<li><a href="#how-to-list-servers-volumes-and-data-centers">How to: List 
Servers, Volumes, and Data Centers</a></li>
-<li><a href="#example">Example</a></li>
-<li><a href="#support-and-feedback">Support and Feedback</a></li>
+  <li><a href="#concepts">Concepts</a></li>
+  <li><a href="#getting-started">Getting Started</a></li>
+  <li><a href="#portable-abstraction-usage">Portable Abstraction Usage</a></li>
+  <li><a href="#how-to-create-a-data-center">How to: Create a Data 
Center</a></li>
+  <li><a href="#how-to-delete-a-data-center">How to: Delete a Data 
Center</a></li>
+  <li><a href="#how-to-create-a-server">How to: Create a Server</a></li>
+  <li><a href="#how-to-list-available-disk-and-iso-images">How to: List 
Available Disk and ISO Images</a></li>
+  <li><a href="#how-to-create-a-storage-volume">How to: Create a Storage 
Volume</a></li>
+  <li><a href="#how-to-update-cores-memory-and-disk">How to: Update Cores, 
Memory, and Disk</a></li>
+  <li><a href="#how-to-attach-and-detach-a-storage-volume">How to: Attach and 
Detach a Storage Volume</a></li>
+  <li><a href="#how-to-list-servers-volumes-and-data-centers">How to: List 
Servers, Volumes, and Data Centers</a></li>
+  <li><a href="#example">Example</a></li>
+  <li><a href="#support-and-feedback">Support and Feedback</a></li>
 </ul>
 
-
 <hr />
 
-<h2><a id="concepts"></a>Concepts</h2>
+<h2 id="concepts"><a id="concepts"></a>Concepts</h2>
 
 <p>The jclouds library wraps the <a 
href="https://devops.profitbricks.com/api/soap/";>ProfitBricks API</a>. All 
operations are performed over SSL and authenticated using your ProfitBricks 
portal credentials. The API can be accessed within an instance running in 
ProfitBricks or directly over the Internet from any application that can send 
an HTTPS request and receive an HTTPS response.</p>
 
-<h2><a id="getting-started"></a>Getting Started</h2>
+<h2 id="getting-started"><a id="getting-started"></a>Getting Started</h2>
 
 <p>Before you begin you will need to have <a 
href="https://www.profitbricks.com/signup";>signed-up</a> for a ProfitBricks 
account. The credentials you setup during sign-up will be used to authenticate 
against the API.</p>
 
-<h3>Installation</h3>
+<h3 id="installation">Installation</h3>
 
-<p>jclouds has some pre-requisities before you're able to use it. You will 
need to:</p>
+<p>jclouds has some pre-requisities before you’re able to use it. You will 
need to:</p>
 
 <ul>
-<li>Ensure you are using the <a 
href="https://www.oracle.com/technetwork/java/javase/downloads/index.html";>Java 
Development Kit (JDK)</a> version 6 or later. You can check this by 
running:</li>
+  <li>Ensure you are using the <a 
href="https://www.oracle.com/technetwork/java/javase/downloads/index.html";>Java 
Development Kit (JDK)</a> version 6 or later. You can check this by 
running:</li>
 </ul>
 
-
-<pre><code class="java">    javac -version
-</code></pre>
+<div class="language-java highlighter-rouge"><div class="highlight"><pre 
class="highlight"><code>    <span class="n">javac</span> <span 
class="o">-</span><span class="n">version</span>
+</code></pre></div></div>
 
 <ul>
-<li>Ensure you are using <a 
href="https://maven.apache.org/guides/getting-started/maven-in-five-minutes.html";>Maven
 version 3</a> or later. You can check this by running:</li>
+  <li>Ensure you are using <a 
href="https://maven.apache.org/guides/getting-started/maven-in-five-minutes.html";>Maven
 version 3</a> or later. You can check this by running:</li>
 </ul>
 
-
-<pre><code class="java">    mvn -version
-</code></pre>
+<div class="language-java highlighter-rouge"><div class="highlight"><pre 
class="highlight"><code>    <span class="n">mvn</span> <span 
class="o">-</span><span class="n">version</span>
+</code></pre></div></div>
 
 <p>Now that you have validated the pre-requisities, you will want to do the 
following:</p>
 
 <ul>
-<li>Create a directory to try out jclouds. This can be done by doing:</li>
+  <li>Create a directory to try out jclouds. This can be done by doing:</li>
 </ul>
 
-
-<pre><code>    mkdir jclouds
+<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre 
class="highlight"><code>    mkdir jclouds
 
     cd jclouds
-</code></pre>
+</code></pre></div></div>
 
 <ul>
-<li>Make a local copy of the pom.xml file below in the jclouds directory.</li>
+  <li>Make a local copy of the pom.xml file below in the jclouds 
directory.</li>
 </ul>
 
-
-<pre><code>    mvn dependency:copy-dependencies "-DoutputDirectory=./lib"
-</code></pre>
+<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre 
class="highlight"><code>    mvn dependency:copy-dependencies 
"-DoutputDirectory=./lib"
+</code></pre></div></div>
 
 <p>You should now have a directory with the following structure:</p>
 
-<pre><code>    jclouds/
+<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre 
class="highlight"><code>    jclouds/
         pom.xml
-        lib/        
+        lib/           
             *.jar
-</code></pre>
+</code></pre></div></div>
 
 <p>The ProfitBricks provider is currently available as part of the jclouds 
labs project <a href="https://github.com/apache/jclouds-labs";>here</a>.</p>
 
-<h3>Authentication</h3>
+<h3 id="authentication">Authentication</h3>
 
 <p>Connecting to ProfitBricks can be done by creating a compute connection 
with the ProfitBricks provider.</p>
 
-<div class="highlight"><pre><code class="java">    <span 
class="n">pbApi</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;profitbricks&quot;</span><span class="o">)</span>
+<figure class="highlight"><pre><code class="language-java" data-lang="java">   
 <span class="n">pbApi</span> <span class="o">=</span> <span 
class="nc">ContextBuilder</span><span class="o">.</span><span 
class="na">newBuilder</span><span class="o">(</span><span 
class="s">"profitbricks"</span><span class="o">)</span>
             <span class="o">.</span><span class="na">credentials</span><span 
class="o">(</span><span class="n">username</span><span class="o">,</span> <span 
class="n">apiKey</span><span class="o">)</span>
-            <span class="o">.</span><span class="na">buildApi</span><span 
class="o">(</span><span class="n">ProfitBricksApi</span><span 
class="o">.</span><span class="na">class</span><span class="o">);</span>
-</code></pre></div>
-
+            <span class="o">.</span><span class="na">buildApi</span><span 
class="o">(</span><span class="nc">ProfitBricksApi</span><span 
class="o">.</span><span class="na">class</span><span 
class="o">);</span></code></pre></figure>
 
 <p><strong>Caution:</strong> You will want to ensure you follow security best 
practices when using credentials within your code or stored in a file.</p>
 
-<h2><a id="portable-abstraction-usage"></a>Portable Abstraction Usage</h2>
+<h2 id="portable-abstraction-usage"><a 
id="portable-abstraction-usage"></a>Portable Abstraction Usage</h2>
 
-<h3>Terms</h3>
-
-<p>Like any cloud provider, ProfitBricks has its own set of terms in cloud 
computing. To abstract this into jclouds' Compute interface, these terms were 
associated:</p>
+<h3 id="terms">Terms</h3>
+<p>Like any cloud provider, ProfitBricks has its own set of terms in cloud 
computing. To abstract this into jclouds’ Compute interface, these terms were 
associated:</p>
 
 <ul>
-<li>Node - composite instance of <code>Server</code> and 
<code>Storage</code></li>
-<li>Image - both <em>user-uploaded</em> and <em>provided</em> 
<code>Images</code>; and <code>Snapshots</code></li>
-<li>Location - <code>DataCenters</code> and <code>Region</code> (Las Vegas, 
Frankfurt, etc.)</li>
-<li>Hardware - number of cores, RAM size and storage size</li>
+  <li>Node - composite instance of <code class="language-plaintext 
highlighter-rouge">Server</code> and <code class="language-plaintext 
highlighter-rouge">Storage</code></li>
+  <li>Image - both <em>user-uploaded</em> and <em>provided</em> <code 
class="language-plaintext highlighter-rouge">Images</code>; and <code 
class="language-plaintext highlighter-rouge">Snapshots</code></li>
+  <li>Location - <code class="language-plaintext 
highlighter-rouge">DataCenters</code> and <code class="language-plaintext 
highlighter-rouge">Region</code> (Las Vegas, Frankfurt, etc.)</li>
+  <li>Hardware - number of cores, RAM size and storage size</li>
 </ul>
 
+<h3 id="getting-started-1">Getting Started</h3>
 
-<h3>Getting Started</h3>
-
-<div class="highlight"><pre><code class="java">    <span 
class="n">ComputeService</span> <span class="n">compute</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;profitbricks&quot;</span> <span class="o">)</span>
-                             <span class="o">.</span><span 
class="na">credentials</span><span class="o">(</span> <span 
class="s">&quot;profitbricks email&quot;</span><span class="o">,</span> <span 
class="s">&quot;password&quot;</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="o">.</span><span 
class="na">getComputeService</span><span class="o">();</span>
-</code></pre></div>
+<figure class="highlight"><pre><code class="language-java" data-lang="java">   
 <span class="nc">ComputeService</span> <span class="n">compute</span> <span 
class="o">=</span> <span class="nc">ContextBuilder</span><span 
class="o">.</span><span class="na">newBuilder</span><span class="o">(</span> 
<span class="s">"profitbricks"</span> <span class="o">)</span>
+                             <span class="o">.</span><span 
class="na">credentials</span><span class="o">(</span> <span 
class="s">"profitbricks email"</span><span class="o">,</span> <span 
class="s">"password"</span> <span class="o">)</span>
+                             <span class="o">.</span><span 
class="na">buildView</span><span class="o">(</span> <span 
class="nc">ComputeServiceContext</span><span class="o">.</span><span 
class="na">class</span> <span class="o">)</span>
+                             <span class="o">.</span><span 
class="na">getComputeService</span><span 
class="o">();</span></code></pre></figure>
 
-
-<p>This works well; however, we won't be able to use jclouds' ability to 
execute <em>scripts</em> on a remote node. This is because, ProfitBricks' 
default images require users to change passwords upon first log in.</p>
+<p>This works well; however, we won’t be able to use jclouds’ ability to 
execute <em>scripts</em> on a remote node. This is because, ProfitBricks’ 
default images require users to change passwords upon first log in.</p>
 
 <p>To enable jclouds to execute script, we need to use a custom image. The 
easiest way to do this is via ProfitBricks snapshot:</p>
 
 <ul>
-<li>Go to your <a href="https://my.profitbricks.com/dashboard/";>DCD</a>.</li>
-<li>Provision a server + storage, and connect it to the internet. Upon 
success, you will receive an email containing the credentials needed to login 
to your server.</li>
-<li>Login to your server, and change the password, as requested.</li>
+  <li>Go to your <a href="https://my.profitbricks.com/dashboard/";>DCD</a>.</li>
+  <li>Provision a server + storage, and connect it to the internet. Upon 
success, you will receive an email containing the credentials needed to login 
to your server.</li>
+  <li>Login to your server, and change the password, as requested.</li>
 </ul>
 
-
-<pre><code>    ~ ssh root@&lt;remote-ip&gt;
+<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre 
class="highlight"><code>    ~ ssh root@&lt;remote-ip&gt;
     ...
     Changing password for root.
     (current) UNIX password: 
     Enter new UNIX password: 
     Retype new UNIX password: 
     ~ root@ubuntu:~# exit
-</code></pre>
+</code></pre></div></div>
 
 <ul>
-<li>Go back to the DCD, and <em>make a snapshot</em> of the storage. Put a 
descriptive name.</li>
-<li>Configure jclouds to use this <em>snapshot</em>.</li>
+  <li>Go back to the DCD, and <em>make a snapshot</em> of the storage. Put a 
descriptive name.</li>
+  <li>Configure jclouds to use this <em>snapshot</em>.</li>
 </ul>
 
-
-<div class="highlight"><pre><code class="java">    <span 
class="n">Template</span> <span class="n">template</span> <span 
class="o">=</span> <span class="n">compute</span><span class="o">.</span><span 
class="na">templateBuilder</span><span class="o">()</span>
-        <span class="o">.</span><span class="na">imageNameMatches</span><span 
class="o">(</span> <span 
class="s">&quot;&lt;ideally-unique-snapshot-name&gt;&quot;</span> <span 
class="o">)</span>
+<figure class="highlight"><pre><code class="language-java" data-lang="java">   
 <span class="nc">Template</span> <span class="n">template</span> <span 
class="o">=</span> <span class="n">compute</span><span class="o">.</span><span 
class="na">templateBuilder</span><span class="o">()</span>
+        <span class="o">.</span><span class="na">imageNameMatches</span><span 
class="o">(</span> <span 
class="s">"&lt;ideally-unique-snapshot-name&gt;"</span> <span class="o">)</span>
         <span class="o">.</span><span class="na">options</span><span 
class="o">(</span> <span class="n">compute</span><span class="o">.</span><span 
class="na">templateOptions</span><span class="o">()</span>
-                <span class="o">.</span><span 
class="na">overrideLoginUser</span><span class="o">(</span> <span 
class="s">&quot;root&quot;</span> <span class="o">)</span> <span class="c1">// 
unless you changed the user</span>
-                <span class="o">.</span><span 
class="na">overrideLoginPassword</span><span class="o">(</span> <span 
class="s">&quot;&lt;changed-password&gt;&quot;</span> <span class="o">))</span>
-                <span class="c1">// more options, as you need</span>
-        <span class="o">.</span><span class="na">build</span><span 
class="o">();</span>
-    
-    <span class="n">compute</span><span class="o">.</span><span 
class="na">createNodesInGroup</span><span class="o">(</span> <span 
class="s">&quot;cluster1&quot;</span><span class="o">,</span> <span 
class="mi">1</span><span class="o">,</span> <span class="n">template</span> 
<span class="o">);</span>
-</code></pre></div>
-
+                               <span class="o">.</span><span 
class="na">overrideLoginUser</span><span class="o">(</span> <span 
class="s">"root"</span> <span class="o">)</span> <span class="c1">// unless you 
changed the user</span>
+                               <span class="o">.</span><span 
class="na">overrideLoginPassword</span><span class="o">(</span> <span 
class="s">"&lt;changed-password&gt;"</span> <span class="o">))</span>
+                   <span class="c1">// more options, as you need</span>
+           <span class="o">.</span><span class="na">build</span><span 
class="o">();</span>
+       
+    <span class="n">compute</span><span class="o">.</span><span 
class="na">createNodesInGroup</span><span class="o">(</span> <span 
class="s">"cluster1"</span><span class="o">,</span> <span 
class="mi">1</span><span class="o">,</span> <span class="n">template</span> 
<span class="o">);</span></code></pre></figure>
+
+<blockquote>
+  <p>If no <code class="language-plaintext 
highlighter-rouge">locationId</code> is specified in the template, jclouds will 
look for a <code class="language-plaintext highlighter-rouge">DataCenter</code> 
that is of same scope as the <code class="language-plaintext 
highlighter-rouge">Image</code>.</p>
+</blockquote>
 
-<blockquote><p>If no <code>locationId</code> is specified in the template, 
jclouds will look for a <code>DataCenter</code> that is of same scope as the 
<code>Image</code>.</p></blockquote>
-
-<h3>Limitations</h3>
+<h3 id="limitations">Limitations</h3>
 
 <ul>
-<li>There's no direct way of specifying arbitrary number of cores, RAM size, 
and storage size via the compute interface, at least until after <a 
href="https://issues.apache.org/jira/browse/JCLOUDS-482";>JCLOUDS-482</a> is 
resolved. The adapter uses a predefined list hardware profiles instead.</li>
+  <li>There’s no direct way of specifying arbitrary number of cores, RAM 
size, and storage size via the compute interface, at least until after <a 
href="https://issues.apache.org/jira/browse/JCLOUDS-482";>JCLOUDS-482</a> is 
resolved. The adapter uses a predefined list hardware profiles instead.</li>
 </ul>
 
+<blockquote>
+  <p>Take note that these features are still accessible by <em>unwraping</em> 
the ProfitBricks API, but this’ll reduce portability of your code. See <a 
href="https://jclouds.apache.org/start/concepts/";>Concepts</a>.</p>
+</blockquote>
 
-<blockquote><p>Take note that these features are still accessible by 
<em>unwraping</em> the ProfitBricks API, but this'll reduce portability of your 
code. See <a 
href="https://jclouds.apache.org/start/concepts/";>Concepts</a>.</p></blockquote>
-
-<h1>How To's</h1>
-
-<h2><a id="how-to-create-a-data-center"></a>How to: Create a Data Center</h2>
+<h1 id="how-tos">How To’s</h1>
+<h2 id="how-to-create-a-data-center"><a 
id="how-to-create-a-data-center"></a>How to: Create a Data Center</h2>
 
 <p>ProfitBricks introduces the concept of Virtual Data Centers. These are 
logically separated from one another and allow you to have a self-contained 
environment for all servers, volumes, networking, snapshots, and so forth. The 
goal is to give you the same experience as you would have if you were running 
your own physical data center.</p>
 
 <p>The following code example shows you how to programmatically create a data 
center:</p>
 
-<div class="highlight"><pre><code class="java">     <span 
class="n">DataCenter</span> <span class="n">dc</span> <span class="o">=</span> 
<span class="n">api</span><span class="o">.</span><span 
class="na">dataCenterApi</span><span class="o">().</span><span 
class="na">createDataCenter</span><span class="o">(</span>
-              <span class="n">DataCenter</span><span class="o">.</span><span 
class="na">Request</span><span class="o">.</span><span 
class="na">CreatePayload</span><span class="o">.</span><span 
class="na">create</span><span class="o">(</span><span 
class="s">&quot;JClouds&quot;</span><span class="o">,</span> <span 
class="n">Location</span><span class="o">.</span><span 
class="na">DE_FKB</span><span class="o">)</span>
-      <span class="o">);</span>
-</code></pre></div>
-
+<figure class="highlight"><pre><code class="language-java" data-lang="java">   
  <span class="nc">DataCenter</span> <span class="n">dc</span> <span 
class="o">=</span> <span class="n">api</span><span class="o">.</span><span 
class="na">dataCenterApi</span><span class="o">().</span><span 
class="na">createDataCenter</span><span class="o">(</span>
+              <span class="nc">DataCenter</span><span class="o">.</span><span 
class="na">Request</span><span class="o">.</span><span 
class="na">CreatePayload</span><span class="o">.</span><span 
class="na">create</span><span class="o">(</span><span 
class="s">"JClouds"</span><span class="o">,</span> <span 
class="nc">Location</span><span class="o">.</span><span 
class="na">DE_FKB</span><span class="o">)</span>
+      <span class="o">);</span></code></pre></figure>
 
 <p>This responds with the datacenter object once created.</p>
 
-<h2><a id="how-to-delete-a-data-center"></a>How to: Delete a Data Center</h2>
+<h2 id="how-to-delete-a-data-center"><a 
id="how-to-delete-a-data-center"></a>How to: Delete a Data Center</h2>
 
-<p>You will want to exercise a bit of caution here. Removing a data center 
will <strong>destroy</strong> all objects contained within that data center -- 
servers, volumes, snapshots, and so on.</p>
+<p>You will want to exercise a bit of caution here. Removing a data center 
will <strong>destroy</strong> all objects contained within that data center – 
servers, volumes, snapshots, and so on.</p>
 
 <p>The code to remove a data center is as follows. This example assumes you 
want to remove previously datacenter:</p>
 
-<div class="highlight"><pre><code class="java">    <span 
class="n">api</span><span class="o">.</span><span 
class="na">dataCenterApi</span><span class="o">().</span><span 
class="na">deleteDataCenter</span><span class="o">(</span><span 
class="n">dc</span><span class="o">.</span><span class="na">id</span><span 
class="o">());</span>
-</code></pre></div>
-
+<figure class="highlight"><pre><code class="language-java" data-lang="java">   
 <span class="n">api</span><span class="o">.</span><span 
class="na">dataCenterApi</span><span class="o">().</span><span 
class="na">deleteDataCenter</span><span class="o">(</span><span 
class="n">dc</span><span class="o">.</span><span class="na">id</span><span 
class="o">());</span></code></pre></figure>
 
-<h2><a id="how-to-create-a-server"></a>How to: Create a Server</h2>
+<h2 id="how-to-create-a-server"><a id="how-to-create-a-server"></a>How to: 
Create a Server</h2>
 
-<p>The server create method has a list of required parameters followed by a 
hash of optional parameters. The optional parameters are specified within the 
"options" hash and the variable names match the <a 
href="https://devops.profitbricks.com/api/soap/";>SOAP API</a> parameters.</p>
+<p>The server create method has a list of required parameters followed by a 
hash of optional parameters. The optional parameters are specified within the 
“options” hash and the variable names match the <a 
href="https://devops.profitbricks.com/api/soap/";>SOAP API</a> parameters.</p>
 
 <p>The following example shows you how to create a new server in the virtual 
datacenter created above:</p>
 
-<div class="highlight"><pre><code class="java"> <span class="n">String</span> 
<span class="n">serverId</span> <span class="o">=</span> <span 
class="n">api</span><span class="o">.</span><span 
class="na">serverApi</span><span class="o">().</span><span 
class="na">createServer</span><span class="o">(</span><span 
class="n">Server</span><span class="o">.</span><span 
class="na">Request</span><span class="o">.</span><span 
class="na">creatingBuilder</span><span class="o">()</span>
-            <span class="o">.</span><span class="na">dataCenterId</span><span 
class="o">(</span><span class="n">dc</span><span class="o">.</span><span 
class="na">id</span><span class="o">())</span>
-            <span class="o">.</span><span class="na">name</span><span 
class="o">(</span><span class="s">&quot;jclouds-node&quot;</span><span 
class="o">)</span>
-            <span class="o">.</span><span class="na">cores</span><span 
class="o">(</span><span class="mi">1</span><span class="o">)</span>
-            <span class="o">.</span><span class="na">ram</span><span 
class="o">(</span><span class="mi">1024</span><span class="o">)</span>
-            <span class="o">.</span><span class="na">build</span><span 
class="o">());</span>
-</code></pre></div>
-
-
-<p>The server can take time to provision. The "waitUntilAvailable" server 
object method will wait until the server state is available before continuing. 
This is useful when chaining requests together that are dependent on one 
another.</p>
+<figure class="highlight"><pre><code class="language-java" data-lang="java">   
<span class="nc">String</span> <span class="n">serverId</span> <span 
class="o">=</span> <span class="n">api</span><span class="o">.</span><span 
class="na">serverApi</span><span class="o">().</span><span 
class="na">createServer</span><span class="o">(</span><span 
class="nc">Server</span><span class="o">.</span><span 
class="na">Request</span><span class="o">.</span><span 
class="na">creatingBuilder</span><span class="o">()</span>
+                       <span class="o">.</span><span 
class="na">dataCenterId</span><span class="o">(</span><span 
class="n">dc</span><span class="o">.</span><span class="na">id</span><span 
class="o">())</span>
+                       <span class="o">.</span><span 
class="na">name</span><span class="o">(</span><span 
class="s">"jclouds-node"</span><span class="o">)</span>
+                       <span class="o">.</span><span 
class="na">cores</span><span class="o">(</span><span class="mi">1</span><span 
class="o">)</span>
+                       <span class="o">.</span><span 
class="na">ram</span><span class="o">(</span><span class="mi">1024</span><span 
class="o">)</span>
+                       <span class="o">.</span><span 
class="na">build</span><span class="o">());</span></code></pre></figure>
+
+<p>The server can take time to provision. The “waitUntilAvailable” server 
object method will wait until the server state is available before continuing. 
This is useful when chaining requests together that are dependent on one 
another.</p>
+
+<figure class="highlight"><pre><code class="language-java" data-lang="java">   
 <span class="n">waitUntilAvailable</span> <span class="o">=</span> <span 
class="nc">Predicates2</span><span class="o">.</span><span 
class="na">retry</span><span class="o">(</span>
+        <span class="k">new</span> <span 
class="nf">ProvisioningStatusPollingPredicate</span><span 
class="o">(</span><span class="n">api</span><span class="o">,</span> <span 
class="nc">ProvisioningStatusAware</span><span class="o">.</span><span 
class="na">SERVER</span><span class="o">,</span> <span 
class="nc">ProvisioningState</span><span class="o">.</span><span 
class="na">AVAILABLE</span><span class="o">),</span>
+        <span class="mi">2</span><span class="n">l</span> <span 
class="o">*</span> <span class="mi">60</span><span class="n">l</span><span 
class="o">,</span> <span class="mi">2</span><span class="n">l</span><span 
class="o">,</span> <span class="nc">TimeUnit</span><span 
class="o">.</span><span class="na">SECONDS</span><span 
class="o">);</span></code></pre></figure>
 
-<div class="highlight"><pre><code class="java">    <span 
class="n">waitUntilAvailable</span> <span class="o">=</span> <span 
class="n">Predicates2</span><span class="o">.</span><span 
class="na">retry</span><span class="o">(</span>
-        <span class="k">new</span> <span 
class="nf">ProvisioningStatusPollingPredicate</span><span 
class="o">(</span><span class="n">api</span><span class="o">,</span> <span 
class="n">ProvisioningStatusAware</span><span class="o">.</span><span 
class="na">SERVER</span><span class="o">,</span> <span 
class="n">ProvisioningState</span><span class="o">.</span><span 
class="na">AVAILABLE</span><span class="o">),</span>
-        <span class="mi">2</span><span class="n">l</span> <span 
class="o">*</span> <span class="mi">60</span><span class="n">l</span><span 
class="o">,</span> <span class="mi">2</span><span class="n">l</span><span 
class="o">,</span> <span class="n">TimeUnit</span><span class="o">.</span><span 
class="na">SECONDS</span><span class="o">);</span>
-</code></pre></div>
-
-
-<h2><a id="how-to-list-available-disk-and-iso-images"></a>How to: List 
Available Disk and ISO Images</h2>
+<h2 id="how-to-list-available-disk-and-iso-images"><a 
id="how-to-list-available-disk-and-iso-images"></a>How to: List Available Disk 
and ISO Images</h2>
 
 <p>A list of disk and ISO images are available from ProfitBricks for immediate 
use. These can be easily viewed and selected. The following shows you how to 
get a list of images. This list represents both CDROM images and HDD images.</p>
 
-<div class="highlight"><pre><code class="java">    <span 
class="n">List</span><span class="o">&lt;</span><span 
class="n">Image</span><span class="o">&gt;</span> <span class="n">images</span> 
<span class="o">=</span> <span class="n">api</span><span 
class="o">.</span><span class="na">imageApi</span><span 
class="o">().</span><span class="na">getAllImages</span><span 
class="o">();</span>
-</code></pre></div>
+<figure class="highlight"><pre><code class="language-java" data-lang="java">   
 <span class="nc">List</span><span class="o">&lt;</span><span 
class="nc">Image</span><span class="o">&gt;</span> <span 
class="n">images</span> <span class="o">=</span> <span 
class="n">api</span><span class="o">.</span><span 
class="na">imageApi</span><span class="o">().</span><span 
class="na">getAllImages</span><span class="o">();</span></code></pre></figure>
 
-
-<h2><a id="how-to-create-a-storage-volume"></a>How to: Create a Storage 
Volume</h2>
+<h2 id="how-to-create-a-storage-volume"><a 
id="how-to-create-a-storage-volume"></a>How to: Create a Storage Volume</h2>
 
 <p>ProfitBricks allows for the creation of multiple storage volumes that can 
be attached and detached as needed. It is useful to attach an image when 
creating a storage volume. The storage size is in gigabytes.</p>
 
-<div class="highlight"><pre><code class="java">    <span 
class="n">String</span> <span class="n">storageId</span> <span 
class="o">=</span> <span class="n">api</span><span class="o">.</span><span 
class="na">storageApi</span><span class="o">().</span><span 
class="na">createStorage</span><span class="o">(</span>
-        <span class="n">Storage</span><span class="o">.</span><span 
class="na">Request</span><span class="o">.</span><span 
class="na">creatingBuilder</span><span class="o">()</span>
+<figure class="highlight"><pre><code class="language-java" data-lang="java">   
 <span class="nc">String</span> <span class="n">storageId</span> <span 
class="o">=</span> <span class="n">api</span><span class="o">.</span><span 
class="na">storageApi</span><span class="o">().</span><span 
class="na">createStorage</span><span class="o">(</span>
+        <span class="nc">Storage</span><span class="o">.</span><span 
class="na">Request</span><span class="o">.</span><span 
class="na">creatingBuilder</span><span class="o">()</span>
         <span class="o">.</span><span class="na">dataCenterId</span><span 
class="o">(</span><span class="n">dc</span><span class="o">.</span><span 
class="na">id</span><span class="o">())</span>
-        <span class="o">.</span><span class="na">name</span><span 
class="o">(</span><span class="s">&quot;hdd-1&quot;</span><span 
class="o">)</span>
+        <span class="o">.</span><span class="na">name</span><span 
class="o">(</span><span class="s">"hdd-1"</span><span class="o">)</span>
         <span class="o">.</span><span class="na">size</span><span 
class="o">(</span><span class="mi">2</span><span class="n">f</span><span 
class="o">)</span>
-        <span class="o">.</span><span class="na">build</span><span 
class="o">());</span>
-</code></pre></div>
-
+        <span class="o">.</span><span class="na">build</span><span 
class="o">());</span></code></pre></figure>
 
-<h2><a id="how-to-update-cores-memory-and-disk"></a>How to: Update Cores, 
Memory, and Disk</h2>
+<h2 id="how-to-update-cores-memory-and-disk"><a 
id="how-to-update-cores-memory-and-disk"></a>How to: Update Cores, Memory, and 
Disk</h2>
 
 <p>ProfitBricks allows users to dynamically update cores, memory, and disk 
independently of each other. This removes the restriction of needing to upgrade 
to the next size available size to receive an increase in memory. You can now 
simply increase the instances memory keeping your costs in-line with your 
resource needs.</p>
 
@@ -394,187 +369,174 @@
 
 <p>The following code illustrates how you can update cores and memory:</p>
 
-<div class="highlight"><pre><code class="java"> <span 
class="n">api</span><span class="o">.</span><span 
class="na">serverApi</span><span class="o">().</span><span 
class="na">updateServer</span><span class="o">(</span>
-            <span class="n">Server</span><span class="o">.</span><span 
class="na">Request</span><span class="o">.</span><span 
class="na">updatingBuilder</span><span class="o">()</span>
-            <span class="o">.</span><span class="na">id</span><span 
class="o">(</span><span class="n">serverId</span><span class="o">)</span>
-            <span class="o">.</span><span class="na">name</span><span 
class="o">(</span><span class="s">&quot;apache-node&quot;</span><span 
class="o">)</span>
-            <span class="o">.</span><span class="na">cores</span><span 
class="o">(</span><span class="mi">2</span><span class="o">)</span>
-            <span class="o">.</span><span class="na">ram</span><span 
class="o">(</span><span class="mi">2</span> <span class="o">*</span> <span 
class="mi">1024</span><span class="o">)</span>
-            <span class="o">.</span><span class="na">build</span><span 
class="o">());</span>
-</code></pre></div>
-
+<figure class="highlight"><pre><code class="language-java" data-lang="java">   
<span class="n">api</span><span class="o">.</span><span 
class="na">serverApi</span><span class="o">().</span><span 
class="na">updateServer</span><span class="o">(</span>
+                       <span class="nc">Server</span><span 
class="o">.</span><span class="na">Request</span><span class="o">.</span><span 
class="na">updatingBuilder</span><span class="o">()</span>
+                       <span class="o">.</span><span class="na">id</span><span 
class="o">(</span><span class="n">serverId</span><span class="o">)</span>
+                       <span class="o">.</span><span 
class="na">name</span><span class="o">(</span><span 
class="s">"apache-node"</span><span class="o">)</span>
+                       <span class="o">.</span><span 
class="na">cores</span><span class="o">(</span><span class="mi">2</span><span 
class="o">)</span>
+                       <span class="o">.</span><span 
class="na">ram</span><span class="o">(</span><span class="mi">2</span> <span 
class="o">*</span> <span class="mi">1024</span><span class="o">)</span>
+                       <span class="o">.</span><span 
class="na">build</span><span class="o">());</span></code></pre></figure>
 
 <p>The server object may need to be refreshed in order to show the new 
configuration.</p>
 
-<div class="highlight"><pre><code class="java">    <span 
class="n">Server</span> <span class="n">server</span> <span class="o">=</span> 
<span class="n">api</span><span class="o">.</span><span 
class="na">serverApi</span><span class="o">().</span><span 
class="na">getServer</span><span class="o">(</span><span 
class="n">createdServerId</span><span class="o">);</span>
-</code></pre></div>
-
+<figure class="highlight"><pre><code class="language-java" data-lang="java">   
 <span class="nc">Server</span> <span class="n">server</span> <span 
class="o">=</span> <span class="n">api</span><span class="o">.</span><span 
class="na">serverApi</span><span class="o">().</span><span 
class="na">getServer</span><span class="o">(</span><span 
class="n">createdServerId</span><span class="o">);</span></code></pre></figure>
 
-<p> This is how you would update the storage volume size:</p>
+<p>This is how you would update the storage volume size:</p>
 
-<div class="highlight"><pre><code class="java"> <span 
class="n">api</span><span class="o">.</span><span 
class="na">storageApi</span><span class="o">().</span><span 
class="na">updateStorage</span><span class="o">(</span>
-            <span class="n">Storage</span><span class="o">.</span><span 
class="na">Request</span><span class="o">.</span><span 
class="na">updatingBuilder</span><span class="o">()</span>
-            <span class="o">.</span><span class="na">id</span><span 
class="o">(</span><span class="n">storageId</span><span class="o">)</span>
-            <span class="o">.</span><span class="na">name</span><span 
class="o">(</span><span class="s">&quot;hdd-2&quot;</span><span 
class="o">)</span>
-            <span class="o">.</span><span class="na">build</span><span 
class="o">());</span>
-</code></pre></div>
+<figure class="highlight"><pre><code class="language-java" data-lang="java">   
<span class="n">api</span><span class="o">.</span><span 
class="na">storageApi</span><span class="o">().</span><span 
class="na">updateStorage</span><span class="o">(</span>
+                       <span class="nc">Storage</span><span 
class="o">.</span><span class="na">Request</span><span class="o">.</span><span 
class="na">updatingBuilder</span><span class="o">()</span>
+                       <span class="o">.</span><span class="na">id</span><span 
class="o">(</span><span class="n">storageId</span><span class="o">)</span>
+                       <span class="o">.</span><span 
class="na">name</span><span class="o">(</span><span 
class="s">"hdd-2"</span><span class="o">)</span>
+                       <span class="o">.</span><span 
class="na">build</span><span class="o">());</span></code></pre></figure>
 
-
-<h2><a id="how-to-attach-and-detach-a-storage-volume"></a>How to: Attach and 
Detach a Storage Volume</h2>
+<h2 id="how-to-attach-and-detach-a-storage-volume"><a 
id="how-to-attach-and-detach-a-storage-volume"></a>How to: Attach and Detach a 
Storage Volume</h2>
 
 <p>ProfitBricks allows for the creation of multiple storage volumes. You can 
detach and reattach these on the fly. This allows for various scenarios such as 
re-attaching a failed OS disk to another server for possible recovery or moving 
a volume to another location and spinning it up.</p>
 
 <p>The following illustrates how you would attach and detach a volume from a 
server:</p>
 
-<div class="highlight"><pre><code class="java">    <span 
class="n">String</span> <span class="n">requestId</span> <span 
class="o">=</span> <span class="n">api</span><span class="o">.</span><span 
class="na">storageApi</span><span class="o">().</span><span 
class="na">disconnectStorageFromServer</span><span class="o">(</span><span 
class="n">storageId</span><span class="o">,</span> <span 
class="n">serverId</span><span class="o">);</span>
-</code></pre></div>
-
+<figure class="highlight"><pre><code class="language-java" data-lang="java">   
 <span class="nc">String</span> <span class="n">requestId</span> <span 
class="o">=</span> <span class="n">api</span><span class="o">.</span><span 
class="na">storageApi</span><span class="o">().</span><span 
class="na">disconnectStorageFromServer</span><span class="o">(</span><span 
class="n">storageId</span><span class="o">,</span> <span 
class="n">serverId</span><span class="o">);</span></code></pre></figure>
 
-<h2><a id="how-to-list-servers-volumes-and-data-centers"></a>How to: List 
Servers, Volumes, and Data Centers</h2>
+<h2 id="how-to-list-servers-volumes-and-data-centers"><a 
id="how-to-list-servers-volumes-and-data-centers"></a>How to: List Servers, 
Volumes, and Data Centers</h2>
 
 <p>jclouds provides standard functions for retrieving a list of volumes, 
servers, and datacenters.</p>
 
 <p>The following code illustrates how to pull these three list types:</p>
 
-<div class="highlight"><pre><code class="java">    <span 
class="n">List</span><span class="o">&lt;</span><span 
class="n">Storage</span><span class="o">&gt;</span> <span 
class="n">storages</span> <span class="o">=</span> <span 
class="n">api</span><span class="o">.</span><span 
class="na">storageApi</span><span class="o">().</span><span 
class="na">getAllStorages</span><span class="o">();</span>
+<figure class="highlight"><pre><code class="language-java" data-lang="java">   
 <span class="nc">List</span><span class="o">&lt;</span><span 
class="nc">Storage</span><span class="o">&gt;</span> <span 
class="n">storages</span> <span class="o">=</span> <span 
class="n">api</span><span class="o">.</span><span 
class="na">storageApi</span><span class="o">().</span><span 
class="na">getAllStorages</span><span class="o">();</span>
 
-    <span class="n">List</span><span class="o">&lt;</span><span 
class="n">Server</span><span class="o">&gt;</span> <span 
class="n">servers</span> <span class="o">=</span> <span 
class="n">api</span><span class="o">.</span><span 
class="na">serverApi</span><span class="o">().</span><span 
class="na">getAllServers</span><span class="o">();</span>
+    <span class="nc">List</span><span class="o">&lt;</span><span 
class="nc">Server</span><span class="o">&gt;</span> <span 
class="n">servers</span> <span class="o">=</span> <span 
class="n">api</span><span class="o">.</span><span 
class="na">serverApi</span><span class="o">().</span><span 
class="na">getAllServers</span><span class="o">();</span>
  
-    <span class="n">List</span><span class="o">&lt;</span><span 
class="n">DataCenter</span><span class="o">&gt;</span> <span 
class="n">dataCenters</span> <span class="o">=</span> <span 
class="n">api</span><span class="o">.</span><span 
class="na">dataCenterApi</span><span class="o">().</span><span 
class="na">getAllDataCenters</span><span class="o">();</span>
-</code></pre></div>
-
-
-<h2><a id="example"></a>Example:</h2>
-
-<div class="highlight"><pre><code class="java"> <span 
class="kn">package</span> <span class="n">com</span><span 
class="o">.</span><span class="na">profitbricks</span><span 
class="o">.</span><span class="na">example</span><span class="o">;</span>
+    <span class="nc">List</span><span class="o">&lt;</span><span 
class="nc">DataCenter</span><span class="o">&gt;</span> <span 
class="n">dataCenters</span> <span class="o">=</span> <span 
class="n">api</span><span class="o">.</span><span 
class="na">dataCenterApi</span><span class="o">().</span><span 
class="na">getAllDataCenters</span><span 
class="o">();</span></code></pre></figure>
 
-    <span class="kn">import</span> <span 
class="nn">com.google.common.base.Predicate</span><span class="o">;</span>
-    <span class="kn">import</span> <span class="nn">java.util.List</span><span 
class="o">;</span>
-    <span class="kn">import</span> <span 
class="nn">java.util.concurrent.TimeUnit</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.profitbricks.ProfitBricksApi</span><span 
class="o">;</span>
-    <span class="kn">import</span> <span 
class="nn">org.jclouds.profitbricks.compute.internal.ProvisioningStatusAware</span><span
 class="o">;</span>
-    <span class="kn">import</span> <span 
class="nn">org.jclouds.profitbricks.compute.internal.ProvisioningStatusPollingPredicate</span><span
 class="o">;</span>
-    <span class="kn">import</span> <span 
class="nn">org.jclouds.profitbricks.domain.DataCenter</span><span 
class="o">;</span>
-    <span class="kn">import</span> <span 
class="nn">org.jclouds.profitbricks.domain.Image</span><span class="o">;</span>
-    <span class="kn">import</span> <span 
class="nn">org.jclouds.profitbricks.domain.Location</span><span 
class="o">;</span>
-    <span class="kn">import</span> <span 
class="nn">org.jclouds.profitbricks.domain.ProvisioningState</span><span 
class="o">;</span>
-    <span class="kn">import</span> <span 
class="nn">org.jclouds.profitbricks.domain.Server</span><span class="o">;</span>
-    <span class="kn">import</span> <span 
class="nn">org.jclouds.profitbricks.domain.Storage</span><span 
class="o">;</span>
-    <span class="kn">import</span> <span 
class="nn">org.jclouds.util.Predicates2</span><span class="o">;</span>
-
-    <span class="kd">public</span> <span class="kd">class</span> <span 
class="nc">App</span> <span class="o">{</span>
-
-        <span class="kd">private</span> <span class="kd">static</span> <span 
class="n">Predicate</span><span class="o">&lt;</span><span 
class="n">String</span><span class="o">&gt;</span> <span 
class="n">waitUntilAvailable</span><span class="o">;</span>
-        <span class="kd">private</span> <span class="kd">static</span> <span 
class="kd">final</span> <span class="n">String</span> <span 
class="n">provider</span> <span class="o">=</span> <span 
class="s">&quot;profitbricks&quot;</span><span class="o">;</span>
-        <span class="kd">private</span> <span class="kd">static</span> <span 
class="kd">final</span> <span class="n">String</span> <span 
class="n">username</span> <span class="o">=</span> <span 
class="s">&quot;username&quot;</span><span class="o">;</span>
-        <span class="kd">private</span> <span class="kd">static</span> <span 
class="kd">final</span> <span class="n">String</span> <span 
class="n">apikey</span> <span class="o">=</span> <span 
class="s">&quot;apikey&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">ProfitBricksApi</span> <span class="n">api</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">credentials</span><span class="o">(</span><span 
class="n">username</span><span class="o">,</span> <span 
class="n">apikey</span><span class="o">)</span>
-                    <span class="o">.</span><span 
class="na">buildApi</span><span class="o">(</span><span 
class="n">ProfitBricksApi</span><span class="o">.</span><span 
class="na">class</span><span class="o">);</span>
-
-            <span class="cm">/*</span>
-<span class="cm">            * CreateDataCenterRequest. </span>
-<span class="cm">            * The only required field is DataCenterName. 
</span>
-<span class="cm">            * If location parameter is left empty data center 
will be created in the default region of the customer</span>
-<span class="cm">            */</span>
-            <span class="n">DataCenter</span> <span class="n">dc</span> <span 
class="o">=</span> <span class="n">api</span><span class="o">.</span><span 
class="na">dataCenterApi</span><span class="o">().</span><span 
class="na">createDataCenter</span><span class="o">(</span>
-                    <span class="n">DataCenter</span><span 
class="o">.</span><span class="na">Request</span><span class="o">.</span><span 
class="na">CreatePayload</span><span class="o">.</span><span 
class="na">create</span><span class="o">(</span><span 
class="s">&quot;JClouds&quot;</span><span class="o">,</span> <span 
class="n">Location</span><span class="o">.</span><span 
class="na">DE_FKB</span><span class="o">)</span>
-            <span class="o">);</span>
-
-            <span class="cm">/*  </span>
-<span class="cm">            * DataCenterId: Defines the data center wherein 
the server is to be created.</span>
-<span class="cm">            * AvailabilityZone: Selects the zone in which the 
server is going to be created (AUTO, ZONE_1, ZONE_2).</span>
-<span class="cm">            * Cores: Number of cores to be assigned to the 
specified server. Required field.</span>
-<span class="cm">            * InternetAccess: Set to TRUE to connect the 
server to the Internet via the specified LAN ID.</span>
-<span class="cm">            * OsType: Sets the OS type of the server.</span>
-<span class="cm">            * Ram: Number of RAM memory (in MiB) to be 
assigned to the server.</span>
-<span class="cm">            */</span>
-            <span class="n">String</span> <span class="n">serverId</span> 
<span class="o">=</span> <span class="n">api</span><span 
class="o">.</span><span class="na">serverApi</span><span 
class="o">().</span><span class="na">createServer</span><span 
class="o">(</span><span class="n">Server</span><span class="o">.</span><span 
class="na">Request</span><span class="o">.</span><span 
class="na">creatingBuilder</span><span class="o">()</span>
-                    <span class="o">.</span><span 
class="na">dataCenterId</span><span class="o">(</span><span 
class="n">dc</span><span class="o">.</span><span class="na">id</span><span 
class="o">())</span>
-                    <span class="o">.</span><span class="na">name</span><span 
class="o">(</span><span class="s">&quot;jclouds-node&quot;</span><span 
class="o">)</span>
-                    <span class="o">.</span><span class="na">cores</span><span 
class="o">(</span><span class="mi">1</span><span class="o">)</span>
-                    <span class="o">.</span><span class="na">ram</span><span 
class="o">(</span><span class="mi">1024</span><span class="o">)</span>
-                    <span class="o">.</span><span class="na">build</span><span 
class="o">());</span>
-
-            <span class="cm">/*</span>
-<span class="cm">            * The &quot;waitUntilAvailable&quot; server 
object method will wait until the server state is available before 
continuing</span>
-<span class="cm">            */</span>
-            <span class="n">waitUntilAvailable</span> <span class="o">=</span> 
<span class="n">Predicates2</span><span class="o">.</span><span 
class="na">retry</span><span class="o">(</span>
-                    <span class="k">new</span> <span 
class="nf">ProvisioningStatusPollingPredicate</span><span 
class="o">(</span><span class="n">api</span><span class="o">,</span> <span 
class="n">ProvisioningStatusAware</span><span class="o">.</span><span 
class="na">SERVER</span><span class="o">,</span> <span 
class="n">ProvisioningState</span><span class="o">.</span><span 
class="na">AVAILABLE</span><span class="o">),</span>
-                    <span class="mi">2</span><span class="n">l</span> <span 
class="o">*</span> <span class="mi">60</span><span class="n">l</span><span 
class="o">,</span> <span class="mi">2</span><span class="n">l</span><span 
class="o">,</span> <span class="n">TimeUnit</span><span class="o">.</span><span 
class="na">SECONDS</span><span class="o">);</span>
-
-            <span class="cm">/*</span>
-<span class="cm">            * Get list of all images.</span>
-<span class="cm">            */</span>
-            <span class="n">List</span><span class="o">&lt;</span><span 
class="n">Image</span><span class="o">&gt;</span> <span class="n">images</span> 
<span class="o">=</span> <span class="n">api</span><span 
class="o">.</span><span class="na">imageApi</span><span 
class="o">().</span><span class="na">getAllImages</span><span 
class="o">();</span>
-
-            <span class="cm">/* dataCenterId: Defines the data center wherein 
the storage is to be created. If left empty, the storage will be created in a 
new data center</span>
-<span class="cm">            * name: names the new volume.</span>
-<span class="cm">            * Size: Storage size (in GiB). Required 
Field.</span>
-<span class="cm">            */</span>
-            <span class="n">String</span> <span class="n">storageId</span> 
<span class="o">=</span> <span class="n">api</span><span 
class="o">.</span><span class="na">storageApi</span><span 
class="o">().</span><span class="na">createStorage</span><span 
class="o">(</span>
-                    <span class="n">Storage</span><span 
class="o">.</span><span class="na">Request</span><span class="o">.</span><span 
class="na">creatingBuilder</span><span class="o">()</span>
-                    <span class="o">.</span><span 
class="na">dataCenterId</span><span class="o">(</span><span 
class="n">dc</span><span class="o">.</span><span class="na">id</span><span 
class="o">())</span>
-                    <span class="o">.</span><span class="na">name</span><span 
class="o">(</span><span class="s">&quot;hdd-1&quot;</span><span 
class="o">)</span>
-                    <span class="o">.</span><span class="na">size</span><span 
class="o">(</span><span class="mi">2</span><span class="n">f</span><span 
class="o">)</span>
-                    <span class="o">.</span><span class="na">build</span><span 
class="o">());</span>
-
-            <span class="cm">/*</span>
-<span class="cm">            * ServerId: Id of the server to be updated.</span>
-<span class="cm">            * ServerName: Renames target virtual server</span>
-<span class="cm">            * Cores: Updates the amount of cores of the 
target virtual server</span>
-<span class="cm">            * Ram: Updates the RAM memory (in MiB) of the 
target virtual </span>
-<span class="cm">            */</span>
-            <span class="n">api</span><span class="o">.</span><span 
class="na">serverApi</span><span class="o">().</span><span 
class="na">updateServer</span><span class="o">(</span>
-                    <span class="n">Server</span><span class="o">.</span><span 
class="na">Request</span><span class="o">.</span><span 
class="na">updatingBuilder</span><span class="o">()</span>
-                    <span class="o">.</span><span class="na">id</span><span 
class="o">(</span><span class="n">serverId</span><span class="o">)</span>
-                    <span class="o">.</span><span class="na">name</span><span 
class="o">(</span><span class="s">&quot;apache-node&quot;</span><span 
class="o">)</span>
-                    <span class="o">.</span><span class="na">cores</span><span 
class="o">(</span><span class="mi">2</span><span class="o">)</span>
-                    <span class="o">.</span><span class="na">ram</span><span 
class="o">(</span><span class="mi">2</span> <span class="o">*</span> <span 
class="mi">1024</span><span class="o">)</span>
-                    <span class="o">.</span><span class="na">build</span><span 
class="o">());</span>
-
-            <span class="cm">/*</span>
-<span class="cm">            * id: identifier of a storage to be updated</span>
-<span class="cm">            * name: changes the name of the storage</span>
-<span class="cm">            */</span>
-            <span class="n">api</span><span class="o">.</span><span 
class="na">storageApi</span><span class="o">().</span><span 
class="na">updateStorage</span><span class="o">(</span>
-                    <span class="n">Storage</span><span 
class="o">.</span><span class="na">Request</span><span class="o">.</span><span 
class="na">updatingBuilder</span><span class="o">()</span>
-                    <span class="o">.</span><span class="na">id</span><span 
class="o">(</span><span class="n">storageId</span><span class="o">)</span>
-                    <span class="o">.</span><span class="na">name</span><span 
class="o">(</span><span class="s">&quot;hdd-2&quot;</span><span 
class="o">)</span>
-                    <span class="o">.</span><span class="na">build</span><span 
class="o">());</span>
-
-            <span class="cm">/*</span>
-<span class="cm">            * Disconnects storage from the server.</span>
-<span class="cm">            */</span>
-            <span class="n">api</span><span class="o">.</span><span 
class="na">storageApi</span><span class="o">().</span><span 
class="na">disconnectStorageFromServer</span><span class="o">(</span><span 
class="n">storageId</span><span class="o">,</span> <span 
class="n">serverId</span><span class="o">);</span>
-
-            <span class="cm">/*</span>
-<span class="cm">            * Fetches list of all DataCenters</span>
-<span class="cm">            */</span>
-            <span class="n">List</span><span class="o">&lt;</span><span 
class="n">DataCenter</span><span class="o">&gt;</span> <span 
class="n">dataCenters</span> <span class="o">=</span> <span 
class="n">api</span><span class="o">.</span><span 
class="na">dataCenterApi</span><span class="o">().</span><span 
class="na">getAllDataCenters</span><span class="o">();</span>
-
-            <span class="cm">/*</span>
-<span class="cm">            * Fetches list of all Volumes</span>
-<span class="cm">            */</span>
-            <span class="n">List</span><span class="o">&lt;</span><span 
class="n">Storage</span><span class="o">&gt;</span> <span 
class="n">storages</span> <span class="o">=</span> <span 
class="n">api</span><span class="o">.</span><span 
class="na">storageApi</span><span class="o">().</span><span 
class="na">getAllStorages</span><span class="o">();</span>
-
-            <span class="cm">/*</span>
-<span class="cm">            * Fetches list of all Servers</span>
-<span class="cm">            */</span>
-            <span class="n">List</span><span class="o">&lt;</span><span 
class="n">Server</span><span class="o">&gt;</span> <span 
class="n">servers</span> <span class="o">=</span> <span 
class="n">api</span><span class="o">.</span><span 
class="na">serverApi</span><span class="o">().</span><span 
class="na">getAllServers</span><span class="o">();</span>
-
-            <span class="n">api</span><span class="o">.</span><span 
class="na">dataCenterApi</span><span class="o">().</span><span 
class="na">deleteDataCenter</span><span class="o">(</span><span 
class="n">dc</span><span class="o">.</span><span class="na">id</span><span 
class="o">());</span>
-        <span class="o">}</span>
-    <span class="o">}</span>
-</code></pre></div>
+<h2 id="example"><a id="example"></a>Example:</h2>
 
+<figure class="highlight"><pre><code class="language-java" data-lang="java">   
<span class="kn">package</span> <span 
class="nn">com.profitbricks.example</span><span class="o">;</span>
 
-<h2><a id="support-and-feedback"></a>Support and Feedback</h2>
+       <span class="kn">import</span> <span 
class="nn">com.google.common.base.Predicate</span><span class="o">;</span>
+       <span class="kn">import</span> <span 
class="nn">java.util.List</span><span class="o">;</span>
+       <span class="kn">import</span> <span 
class="nn">java.util.concurrent.TimeUnit</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.profitbricks.ProfitBricksApi</span><span 
class="o">;</span>
+       <span class="kn">import</span> <span 
class="nn">org.jclouds.profitbricks.compute.internal.ProvisioningStatusAware</span><span
 class="o">;</span>
+       <span class="kn">import</span> <span 
class="nn">org.jclouds.profitbricks.compute.internal.ProvisioningStatusPollingPredicate</span><span
 class="o">;</span>
+       <span class="kn">import</span> <span 
class="nn">org.jclouds.profitbricks.domain.DataCenter</span><span 
class="o">;</span>
+       <span class="kn">import</span> <span 
class="nn">org.jclouds.profitbricks.domain.Image</span><span class="o">;</span>
+       <span class="kn">import</span> <span 
class="nn">org.jclouds.profitbricks.domain.Location</span><span 
class="o">;</span>
+       <span class="kn">import</span> <span 
class="nn">org.jclouds.profitbricks.domain.ProvisioningState</span><span 
class="o">;</span>
+       <span class="kn">import</span> <span 
class="nn">org.jclouds.profitbricks.domain.Server</span><span class="o">;</span>
+       <span class="kn">import</span> <span 
class="nn">org.jclouds.profitbricks.domain.Storage</span><span 
class="o">;</span>
+       <span class="kn">import</span> <span 
class="nn">org.jclouds.util.Predicates2</span><span class="o">;</span>
+
+       <span class="kd">public</span> <span class="kd">class</span> <span 
class="nc">App</span> <span class="o">{</span>
+
+               <span class="kd">private</span> <span class="kd">static</span> 
<span class="nc">Predicate</span><span class="o">&lt;</span><span 
class="nc">String</span><span class="o">&gt;</span> <span 
class="n">waitUntilAvailable</span><span class="o">;</span>
+               <span class="kd">private</span> <span class="kd">static</span> 
<span class="kd">final</span> <span class="nc">String</span> <span 
class="n">provider</span> <span class="o">=</span> <span 
class="s">"profitbricks"</span><span class="o">;</span>
+               <span class="kd">private</span> <span class="kd">static</span> 
<span class="kd">final</span> <span class="nc">String</span> <span 
class="n">username</span> <span class="o">=</span> <span 
class="s">"username"</span><span class="o">;</span>
+               <span class="kd">private</span> <span class="kd">static</span> 
<span class="kd">final</span> <span class="nc">String</span> <span 
class="n">apikey</span> <span class="o">=</span> <span 
class="s">"apikey"</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="nc">String</span><span class="o">[]</span> <span 
class="n">args</span><span class="o">)</span> <span class="o">{</span>
+
+                       <span class="nc">ProfitBricksApi</span> <span 
class="n">api</span> <span class="o">=</span> <span 
class="nc">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">credentials</span><span class="o">(</span><span 
class="n">username</span><span class="o">,</span> <span 
class="n">apikey</span><span class="o">)</span>
+                                       <span class="o">.</span><span 
class="na">buildApi</span><span class="o">(</span><span 
class="nc">ProfitBricksApi</span><span class="o">.</span><span 
class="na">class</span><span class="o">);</span>
+
+                       <span class="cm">/*
+                        * CreateDataCenterRequest. 
+                        * The only required field is DataCenterName. 
+                        * If location parameter is left empty data center will 
be created in the default region of the customer
+                        */</span>
+                       <span class="nc">DataCenter</span> <span 
class="n">dc</span> <span class="o">=</span> <span class="n">api</span><span 
class="o">.</span><span class="na">dataCenterApi</span><span 
class="o">().</span><span class="na">createDataCenter</span><span 
class="o">(</span>
+                                       <span class="nc">DataCenter</span><span 
class="o">.</span><span class="na">Request</span><span class="o">.</span><span 
class="na">CreatePayload</span><span class="o">.</span><span 
class="na">create</span><span class="o">(</span><span 
class="s">"JClouds"</span><span class="o">,</span> <span 
class="nc">Location</span><span class="o">.</span><span 
class="na">DE_FKB</span><span class="o">)</span>
+                       <span class="o">);</span>
+
+                       <span class="cm">/*  
+                        * DataCenterId: Defines the data center wherein the 
server is to be created.
+                        * AvailabilityZone: Selects the zone in which the 
server is going to be created (AUTO, ZONE_1, ZONE_2).
+                        * Cores: Number of cores to be assigned to the 
specified server. Required field.
+                        * InternetAccess: Set to TRUE to connect the server to 
the Internet via the specified LAN ID.
+                        * OsType: Sets the OS type of the server.
+                        * Ram: Number of RAM memory (in MiB) to be assigned to 
the server.
+                        */</span>
+                       <span class="nc">String</span> <span 
class="n">serverId</span> <span class="o">=</span> <span 
class="n">api</span><span class="o">.</span><span 
class="na">serverApi</span><span class="o">().</span><span 
class="na">createServer</span><span class="o">(</span><span 
class="nc">Server</span><span class="o">.</span><span 
class="na">Request</span><span class="o">.</span><span 
class="na">creatingBuilder</span><span class="o">()</span>
+                                       <span class="o">.</span><span 
class="na">dataCenterId</span><span class="o">(</span><span 
class="n">dc</span><span class="o">.</span><span class="na">id</span><span 
class="o">())</span>
+                                       <span class="o">.</span><span 
class="na">name</span><span class="o">(</span><span 
class="s">"jclouds-node"</span><span class="o">)</span>
+                                       <span class="o">.</span><span 
class="na">cores</span><span class="o">(</span><span class="mi">1</span><span 
class="o">)</span>
+                                       <span class="o">.</span><span 
class="na">ram</span><span class="o">(</span><span class="mi">1024</span><span 
class="o">)</span>
+                                       <span class="o">.</span><span 
class="na">build</span><span class="o">());</span>
+
+                       <span class="cm">/*
+                        * The "waitUntilAvailable" server object method will 
wait until the server state is available before continuing
+                        */</span>
+                       <span class="n">waitUntilAvailable</span> <span 
class="o">=</span> <span class="nc">Predicates2</span><span 
class="o">.</span><span class="na">retry</span><span class="o">(</span>
+                                       <span class="k">new</span> <span 
class="nf">ProvisioningStatusPollingPredicate</span><span 
class="o">(</span><span class="n">api</span><span class="o">,</span> <span 
class="nc">ProvisioningStatusAware</span><span class="o">.</span><span 
class="na">SERVER</span><span class="o">,</span> <span 
class="nc">ProvisioningState</span><span class="o">.</span><span 
class="na">AVAILABLE</span><span class="o">),</span>
+                                       <span class="mi">2</span><span 
class="n">l</span> <span class="o">*</span> <span class="mi">60</span><span 
class="n">l</span><span class="o">,</span> <span class="mi">2</span><span 
class="n">l</span><span class="o">,</span> <span 
class="nc">TimeUnit</span><span class="o">.</span><span 
class="na">SECONDS</span><span class="o">);</span>
+
+                       <span class="cm">/*
+                        * Get list of all images.
+                        */</span>
+                       <span class="nc">List</span><span 
class="o">&lt;</span><span class="nc">Image</span><span class="o">&gt;</span> 
<span class="n">images</span> <span class="o">=</span> <span 
class="n">api</span><span class="o">.</span><span 
class="na">imageApi</span><span class="o">().</span><span 
class="na">getAllImages</span><span class="o">();</span>
+
+                       <span class="cm">/* dataCenterId: Defines the data 
center wherein the storage is to be created. If left empty, the storage will be 
created in a new data center
+                        * name: names the new volume.
+                        * Size: Storage size (in GiB). Required Field.
+                        */</span>
+                       <span class="nc">String</span> <span 
class="n">storageId</span> <span class="o">=</span> <span 
class="n">api</span><span class="o">.</span><span 
class="na">storageApi</span><span class="o">().</span><span 
class="na">createStorage</span><span class="o">(</span>
+                                       <span class="nc">Storage</span><span 
class="o">.</span><span class="na">Request</span><span class="o">.</span><span 
class="na">creatingBuilder</span><span class="o">()</span>
+                                       <span class="o">.</span><span 
class="na">dataCenterId</span><span class="o">(</span><span 
class="n">dc</span><span class="o">.</span><span class="na">id</span><span 
class="o">())</span>
+                                       <span class="o">.</span><span 
class="na">name</span><span class="o">(</span><span 
class="s">"hdd-1"</span><span class="o">)</span>
+                                       <span class="o">.</span><span 
class="na">size</span><span class="o">(</span><span class="mi">2</span><span 
class="n">f</span><span class="o">)</span>
+                                       <span class="o">.</span><span 
class="na">build</span><span class="o">());</span>
+
+                       <span class="cm">/*
+                        * ServerId: Id of the server to be updated.
+                        * ServerName: Renames target virtual server
+                        * Cores: Updates the amount of cores of the target 
virtual server
+                        * Ram: Updates the RAM memory (in MiB) of the target 
virtual 
+                        */</span>
+                       <span class="n">api</span><span class="o">.</span><span 
class="na">serverApi</span><span class="o">().</span><span 
class="na">updateServer</span><span class="o">(</span>
+                                       <span class="nc">Server</span><span 
class="o">.</span><span class="na">Request</span><span class="o">.</span><span 
class="na">updatingBuilder</span><span class="o">()</span>
+                                       <span class="o">.</span><span 
class="na">id</span><span class="o">(</span><span 
class="n">serverId</span><span class="o">)</span>
+                                       <span class="o">.</span><span 
class="na">name</span><span class="o">(</span><span 
class="s">"apache-node"</span><span class="o">)</span>
+                                       <span class="o">.</span><span 
class="na">cores</span><span class="o">(</span><span class="mi">2</span><span 
class="o">)</span>
+                                       <span class="o">.</span><span 
class="na">ram</span><span class="o">(</span><span class="mi">2</span> <span 
class="o">*</span> <span class="mi">1024</span><span class="o">)</span>
+                                       <span class="o">.</span><span 
class="na">build</span><span class="o">());</span>
+
+                       <span class="cm">/*
+                        * id: identifier of a storage to be updated
+                        * name: changes the name of the storage
+                        */</span>
+                       <span class="n">api</span><span class="o">.</span><span 
class="na">storageApi</span><span class="o">().</span><span 
class="na">updateStorage</span><span class="o">(</span>
+                                       <span class="nc">Storage</span><span 
class="o">.</span><span class="na">Request</span><span class="o">.</span><span 
class="na">updatingBuilder</span><span class="o">()</span>
+                                       <span class="o">.</span><span 
class="na">id</span><span class="o">(</span><span 
class="n">storageId</span><span class="o">)</span>
+                                       <span class="o">.</span><span 
class="na">name</span><span class="o">(</span><span 
class="s">"hdd-2"</span><span class="o">)</span>
+                                       <span class="o">.</span><span 
class="na">build</span><span class="o">());</span>
+
+                       <span class="cm">/*
+                        * Disconnects storage from the server.
+                        */</span>
+                       <span class="n">api</span><span class="o">.</span><span 
class="na">storageApi</span><span class="o">().</span><span 
class="na">disconnectStorageFromServer</span><span class="o">(</span><span 
class="n">storageId</span><span class="o">,</span> <span 
class="n">serverId</span><span class="o">);</span>
+
+                       <span class="cm">/*
+                        * Fetches list of all DataCenters
+                        */</span>
+                       <span class="nc">List</span><span 
class="o">&lt;</span><span class="nc">DataCenter</span><span 
class="o">&gt;</span> <span class="n">dataCenters</span> <span 
class="o">=</span> <span class="n">api</span><span class="o">.</span><span 
class="na">dataCenterApi</span><span class="o">().</span><span 
class="na">getAllDataCenters</span><span class="o">();</span>
+
+                       <span class="cm">/*
+                        * Fetches list of all Volumes
+                        */</span>
+                       <span class="nc">List</span><span 
class="o">&lt;</span><span class="nc">Storage</span><span class="o">&gt;</span> 
<span class="n">storages</span> <span class="o">=</span> <span 
class="n">api</span><span class="o">.</span><span 
class="na">storageApi</span><span class="o">().</span><span 
class="na">getAllStorages</span><span class="o">();</span>
+
+                       <span class="cm">/*
+                        * Fetches list of all Servers
+                        */</span>
+                       <span class="nc">List</span><span 
class="o">&lt;</span><span class="nc">Server</span><span class="o">&gt;</span> 
<span class="n">servers</span> <span class="o">=</span> <span 
class="n">api</span><span class="o">.</span><span 
class="na">serverApi</span><span class="o">().</span><span 
class="na">getAllServers</span><span class="o">();</span>
+
+                       <span class="n">api</span><span class="o">.</span><span 
class="na">dataCenterApi</span><span class="o">().</span><span 
class="na">deleteDataCenter</span><span class="o">(</span><span 
class="n">dc</span><span class="o">.</span><span class="na">id</span><span 
class="o">());</span>
+               <span class="o">}</span>
+       <span class="o">}</span></code></pre></figure>
 
+<h2 id="support-and-feedback"><a id="support-and-feedback"></a>Support and 
Feedback</h2>
 <p>Your feedback is welcome! If you have comments or questions regarding using 
ProfitBricks via jclouds, please reach out to us at <a 
href="https://devops.profitbricks.com";>DevOps Central</a>.</p>
 
             <div class="row clearfix">


Reply via email to