Modified: jclouds/site-content/start/compute/index.html
URL: 
http://svn.apache.org/viewvc/jclouds/site-content/start/compute/index.html?rev=1923693&r1=1923692&r2=1923693&view=diff
==============================================================================
--- jclouds/site-content/start/compute/index.html (original)
+++ jclouds/site-content/start/compute/index.html Mon Feb 10 07:25:53 2025
@@ -149,134 +149,117 @@
             <div class="page-header">
                 <h1>Compute Guide</h1>
             </div>
-            <h2>Introduction</h2>
-
+            <h2 id="introduction">Introduction</h2>
 <p>The jclouds Compute API provides a basic abstraction across Compute APIs 
such as Amazon EC2 and OpenStack Nova.
 We also have integrations for popular tools such as Ant and Maven.</p>
 
-<h2>Features</h2>
-
-<h3>Location Aware API</h3>
+<h2 id="features">Features</h2>
+<h3 id="location-aware-api">Location Aware API</h3>
 
-<p>Unlike other tools, our compute api doesn't require you to establish 
multiple connections to clouds who are multi-homed.
+<p>Unlike other tools, our compute api doesn’t require you to establish 
multiple connections to clouds who are multi-homed.
 For example, you can use the same object to access your resources in all 
regions of EC2.
 This allows you greater visibility into your resources and provides means to 
logically tie cross-wan resources together.</p>
 
-<h3>Node Sets</h3>
-
+<h3 id="node-sets">Node Sets</h3>
 <p>Using our compute API, you can run multiple nodes as a set regardless of 
the underlying cloud API.
 In this way, you can fire up a 20 node cluster and manage it by its group 
name, as opposed to dealing with each node individually.</p>
 
-<h3>SSH keys</h3>
-
+<h3 id="ssh-keys">SSH keys</h3>
 <p>Our compute API natively helps with moving your ssh keys to the node on 
startup, so that
-you don't have to worry about remembering or storing random passwords or keys 
provided by the service.</p>
-
-<h3>Run Script</h3>
+you don’t have to worry about remembering or storing random passwords or 
keys provided by the service.</p>
 
+<h3 id="run-script">Run Script</h3>
 <p>Our runScript features provide simple means for executing scripts on the 
machines in a set.
 It also includes special exception types that will allow you to handle errors 
appropriately.</p>
 
-<h3>Stub Provider</h3>
-
+<h3 id="stub-provider">Stub Provider</h3>
 <p>As more people are looking at concepts like devops, it follows that 
infrastructure as code implies testability as a concern.
 One of our steps to help is the addition of a stub compute provider, which you 
can join with our in-memory blobstore to
 test your provisioning instructions before you try them out with your credit 
card:</p>
 
-<h3>Credential persistence</h3>
+<h3 id="credential-persistence">Credential persistence</h3>
 
 <p>As of jclouds beta-9, you can now supply a map to persist credentials of 
your nodes across connections.  Using a blobstore-backed map,
-this means you can keep track of all of your cloud nodes' credentials in a 
single place.</p>
-
-<h3>Supported Providers</h3>
+this means you can keep track of all of your cloud nodes’ credentials in a 
single place.</p>
 
+<h3 id="supported-providers">Supported Providers</h3>
 <p>See <a href="/reference/providers/#compute">Compute API: Supported 
Providers</a> for providers that can be used equally in any Compute API 
tool.</p>
 
-<p><em>Note, that if you use the <code>jclouds-allcompute</code> dependency, 
your project will have all of the above!</em></p>
+<p><em>Note, that if you use the <code class="language-plaintext 
highlighter-rouge">jclouds-allcompute</code> dependency, your project will have 
all of the above!</em></p>
 
-<h2>API</h2>
-
-<h3>Concepts</h3>
+<h2 id="api">API</h2>
 
+<h3 id="concepts">Concepts</h3>
 <p>The Compute API is a portable means of managing nodes in clouds. It can 
manage nodes as a
 set and address resources in any cloud without needing separate connections. 
It also has a
 Template feature which allows you to search for configurations that match 
parameters such as
 CPU count or operating system.  Finally, it contains utilities to execute 
scripts as part of
 the bootstrap process of your nodes.</p>
 
-<h3>Template</h3>
+<h3 id="template">Template</h3>
 
 <p>Templates are a way of encapsulating the requirements of your nodes such 
that similar configurations can be launched in other clouds.</p>
 
 <p>A Template consists of the following elements:</p>
 
 <ul>
-<li>Image - defines which bytes boot your node, and details such as the 
operating system you wish to run.</li>
-<li>Hardware - defines CPU, memory, disk, and supported architecture .</li>
-<li>Location - defines the region or datacenter in which your node(s) should 
run.</li>
-<li>Options - defines optional parameters such as inbound ports to open or 
scripts to execute at boot time.</li>
+  <li>Image - defines which bytes boot your node, and details such as the 
operating system you wish to run.</li>
+  <li>Hardware - defines CPU, memory, disk, and supported architecture .</li>
+  <li>Location - defines the region or datacenter in which your node(s) should 
run.</li>
+  <li>Options - defines optional parameters such as inbound ports to open or 
scripts to execute at boot time.</li>
 </ul>
 
-
 <p>Templates can be created from your service context via a TemplateBuilder.  
This builder allows you
-to specify your requirements with statements such as <code>minCores</code> and 
<code>imageId</code>.</p>
-
-<h3>Operating System</h3>
+to specify your requirements with statements such as <code 
class="language-plaintext highlighter-rouge">minCores</code> and <code 
class="language-plaintext highlighter-rouge">imageId</code>.</p>
 
+<h3 id="operating-system">Operating System</h3>
 <p>An Image is different from an Operating System. It is really a bunch of 
state that includes an operating system,
 software and configuration. It is often versioned independently of the 
operating system.
 Before, we lumped together operating system with image, as this is what amazon 
and some others did.
 However, this assumes nodes are created from images. This is not the case in 
OVF-based systems like vCloud,
 and we really had no clean way to address this before. Operating System as a 
type works much cleaner and across more systems.</p>
 
-<h3>Hardware</h3>
-
+<h3 id="hardware">Hardware</h3>
 <p>We previously had a class called Size which held a combination of size and 
hardware configuration data.
 While simple, it limited our ability to address fine grained concerns, as it 
assumed there is
 only a single disk, processor, etc. Our new Hardware type is much more robust, 
while still extremely simple to use.
 While mounted volume information is read-only at the moment, expect us to add 
portability over systems like EBS in the near future.</p>
 
-<h3>Usage</h3>
+<h3 id="usage">Usage</h3>
 
 <p>Using the API is straightforward. You need to create a context to the 
service you wish to manage, and then act on it.
-Here's how to perform common commands.</p>
+Here’s how to perform common commands.</p>
 
-<h3>Open your context and get a service reference</h3>
+<h3 id="open-your-context-and-get-a-service-reference">Open your context and 
get a service reference</h3>
 
 <p>Here, you specify the particular service you wish to manage and get a 
reference to ComputeService.</p>
 
-<div class="highlight"><pre><code class="java"><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="s">&quot;trmk-ecloud&quot;</span><span 
class="o">)</span>
+<figure class="highlight"><pre><code class="language-java" 
data-lang="java"><span class="nc">ComputeServiceContext</span> <span 
class="n">context</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">"trmk-ecloud"</span><span class="o">)</span>
                       <span class="o">.</span><span 
class="na">credentials</span><span class="o">(</span><span 
class="n">user</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">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">Log4JLoggingModule</span><span class="o">(),</span>
+                      <span class="o">.</span><span 
class="na">modules</span><span class="o">(</span><span 
class="nc">ImmutableSet</span><span class="o">.&lt;</span><span 
class="nc">Module</span><span class="o">&gt;</span> <span 
class="nf">of</span><span class="o">(</span><span class="k">new</span> <span 
class="nc">Log4JLoggingModule</span><span class="o">(),</span>
                                                         <span 
class="k">new</span> <span class="nf">SshjSshClientModule</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">ComputeService</span> <span class="n">client</span> <span 
class="o">=</span> <span class="n">context</span><span class="o">.</span><span 
class="na">getComputeService</span><span class="o">();</span>
-</code></pre></div>
-
+                      <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>
 
-<h3>List the nodes you have in all locations</h3>
+<span class="nc">ComputeService</span> <span class="n">client</span> <span 
class="o">=</span> <span class="n">context</span><span class="o">.</span><span 
class="na">getComputeService</span><span 
class="o">();</span></code></pre></figure>
 
-<p>As mentioned above, this context can operate all of your nodes across the 
globe.  Here's how to list them</p>
+<h3 id="list-the-nodes-you-have-in-all-locations">List the nodes you have in 
all locations</h3>
+<p>As mentioned above, this context can operate all of your nodes across the 
globe.  Here’s how to list them</p>
 
-<div class="highlight"><pre><code class="java"><span class="k">for</span> 
<span class="o">(</span><span class="n">ComputeMetadata</span> <span 
class="n">node</span> <span class="o">:</span> <span 
class="n">client</span><span class="o">.</span><span 
class="na">listNodes</span><span class="o">())</span> <span class="o">{</span>
+<figure class="highlight"><pre><code class="language-java" 
data-lang="java"><span class="k">for</span> <span class="o">(</span><span 
class="nc">ComputeMetadata</span> <span class="n">node</span> <span 
class="o">:</span> <span class="n">client</span><span class="o">.</span><span 
class="na">listNodes</span><span class="o">())</span> <span class="o">{</span>
    <span class="n">node</span><span class="o">.</span><span 
class="na">getId</span><span class="o">();</span> <span class="c1">// how does 
jclouds address this in a global scope</span>
    <span class="n">node</span><span class="o">.</span><span 
class="na">getProviderId</span><span class="o">();</span> <span class="c1">// 
how does the provider api address this in a specific scope</span>
    <span class="n">node</span><span class="o">.</span><span 
class="na">getName</span><span class="o">();</span> <span class="c1">// if the 
node is named, what is it?</span>
    <span class="n">node</span><span class="o">.</span><span 
class="na">getLocation</span><span class="o">();</span> <span class="c1">// 
where in the world is the node</span>
-<span class="o">}</span>
-</code></pre></div>
+<span class="o">}</span></code></pre></figure>
 
-
-<p>Note that the result is of type <code>ComputeMetadata</code> rather than 
the more useful <code>NodeMetadata</code>.
+<p>Note that the result is of type <code class="language-plaintext 
highlighter-rouge">ComputeMetadata</code> rather than the more useful <code 
class="language-plaintext highlighter-rouge">NodeMetadata</code>.
 This is because many services offer only minimal details on listing.  To flesh 
out the objects you want,
 call the <em>Get Node Metadata</em> command.</p>
 
-<h3>Get Node Metadata</h3>
-
+<h3 id="get-node-metadata">Get Node Metadata</h3>
 <p>Use the <em>Get Node Metadata</em> command to retrieve commonly required 
information about a node.</p>
 
-<div class="highlight"><pre><code class="java"><span 
class="n">NodeMetadata</span> <span class="n">metadata</span> <span 
class="o">=</span> <span class="n">client</span><span class="o">.</span><span 
class="na">getNodeMetadata</span><span class="o">(</span><span 
class="n">node</span><span class="o">.</span><span class="na">getId</span><span 
class="o">());</span>
+<figure class="highlight"><pre><code class="language-java" 
data-lang="java"><span class="nc">NodeMetadata</span> <span 
class="n">metadata</span> <span class="o">=</span> <span 
class="n">client</span><span class="o">.</span><span 
class="na">getNodeMetadata</span><span class="o">(</span><span 
class="n">node</span><span class="o">.</span><span class="na">getId</span><span 
class="o">());</span>
 <span class="n">metadata</span><span class="o">.</span><span 
class="na">getId</span><span class="o">();</span>
 <span class="n">metadata</span><span class="o">.</span><span 
class="na">getProviderId</span><span class="o">();</span>
 <span class="n">metadata</span><span class="o">.</span><span 
class="na">getLocation</span><span class="o">();</span>
@@ -288,11 +271,9 @@ call the <em>Get Node Metadata</em> comm
 <span class="n">metadata</span><span class="o">.</span><span 
class="na">getState</span><span class="o">();</span>
 <span class="n">metadata</span><span class="o">.</span><span 
class="na">getPrivateAddresses</span><span class="o">();</span>
 <span class="n">metadata</span><span class="o">.</span><span 
class="na">getPublicAddresses</span><span class="o">();</span>
-<span class="n">metadata</span><span class="o">.</span><span 
class="na">getCredentials</span><span class="o">();</span><span class="c1">// 
only available after createNodesInGroup, identifies login user/credential</span>
-</code></pre></div>
+<span class="n">metadata</span><span class="o">.</span><span 
class="na">getCredentials</span><span class="o">();</span><span class="c1">// 
only available after createNodesInGroup, identifies login 
user/credential</span></code></pre></figure>
 
-
-<h3>List Assignable Locations</h3>
+<h3 id="list-assignable-locations">List Assignable Locations</h3>
 
 <p>The <em>List Assignable Location</em> command returns all the valid 
locations for nodes.
 The list locations command returns all the valid locations for nodes.
@@ -300,12 +281,9 @@ A location has a scope, which is typical
 like eu-west, where a zone is similar to a datacenter. If a location has a 
parent,
 that implies it is within that location. For example a location can be a rack, 
whose parent is likely to be a zone.</p>
 
-<div class="highlight"><pre><code class="java"><span class="n">Set</span><span 
class="o">&lt;?</span> <span class="kd">extends</span> <span 
class="n">Location</span><span class="o">&gt;</span> <span 
class="n">listAssignableLocations</span><span class="o">();</span>
-</code></pre></div>
-
-
-<h3>List Hardware Profiles</h3>
+<figure class="highlight"><pre><code class="language-java" 
data-lang="java"><span class="nc">Set</span><span class="o">&lt;?</span> <span 
class="kd">extends</span> <span class="nc">Location</span><span 
class="o">&gt;</span> <span class="nf">listAssignableLocations</span><span 
class="o">();</span></code></pre></figure>
 
+<h3 id="list-hardware-profiles">List Hardware Profiles</h3>
 <p>The <em>List Hardware Profiles</em> command returns settings including 
virtual CPU count, memory, and disks.</p>
 
 <p>CPU count is not a portable quantity across clouds, as they are The list 
hardware profiles
@@ -313,157 +291,125 @@ command shows you the options including
 a portable quantity across clouds, as they are measured differently. However, 
it is a good indicator of
  relative speed within a cloud. memory is measured in megabytes and disks in 
gigabytes.</p>
 
-<div class="highlight"><pre><code class="java"><span class="n">Set</span><span 
class="o">&lt;?</span> <span class="kd">extends</span> <span 
class="n">Hardware</span><span class="o">&gt;</span> <span 
class="n">listHardwareProfiles</span><span class="o">();</span>
-</code></pre></div>
-
-
-<h3>List Images</h3>
+<figure class="highlight"><pre><code class="language-java" 
data-lang="java"><span class="nc">Set</span><span class="o">&lt;?</span> <span 
class="kd">extends</span> <span class="nc">Hardware</span><span 
class="o">&gt;</span> <span class="nf">listHardwareProfiles</span><span 
class="o">();</span></code></pre></figure>
 
+<h3 id="list-images">List Images</h3>
 <p>The <em>List Images</em> command define the operating system and metadata 
related to a node.
 In some clouds, images are bound to a specific region, and their identifiers 
are different across regions.
 For this reason, you should consider matching image requirements like 
operating system family with TemplateBuilder as opposed to choosing an image 
explicitly.</p>
 
-<div class="highlight"><pre><code class="java">   <span 
class="n">Set</span><span class="o">&lt;?</span> <span 
class="kd">extends</span> <span class="n">Image</span><span 
class="o">&gt;</span> <span class="n">listImages</span><span 
class="o">();</span>
-</code></pre></div>
+<figure class="highlight"><pre><code class="language-java" data-lang="java">   
<span class="nc">Set</span><span class="o">&lt;?</span> <span 
class="kd">extends</span> <span class="nc">Image</span><span 
class="o">&gt;</span> <span class="nf">listImages</span><span 
class="o">();</span></code></pre></figure>
 
-
-<h3>Create Nodes with Group</h3>
+<h3 id="create-nodes-with-group">Create Nodes with Group</h3>
 
 <p>The compute API treats nodes as a group based on a group you specify. Using 
this group,
 you can choose to operate on one or many nodes as a logical unit without 
regard to the implementation details of the cloud.</p>
 
-<p><code>createNodesInGroup</code> returns all of the nodes the API was able 
to launch into in a running state with port 22 open.
+<p><code class="language-plaintext 
highlighter-rouge">createNodesInGroup</code> returns all of the nodes the API 
was able to launch into in a running state with port 22 open.
 If resources such as security groups are needed, they will be reused or 
created for you.
-Here's an example of how to start a nodeSet:</p>
-
-<div class="highlight"><pre><code class="java"><span class="n">NodeSet</span> 
<span class="n">nodes</span> <span class="o">=</span> <span 
class="n">client</span><span class="o">.</span><span 
class="na">createNodesInGroup</span><span class="o">(</span><span 
class="n">group</span><span class="o">,</span> <span class="mi">2</span><span 
class="o">,</span> <span class="n">template</span><span class="o">);</span>
-</code></pre></div>
+Here’s an example of how to start a nodeSet:</p>
 
+<figure class="highlight"><pre><code class="language-java" 
data-lang="java"><span class="nc">NodeSet</span> <span class="n">nodes</span> 
<span class="o">=</span> <span class="n">client</span><span 
class="o">.</span><span class="na">createNodesInGroup</span><span 
class="o">(</span><span class="n">group</span><span class="o">,</span> <span 
class="mi">2</span><span class="o">,</span> <span 
class="n">template</span><span class="o">);</span></code></pre></figure>
 
 <p>The set that is returned will include credentials you can use to ssh into 
the nodes.
-The "credential" part of the credentials is either a password or a private 
key. You have to inspect the value to determine this.
-Make sure you look also at the "identity" part of the credentials object so 
that you don't attempt to login as the wrong user.</p>
-
-<div class="highlight"><pre><code class="java"><span class="k">if</span> <span 
class="o">(</span><span class="n">node</span><span class="o">.</span><span 
class="na">getCredentials</span><span class="o">().</span><span 
class="na">credential</span><span class="o">.</span><span 
class="na">startsWith</span><span class="o">(</span><span 
class="s">&quot;-----BEGIN RSA PRIVATE KEY-----&quot;</span><span 
class="o">))</span>
- <span class="c1">// it is a private key, not a password.</span>
-</code></pre></div>
+The “credential” part of the credentials is either a password or a private 
key. You have to inspect the value to determine this.
+Make sure you look also at the “identity” part of the credentials object 
so that you don’t attempt to login as the wrong user.</p>
 
+<figure class="highlight"><pre><code class="language-java" 
data-lang="java"><span class="k">if</span> <span class="o">(</span><span 
class="n">node</span><span class="o">.</span><span 
class="na">getCredentials</span><span class="o">().</span><span 
class="na">credential</span><span class="o">.</span><span 
class="na">startsWith</span><span class="o">(</span><span class="s">"-----BEGIN 
RSA PRIVATE KEY-----"</span><span class="o">))</span>
+ <span class="c1">// it is a private key, not a 
password.</span></code></pre></figure>
 
 <p>Note: If all you want to do is execute a script at bootup, you should 
consider use of the runScript option.</p>
 
-<h3>Predicate Commands</h3>
-
-<p>Commands ending in <code>Matching</code> allow you to decide which subset 
of nodes you want to affect.
+<h3 id="predicate-commands">Predicate Commands</h3>
+<p>Commands ending in <code class="language-plaintext 
highlighter-rouge">Matching</code> allow you to decide which subset of nodes 
you want to affect.
 All predicate commands are run in parallel for highest efficiency.</p>
 
-<h4>Example Predicates</h4>
+<h4 id="example-predicates">Example Predicates</h4>
 
-<p>There are a number of predicates in the <code>NodePredicates</code> class.  
Here are a few combinations that you may find interesting:</p>
+<p>There are a number of predicates in the <code class="language-plaintext 
highlighter-rouge">NodePredicates</code> class.  Here are a few combinations 
that you may find interesting:</p>
 
 <ul>
-<li><code>runningInGroup(group)</code> - affect any nodes that are already 
running, refined to a specific group</li>
+  <li><code class="language-plaintext 
highlighter-rouge">runningInGroup(group)</code> - affect any nodes that are 
already running, refined to a specific group</li>
 </ul>
 
-
-<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">compute</span><span class="o">.</span><span 
class="na">predicates</span><span class="o">.</span><span 
class="na">NodePredicates</span><span class="o">.</span><span 
class="na">runningInGroup</span><span class="o">;</span>
+<figure class="highlight"><pre><code class="language-java" 
data-lang="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">compute</span><span class="o">.</span><span 
class="na">predicates</span><span class="o">.</span><span 
class="na">NodePredicates</span><span class="o">.</span><span 
class="na">runningInGroup</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">compute</span><span class="o">.</span><span 
class="na">options</span><span class="o">.</span><span 
class="na">RunScriptOptions</span><span class="o">.</span><span 
class="na">Builder</span><span class="o">.</span><span 
class="na">overrideCredentialsWith</span><span class="o">;</span>
 
-<span class="n">Map</span><span class="o">&lt;?</span> <span 
class="kd">extends</span> <span class="n">NodeMetadata</span><span 
class="o">,</span> <span class="n">ExecResponse</span><span 
class="o">&gt;</span>  <span class="n">responses</span> <span 
class="o">=</span> <span class="n">client</span><span class="o">.</span><span 
class="na">runScriptOnNodesMatching</span><span class="o">(</span><span 
class="n">runningInGroup</span><span class="o">(</span><span 
class="n">group</span><span class="o">),</span> <span 
class="n">script</span><span class="o">,</span>
-                  <span class="n">overrideCredentialsWith</span><span 
class="o">(</span><span class="n">creds</span><span class="o">));</span>
-</code></pre></div>
-
+<span class="nc">Map</span><span class="o">&lt;?</span> <span 
class="kd">extends</span> <span class="nc">NodeMetadata</span><span 
class="o">,</span> <span class="nc">ExecResponse</span><span 
class="o">&gt;</span>  <span class="n">responses</span> <span 
class="o">=</span> <span class="n">client</span><span class="o">.</span><span 
class="na">runScriptOnNodesMatching</span><span class="o">(</span><span 
class="n">runningInGroup</span><span class="o">(</span><span 
class="n">group</span><span class="o">),</span> <span 
class="n">script</span><span class="o">,</span>
+                  <span class="n">overrideCredentialsWith</span><span 
class="o">(</span><span class="n">creds</span><span 
class="o">));</span></code></pre></figure>
 
 <ul>
-<li><code>and(withGroup(group), not(TERMINATED))</code> match everything that 
has a group, but not destroyed.</li>
+  <li><code class="language-plaintext highlighter-rouge">and(withGroup(group), 
not(TERMINATED))</code> match everything that has a group, but not 
destroyed.</li>
 </ul>
 
-
-<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">base</span><span class="o">.</span><span 
class="na">Predicates</span><span class="o">.*;</span>
+<figure class="highlight"><pre><code class="language-java" 
data-lang="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">base</span><span class="o">.</span><span 
class="na">Predicates</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">compute</span><span class="o">.</span><span 
class="na">predicates</span><span class="o">.</span><span 
class="na">NodePredicates</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">collect</span><span class="o">.</span><span 
class="na">Iterables</span><span class="o">.*;</span>
 
-<span class="n">Iterable</span><span class="o">&lt;?</span> <span 
class="kd">extends</span> <span class="n">NodeMetadata</span><span 
class="o">&gt;</span> <span class="n">billedNodes</span> <span 
class="o">=</span> <span class="n">filter</span><span class="o">(</span><span 
class="n">client</span><span class="o">.</span><span 
class="na">listNodesDetailsMatching</span><span class="o">(</span><span 
class="n">all</span><span class="o">()),</span> <span class="n">and</span><span 
class="o">(</span><span class="n">withGroup</span><span class="o">(</span><span 
class="n">group</span><span class="o">),</span> <span class="n">not</span><span 
class="o">(</span><span class="n">TERMINATED</span><span class="o">))));</span>
-</code></pre></div>
-
+<span class="nc">Iterable</span><span class="o">&lt;?</span> <span 
class="kd">extends</span> <span class="nc">NodeMetadata</span><span 
class="o">&gt;</span> <span class="n">billedNodes</span> <span 
class="o">=</span> <span class="n">filter</span><span class="o">(</span><span 
class="n">client</span><span class="o">.</span><span 
class="na">listNodesDetailsMatching</span><span class="o">(</span><span 
class="n">all</span><span class="o">()),</span> <span class="n">and</span><span 
class="o">(</span><span class="n">withGroup</span><span class="o">(</span><span 
class="n">group</span><span class="o">),</span> <span class="n">not</span><span 
class="o">(</span><span class="no">TERMINATED</span><span 
class="o">))));</span></code></pre></figure>
 
-<h4>Commands</h4>
+<h4 id="commands">Commands</h4>
 
-<h5>Destroy Nodes Matching Predicate</h5>
+<h5 id="destroy-nodes-matching-predicate">Destroy Nodes Matching Predicate</h5>
 
 <p>nodes matching the filter are destroyed as a logical set.
-When the last node in a set is destroyed, any indirect resources it uses, such 
as keypairs, are also destroyed.  Ex. here's how to destroy all nodes with a 
specific group:</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">compute</span><span class="o">.</span><span 
class="na">predicates</span><span class="o">.</span><span 
class="na">NodePredicates</span><span class="o">.*;</span>
-   <span class="n">client</span><span class="o">.</span><span 
class="na">destroyNodesMatching</span><span class="o">(</span><span 
class="n">withGroup</span><span class="o">(</span><span 
class="n">group</span><span class="o">));</span>
-</code></pre></div>
-
+When the last node in a set is destroyed, any indirect resources it uses, such 
as keypairs, are also destroyed.  Ex. here’s how to destroy all nodes with a 
specific group:</p>
 
-<h5>Reboot Nodes Matching Predicate</h5>
+<figure class="highlight"><pre><code class="language-java" 
data-lang="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">compute</span><span class="o">.</span><span 
class="na">predicates</span><span class="o">.</span><span 
class="na">NodePredicates</span><span class="o">.*;</span>
+   <span class="n">client</span><span class="o">.</span><span 
class="na">destroyNodesMatching</span><span class="o">(</span><span 
class="n">withGroup</span><span class="o">(</span><span 
class="n">group</span><span class="o">));</span></code></pre></figure>
 
-<p>Ex. here's how to reboot all nodes with a specific group:</p>
+<h5 id="reboot-nodes-matching-predicate">Reboot Nodes Matching Predicate</h5>
+<p>Ex. here’s how to reboot all nodes with a specific group:</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">compute</span><span class="o">.</span><span 
class="na">predicates</span><span class="o">.</span><span 
class="na">NodePredicates</span><span class="o">.*;</span>
-   <span class="n">client</span><span class="o">.</span><span 
class="na">rebootNodesMatching</span><span class="o">(</span><span 
class="n">withGroup</span><span class="o">(</span><span 
class="n">group</span><span class="o">));</span>
-</code></pre></div>
+<figure class="highlight"><pre><code class="language-java" 
data-lang="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">compute</span><span class="o">.</span><span 
class="na">predicates</span><span class="o">.</span><span 
class="na">NodePredicates</span><span class="o">.*;</span>
+   <span class="n">client</span><span class="o">.</span><span 
class="na">rebootNodesMatching</span><span class="o">(</span><span 
class="n">withGroup</span><span class="o">(</span><span 
class="n">group</span><span class="o">));</span></code></pre></figure>
 
+<h5 id="run-script-on-nodes-matching-predicate">Run Script on Nodes Matching 
Predicate</h5>
+<p>Here’s how to run a script on all nodes as root with the credentials that 
they were created with.</p>
 
-<h5>Run Script on Nodes Matching Predicate</h5>
+<figure class="highlight"><pre><code class="language-java" 
data-lang="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">compute</span><span class="o">.</span><span 
class="na">predicates</span><span class="o">.</span><span 
class="na">NodePredicates</span><span class="o">.</span><span 
class="na">runningInGroup</span><span class="o">;</span>
 
-<p>Here's how to run a script on all nodes as root with the credentials that 
they were created with.</p>
+<span class="n">responses</span> <span class="o">=</span> <span 
class="n">client</span><span class="o">.</span><span 
class="na">runScriptOnNodesMatching</span><span class="o">(</span><span 
class="n">runningInGroup</span><span class="o">(</span><span 
class="n">group</span><span class="o">),</span> <span 
class="n">script</span><span class="o">);</span></code></pre></figure>
 
-<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">compute</span><span class="o">.</span><span 
class="na">predicates</span><span class="o">.</span><span 
class="na">NodePredicates</span><span class="o">.</span><span 
class="na">runningInGroup</span><span class="o">;</span>
-
-<span class="n">responses</span> <span class="o">=</span> <span 
class="n">client</span><span class="o">.</span><span 
class="na">runScriptOnNodesMatching</span><span class="o">(</span><span 
class="n">runningInGroup</span><span class="o">(</span><span 
class="n">group</span><span class="o">),</span> <span 
class="n">script</span><span class="o">);</span>
-</code></pre></div>
-
-
-<p>If you created your nodes using the <code>authorizePublicKey</code> option, 
then you are probably interested in using that again here.
+<p>If you created your nodes using the <code class="language-plaintext 
highlighter-rouge">authorizePublicKey</code> option, then you are probably 
interested in using that again here.
 However, you should always look up the login user associated with the host, as 
it may not be root.</p>
 
 <p><em>Note</em> if you think this should change, please file an issue.  For 
example, we could in the future create a
 sudo-able login user on the nodes, simplifying this process.</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">compute</span><span class="o">.</span><span 
class="na">predicates</span><span class="o">.</span><span 
class="na">NodePredicates</span><span class="o">.</span><span 
class="na">runningInGroup</span><span class="o">;</span>
+<figure class="highlight"><pre><code class="language-java" 
data-lang="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">compute</span><span class="o">.</span><span 
class="na">predicates</span><span class="o">.</span><span 
class="na">NodePredicates</span><span class="o">.</span><span 
class="na">runningInGroup</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">compute</span><span class="o">.</span><span 
class="na">options</span><span class="o">.</span><span 
class="na">RunScriptOptions</span><span class="o">.</span><span 
class="na">Builder</span><span class="o">.</span><span 
class="na">overrideCredentialsWith</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">compute</span><span class="o">.</span><span 
class="na">options</span><span class="o">.</span><span 
class="na">TemplateOptions</span><span class="o">.</span><span 
class="na">Builder</span><span class="o">.</span><span 
class="na">authorizePublicKey</span><span class="o">;</span>
 
 <span class="n">nodes</span> <span class="o">=</span> <span 
class="n">client</span><span class="o">.</span><span 
class="na">createNodesInGroup</span><span class="o">(</span><span 
class="n">group</span><span class="o">,</span> <span class="mi">1</span><span 
class="o">,</span> <span class="n">authorizePublicKey</span><span 
class="o">(</span><span class="n">myKey</span><span class="o">));</span>
-<span class="n">Credentials</span> <span class="n">good</span> <span 
class="o">=</span> <span class="n">nodes</span><span class="o">.</span><span 
class="na">iterator</span><span class="o">().</span><span 
class="na">next</span><span class="o">().</span><span 
class="na">getCredentials</span><span class="o">();</span>
+<span class="nc">Credentials</span> <span class="n">good</span> <span 
class="o">=</span> <span class="n">nodes</span><span class="o">.</span><span 
class="na">iterator</span><span class="o">().</span><span 
class="na">next</span><span class="o">().</span><span 
class="na">getCredentials</span><span class="o">();</span>
 
 <span class="c1">// save this off</span>
 <span class="n">loginUser</span> <span class="o">=</span> <span 
class="n">good</span><span class="o">.</span><span 
class="na">identity</span><span class="o">;</span>
 
 <span class="c1">// later, you will use your key with the default login 
user</span>
 <span class="n">responses</span> <span class="o">=</span> <span 
class="n">client</span><span class="o">.</span><span 
class="na">runScriptOnNodesMatching</span><span class="o">(</span><span 
class="n">runningInGroup</span><span class="o">(</span><span 
class="n">group</span><span class="o">),</span> <span 
class="n">script</span><span class="o">,</span>
-                  <span class="n">overrideCredentialsWith</span><span 
class="o">(</span><span class="k">new</span> <span 
class="n">Credentials</span><span class="o">(</span><span 
class="n">loginUser</span><span class="o">,</span> <span 
class="n">myKey</span><span class="o">));</span>
-</code></pre></div>
-
+                  <span class="n">overrideCredentialsWith</span><span 
class="o">(</span><span class="k">new</span> <span 
class="nc">Credentials</span><span class="o">(</span><span 
class="n">loginUser</span><span class="o">,</span> <span 
class="n">myKey</span><span class="o">));</span></code></pre></figure>
 
-<h3>Individual Node Commands</h3>
+<h3 id="individual-node-commands">Individual Node Commands</h3>
+<p>Individual commands are executed against a specific node’s <code 
class="language-plaintext highlighter-rouge">id</code> (not <code 
class="language-plaintext highlighter-rouge">providerId</code>!).
+You can save time if you know you are only affecting one node, and don’t 
need jclouds’ help finding it.</p>
 
-<p>Individual commands are executed against a specific node's <code>id</code> 
(not <code>providerId</code>!).
-You can save time if you know you are only affecting one node, and don't need 
jclouds' help finding it.</p>
+<h4 id="commands-1">Commands</h4>
+<h5 id="get-node-metadata-1">Get Node Metadata</h5>
 
-<h4>Commands</h4>
+<p>If you save a node’s id to disk, you can inflate it later without 
querying by using the <code class="language-plaintext 
highlighter-rouge">getNodeMetadata</code> command.</p>
 
-<h5>Get Node Metadata</h5>
+<figure class="highlight"><pre><code class="language-java" 
data-lang="java"><span class="nc">NodeMetadata</span> <span 
class="n">metadata</span> <span class="o">=</span> <span 
class="n">client</span><span class="o">.</span><span 
class="na">getNodeMetadata</span><span class="o">(</span><span 
class="n">savedId</span><span class="o">);</span></code></pre></figure>
 
-<p>If you save a node's id to disk, you can inflate it later without querying 
by using the <code>getNodeMetadata</code> command.</p>
+<h5 id="destroy-node">Destroy Node</h5>
+<h5 id="reboot-node">Reboot Node</h5>
 
-<div class="highlight"><pre><code class="java"><span 
class="n">NodeMetadata</span> <span class="n">metadata</span> <span 
class="o">=</span> <span class="n">client</span><span class="o">.</span><span 
class="na">getNodeMetadata</span><span class="o">(</span><span 
class="n">savedId</span><span class="o">);</span>
-</code></pre></div>
+<h3 id="logging">Logging</h3>
+<p>You can now see status of compute commands by enabling at least DEBUG on 
the log category: “jclouds.compute”.  Here is example output:</p>
 
-
-<h5>Destroy Node</h5>
-
-<h5>Reboot Node</h5>
-
-<h3>Logging</h3>
-
-<p>You can now see status of compute commands by enabling at least DEBUG on 
the log category: "jclouds.compute".  Here is example output:</p>
-
-<div class="highlight"><pre><code class="text">2010-02-06 09:43:54,985 DEBUG 
[jclouds.compute] (main) &gt;&gt; providing images
-2010-02-06 09:44:01,186 DEBUG [jclouds.compute] (main) &lt;&lt; didn&#39;t 
match os(folding)
+<figure class="highlight"><pre><code class="language-text" 
data-lang="text">2010-02-06 09:43:54,985 DEBUG [jclouds.compute] (main) 
&gt;&gt; providing images
+2010-02-06 09:44:01,186 DEBUG [jclouds.compute] (main) &lt;&lt; didn't match 
os(folding)
 2010-02-06 09:44:01,642 DEBUG [jclouds.compute] (main) &lt;&lt; images(614)
 2010-02-06 09:44:01,672 DEBUG [jclouds.compute] (main) &gt;&gt; terminating 
servers by group(ec2)
 2010-02-06 09:44:03,314 DEBUG [jclouds.compute] (main) &lt;&lt; destroyed
@@ -478,288 +424,247 @@ You can save time if you know you are on
 2010-02-06 09:44:07,243 DEBUG [jclouds.compute] (main) &gt;&gt; authorizing 
securityGroup region(us-east-1) name(ec2) port(22)
 2010-02-06 09:44:07,824 DEBUG [jclouds.compute] (main) &lt;&lt; authorized 
securityGroup(ec2)
 2010-02-06 09:44:07,828 DEBUG [jclouds.compute] (main) &gt;&gt; running 2 
instance region(us-east-1) zone(null) ami(ami-87a243ee) type(m1.large) 
keyPair(ec2) securityGroup(ec2)
-2010-02-06 09:44:09,239 DEBUG [jclouds.compute] (main) &lt;&lt; started 
instances(i-7c180614,i-7e180616)
-</code></pre></div>
-
+2010-02-06 09:44:09,239 DEBUG [jclouds.compute] (main) &lt;&lt; started 
instances(i-7c180614,i-7e180616)</code></pre></figure>
 
 <p>If you are using the Log4JLoggingModule, here is an example log4j.xml 
stanza you can use to enable compute logging:</p>
 
-<div class="highlight"><pre><code class="xml"><span 
class="nt">&lt;appender</span> <span class="na">name=</span><span 
class="s">&quot;COMPUTEFILE&quot;</span> <span class="na">class=</span><span 
class="s">&quot;org.apache.log4j.DailyRollingFileAppender&quot;</span><span 
class="nt">&gt;</span>
-     <span class="nt">&lt;param</span> <span class="na">name=</span><span 
class="s">&quot;File&quot;</span> <span class="na">value=</span><span 
class="s">&quot;logs/jclouds-compute.log&quot;</span> <span 
class="nt">/&gt;</span>
-     <span class="nt">&lt;param</span> <span class="na">name=</span><span 
class="s">&quot;Append&quot;</span> <span class="na">value=</span><span 
class="s">&quot;true&quot;</span> <span class="nt">/&gt;</span>
-     <span class="nt">&lt;param</span> <span class="na">name=</span><span 
class="s">&quot;DatePattern&quot;</span> <span class="na">value=</span><span 
class="s">&quot;&#39;.&#39;yyyy-MM-dd&quot;</span> <span class="nt">/&gt;</span>
-     <span class="nt">&lt;param</span> <span class="na">name=</span><span 
class="s">&quot;Threshold&quot;</span> <span class="na">value=</span><span 
class="s">&quot;TRACE&quot;</span> <span class="nt">/&gt;</span>
-     <span class="nt">&lt;layout</span> <span class="na">class=</span><span 
class="s">&quot;org.apache.log4j.PatternLayout&quot;</span><span 
class="nt">&gt;</span>
-         <span class="nt">&lt;param</span> <span class="na">name=</span><span 
class="s">&quot;ConversionPattern&quot;</span> <span 
class="na">value=</span><span class="s">&quot;%d %-5p [%c] (%t) 
%m%n&quot;</span> <span class="nt">/&gt;</span>
+<figure class="highlight"><pre><code class="language-xml" 
data-lang="xml"><span class="nt">&lt;appender</span> <span 
class="na">name=</span><span class="s">"COMPUTEFILE"</span> <span 
class="na">class=</span><span 
class="s">"org.apache.log4j.DailyRollingFileAppender"</span><span 
class="nt">&gt;</span>
+     <span class="nt">&lt;param</span> <span class="na">name=</span><span 
class="s">"File"</span> <span class="na">value=</span><span 
class="s">"logs/jclouds-compute.log"</span> <span class="nt">/&gt;</span>
+     <span class="nt">&lt;param</span> <span class="na">name=</span><span 
class="s">"Append"</span> <span class="na">value=</span><span 
class="s">"true"</span> <span class="nt">/&gt;</span>
+     <span class="nt">&lt;param</span> <span class="na">name=</span><span 
class="s">"DatePattern"</span> <span class="na">value=</span><span 
class="s">"'.'yyyy-MM-dd"</span> <span class="nt">/&gt;</span>
+     <span class="nt">&lt;param</span> <span class="na">name=</span><span 
class="s">"Threshold"</span> <span class="na">value=</span><span 
class="s">"TRACE"</span> <span class="nt">/&gt;</span>
+     <span class="nt">&lt;layout</span> <span class="na">class=</span><span 
class="s">"org.apache.log4j.PatternLayout"</span><span class="nt">&gt;</span>
+         <span class="nt">&lt;param</span> <span class="na">name=</span><span 
class="s">"ConversionPattern"</span> <span class="na">value=</span><span 
class="s">"%d %-5p [%c] (%t) %m%n"</span> <span class="nt">/&gt;</span>
      <span class="nt">&lt;/layout&gt;</span>
 <span class="nt">&lt;/appender&gt;</span>
 
-<span class="nt">&lt;appender</span> <span class="na">name=</span><span 
class="s">&quot;ASYNCCOMPUTE&quot;</span> <span class="na">class=</span><span 
class="s">&quot;org.apache.log4j.AsyncAppender&quot;</span><span 
class="nt">&gt;</span>
-     <span class="nt">&lt;appender-ref</span> <span 
class="na">ref=</span><span class="s">&quot;COMPUTEFILE&quot;</span> <span 
class="nt">/&gt;</span>
+<span class="nt">&lt;appender</span> <span class="na">name=</span><span 
class="s">"ASYNCCOMPUTE"</span> <span class="na">class=</span><span 
class="s">"org.apache.log4j.AsyncAppender"</span><span class="nt">&gt;</span>
+     <span class="nt">&lt;appender-ref</span> <span 
class="na">ref=</span><span class="s">"COMPUTEFILE"</span> <span 
class="nt">/&gt;</span>
 <span class="nt">&lt;/appender&gt;</span>
 
-<span class="nt">&lt;category</span> <span class="na">name=</span><span 
class="s">&quot;jclouds.compute&quot;</span><span class="nt">&gt;</span>
-     <span class="nt">&lt;priority</span> <span class="na">value=</span><span 
class="s">&quot;TRACE&quot;</span> <span class="nt">/&gt;</span>
-     <span class="nt">&lt;appender-ref</span> <span 
class="na">ref=</span><span class="s">&quot;ASYNCCOMPUTE&quot;</span> <span 
class="nt">/&gt;</span>
-<span class="nt">&lt;/category&gt;</span>
-</code></pre></div>
-
-
-<h2>Advanced Usage</h2>
+<span class="nt">&lt;category</span> <span class="na">name=</span><span 
class="s">"jclouds.compute"</span><span class="nt">&gt;</span>
+     <span class="nt">&lt;priority</span> <span class="na">value=</span><span 
class="s">"TRACE"</span> <span class="nt">/&gt;</span>
+     <span class="nt">&lt;appender-ref</span> <span 
class="na">ref=</span><span class="s">"ASYNCCOMPUTE"</span> <span 
class="nt">/&gt;</span>
+<span class="nt">&lt;/category&gt;</span></code></pre></figure>
 
+<h2 id="advanced-usage">Advanced Usage</h2>
 <p>Almost all advanced features require ssh.  You will likely also want to use 
log4j and our
-enterprise configuration module.  Here's how to configure these.</p>
+enterprise configuration module.  Here’s how to configure these.</p>
 
-<div class="highlight"><pre><code class="java"><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">Set</span><span class="o">&lt;</span><span 
class="n">Module</span><span class="o">&gt;</span> <span 
class="n">wiring</span> <span class="o">=</span> <span 
class="n">ImmutableSet</span><span class="o">.</span><span 
class="na">of</span><span class="o">(</span><span class="k">new</span> <span 
class="n">JschSshClientModule</span><span class="o">(),</span> <span 
class="k">new</span> <span class="n">Log4JLoggingModule</span><span 
class="o">(),</span> <span class="k">new</span> <span 
class="n">EnterpriseConfigurationModule</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="s">&quot;trmk-ecloud&quot;</span><span 
class="o">)</span>
+<figure class="highlight"><pre><code class="language-java" 
data-lang="java"><span class="nc">Properties</span> <span 
class="n">overrides</span> <span class="o">=</span> <span class="k">new</span> 
<span class="nc">Properties</span><span class="o">();</span>
+<span class="nc">Set</span><span class="o">&lt;</span><span 
class="nc">Module</span><span class="o">&gt;</span> <span 
class="n">wiring</span> <span class="o">=</span> <span 
class="nc">ImmutableSet</span><span class="o">.</span><span 
class="na">of</span><span class="o">(</span><span class="k">new</span> <span 
class="nc">JschSshClientModule</span><span class="o">(),</span> <span 
class="k">new</span> <span class="nc">Log4JLoggingModule</span><span 
class="o">(),</span> <span class="k">new</span> <span 
class="nc">EnterpriseConfigurationModule</span><span class="o">());</span>
+<span class="nc">ComputeServiceContext</span> <span class="n">context</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">"trmk-ecloud"</span><span class="o">)</span>
                       <span class="o">.</span><span 
class="na">credentials</span><span class="o">(</span><span 
class="n">user</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">wiring</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>
-</code></pre></div>
-
+                      <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></code></pre></figure>
 
 <p>For mode information, check out the [[jcloudsAPI]] wiki page.</p>
 
-<h3>Uploading binary files to the node</h3>
+<h3 id="uploading-binary-files-to-the-node">Uploading binary files to the 
node</h3>
 
-<p>You'll need to get an ssh client for the node in order to upload files in 
the current version of jclouds.</p>
+<p>You’ll need to get an ssh client for the node in order to upload files in 
the current version of jclouds.</p>
 
 <p>if you just created the node, it will have login credentials set in 
node.getCredentials().  Ask for an ssh client based on the node.</p>
 
-<div class="highlight"><pre><code class="java"><span class="n">client</span> 
<span class="o">=</span> <span class="n">context</span><span 
class="o">.</span><span class="na">utils</span><span class="o">().</span><span 
class="na">sshForNode</span><span class="o">().</span><span 
class="na">apply</span><span class="o">(</span><span class="n">node</span><span 
class="o">);</span>
-</code></pre></div>
+<figure class="highlight"><pre><code class="language-java" 
data-lang="java"><span class="n">client</span> <span class="o">=</span> <span 
class="n">context</span><span class="o">.</span><span 
class="na">utils</span><span class="o">().</span><span 
class="na">sshForNode</span><span class="o">().</span><span 
class="na">apply</span><span class="o">(</span><span class="n">node</span><span 
class="o">);</span></code></pre></figure>
 
+<p>if the node’s credentials aren’t set, you’ll have to assign them 
first.</p>
 
-<p>if the node's credentials aren't set, you'll have to assign them first.</p>
-
-<div class="highlight"><pre><code class="java"><span class="n">client</span> 
<span class="o">=</span> <span class="n">context</span><span 
class="o">.</span><span class="na">utils</span><span class="o">().</span><span 
class="na">sshForNode</span><span class="o">().</span><span 
class="na">apply</span><span class="o">(</span><span 
class="n">NodeMetadataBuilder</span><span class="o">.</span><span 
class="na">fromNodeMetadata</span><span class="o">(</span><span 
class="n">node</span><span class="o">).</span><span 
class="na">credentials</span><span class="o">(</span>
-                       <span class="k">new</span> <span 
class="nf">Credentials</span><span class="o">(</span><span 
class="s">&quot;adrian&quot;</span><span class="o">,</span><span 
class="n">sshKeyInString</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">client</span> <span class="o">=</span> <span 
class="n">context</span><span class="o">.</span><span 
class="na">utils</span><span class="o">().</span><span 
class="na">sshForNode</span><span class="o">().</span><span 
class="na">apply</span><span class="o">(</span><span 
class="nc">NodeMetadataBuilder</span><span class="o">.</span><span 
class="na">fromNodeMetadata</span><span class="o">(</span><span 
class="n">node</span><span class="o">).</span><span 
class="na">credentials</span><span class="o">(</span>
+                          <span class="k">new</span> <span 
class="nf">Credentials</span><span class="o">(</span><span 
class="s">"adrian"</span><span class="o">,</span><span 
class="n">sshKeyInString</span><span class="o">)).</span><span 
class="na">build</span><span class="o">());</span></code></pre></figure>
 
 <p>Once you have the client, you can push files to it</p>
 
-<div class="highlight"><pre><code class="java"><span 
class="n">client</span><span class="o">.</span><span class="na">put</span><span 
class="o">(</span><span class="s">&quot;/path/to/file&quot;</span><span 
class="o">,</span> <span class="n">Payloads</span><span class="o">.</span><span 
class="na">newFilePayload</span><span class="o">(</span><span 
class="n">contents</span><span class="o">));</span>
-</code></pre></div>
+<figure class="highlight"><pre><code class="language-java" 
data-lang="java"><span class="n">client</span><span class="o">.</span><span 
class="na">put</span><span class="o">(</span><span 
class="s">"/path/to/file"</span><span class="o">,</span> <span 
class="nc">Payloads</span><span class="o">.</span><span 
class="na">newFilePayload</span><span class="o">(</span><span 
class="n">contents</span><span class="o">));</span></code></pre></figure>
 
+<p>Here’s a full example:</p>
 
-<p>Here's a full example:</p>
-
-<div class="highlight"><pre><code class="java">      <span 
class="n">SshClient</span> <span class="n">ssh</span> <span class="o">=</span> 
<span class="n">context</span><span class="o">.</span><span 
class="na">utils</span><span class="o">().</span><span 
class="na">sshForNode</span><span class="o">().</span><span 
class="na">apply</span><span class="o">(</span><span class="n">node</span><span 
class="o">);</span>
+<figure class="highlight"><pre><code class="language-java" data-lang="java">   
   <span class="nc">SshClient</span> <span class="n">ssh</span> <span 
class="o">=</span> <span class="n">context</span><span class="o">.</span><span 
class="na">utils</span><span class="o">().</span><span 
class="na">sshForNode</span><span class="o">().</span><span 
class="na">apply</span><span class="o">(</span><span class="n">node</span><span 
class="o">);</span>
       <span class="k">try</span> <span class="o">{</span>
          <span class="n">ssh</span><span class="o">.</span><span 
class="na">connect</span><span class="o">();</span>
-         <span class="n">ssh</span><span class="o">.</span><span 
class="na">put</span><span class="o">(</span><span 
class="s">&quot;/path/to/file&quot;</span><span class="o">,</span>
-<span class="n">Payloads</span><span class="o">.</span><span 
class="na">newPayload</span><span class="o">(</span><span 
class="n">fileOrInputStreamOrBytesOrString</span><span class="o">));</span>
+         <span class="n">ssh</span><span class="o">.</span><span 
class="na">put</span><span class="o">(</span><span 
class="s">"/path/to/file"</span><span class="o">,</span>
+<span class="nc">Payloads</span><span class="o">.</span><span 
class="na">newPayload</span><span class="o">(</span><span 
class="n">fileOrInputStreamOrBytesOrString</span><span class="o">));</span>
       <span class="o">}</span> <span class="k">finally</span> <span 
class="o">{</span>
          <span class="k">if</span> <span class="o">(</span><span 
class="n">ssh</span> <span class="o">!=</span> <span 
class="kc">null</span><span class="o">)</span>
             <span class="n">ssh</span><span class="o">.</span><span 
class="na">disconnect</span><span class="o">();</span>
-      <span class="o">}</span>
-</code></pre></div>
-
+      <span class="o">}</span></code></pre></figure>
 
-<h3>Selecting a correct package manager</h3>
+<h3 id="selecting-a-correct-package-manager">Selecting a correct package 
manager</h3>
 
-<p>Below, you'll see how you can consolidate bootstrap instructions when 
empowered with an operating system type.
- No more listing the dozen flavors of compatible unix's when all you're really 
concerned about is the package manager:</p>
+<p>Below, you’ll see how you can consolidate bootstrap instructions when 
empowered with an operating system type.
+ No more listing the dozen flavors of compatible unix’s when all you’re 
really concerned about is the package manager:</p>
 
-<div class="highlight"><pre><code class="java"><span class="k">if</span> <span 
class="o">(</span><span class="n">OperatingSystemPredicates</span><span 
class="o">.</span><span class="na">supportsApt</span><span 
class="o">().</span><span class="na">apply</span><span class="o">(</span><span 
class="n">os</span><span class="o">))</span>
-  <span class="k">return</span> <span class="n">RunScriptData</span><span 
class="o">.</span><span class="na">APT_RUN_SCRIPT</span><span class="o">;</span>
-<span class="k">else</span> <span class="nf">if</span> <span 
class="o">(</span><span class="n">OperatingSystemPredicates</span><span 
class="o">.</span><span class="na">supportsYum</span><span 
class="o">().</span><span class="na">apply</span><span class="o">(</span><span 
class="n">os</span><span class="o">))</span>
-  <span class="k">return</span> <span class="n">RunScriptData</span><span 
class="o">.</span><span class="na">YUM_RUN_SCRIPT</span>
-<span class="k">else</span> <span class="nf">if</span> <span 
class="o">(</span><span class="n">OperatingSystemPredicates</span><span 
class="o">.</span><span class="na">supportsZypper</span><span 
class="o">().</span><span class="na">apply</span><span class="o">(</span><span 
class="n">os</span><span class="o">))</span>
-  <span class="k">return</span> <span class="n">RunScriptData</span><span 
class="o">.</span><span class="na">ZYPPER_RUN_SCRIPT</span><span 
class="o">;</span>
+<figure class="highlight"><pre><code class="language-java" 
data-lang="java"><span class="k">if</span> <span class="o">(</span><span 
class="nc">OperatingSystemPredicates</span><span class="o">.</span><span 
class="na">supportsApt</span><span class="o">().</span><span 
class="na">apply</span><span class="o">(</span><span class="n">os</span><span 
class="o">))</span>
+  <span class="k">return</span> <span class="nc">RunScriptData</span><span 
class="o">.</span><span class="na">APT_RUN_SCRIPT</span><span class="o">;</span>
+<span class="k">else</span> <span class="nf">if</span> <span 
class="o">(</span><span class="nc">OperatingSystemPredicates</span><span 
class="o">.</span><span class="na">supportsYum</span><span 
class="o">().</span><span class="na">apply</span><span class="o">(</span><span 
class="n">os</span><span class="o">))</span>
+  <span class="k">return</span> <span class="nc">RunScriptData</span><span 
class="o">.</span><span class="na">YUM_RUN_SCRIPT</span>
+<span class="k">else</span> <span class="nf">if</span> <span 
class="o">(</span><span class="nc">OperatingSystemPredicates</span><span 
class="o">.</span><span class="na">supportsZypper</span><span 
class="o">().</span><span class="na">apply</span><span class="o">(</span><span 
class="n">os</span><span class="o">))</span>
+  <span class="k">return</span> <span class="nc">RunScriptData</span><span 
class="o">.</span><span class="na">ZYPPER_RUN_SCRIPT</span><span 
class="o">;</span>
 <span class="k">else</span>
-  <span class="k">throw</span> <span class="k">new</span> <span 
class="nf">IllegalArgumentException</span><span class="o">(</span><span 
class="s">&quot;don&#39;t know how to handle&quot;</span> <span 
class="o">+</span> <span class="n">os</span><span class="o">.</span><span 
class="na">toString</span><span class="o">());</span>
-</code></pre></div>
-
-
-<h3>Opening ports</h3>
+  <span class="k">throw</span> <span class="k">new</span> <span 
class="nf">IllegalArgumentException</span><span class="o">(</span><span 
class="s">"don't know how to handle"</span> <span class="o">+</span> <span 
class="n">os</span><span class="o">.</span><span 
class="na">toString</span><span class="o">());</span></code></pre></figure>
 
+<h3 id="opening-ports">Opening ports</h3>
 <p>Unless you specify otherwise, only access to public IP on port 22 is 
explicitly configured.
-In clouds such as hosting.com and Rackspace, this doesn't matter, as all 
services are available by default.
+In clouds such as hosting.com and Rackspace, this doesn’t matter, as all 
services are available by default.
 However, in clouds like Terremark and EC2, you will want to open at least 1 
additional port most of the time.
-Here's how:</p>
+Here’s how:</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">compute</span><span class="o">.</span><span 
class="na">options</span><span class="o">.</span><span 
class="na">TemplateOptions</span><span class="o">.</span><span 
class="na">Builder</span><span class="o">.</span><span 
class="na">inboundPorts</span><span class="o">;</span>
+<figure class="highlight"><pre><code class="language-java" 
data-lang="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">compute</span><span class="o">.</span><span 
class="na">options</span><span class="o">.</span><span 
class="na">TemplateOptions</span><span class="o">.</span><span 
class="na">Builder</span><span class="o">.</span><span 
class="na">inboundPorts</span><span class="o">;</span>
 <span class="o">...</span>
-      <span class="n">Template</span> <span class="n">template</span> <span 
class="o">=</span> <span class="n">client</span><span class="o">.</span><span 
class="na">templateBuilder</span><span class="o">().</span><span 
class="na">options</span><span class="o">(</span><span 
class="n">inboundPorts</span><span class="o">(</span><span 
class="mi">22</span><span class="o">,</span> <span class="mi">8080</span><span 
class="o">)).</span><span class="na">build</span><span class="o">();</span>
+      <span class="nc">Template</span> <span class="n">template</span> <span 
class="o">=</span> <span class="n">client</span><span class="o">.</span><span 
class="na">templateBuilder</span><span class="o">().</span><span 
class="na">options</span><span class="o">(</span><span 
class="n">inboundPorts</span><span class="o">(</span><span 
class="mi">22</span><span class="o">,</span> <span class="mi">8080</span><span 
class="o">)).</span><span class="na">build</span><span class="o">();</span>
       <span class="c1">// start 2 nodes</span>
-      <span class="n">nodes</span> <span class="o">=</span> <span 
class="n">client</span><span class="o">.</span><span 
class="na">createNodesInGroup</span><span class="o">(</span><span 
class="n">group</span><span class="o">,</span> <span class="mi">2</span><span 
class="o">,</span> <span class="n">template</span><span class="o">);</span>
-</code></pre></div>
-
-
-<h3>Template Matching</h3>
+      <span class="n">nodes</span> <span class="o">=</span> <span 
class="n">client</span><span class="o">.</span><span 
class="na">createNodesInGroup</span><span class="o">(</span><span 
class="n">group</span><span class="o">,</span> <span class="mi">2</span><span 
class="o">,</span> <span class="n">template</span><span 
class="o">);</span></code></pre></figure>
 
-<h4>Matching an operating system version</h4>
+<h3 id="template-matching">Template Matching</h3>
 
-<div class="highlight"><pre><code class="java"><span class="n">template</span> 
<span class="o">=</span> <span class="n">client</span><span 
class="o">.</span><span class="na">templateBuilder</span><span 
class="o">().</span><span class="na">hardwareId</span><span 
class="o">(</span><span class="n">InstanceType</span><span 
class="o">.</span><span class="na">M1_SMALL</span><span class="o">)</span>
-                  <span class="o">.</span><span 
class="na">osVersionMatches</span><span class="o">(</span><span 
class="s">&quot;10.04&quot;</span><span class="o">).</span><span 
class="na">imageDescriptionMatches</span><span class="o">(</span><span 
class="s">&quot;ubuntu-images&quot;</span><span class="o">).</span><span 
class="na">osFamily</span><span class="o">(</span><span 
class="n">OsFamily</span><span class="o">.</span><span 
class="na">UBUNTU</span><span class="o">).</span><span 
class="na">build</span><span class="o">();</span>
-</code></pre></div>
+<h4 id="matching-an-operating-system-version">Matching an operating system 
version</h4>
 
+<figure class="highlight"><pre><code class="language-java" 
data-lang="java"><span class="n">template</span> <span class="o">=</span> <span 
class="n">client</span><span class="o">.</span><span 
class="na">templateBuilder</span><span class="o">().</span><span 
class="na">hardwareId</span><span class="o">(</span><span 
class="nc">InstanceType</span><span class="o">.</span><span 
class="na">M1_SMALL</span><span class="o">)</span>
+                  <span class="o">.</span><span 
class="na">osVersionMatches</span><span class="o">(</span><span 
class="s">"10.04"</span><span class="o">).</span><span 
class="na">imageDescriptionMatches</span><span class="o">(</span><span 
class="s">"ubuntu-images"</span><span class="o">).</span><span 
class="na">osFamily</span><span class="o">(</span><span 
class="nc">OsFamily</span><span class="o">.</span><span 
class="na">UBUNTU</span><span class="o">).</span><span 
class="na">build</span><span class="o">();</span></code></pre></figure>
 
-<h3>Authorizing your RSA SSH Public Key</h3>
+<h3 id="authorizing-your-rsa-ssh-public-key">Authorizing your RSA SSH Public 
Key</h3>
 
 <p>The compute API supports authorizing a public key on a node or node set.
 This allows you to use a single credential across the entire set of nodes.
 Note that this does not change the private key of the node.
-If you are interested in changing the private key, look at the 
<code>installPrivateKey</code> option.</p>
+If you are interested in changing the private key, look at the <code 
class="language-plaintext highlighter-rouge">installPrivateKey</code> 
option.</p>
 
-<p>In order to use this feature, you must generate or load your RSA public key 
into a String.  Set the option <code>authorizePublicKey</code> to this value.  
Note that if you have done this correctly, your key will start with 
<code>ssh-rsa</code>.</p>
+<p>In order to use this feature, you must generate or load your RSA public key 
into a String.  Set the option <code class="language-plaintext 
highlighter-rouge">authorizePublicKey</code> to this value.  Note that if you 
have done this correctly, your key will start with <code 
class="language-plaintext highlighter-rouge">ssh-rsa</code>.</p>
 
 <p>Ex.</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">compute</span><span class="o">.</span><span 
class="na">options</span><span class="o">.</span><span 
class="na">TemplateOptions</span><span class="o">.</span><span 
class="na">Builder</span><span class="o">.</span><span 
class="na">authorizePublicKey</span><span class="o">;</span>
+<figure class="highlight"><pre><code class="language-java" 
data-lang="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">compute</span><span class="o">.</span><span 
class="na">options</span><span class="o">.</span><span 
class="na">TemplateOptions</span><span class="o">.</span><span 
class="na">Builder</span><span class="o">.</span><span 
class="na">authorizePublicKey</span><span class="o">;</span>
 <span class="o">...</span>
-      <span class="n">Template</span> <span class="n">template</span> <span 
class="o">=</span> <span class="n">client</span><span class="o">.</span><span 
class="na">templateBuilder</span><span class="o">().</span><span 
class="na">options</span><span class="o">(</span><span 
class="n">authorizePublicKey</span><span class="o">(</span><span 
class="n">Payloads</span><span class="o">.</span><span 
class="na">newPayload</span><span class="o">(</span><span class="k">new</span> 
<span class="n">File</span><span class="o">(</span><span 
class="s">&quot;/home/me/.ssh/id_rsa.pub&quot;</span><span 
class="o">)).</span><span class="na">build</span><span class="o">();</span>
+      <span class="nc">Template</span> <span class="n">template</span> <span 
class="o">=</span> <span class="n">client</span><span class="o">.</span><span 
class="na">templateBuilder</span><span class="o">().</span><span 
class="na">options</span><span class="o">(</span><span 
class="n">authorizePublicKey</span><span class="o">(</span><span 
class="nc">Payloads</span><span class="o">.</span><span 
class="na">newPayload</span><span class="o">(</span><span class="k">new</span> 
<span class="nc">File</span><span class="o">(</span><span 
class="s">"/home/me/.ssh/id_rsa.pub"</span><span class="o">)).</span><span 
class="na">build</span><span class="o">();</span>
       <span class="c1">// start 10 nodes</span>
-      <span class="n">nodes</span> <span class="o">=</span> <span 
class="n">client</span><span class="o">.</span><span 
class="na">createNodesInGroup</span><span class="o">(</span><span 
class="n">group</span><span class="o">,</span> <span class="mi">10</span><span 
class="o">,</span> <span class="n">template</span><span class="o">);</span>
-</code></pre></div>
-
+      <span class="n">nodes</span> <span class="o">=</span> <span 
class="n">client</span><span class="o">.</span><span 
class="na">createNodesInGroup</span><span class="o">(</span><span 
class="n">group</span><span class="o">,</span> <span class="mi">10</span><span 
class="o">,</span> <span class="n">template</span><span 
class="o">);</span></code></pre></figure>
 
 <p>Note that SSH must be configured for this feature to work.</p>
 
-<p>To install an SSH private key for a different user, override the 
credentials with the <code>overrideCredentialsWith</code> method.</p>
+<p>To install an SSH private key for a different user, override the 
credentials with the <code class="language-plaintext 
highlighter-rouge">overrideCredentialsWith</code> method.</p>
 
-<h3>Installing your RSA SSH Private Key</h3>
+<h3 id="installing-your-rsa-ssh-private-key">Installing your RSA SSH Private 
Key</h3>
 
-<p>The compute API supports replacing the node's private key with one you 
specify.
+<p>The compute API supports replacing the node’s private key with one you 
specify.
 This is different than authorizing your public key.  The private key 
determines the identity of
 root on your machine so that outgoing SSH can be authorized. You can use this 
feature alongside
 authorizing RSA to establish an SSH mesh.  An SSH mesh can be used to manage 
tools such as Hadoop.</p>
 
 <p>In order to use this feature, you must generate or load your RSA key into a 
String.  Set the option
-<code>installPrivateKey</code> to this value.  Note that if you have done this 
correctly, your key will start with
-<code>-----BEGIN RSA PRIVATE KEY-----</code>.</p>
+<code class="language-plaintext highlighter-rouge">installPrivateKey</code> to 
this value.  Note that if you have done this correctly, your key will start with
+<code class="language-plaintext highlighter-rouge">-----BEGIN RSA PRIVATE 
KEY-----</code>.</p>
 
 <p>Ex.</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">compute</span><span class="o">.</span><span 
class="na">options</span><span class="o">.</span><span 
class="na">TemplateOptions</span><span class="o">.</span><span 
class="na">Builder</span><span class="o">.</span><span 
class="na">installPrivateKey</span><span class="o">;</span>
+<figure class="highlight"><pre><code class="language-java" 
data-lang="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">compute</span><span class="o">.</span><span 
class="na">options</span><span class="o">.</span><span 
class="na">TemplateOptions</span><span class="o">.</span><span 
class="na">Builder</span><span class="o">.</span><span 
class="na">installPrivateKey</span><span class="o">;</span>
 <span class="o">...</span>
       <span class="c1">// start 10 nodes</span>
-      <span class="n">nodes</span> <span class="o">=</span> <span 
class="n">client</span><span class="o">.</span><span 
class="na">createNodesInGroup</span><span class="o">(</span><span 
class="n">group</span><span class="o">,</span> <span class="mi">10</span><span 
class="o">,</span> <span class="n">installPrivateKey</span><span 
class="o">(</span><span class="n">Files</span><span class="o">.</span><span 
class="na">toString</span><span class="o">(</span><span class="k">new</span> 
<span class="n">File</span><span class="o">(</span><span 
class="s">&quot;/home/me/.ssh/id_rsa&quot;</span><span class="o">));</span>
-</code></pre></div>
-
+      <span class="n">nodes</span> <span class="o">=</span> <span 
class="n">client</span><span class="o">.</span><span 
class="na">createNodesInGroup</span><span class="o">(</span><span 
class="n">group</span><span class="o">,</span> <span class="mi">10</span><span 
class="o">,</span> <span class="n">installPrivateKey</span><span 
class="o">(</span><span class="nc">Files</span><span class="o">.</span><span 
class="na">toString</span><span class="o">(</span><span class="k">new</span> 
<span class="nc">File</span><span class="o">(</span><span 
class="s">"/home/me/.ssh/id_rsa"</span><span 
class="o">));</span></code></pre></figure>
 
 <p>Note that SSH must be configured for this feature to work.</p>
 
-<h3>Adding a post-boot script</h3>
+<h3 id="adding-a-post-boot-script">Adding a post-boot script</h3>
 
-<p>The compute API supports injection and execution of a single file as 
<code>root</code> post-bootup.
+<p>The compute API supports injection and execution of a single file as <code 
class="language-plaintext highlighter-rouge">root</code> post-bootup.
 The exact implementation depends on the features offered by the target 
cloud.</p>
 
-<p>In order to use this feature, you must generate or load a script as a 
jclouds <code>Statement</code> or a String value.
-Set the option <code>runScript</code> to this value.</p>
+<p>In order to use this feature, you must generate or load a script as a 
jclouds <code class="language-plaintext highlighter-rouge">Statement</code> or 
a String value.
+Set the option <code class="language-plaintext 
highlighter-rouge">runScript</code> to this value.</p>
 
 <p>Ex.</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">compute</span><span class="o">.</span><span 
class="na">options</span><span class="o">.</span><span 
class="na">TemplateOptions</span><span class="o">.</span><span 
class="na">Builder</span><span class="o">.</span><span 
class="na">runScript</span><span class="o">;</span>
+<figure class="highlight"><pre><code class="language-java" 
data-lang="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">compute</span><span class="o">.</span><span 
class="na">options</span><span class="o">.</span><span 
class="na">TemplateOptions</span><span class="o">.</span><span 
class="na">Builder</span><span class="o">.</span><span 
class="na">runScript</span><span class="o">;</span>
 <span class="o">...</span>
       <span class="c1">// start 10 nodes</span>
-      <span class="n">nodes</span> <span class="o">=</span> <span 
class="n">client</span><span class="o">.</span><span 
class="na">createNodesInGroup</span><span class="o">(</span><span 
class="n">group</span><span class="o">,</span> <span class="mi">10</span><span 
class="o">,</span> <span class="n">runScript</span><span 
class="o">(</span><span class="n">Files</span><span class="o">.</span><span 
class="na">toString</span><span class="o">(</span><span class="k">new</span> 
<span class="n">File</span><span class="o">(</span><span 
class="s">&quot;runscript.sh&quot;</span><span class="o">)));</span>
-</code></pre></div>
-
+      <span class="n">nodes</span> <span class="o">=</span> <span 
class="n">client</span><span class="o">.</span><span 
class="na">createNodesInGroup</span><span class="o">(</span><span 
class="n">group</span><span class="o">,</span> <span class="mi">10</span><span 
class="o">,</span> <span class="n">runScript</span><span 
class="o">(</span><span class="nc">Files</span><span class="o">.</span><span 
class="na">toString</span><span class="o">(</span><span class="k">new</span> 
<span class="nc">File</span><span class="o">(</span><span 
class="s">"runscript.sh"</span><span class="o">)));</span></code></pre></figure>
 
 <p>Note that SSH must be configured for this feature to work.</p>
 
-<h4>Default Template</h4>
-
+<h4 id="default-template">Default Template</h4>
 <p>While many configurations may work with runScript, we setup the default 
template so that it can work
-without parameters (ex. <code>templateBuilder().build()</code> works).</p>
+without parameters (ex. <code class="language-plaintext 
highlighter-rouge">templateBuilder().build()</code> works).</p>
 
-<h5>1.0.0</h5>
+<h5 id="100">1.0.0</h5>
 
 <p>As of jclouds 1.0.0 here are the template patterns that represent the 
default template.</p>
 
-<p><em>Unless specified below, the default template is 
<code>osFamily(UBUNTU).osVersionMatches("10.04").os64Bit(true)</code></em></p>
+<p><em>Unless specified below, the default template is <code 
class="language-plaintext 
highlighter-rouge">osFamily(UBUNTU).osVersionMatches("10.04").os64Bit(true)</code></em></p>
 
 <p><em>This is significantly out of date.</em></p>
 
 <table>
-<thead>
-<tr>
-<th> <em>provider</em> </th>
-<th> <em>default template</em> </th>
-</tr>
-</thead>
-<tbody>
-<tr>
-<td> ec2 </td>
-<td> osFamily(AMZN_LINUX).os64Bit(true) </td>
-</tr>
-<tr>
-<td> gogrid </td>
-<td> osFamily(CENTOS).imageNameMatches(".<em>w/ None.</em>") </td>
-</tr>
-</tbody>
+  <thead>
+    <tr>
+      <th><em>provider</em></th>
+      <th><em>default template</em></th>
+    </tr>
+  </thead>
+  <tbody>
+    <tr>
+      <td>ec2</td>
+      <td>osFamily(AMZN_LINUX).os64Bit(true)</td>
+    </tr>
+    <tr>
+      <td>gogrid</td>
+      <td>osFamily(CENTOS).imageNameMatches(“.<em>w/ None.</em>”)</td>
+    </tr>
+  </tbody>
 </table>
 
-
-<h5>Test Scripts</h5>
+<h5 id="test-scripts">Test Scripts</h5>
 
 <ul>
-<li>OperatingSystemPredicates.supportsApt().apply(node.getOperatingSystem())</li>
+  
<li>OperatingSystemPredicates.supportsApt().apply(node.getOperatingSystem())</li>
 </ul>
 
-
-<div class="highlight"><pre><code class="text">echo nameserver 208.67.222.222 
&gt;&gt; /etc/resolv.conf
+<figure class="highlight"><pre><code class="language-text" 
data-lang="text">echo nameserver 208.67.222.222 &gt;&gt; /etc/resolv.conf
 cp /etc/apt/sources.list /etc/apt/sources.list.old
-sed &#39;s~us.archive.ubuntu.com~mirror.anl.gov/pub~g&#39; 
/etc/apt/sources.list.old &gt;/etc/apt/sources.list
+sed 's~us.archive.ubuntu.com~mirror.anl.gov/pub~g' /etc/apt/sources.list.old 
&gt;/etc/apt/sources.list
 apt-get update
-apt-get install -f -y --force-yes openjdk-6-jdk
-</code></pre></div>
-
+apt-get install -f -y --force-yes openjdk-6-jdk</code></pre></figure>
 
 <ul>
-<li>OperatingSystemPredicates.supportsYum().apply(node.getOperatingSystem())</li>
+  
<li>OperatingSystemPredicates.supportsYum().apply(node.getOperatingSystem())</li>
 </ul>
 
+<figure class="highlight"><pre><code class="language-bash" 
data-lang="bash"><span class="nb">echo </span>nameserver 208.67.222.222 <span 
class="o">&gt;&gt;</span> /etc/resolv.conf
+<span class="nb">echo</span> <span class="s2">"[jdkrepo]"</span> <span 
class="o">&gt;&gt;</span> /etc/yum.repos.d/CentOS-Base.repo
+<span class="nb">echo</span> <span class="s2">"name=jdkrepository"</span> 
<span class="o">&gt;&gt;</span> /etc/yum.repos.d/CentOS-Base.repo
+<span class="nb">echo</span> <span 
class="s2">"baseurl=http://ec2-us-east-mirror.rightscale.com/epel/5/i386/";</span>
 <span class="o">&gt;&gt;</span> /etc/yum.repos.d/CentOS-Base.repo
+<span class="nb">echo</span> <span class="s2">"enabled=1"</span> <span 
class="o">&gt;&gt;</span> /etc/yum.repos.d/CentOS-Base.repo
+yum <span class="nt">--nogpgcheck</span> <span class="nt">-y</span> <span 
class="nb">install </span>java-1.6.0-openjdk
+<span class="nb">echo</span> <span class="s2">"export PATH=</span><span 
class="se">\"</span><span 
class="s2">/usr/lib/jvm/jre-1.6.0-openjdk/bin/:</span><span 
class="se">\$</span><span class="s2">PATH</span><span class="se">\"</span><span 
class="s2">"</span> <span class="o">&gt;&gt;</span> 
/root/.bashrc</code></pre></figure>
+
+<h3 id="creating-non-root-users">Creating non-root users</h3>
+
+<p>To add additional users on nodes, use the <code class="language-plaintext 
highlighter-rouge">UserAdd.Builder</code> facility, like this:</p>
+
+<figure class="highlight"><pre><code class="language-java" 
data-lang="java"><span class="nc">UserAdd</span><span class="o">.</span><span 
class="na">Builder</span> <span class="n">userBuilder</span> <span 
class="o">=</span> <span class="nc">UserAdd</span><span class="o">.</span><span 
class="na">builder</span><span class="o">();</span>
+<span class="n">userBuilder</span><span class="o">.</span><span 
class="na">login</span><span class="o">(</span><span 
class="s">"john.doe"</span><span class="o">);</span>
+<span class="n">userBuilder</span><span class="o">.</span><span 
class="na">authorizeRSAPublicKey</span><span class="o">(</span><span 
class="s">"john's public key"</span><span class="o">);</span>
+<span class="nc">Statement</span> <span class="n">userBuilderStatement</span> 
<span class="o">=</span> <span class="n">userBuilder</span><span 
class="o">.</span><span class="na">build</span><span 
class="o">();</span></code></pre></figure>
 
-<div class="highlight"><pre><code class="bash"><span class="nb">echo 
</span>nameserver 208.67.222.222 &gt;&gt; /etc/resolv.conf
-<span class="nb">echo</span> <span class="s2">&quot;[jdkrepo]&quot;</span> 
&gt;&gt; /etc/yum.repos.d/CentOS-Base.repo
-<span class="nb">echo</span> <span 
class="s2">&quot;name=jdkrepository&quot;</span> &gt;&gt; 
/etc/yum.repos.d/CentOS-Base.repo
-<span class="nb">echo</span> <span 
class="s2">&quot;baseurl=http://ec2-us-east-mirror.rightscale.com/epel/5/i386/&quot;</span>
 &gt;&gt; /etc/yum.repos.d/CentOS-Base.repo
-<span class="nb">echo</span> <span class="s2">&quot;enabled=1&quot;</span> 
&gt;&gt; /etc/yum.repos.d/CentOS-Base.repo
-yum --nogpgcheck -y install java-1.6.0-openjdk
-<span class="nb">echo</span> <span class="s2">&quot;export 
PATH=\&quot;/usr/lib/jvm/jre-1.6.0-openjdk/bin/:\$PATH\&quot;&quot;</span> 
&gt;&gt; /root/.bashrc
-</code></pre></div>
-
+<p>and run the built statement in <code class="language-plaintext 
highlighter-rouge">templateOptions.runScript</code> or add to a <code 
class="language-plaintext highlighter-rouge">StatementList</code>.</p>
 
-<h3>Creating non-root users</h3>
-
-<p>To add additional users on nodes, use the <code>UserAdd.Builder</code> 
facility, like this:</p>
-
-<div class="highlight"><pre><code class="java"><span 
class="n">UserAdd</span><span class="o">.</span><span class="na">Builder</span> 
<span class="n">userBuilder</span> <span class="o">=</span> <span 
class="n">UserAdd</span><span class="o">.</span><span 
class="na">builder</span><span class="o">();</span>
-<span class="n">userBuilder</span><span class="o">.</span><span 
class="na">login</span><span class="o">(</span><span 
class="s">&quot;john.doe&quot;</span><span class="o">);</span>
-<span class="n">userBuilder</span><span class="o">.</span><span 
class="na">authorizeRSAPublicKey</span><span class="o">(</span><span 
class="s">&quot;john&#39;s public key&quot;</span><span class="o">);</span>
-<span class="n">Statement</span> <span class="n">userBuilderStatement</span> 
<span class="o">=</span> <span class="n">userBuilder</span><span 
class="o">.</span><span class="na">build</span><span class="o">();</span>
-</code></pre></div>
-
-
-<p>and run the built statement in <code>templateOptions.runScript</code> or 
add to a <code>StatementList</code>.</p>
-
-<h4>Note on internal implementation and debugging</h4>
-
-<p>The jclouds API allows many <code>Statements</code> to be built entirely 
from high-level concepts,
+<h4 id="note-on-internal-implementation-and-debugging">Note on internal 
implementation and debugging</h4>
+<p>The jclouds API allows many <code class="language-plaintext 
highlighter-rouge">Statements</code> to be built entirely from high-level 
concepts,
 without having to resort to OS-specific scripts. This enables developers to 
express what they mean without having
  to deal with the gory details of various OS flavors.
-To see the commands that will be executed, print the result of 
<code>Statement.render(OsFamily.UNIX)</code>, for example.</p>
+To see the commands that will be executed, print the result of <code 
class="language-plaintext 
highlighter-rouge">Statement.render(OsFamily.UNIX)</code>, for example.</p>
 
-<h3>Sharing the credential store between ComputeService instances</h3>
+<h3 id="sharing-the-credential-store-between-computeservice-instances">Sharing 
the credential store between ComputeService instances</h3>
 
-<p>By default there's a separate credential store per ComputeService instance. 
To change that and share the
+<p>By default there’s a separate credential store per ComputeService 
instance. To change that and share the
 same credential store between instances create your ComputeService as 
follows:</p>
 
-<div class="highlight"><pre><code class="java"><span class="kd">public</span> 
<span class="kd">static</span> <span class="kd">final</span> <span 
class="n">Map</span><span class="o">&lt;</span><span 
class="n">String</span><span class="o">,</span> <span 
class="n">ByteSource</span><span class="o">&gt;</span> <span 
class="n">SHARED_CREDENTIAL_STORE</span> <span class="o">=</span> <span 
class="k">new</span> <span class="n">ConcurrentHashMap</span><span 
class="o">&lt;</span><span class="n">String</span><span class="o">,</span> 
<span class="n">ByteSource</span><span class="o">&gt;();</span>
-<span class="o">...</span>
-<span class="n">Module</span> <span class="n">sharedCredStore</span> <span 
class="o">=</span> <span class="k">new</span> <span 
class="n">CredentialStoreModule</span><span class="o">(</span><span 
class="n">SHARED_CREDENTIAL_STORE</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;provider&quot;</span><span class="o">)</span>
-  <span class="o">.</span><span class="na">modules</span><span 
class="o">(</span><span class="n">ImmutableSet</span><span 
class="o">.</span><span class="na">of</span><span class="o">(</span><span 
class="n">sharedCredStore</span><span class="o">,</span> <span 
class="o">...))</span>

[... 12 lines stripped ...]


Reply via email to