Modified: jclouds/site-content/guides/aws-ec2/index.html URL: http://svn.apache.org/viewvc/jclouds/site-content/guides/aws-ec2/index.html?rev=1923693&r1=1923692&r2=1923693&view=diff ============================================================================== --- jclouds/site-content/guides/aws-ec2/index.html (original) +++ jclouds/site-content/guides/aws-ec2/index.html Mon Feb 10 07:25:53 2025 @@ -151,11 +151,10 @@ </div> <p>The compute service is implemented fully for EC2 - so you can follow the guides to using the <a href="/start/compute">ComputeService API</a>.</p> -<p>For credentials you will want you access key id and secret access key (don't use your user id or anything else). +<p>For credentials you will want you access key id and secret access key (donât use your user id or anything else). For practical EC2 usage - you will probably want to check out <a href="/guides/aws">AWS Getting Started Guide</a></p> -<h2>Compatibility</h2> - +<h2 id="compatibility">Compatibility</h2> <p>Private clouds often expose EC2-compatible interfaces. Very commonly, users install clones on non-https, or self-signed servers. If you do so, make sure you set the following properties:</p> <pre> @@ -163,12 +162,9 @@ jclouds.trust-all-certs=true jclouds.relax-hostname=true </pre> - <p>Here are a few configuration examples of common EC2 clones:</p> - -<h3>Eucalyptus</h3> - -<p>The following properties should help use the <code>ec2</code> provider on a eucalyptus install:</p> +<h3 id="eucalyptus">Eucalyptus</h3> +<p>The following properties should help use the <code class="language-plaintext highlighter-rouge">ec2</code> provider on a eucalyptus install:</p> <pre> # in version 3, lowercase 'e' version 2, uppercase 'E' @@ -177,125 +173,105 @@ jclouds.regions=eucalyptus ec2.endpoint=http://host:8773/services/Eucalyptus/ </pre> - -<h2>Images</h2> - -<h3>Default image</h3> - +<h2 id="images">Images</h2> +<h3 id="default-image">Default image</h3> <p>The default image for version 1.0.0 is <a href="https://aws.amazon.com/amazon-linux-ami">Amazon Linux</a> and 64 bit. This by default chooses t1.micro size. The m1.small instance size does not support 64 bit images, -if you need this, you'll have to revise the template:</p> - -<div class="highlight"><pre><code class="java"><span class="c1">// use the m1 small with amazon linux</span> -<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="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="na">osFamily</span><span class="o">(</span><span class="n">OsFamily</span><span class="o">.</span><span class="na">AMZN_LINUX</span><span class="o">).</span><span class="na">build</span><span class="o">();</span> -</code></pre></div> +if you need this, youâll have to revise the template:</p> +<figure class="highlight"><pre><code class="language-java" data-lang="java"><span class="c1">// use the m1 small with amazon linux</span> +<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="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="na">osFamily</span><span class="o">(</span><span class="nc">OsFamily</span><span class="o">.</span><span class="na">AMZN_LINUX</span><span class="o">).</span><span class="na">build</span><span class="o">();</span></code></pre></figure> -<p>In order to match an Ubuntu, or CentOs image, you'll need to see the Image Parsing section.</p> +<p>In order to match an Ubuntu, or CentOs image, youâll need to see the Image Parsing section.</p> -<h3>Image Parsing</h3> +<h3 id="image-parsing">Image Parsing</h3> -<p>We had feedback from one of our users that our default image list for EC2 didn't contain CentOs. +<p>We had feedback from one of our users that our default image list for EC2 didnât contain CentOs. As you may know, parsing all images would take minutes due to the delay in calling ec2 across all 4 regions. We now by default parse images from Amazon, Canonical, Alestic, and RightScale. With the addition of RightScale, we now support CentOs.</p> -<div class="highlight"><pre><code class="java"><span class="c1">// pick the highest version of the RightScale CentOs template</span> -<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="na">osFamily</span><span class="o">(</span><span class="n">CENTOS</span><span class="o">).</span><span class="na">build</span><span class="o">();</span> +<figure class="highlight"><pre><code class="language-java" data-lang="java"><span class="c1">// pick the highest version of the RightScale CentOs template</span> +<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="na">osFamily</span><span class="o">(</span><span class="no">CENTOS</span><span class="o">).</span><span class="na">build</span><span class="o">();</span> <span class="c1">// pick version 10.04 of ubuntu from canonical</span> -<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="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">"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="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> - +<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="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>Image Filters [v1.1.0+]</h3> +<h3 id="image-filters-v110">Image Filters [v1.1.0+]</h3> <p>Even refining lists to a set of user ids, using EC2 can be bogged down, parsing the thousands of public images published by the Amazon EC2 community. Several users have expressed the desire to refine further, based on qualifications they choose. You can set a property to restrict the list to a subset matching any recognized [http://docs.amazonwebservices.com/AWSEC2/latest/APIReference/ApiReference-query-DescribeImages.html image query].</p> -<div class="highlight"><pre><code class="java"><span class="n">overrides</span> <span class="o">=</span> <span class="k">new</span> <span class="n">Properties</span><span class="o">();</span> +<figure class="highlight"><pre><code class="language-java" data-lang="java"><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="c1">// choose only amazon images that are ebs-backed</span> -<span class="n">overrides</span><span class="o">.</span><span class="na">setProperty</span><span class="o">(</span><span class="n">AWSEC2Constants</span><span class="o">.</span><span class="na">PROPERTY_EC2_AMI_QUERY</span><span class="o">,</span> - <span class="s">"owner-id=137112412989;state=available;image-type=machine;root-device-type=ebs"</span><span class="o">);</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">"aws-ec2"</span><span class="o">)</span> +<span class="n">overrides</span><span class="o">.</span><span class="na">setProperty</span><span class="o">(</span><span class="nc">AWSEC2Constants</span><span class="o">.</span><span class="na">PROPERTY_EC2_AMI_QUERY</span><span class="o">,</span> + <span class="s">"owner-id=137112412989;state=available;image-type=machine;root-device-type=ebs"</span><span class="o">);</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">"aws-ec2"</span><span class="o">)</span> <span class="o">.</span><span class="na">credentials</span><span class="o">(</span><span class="n">access</span><span class="o">,</span> <span class="n">secret</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">modules</span><span class="o">(</span><span class="n">ImmutableSet</span><span class="o">.<</span><span class="n">Module</span><span class="o">></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">.<</span><span class="nc">Module</span><span class="o">></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> -</code></pre></div> - - -<h4>Properties to set cluster compute images</h4> + <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> +<h4 id="properties-to-set-cluster-compute-images">Properties to set cluster compute images</h4> <p>Cluster compute images are assigned the following default query, corresponding to the property key constant AWSEC2Constants.PROPERTY_EC2_CC_AMI_QUERY</p> - <pre> - virtualization-type=hvm;architecture=x86_64;owner-id=137112412989,099720109477;hypervisor=xen;state=available;image-type=machine;root-device-type=ebs + virtualization-type=hvm;architecture=x86_64;owner-id=137112412989,099720109477;hypervisor=xen;state=available;image-type=machine;root-device-type=ebs </pre> +<p>In order to save time, we only look for cluster compute images in regions that support them. In order to change the default for this, affect the property PROPERTY_EC2_CC_REGIONS, currently set to âus-east-1â</p> - -<p>In order to save time, we only look for cluster compute images in regions that support them. In order to change the default for this, affect the property PROPERTY_EC2_CC_REGIONS, currently set to "us-east-1"</p> - -<h3>Lazy Image Fetching</h3> +<h3 id="lazy-image-fetching">Lazy Image Fetching</h3> <p>By default, the ComputeService will prefetch images from Alestic, Canonical, and RightScale. This allows you to query the images, which is great, -if you don't know what you are looking for. However, if you already know the imageId you want, this is wasteful. +if you donât know what you are looking for. However, if you already know the imageId you want, this is wasteful. We now provide the option to lazy-fetch images, which speed-ups execution.</p> -<h4>Release 1.0.0 and below</h4> +<h4 id="release-100-and-below">Release 1.0.0 and below</h4> -<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> +<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="c1">// set owners to nothing</span> -<span class="n">overrides</span><span class="o">.</span><span class="na">setProperty</span><span class="o">(</span><span class="n">EC2Constants</span><span class="o">.</span><span class="na">PROPERTY_EC2_AMI_OWNERS</span><span class="o">,</span> <span class="s">""</span><span class="o">);</span> +<span class="n">overrides</span><span class="o">.</span><span class="na">setProperty</span><span class="o">(</span><span class="nc">EC2Constants</span><span class="o">.</span><span class="na">PROPERTY_EC2_AMI_OWNERS</span><span class="o">,</span> <span class="s">""</span><span class="o">);</span> -<span class="n">context</span> <span class="o">=</span> <span class="k">new</span> <span class="n">ComputeServiceContextFactory</span><span class="o">().</span><span class="na">createContext</span><span class="o">(</span><span class="s">"aws-ec2"</span><span class="o">,</span> - <span class="n">accessid</span><span class="o">,</span> <span class="n">secretkey</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">Log4JLoggingModule</span><span class="o">()),</span> <span class="n">overrides</span><span class="o">);</span> +<span class="n">context</span> <span class="o">=</span> <span class="k">new</span> <span class="nc">ComputeServiceContextFactory</span><span class="o">().</span><span class="na">createContext</span><span class="o">(</span><span class="s">"aws-ec2"</span><span class="o">,</span> + <span class="n">accessid</span><span class="o">,</span> <span class="n">secretkey</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">Log4JLoggingModule</span><span class="o">()),</span> <span class="n">overrides</span><span class="o">);</span> -<span class="n">Template</span> <span class="n">template</span> <span class="o">=</span> <span class="n">context</span><span class="o">.</span><span class="na">getComputeService</span><span class="o">().</span><span class="na">templateBuilder</span><span class="o">().</span><span class="na">imageId</span><span class="o">(</span> - <span class="s">"ami-ccb35ea5"</span><span class="o">).</span><span class="na">build</span><span class="o">();</span> -</code></pre></div> +<span class="nc">Template</span> <span class="n">template</span> <span class="o">=</span> <span class="n">context</span><span class="o">.</span><span class="na">getComputeService</span><span class="o">().</span><span class="na">templateBuilder</span><span class="o">().</span><span class="na">imageId</span><span class="o">(</span> + <span class="s">"ami-ccb35ea5"</span><span class="o">).</span><span class="na">build</span><span class="o">();</span></code></pre></figure> +<h4 id="release-110-to-15x">Release 1.1.0 to 1.5.x</h4> -<h4>Release 1.1.0 to 1.5.x</h4> - -<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> +<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="c1">// set AMI queries to nothing</span> -<span class="n">overrides</span><span class="o">.</span><span class="na">setProperty</span><span class="o">(</span><span class="n">AWSEC2Constants</span><span class="o">.</span><span class="na">PROPERTY_EC2_AMI_QUERY</span><span class="o">,</span> <span class="s">""</span><span class="o">);</span> -<span class="n">overrides</span><span class="o">.</span><span class="na">setProperty</span><span class="o">(</span><span class="n">AWSEC2Constants</span><span class="o">.</span><span class="na">PROPERTY_EC2_CC_AMI_QUERY</span><span class="o">,</span> <span class="s">""</span><span class="o">);</span> - -<span class="n">context</span> <span class="o">=</span> <span class="k">new</span> <span class="n">ComputeServiceContextFactory</span><span class="o">().</span><span class="na">createContext</span><span class="o">(</span><span class="s">"aws-ec2"</span><span class="o">,</span> - <span class="n">accessid</span><span class="o">,</span> <span class="n">secretkey</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">Log4JLoggingModule</span><span class="o">()),</span> <span class="n">overrides</span><span class="o">);</span> +<span class="n">overrides</span><span class="o">.</span><span class="na">setProperty</span><span class="o">(</span><span class="nc">AWSEC2Constants</span><span class="o">.</span><span class="na">PROPERTY_EC2_AMI_QUERY</span><span class="o">,</span> <span class="s">""</span><span class="o">);</span> +<span class="n">overrides</span><span class="o">.</span><span class="na">setProperty</span><span class="o">(</span><span class="nc">AWSEC2Constants</span><span class="o">.</span><span class="na">PROPERTY_EC2_CC_AMI_QUERY</span><span class="o">,</span> <span class="s">""</span><span class="o">);</span> -<span class="n">Template</span> <span class="n">template</span> <span class="o">=</span> <span class="n">context</span><span class="o">.</span><span class="na">getComputeService</span><span class="o">().</span><span class="na">templateBuilder</span><span class="o">().</span><span class="na">imageId</span><span class="o">(</span> - <span class="s">"ami-ccb35ea5"</span><span class="o">).</span><span class="na">build</span><span class="o">();</span> -</code></pre></div> +<span class="n">context</span> <span class="o">=</span> <span class="k">new</span> <span class="nc">ComputeServiceContextFactory</span><span class="o">().</span><span class="na">createContext</span><span class="o">(</span><span class="s">"aws-ec2"</span><span class="o">,</span> + <span class="n">accessid</span><span class="o">,</span> <span class="n">secretkey</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">Log4JLoggingModule</span><span class="o">()),</span> <span class="n">overrides</span><span class="o">);</span> +<span class="nc">Template</span> <span class="n">template</span> <span class="o">=</span> <span class="n">context</span><span class="o">.</span><span class="na">getComputeService</span><span class="o">().</span><span class="na">templateBuilder</span><span class="o">().</span><span class="na">imageId</span><span class="o">(</span> + <span class="s">"ami-ccb35ea5"</span><span class="o">).</span><span class="na">build</span><span class="o">();</span></code></pre></figure> -<h4>Release 1.6.0 and above</h4> +<h4 id="release-160-and-above">Release 1.6.0 and above</h4> -<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> +<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="c1">// set AMI queries to nothing</span> -<span class="n">overrides</span><span class="o">.</span><span class="na">setProperty</span><span class="o">(</span><span class="n">AWSEC2Constants</span><span class="o">.</span><span class="na">PROPERTY_EC2_AMI_QUERY</span><span class="o">,</span> <span class="s">""</span><span class="o">);</span> -<span class="n">overrides</span><span class="o">.</span><span class="na">setProperty</span><span class="o">(</span><span class="n">AWSEC2Constants</span><span class="o">.</span><span class="na">PROPERTY_EC2_CC_AMI_QUERY</span><span class="o">,</span> <span class="s">""</span><span class="o">);</span> +<span class="n">overrides</span><span class="o">.</span><span class="na">setProperty</span><span class="o">(</span><span class="nc">AWSEC2Constants</span><span class="o">.</span><span class="na">PROPERTY_EC2_AMI_QUERY</span><span class="o">,</span> <span class="s">""</span><span class="o">);</span> +<span class="n">overrides</span><span class="o">.</span><span class="na">setProperty</span><span class="o">(</span><span class="nc">AWSEC2Constants</span><span class="o">.</span><span class="na">PROPERTY_EC2_CC_AMI_QUERY</span><span class="o">,</span> <span class="s">""</span><span class="o">);</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">"aws-ec2"</span><span class="o">)</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">"aws-ec2"</span><span class="o">)</span> <span class="o">.</span><span class="na">credentials</span><span class="o">(</span><span class="n">accessid</span><span class="o">,</span> <span class="n">secretkey</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">modules</span><span class="o">(</span><span class="n">ImmutableSet</span><span class="o">.<</span><span class="n">Module</span><span class="o">></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">.<</span><span class="nc">Module</span><span class="o">></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="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="n">Template</span> <span class="n">template</span> <span class="o">=</span> <span class="n">context</span><span class="o">.</span><span class="na">getComputeService</span><span class="o">().</span><span class="na">templateBuilder</span><span class="o">().</span><span class="na">imageId</span><span class="o">(</span> - <span class="s">"ami-ccb35ea5"</span><span class="o">).</span><span class="na">build</span><span class="o">();</span> -</code></pre></div> - - -<h3>Private Images</h3> +<span class="nc">Template</span> <span class="n">template</span> <span class="o">=</span> <span class="n">context</span><span class="o">.</span><span class="na">getComputeService</span><span class="o">().</span><span class="na">templateBuilder</span><span class="o">().</span><span class="na">imageId</span><span class="o">(</span> + <span class="s">"ami-ccb35ea5"</span><span class="o">).</span><span class="na">build</span><span class="o">();</span></code></pre></figure> +<h3 id="private-images">Private Images</h3> <p>Amazon EC2 has the concept of private-but-shared amis - images that were bundled on another account, and not made public, but shared with a specified account. This is useful in the consolidated billing scenario - where you have one user @@ -303,77 +279,70 @@ managing image curation, and others usin <p>This private image may not show up in listImages, and jclouds will struggle with this.</p> -<p>Here's the solution:</p> +<p>Hereâs the solution:</p> -<h4>Release 1.0.0 and below</h4> +<h4 id="release-100-and-below-1">Release 1.0.0 and below</h4> -<div class="highlight"><pre><code class="java"><span class="n">Properties</span> <span class="n">props</span> <span class="o">=</span> <span class="k">new</span> <span class="n">Properties</span><span class="o">();</span> +<figure class="highlight"><pre><code class="language-java" data-lang="java"><span class="nc">Properties</span> <span class="n">props</span> <span class="o">=</span> <span class="k">new</span> <span class="nc">Properties</span><span class="o">();</span> <span class="c1">//have a myFavouriteOwner - the user ID of the owner of the image.</span> -<span class="n">props</span><span class="o">.</span><span class="na">setProperty</span><span class="o">(</span><span class="n">EC2Constants</span><span class="o">.</span><span class="na">PROPERTY_EC2_AMI_OWNERS</span><span class="o">,</span> <span class="n">myFavoriteOwner</span> <span class="o">+</span> <span class="s">",063491364108,099720109477"</span><span class="o">);</span> - -<span class="c1">// or.. you can set to '*' but this will take forever on amazon's ec2 service</span> -<span class="n">props</span><span class="o">.</span><span class="na">setProperty</span><span class="o">(</span><span class="n">EC2Constants</span><span class="o">.</span><span class="na">PROPERTY_EC2_AMI_OWNERS</span><span class="o">,</span> <span class="s">"*"</span><span class="o">);</span> +<span class="n">props</span><span class="o">.</span><span class="na">setProperty</span><span class="o">(</span><span class="nc">EC2Constants</span><span class="o">.</span><span class="na">PROPERTY_EC2_AMI_OWNERS</span><span class="o">,</span> <span class="n">myFavoriteOwner</span> <span class="o">+</span> <span class="s">",063491364108,099720109477"</span><span class="o">);</span> +<span class="c1">// or.. you can set to '*' but this will take forever on amazon's ec2 service</span> +<span class="n">props</span><span class="o">.</span><span class="na">setProperty</span><span class="o">(</span><span class="nc">EC2Constants</span><span class="o">.</span><span class="na">PROPERTY_EC2_AMI_OWNERS</span><span class="o">,</span> <span class="s">"*"</span><span class="o">);</span> -<span class="n">ComputeServiceContext</span> <span class="n">context</span> <span class="o">=</span> <span class="k">new</span> <span class="n">ComputeServiceContextFactory</span><span class="o">().</span><span class="na">createContext</span><span class="o">(</span><span class="s">"aws-ec2"</span><span class="o">,</span> <span class="s">"accesss"</span><span class="o">,</span> <span class="s">"secret"</span><span class="o">,</span> <span class="n">ImmutableSet</span><span class="o">.<</span><span class="n">Module</span><span class="o">></span> <span class="n">of</span><span class="o">(</span><span class="k">new</span> <span class="n">JschSshClientModule</span><span class="o">()),</span> <span class="n">props</span><span class="o">);</span> -</code></pre></div> +<span class="nc">ComputeServiceContext</span> <span class="n">context</span> <span class="o">=</span> <span class="k">new</span> <span class="nc">ComputeServiceContextFactory</span><span class="o">().</span><span class="na">createContext</span><span class="o">(</span><span class="s">"aws-ec2"</span><span class="o">,</span> <span class="s">"accesss"</span><span class="o">,</span> <span class="s">"secret"</span><span class="o">,</span> <span class="nc">ImmutableSet</span><span class="o">.<</span><span class="nc">Module</span><span class="o">></span> <span class="nf">of</span><span class="o">(</span><span class="k">new</span> <span class="nc">JschSshClientModule</span><span class="o">()),</span> <span class="n">props</span><span class="o">);</span></code></pre></figure> -<h4>Releases 1.1.0 through 1.5.x</h4> +<h4 id="releases-110-through-15x">Releases 1.1.0 through 1.5.x</h4> -<div class="highlight"><pre><code class="java"><span class="n">Properties</span> <span class="n">props</span> <span class="o">=</span> <span class="k">new</span> <span class="n">Properties</span><span class="o">();</span> +<figure class="highlight"><pre><code class="language-java" data-lang="java"><span class="nc">Properties</span> <span class="n">props</span> <span class="o">=</span> <span class="k">new</span> <span class="nc">Properties</span><span class="o">();</span> <span class="c1">//have a myFavoriteOwner - the user ID of the owner of the image.</span> -<span class="n">props</span><span class="o">.</span><span class="na">setProperty</span><span class="o">(</span><span class="n">EC2Constants</span><span class="o">.</span><span class="na">PROPERTY_EC2_AMI_QUERY</span><span class="o">,</span> <span class="s">"owner-id=137112412989,063491364108,099720109477,411009282317,"</span><span class="o">+</span><span class="n">myFavoriteOwner</span><span class="o">+</span><span class="s">";state=available;image-type=machine"</span><span class="o">);</span> +<span class="n">props</span><span class="o">.</span><span class="na">setProperty</span><span class="o">(</span><span class="nc">EC2Constants</span><span class="o">.</span><span class="na">PROPERTY_EC2_AMI_QUERY</span><span class="o">,</span> <span class="s">"owner-id=137112412989,063491364108,099720109477,411009282317,"</span><span class="o">+</span><span class="n">myFavoriteOwner</span><span class="o">+</span><span class="s">";state=available;image-type=machine"</span><span class="o">);</span> -<span class="c1">// or.. you can remove the owner part of the query, but this will take forever on amazon's ec2 service</span> -<span class="n">props</span><span class="o">.</span><span class="na">setProperty</span><span class="o">(</span><span class="n">EC2Constants</span><span class="o">.</span><span class="na">PROPERTY_EC2_AMI_QUERY</span><span class="o">,</span> <span class="s">"state=available;image-type=machine"</span><span class="o">);</span> +<span class="c1">// or.. you can remove the owner part of the query, but this will take forever on amazon's ec2 service</span> +<span class="n">props</span><span class="o">.</span><span class="na">setProperty</span><span class="o">(</span><span class="nc">EC2Constants</span><span class="o">.</span><span class="na">PROPERTY_EC2_AMI_QUERY</span><span class="o">,</span> <span class="s">"state=available;image-type=machine"</span><span class="o">);</span> -<span class="n">ComputeServiceContext</span> <span class="n">context</span> <span class="o">=</span> <span class="k">new</span> <span class="n">ComputeServiceContextFactory</span><span class="o">().</span><span class="na">createContext</span><span class="o">(</span><span class="s">"aws-ec2"</span><span class="o">,</span> <span class="s">"accesss"</span><span class="o">,</span> <span class="s">"secret"</span><span class="o">,</span> <span class="n">ImmutableSet</span><span class="o">.<</span><span class="n">Module</span><span class="o">></span> <span class="n">of</span><span class="o">(</span><span class="k">new</span> <span class="n">JschSshClientModule</span><span class="o">()),</span> <span class="n">props</span><span class="o">);</span> -</code></pre></div> +<span class="nc">ComputeServiceContext</span> <span class="n">context</span> <span class="o">=</span> <span class="k">new</span> <span class="nc">ComputeServiceContextFactory</span><span class="o">().</span><span class="na">createContext</span><span class="o">(</span><span class="s">"aws-ec2"</span><span class="o">,</span> <span class="s">"accesss"</span><span class="o">,</span> <span class="s">"secret"</span><span class="o">,</span> <span class="nc">ImmutableSet</span><span class="o">.<</span><span class="nc">Module</span><span class="o">></span> <span class="nf">of</span><span class="o">(</span><span class="k">new</span> <span class="nc">JschSshClientModule</span><span class="o">()),</span> <span class="n">props</span><span class="o">);</span></code></pre></figure> +<h4 id="release-160-and-abovex">Release 1.6.0 and abovex</h4> -<h4>Release 1.6.0 and abovex</h4> - -<div class="highlight"><pre><code class="java"><span class="n">Properties</span> <span class="n">props</span> <span class="o">=</span> <span class="k">new</span> <span class="n">Properties</span><span class="o">();</span> +<figure class="highlight"><pre><code class="language-java" data-lang="java"><span class="nc">Properties</span> <span class="n">props</span> <span class="o">=</span> <span class="k">new</span> <span class="nc">Properties</span><span class="o">();</span> <span class="c1">//have a myFavoriteOwner - the user ID of the owner of the image.</span> -<span class="n">props</span><span class="o">.</span><span class="na">setProperty</span><span class="o">(</span><span class="n">EC2Constants</span><span class="o">.</span><span class="na">PROPERTY_EC2_AMI_QUERY</span><span class="o">,</span> <span class="s">"owner-id=137112412989,063491364108,099720109477,411009282317,"</span><span class="o">+</span><span class="n">myFavoriteOwner</span><span class="o">+</span><span class="s">";state=available;image-type=machine"</span><span class="o">);</span> +<span class="n">props</span><span class="o">.</span><span class="na">setProperty</span><span class="o">(</span><span class="nc">EC2Constants</span><span class="o">.</span><span class="na">PROPERTY_EC2_AMI_QUERY</span><span class="o">,</span> <span class="s">"owner-id=137112412989,063491364108,099720109477,411009282317,"</span><span class="o">+</span><span class="n">myFavoriteOwner</span><span class="o">+</span><span class="s">";state=available;image-type=machine"</span><span class="o">);</span> -<span class="c1">// or.. you can remove the owner part of the query, but this will take forever on amazon's ec2 service</span> -<span class="n">props</span><span class="o">.</span><span class="na">setProperty</span><span class="o">(</span><span class="n">EC2Constants</span><span class="o">.</span><span class="na">PROPERTY_EC2_AMI_QUERY</span><span class="o">,</span> <span class="s">"state=available;image-type=machine"</span><span class="o">);</span> +<span class="c1">// or.. you can remove the owner part of the query, but this will take forever on amazon's ec2 service</span> +<span class="n">props</span><span class="o">.</span><span class="na">setProperty</span><span class="o">(</span><span class="nc">EC2Constants</span><span class="o">.</span><span class="na">PROPERTY_EC2_AMI_QUERY</span><span class="o">,</span> <span class="s">"state=available;image-type=machine"</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">"aws-ec2"</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">"aws-ec2"</span><span class="o">)</span> <span class="o">.</span><span class="na">credentials</span><span class="o">(</span><span class="n">access</span><span class="o">,</span> <span class="n">secret</span><span class="o">)</span> <span class="o">.</span><span class="na">overrides</span><span class="o">(</span><span class="n">props</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="n">Module</span><span class="o">></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">.<</span><span class="nc">Module</span><span class="o">></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> -</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>You can then create nodes using the templateBuilder.imageId() method.</p> -<h4>Parsing private images</h4> +<h4 id="parsing-private-images">Parsing private images</h4> <p>If you publish your own images, you probably would like to be able to choose the latest version using templateBuilder. For example, you might want to say -<code>templateBuilder.imageNameMatches("my-image").imageVersionMatches("1.1.0-.*").build()</code> -which would pick the latest version of your image within the <code>1.1.0</code> range.</p> +<code class="language-plaintext highlighter-rouge">templateBuilder.imageNameMatches("my-image").imageVersionMatches("1.1.0-.*").build()</code> +which would pick the latest version of your image within the <code class="language-plaintext highlighter-rouge">1.1.0</code> range.</p> <p>Amazon EC2 does not have typed fields for things like operating system family, image version, etc. In jclouds, we attempt to parse these fields from well known naming conventions. However, you might not be using naming conventions we know of, so often images show up as -OsFamily.UNRECOGNIZED, with no image version. Here's how to instruct jclouds to parse your images.</p> +OsFamily.UNRECOGNIZED, with no image version. Hereâs how to instruct jclouds to parse your images.</p> -<h4>Create a custom parser</h4> +<h4 id="create-a-custom-parser">Create a custom parser</h4> +<p>Youâll need to override the default image parser with one that knows all the intimate secrets of your image.</p> -<p>You'll need to override the default image parser with one that knows all the intimate secrets of your image.</p> - -<div class="highlight"><pre><code class="java"><span class="kn">package</span> <span class="n">com</span><span class="o">.</span><span class="na">foo</span><span class="o">;</span> +<figure class="highlight"><pre><code class="language-java" data-lang="java"><span class="kn">package</span> <span class="nn">com.foo</span><span class="o">;</span> <span class="kn">import</span> <span class="nn">java.util.Map</span><span class="o">;</span> @@ -389,37 +358,35 @@ OsFamily.UNRECOGNIZED, with no image ver <span class="kn">import</span> <span class="nn">com.google.inject.Singleton</span><span class="o">;</span> <span class="nd">@Singleton</span> -<span class="kd">public</span> <span class="kd">class</span> <span class="nc">FooAWSEC2ReviseParsedImage</span> <span class="kd">extends</span> <span class="n">AWSEC2ReviseParsedImage</span> <span class="o">{</span> +<span class="kd">public</span> <span class="kd">class</span> <span class="nc">FooAWSEC2ReviseParsedImage</span> <span class="kd">extends</span> <span class="nc">AWSEC2ReviseParsedImage</span> <span class="o">{</span> <span class="nd">@Inject</span> <span class="kd">public</span> <span class="nf">FooAWSEC2ReviseParsedImage</span><span class="o">()</span> <span class="o">{</span> - <span class="kd">super</span><span class="o">(</span><span class="n">ImmutableMap</span><span class="o">.<</span><span class="n">OsFamily</span><span class="o">,</span> <span class="n">Map</span><span class="o"><</span><span class="n">String</span><span class="o">,</span> <span class="n">String</span><span class="o">>></span> <span class="n">of</span><span class="o">());</span> + <span class="kd">super</span><span class="o">(</span><span class="nc">ImmutableMap</span><span class="o">.<</span><span class="nc">OsFamily</span><span class="o">,</span> <span class="nc">Map</span><span class="o"><</span><span class="nc">String</span><span class="o">,</span> <span class="nc">String</span><span class="o">>></span> <span class="nf">of</span><span class="o">());</span> <span class="o">}</span> - <span class="cm">/**</span> -<span class="cm"> * revise image</span> -<span class="cm"> */</span> + <span class="cm">/** + * revise image + */</span> <span class="nd">@Override</span> - <span class="kd">public</span> <span class="kt">void</span> <span class="nf">reviseParsedImage</span><span class="o">(</span><span class="n">org</span><span class="o">.</span><span class="na">jclouds</span><span class="o">.</span><span class="na">ec2</span><span class="o">.</span><span class="na">domain</span><span class="o">.</span><span class="na">Image</span> <span class="n">from</span><span class="o">,</span> <span class="n">ImageBuilder</span> <span class="n">builder</span><span class="o">,</span> <span class="n">OsFamily</span> <span class="n">family</span><span class="o">,</span> - <span class="n">OperatingSystemBuilder</span> <span class="n">osBuilder</span><span class="o">)</span> <span class="o">{</span> + <span class="kd">public</span> <span class="kt">void</span> <span class="nf">reviseParsedImage</span><span class="o">(</span><span class="n">org</span><span class="o">.</span><span class="na">jclouds</span><span class="o">.</span><span class="na">ec2</span><span class="o">.</span><span class="na">domain</span><span class="o">.</span><span class="na">Image</span> <span class="n">from</span><span class="o">,</span> <span class="nc">ImageBuilder</span> <span class="n">builder</span><span class="o">,</span> <span class="nc">OsFamily</span> <span class="n">family</span><span class="o">,</span> + <span class="nc">OperatingSystemBuilder</span> <span class="n">osBuilder</span><span class="o">)</span> <span class="o">{</span> <span class="c1">// I always build Ubuntu 10.10 images</span> - <span class="n">osBuilder</span><span class="o">.</span><span class="na">family</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="n">osBuilder</span><span class="o">.</span><span class="na">version</span><span class="o">(</span><span class="s">"10.10"</span><span class="o">);</span> + <span class="n">osBuilder</span><span class="o">.</span><span class="na">family</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="n">osBuilder</span><span class="o">.</span><span class="na">version</span><span class="o">(</span><span class="s">"10.10"</span><span class="o">);</span> <span class="c1">// our image version naming convention is /us-west-1/foo/1.1.0.20110224-0001</span> - <span class="n">builder</span><span class="o">.</span><span class="na">version</span><span class="o">(</span><span class="n">from</span><span class="o">.</span><span class="na">getImageLocation</span><span class="o">().</span><span class="na">substring</span><span class="o">(</span><span class="n">from</span><span class="o">.</span><span class="na">getImageLocation</span><span class="o">().</span><span class="na">lastIndexOf</span><span class="o">(</span><span class="sc">'/'</span><span class="o">)</span> <span class="o">+</span> <span class="mi">1</span><span class="o">));</span> - <span class="n">builder</span><span class="o">.</span><span class="na">name</span><span class="o">(</span><span class="s">"foo"</span><span class="o">);</span> + <span class="n">builder</span><span class="o">.</span><span class="na">version</span><span class="o">(</span><span class="n">from</span><span class="o">.</span><span class="na">getImageLocation</span><span class="o">().</span><span class="na">substring</span><span class="o">(</span><span class="n">from</span><span class="o">.</span><span class="na">getImageLocation</span><span class="o">().</span><span class="na">lastIndexOf</span><span class="o">(</span><span class="sc">'/'</span><span class="o">)</span> <span class="o">+</span> <span class="mi">1</span><span class="o">));</span> + <span class="n">builder</span><span class="o">.</span><span class="na">name</span><span class="o">(</span><span class="s">"foo"</span><span class="o">);</span> - <span class="c1">// our image has a default user that's sudo-enable named foo-user</span> - <span class="n">builder</span><span class="o">.</span><span class="na">defaultCredentials</span><span class="o">(</span><span class="k">new</span> <span class="n">Credentials</span><span class="o">(</span><span class="s">"foo-user"</span><span class="o">,</span> <span class="s">"password"</span><span class="o">));</span> + <span class="c1">// our image has a default user that's sudo-enable named foo-user</span> + <span class="n">builder</span><span class="o">.</span><span class="na">defaultCredentials</span><span class="o">(</span><span class="k">new</span> <span class="nc">Credentials</span><span class="o">(</span><span class="s">"foo-user"</span><span class="o">,</span> <span class="s">"password"</span><span class="o">));</span> <span class="o">}</span> -<span class="o">}</span> -</code></pre></div> - +<span class="o">}</span></code></pre></figure> -<h4>Create a test for your parser</h4> +<h4 id="create-a-test-for-your-parser">Create a test for your parser</h4> -<div class="highlight"><pre><code class="java"><span class="kn">package</span> <span class="n">com</span><span class="o">.</span><span class="na">foo</span><span class="o">;</span> +<figure class="highlight"><pre><code class="language-java" data-lang="java"><span class="kn">package</span> <span class="nn">com.foo</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">easymock</span><span class="o">.</span><span class="na">EasyMock</span><span class="o">.</span><span class="na">expect</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">easymock</span><span class="o">.</span><span class="na">classextension</span><span class="o">.</span><span class="na">EasyMock</span><span class="o">.</span><span class="na">createMock</span><span class="o">;</span> @@ -436,25 +403,25 @@ OsFamily.UNRECOGNIZED, with no image ver <span class="kd">public</span> <span class="kd">class</span> <span class="nc">FooAWSEC2ReviseParsedImageTest</span> <span class="o">{</span> <span class="kd">public</span> <span class="kt">void</span> <span class="nf">testFooImage</span><span class="o">()</span> <span class="o">{</span> - <span class="n">ImageBuilder</span> <span class="n">builder</span> <span class="o">=</span> <span class="n">createMock</span><span class="o">(</span><span class="n">ImageBuilder</span><span class="o">.</span><span class="na">class</span><span class="o">);</span> - <span class="n">OperatingSystemBuilder</span> <span class="n">osBuilder</span> <span class="o">=</span> <span class="n">createMock</span><span class="o">(</span><span class="n">OperatingSystemBuilder</span><span class="o">.</span><span class="na">class</span><span class="o">);</span> + <span class="nc">ImageBuilder</span> <span class="n">builder</span> <span class="o">=</span> <span class="n">createMock</span><span class="o">(</span><span class="nc">ImageBuilder</span><span class="o">.</span><span class="na">class</span><span class="o">);</span> + <span class="nc">OperatingSystemBuilder</span> <span class="n">osBuilder</span> <span class="o">=</span> <span class="n">createMock</span><span class="o">(</span><span class="nc">OperatingSystemBuilder</span><span class="o">.</span><span class="na">class</span><span class="o">);</span> <span class="n">org</span><span class="o">.</span><span class="na">jclouds</span><span class="o">.</span><span class="na">ec2</span><span class="o">.</span><span class="na">domain</span><span class="o">.</span><span class="na">Image</span> <span class="n">from</span> <span class="o">=</span> <span class="n">createMock</span><span class="o">(</span><span class="n">org</span><span class="o">.</span><span class="na">jclouds</span><span class="o">.</span><span class="na">ec2</span><span class="o">.</span><span class="na">domain</span><span class="o">.</span><span class="na">Image</span><span class="o">.</span><span class="na">class</span><span class="o">);</span> - <span class="n">expect</span><span class="o">(</span><span class="n">from</span><span class="o">.</span><span class="na">getImageLocation</span><span class="o">()).</span><span class="na">andReturn</span><span class="o">(</span><span class="s">"/us-west-1/foo/1.1.0.20110224-0001"</span><span class="o">).</span><span class="na">times</span><span class="o">(</span><span class="mi">2</span><span class="o">);</span> + <span class="n">expect</span><span class="o">(</span><span class="n">from</span><span class="o">.</span><span class="na">getImageLocation</span><span class="o">()).</span><span class="na">andReturn</span><span class="o">(</span><span class="s">"/us-west-1/foo/1.1.0.20110224-0001"</span><span class="o">).</span><span class="na">times</span><span class="o">(</span><span class="mi">2</span><span class="o">);</span> - <span class="n">expect</span><span class="o">(</span><span class="n">osBuilder</span><span class="o">.</span><span class="na">family</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">andReturn</span><span class="o">(</span><span class="n">osBuilder</span><span class="o">);</span> - <span class="n">expect</span><span class="o">(</span><span class="n">osBuilder</span><span class="o">.</span><span class="na">version</span><span class="o">(</span><span class="s">"10.10"</span><span class="o">)).</span><span class="na">andReturn</span><span class="o">(</span><span class="n">osBuilder</span><span class="o">);</span> + <span class="n">expect</span><span class="o">(</span><span class="n">osBuilder</span><span class="o">.</span><span class="na">family</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">andReturn</span><span class="o">(</span><span class="n">osBuilder</span><span class="o">);</span> + <span class="n">expect</span><span class="o">(</span><span class="n">osBuilder</span><span class="o">.</span><span class="na">version</span><span class="o">(</span><span class="s">"10.10"</span><span class="o">)).</span><span class="na">andReturn</span><span class="o">(</span><span class="n">osBuilder</span><span class="o">);</span> <span class="c1">// ensure our version parses properly</span> - <span class="n">expect</span><span class="o">(</span><span class="n">builder</span><span class="o">.</span><span class="na">version</span><span class="o">(</span><span class="s">"1.1.0.20110224-0001"</span><span class="o">)).</span><span class="na">andReturn</span><span class="o">(</span><span class="n">builder</span><span class="o">);</span> - <span class="n">expect</span><span class="o">(</span><span class="n">builder</span><span class="o">.</span><span class="na">name</span><span class="o">(</span><span class="s">"foo"</span><span class="o">)).</span><span class="na">andReturn</span><span class="o">(</span><span class="n">builder</span><span class="o">);</span> - <span class="n">expect</span><span class="o">(</span><span class="n">builder</span><span class="o">.</span><span class="na">defaultCredentials</span><span class="o">(</span><span class="k">new</span> <span class="n">Credentials</span><span class="o">(</span><span class="s">"foo-user"</span><span class="o">,</span> <span class="s">"password"</span><span class="o">))).</span><span class="na">andReturn</span><span class="o">(</span><span class="n">builder</span><span class="o">);</span> + <span class="n">expect</span><span class="o">(</span><span class="n">builder</span><span class="o">.</span><span class="na">version</span><span class="o">(</span><span class="s">"1.1.0.20110224-0001"</span><span class="o">)).</span><span class="na">andReturn</span><span class="o">(</span><span class="n">builder</span><span class="o">);</span> + <span class="n">expect</span><span class="o">(</span><span class="n">builder</span><span class="o">.</span><span class="na">name</span><span class="o">(</span><span class="s">"foo"</span><span class="o">)).</span><span class="na">andReturn</span><span class="o">(</span><span class="n">builder</span><span class="o">);</span> + <span class="n">expect</span><span class="o">(</span><span class="n">builder</span><span class="o">.</span><span class="na">defaultCredentials</span><span class="o">(</span><span class="k">new</span> <span class="nc">Credentials</span><span class="o">(</span><span class="s">"foo-user"</span><span class="o">,</span> <span class="s">"password"</span><span class="o">))).</span><span class="na">andReturn</span><span class="o">(</span><span class="n">builder</span><span class="o">);</span> <span class="c1">// replay mocks</span> <span class="n">replay</span><span class="o">(</span><span class="n">builder</span><span class="o">);</span> <span class="n">replay</span><span class="o">(</span><span class="n">osBuilder</span><span class="o">);</span> <span class="n">replay</span><span class="o">(</span><span class="n">from</span><span class="o">);</span> - <span class="k">new</span> <span class="nf">FooAWSEC2ReviseParsedImage</span><span class="o">().</span><span class="na">reviseParsedImage</span><span class="o">(</span><span class="n">from</span><span class="o">,</span> <span class="n">builder</span><span class="o">,</span> <span class="n">OsFamily</span><span class="o">.</span><span class="na">UNRECOGNIZED</span><span class="o">,</span> <span class="n">osBuilder</span><span class="o">);</span> + <span class="k">new</span> <span class="nf">FooAWSEC2ReviseParsedImage</span><span class="o">().</span><span class="na">reviseParsedImage</span><span class="o">(</span><span class="n">from</span><span class="o">,</span> <span class="n">builder</span><span class="o">,</span> <span class="nc">OsFamily</span><span class="o">.</span><span class="na">UNRECOGNIZED</span><span class="o">,</span> <span class="n">osBuilder</span><span class="o">);</span> <span class="c1">// verify mocks</span> <span class="n">verify</span><span class="o">(</span><span class="n">builder</span><span class="o">);</span> @@ -462,173 +429,140 @@ OsFamily.UNRECOGNIZED, with no image ver <span class="n">verify</span><span class="o">(</span><span class="n">from</span><span class="o">);</span> <span class="o">}</span> -<span class="o">}</span> -</code></pre></div> - +<span class="o">}</span></code></pre></figure> -<h4>Instruct jclouds to use your parser</h4> +<h4 id="instruct-jclouds-to-use-your-parser">Instruct jclouds to use your parser</h4> -<div class="highlight"><pre><code class="java"><span class="n">Properties</span> <span class="n">overrides</span> <span class="o">=</span> <span class="n">setupProperties</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="n">setupProperties</span><span class="o">();</span> <span class="c1">// your owner id</span> -<span class="n">overrides</span><span class="o">.</span><span class="na">setProperty</span><span class="o">(</span><span class="n">EC2Constants</span><span class="o">.</span><span class="na">PROPERTY_EC2_AMI_OWNERS</span><span class="o">,</span> <span class="s">"123123123213123"</span><span class="o">);</span> +<span class="n">overrides</span><span class="o">.</span><span class="na">setProperty</span><span class="o">(</span><span class="nc">EC2Constants</span><span class="o">.</span><span class="na">PROPERTY_EC2_AMI_OWNERS</span><span class="o">,</span> <span class="s">"123123123213123"</span><span class="o">);</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">"aws-ec2"</span><span class="o">)</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">"aws-ec2"</span><span class="o">)</span> <span class="o">.</span><span class="na">credentials</span><span class="o">(</span><span class="n">access</span><span class="o">,</span> <span class="n">secret</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">modules</span><span class="o">(</span><span class="n">ImmutableSet</span><span class="o">.<</span><span class="n">Module</span><span class="o">></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">.<</span><span class="nc">Module</span><span class="o">></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="k">new</span> <span class="nf">AbstractModule</span><span class="o">(){</span> <span class="nd">@Override</span> <span class="kd">protected</span> <span class="kt">void</span> <span class="nf">configure</span><span class="o">()</span> <span class="o">{</span> - <span class="n">bind</span><span class="o">(</span><span class="n">AWSEC2ReviseParsedImage</span><span class="o">.</span><span class="na">class</span><span class="o">).</span><span class="na">to</span><span class="o">(</span><span class="n">FooAWSEC2ReviseParsedImage</span><span class="o">.</span><span class="na">class</span><span class="o">);</span> + <span class="n">bind</span><span class="o">(</span><span class="nc">AWSEC2ReviseParsedImage</span><span class="o">.</span><span class="na">class</span><span class="o">).</span><span class="na">to</span><span class="o">(</span><span class="nc">FooAWSEC2ReviseParsedImage</span><span class="o">.</span><span class="na">class</span><span class="o">);</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> - - -<h4>Use your image version</h4> + <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> +<h4 id="use-your-image-version">Use your image version</h4> <p>jclouds will now pick the lexicographic highest version, as it now can parse your images.</p> -<div class="highlight"><pre><code class="java"><span class="n">Template</span> <span class="n">template</span> <span class="o">=</span> <span class="n">context</span><span class="o">.</span><span class="na">getComputeService</span><span class="o">().</span><span class="na">templateBuilder</span><span class="o">().</span><span class="na">imageVersionMatches</span><span class="o">(</span><span class="s">"1.1.0.*"</span><span class="o">).</span><span class="na">build</span><span class="o">();</span> -</code></pre></div> - - -<h2>ComputeService API extensions</h2> +<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">context</span><span class="o">.</span><span class="na">getComputeService</span><span class="o">().</span><span class="na">templateBuilder</span><span class="o">().</span><span class="na">imageVersionMatches</span><span class="o">(</span><span class="s">"1.1.0.*"</span><span class="o">).</span><span class="na">build</span><span class="o">();</span></code></pre></figure> +<h2 id="computeservice-api-extensions">ComputeService API extensions</h2> <p>Power users have requested more control over the choices jclouds ComputeService makes when provisioning nodes. By default, we automatically create a security group and keypair for your nodes before launching them. We now allow you to control this a bit through extended template options.</p> -<h2>Spot Instances</h2> - -<p>If you are using the <code>aws-ec2</code> provider, you can use spot instances via the spotPrice parameter on template options:</p> +<h2 id="spot-instances">Spot Instances</h2> -<div class="highlight"><pre><code class="java"><span class="n">options</span><span class="o">.</span><span class="na">as</span><span class="o">(</span><span class="n">AWSEC2TemplateOptions</span><span class="o">.</span><span class="na">class</span><span class="o">).</span><span class="na">spotPrice</span><span class="o">(</span><span class="mf">0.3f</span><span class="o">);</span> -</code></pre></div> +<p>If you are using the <code class="language-plaintext highlighter-rouge">aws-ec2</code> provider, you can use spot instances via the spotPrice parameter on template options:</p> +<figure class="highlight"><pre><code class="language-java" data-lang="java"><span class="n">options</span><span class="o">.</span><span class="na">as</span><span class="o">(</span><span class="nc">AWSEC2TemplateOptions</span><span class="o">.</span><span class="na">class</span><span class="o">).</span><span class="na">spotPrice</span><span class="o">(</span><span class="mf">0.3f</span><span class="o">);</span></code></pre></figure> <p>AWSEC2ComputeServiceLiveTest.testExtendedOptionsAndLogin() uses the spot price option on the portable interface.</p> -<h3>Details</h3> - -<p>In the code, AWSEC2CreateNodesInGroupThenAddToSet actually manages creating the spot instance request. The way jclouds manages this is that it looks for both regular reservations and a\ -so spot requests when listing nodes. The convergence of these 2 is what you'll see in a listNodes command (AWSEC2ListNodesStrategy ex. does these multiple listings in parallel)</p> - -<p>If there's an error on the parameters requesting nodes, you'll receive an HttpResponseException in the 400 range from ec2 itself. The other condition you should be aware of is when the\ -spot request goes through, but perhaps takes longer to provision the nodes than the jclouds default timeout (jclouds.compute.timeout.node-running), something I've not seen.</p> - -<h3>Security Groups</h3> +<h3 id="details">Details</h3> +<p>In the code, AWSEC2CreateNodesInGroupThenAddToSet actually manages creating the spot instance request. The way jclouds manages this is that it looks for both regular reservations and a<br /> +so spot requests when listing nodes. The convergence of these 2 is what youâll see in a listNodes command (AWSEC2ListNodesStrategy ex. does these multiple listings in parallel)</p> -<div class="highlight"><pre><code class="java"><span class="c1">// specify your own groups which already have the correct rules applied</span> -<span class="n">template</span><span class="o">.</span><span class="na">getOptions</span><span class="o">().</span><span class="na">as</span><span class="o">(</span><span class="n">EC2TemplateOptions</span><span class="o">.</span><span class="na">class</span><span class="o">).</span><span class="na">securityGroups</span><span class="o">(</span><span class="n">group1</span><span class="o">,</span> <span class="n">group2</span><span class="o">);</span> -</code></pre></div> +<p>If thereâs an error on the parameters requesting nodes, youâll receive an HttpResponseException in the 400 range from ec2 itself. The other condition you should be aware of is when the<br /> +spot request goes through, but perhaps takes longer to provision the nodes than the jclouds default timeout (jclouds.compute.timeout.node-running), something Iâve not seen.</p> +<h3 id="security-groups">Security Groups</h3> -<h3>Key Pairs</h3> +<figure class="highlight"><pre><code class="language-java" data-lang="java"><span class="c1">// specify your own groups which already have the correct rules applied</span> +<span class="n">template</span><span class="o">.</span><span class="na">getOptions</span><span class="o">().</span><span class="na">as</span><span class="o">(</span><span class="nc">EC2TemplateOptions</span><span class="o">.</span><span class="na">class</span><span class="o">).</span><span class="na">securityGroups</span><span class="o">(</span><span class="n">group1</span><span class="o">,</span> <span class="n">group2</span><span class="o">);</span></code></pre></figure> -<div class="highlight"><pre><code class="java"><span class="c1">// specify your own keypair for use in creating nodes</span> -<span class="n">template</span><span class="o">.</span><span class="na">getOptions</span><span class="o">().</span><span class="na">as</span><span class="o">(</span><span class="n">EC2TemplateOptions</span><span class="o">.</span><span class="na">class</span><span class="o">).</span><span class="na">keyPair</span><span class="o">(</span><span class="n">group</span><span class="o">);</span> +<h3 id="key-pairs">Key Pairs</h3> -<span class="c1">// if your image doesn't use keypairs (ex enstratus), skip creating one</span> -<span class="n">template</span><span class="o">.</span><span class="na">getOptions</span><span class="o">().</span><span class="na">as</span><span class="o">(</span><span class="n">EC2TemplateOptions</span><span class="o">.</span><span class="na">class</span><span class="o">).</span><span class="na">noKeyPair</span><span class="o">();</span> -</code></pre></div> +<figure class="highlight"><pre><code class="language-java" data-lang="java"><span class="c1">// specify your own keypair for use in creating nodes</span> +<span class="n">template</span><span class="o">.</span><span class="na">getOptions</span><span class="o">().</span><span class="na">as</span><span class="o">(</span><span class="nc">EC2TemplateOptions</span><span class="o">.</span><span class="na">class</span><span class="o">).</span><span class="na">keyPair</span><span class="o">(</span><span class="n">group</span><span class="o">);</span> +<span class="c1">// if your image doesn't use keypairs (ex enstratus), skip creating one</span> +<span class="n">template</span><span class="o">.</span><span class="na">getOptions</span><span class="o">().</span><span class="na">as</span><span class="o">(</span><span class="nc">EC2TemplateOptions</span><span class="o">.</span><span class="na">class</span><span class="o">).</span><span class="na">noKeyPair</span><span class="o">();</span></code></pre></figure> -<p>Amazon doesn't store the private key data, so if you supply an existing public key for jclouds to use, you'll also need to supply the private key correlating to it.</p> +<p>Amazon doesnât store the private key data, so if you supply an existing public key for jclouds to use, youâll also need to supply the private key correlating to it.</p> <p>There are two ways you can tell jclouds to use your keypair for an EC2 AMI.</p> <p>The <em>preferable way</em> is to just pass it as Template Option. -If you are using an image where jclouds doesn't know the login user, you'll need to specify the -<code>option.overrideCredentialsWith</code> and pass along the user that's baked in.</p> +If you are using an image where jclouds doesnât know the login user, youâll need to specify the +<code class="language-plaintext highlighter-rouge">option.overrideCredentialsWith</code> and pass along the user thatâs baked in.</p> -<div class="highlight"><pre><code class="java"><span class="n">overrideLoginCredentialWith</span><span class="o">(</span><span class="n">your_id_rsa_string</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="s">"root"</span><span class="o">,</span> <span class="n">your_id_rsa_string</span><span class="o">))</span> -</code></pre></div> +<figure class="highlight"><pre><code class="language-java" data-lang="java"><span class="n">overrideLoginCredentialWith</span><span class="o">(</span><span class="n">your_id_rsa_string</span><span class="o">)</span> +<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="s">"root"</span><span class="o">,</span> <span class="n">your_id_rsa_string</span><span class="o">))</span></code></pre></figure> +<p>If you want to authorize your keypair, you can use the <code class="language-plaintext highlighter-rouge">authorizePublicKey(yourKey)</code> method</p> -<p>If you want to authorize your keypair, you can use the <code>authorizePublicKey(yourKey)</code> method</p> +<figure class="highlight"><pre><code class="language-java" data-lang="java"><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></code></pre></figure> -<div class="highlight"><pre><code class="java"><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> -</code></pre></div> +<p>Hereâs how you can run a script using the overrideLoginCredentialsWith</p> +<figure class="highlight"><pre><code class="language-java" data-lang="java"><span class="n">templateOptions</span><span class="o">.</span><span class="na">runScript</span><span class="o">(</span><span class="n">_script_</span><span class="o">).</span> <span class="n">authorizePublicKey</span><span class="o">().</span><span class="na">overrideLoginCredentialWith</span><span class="o">(</span><span class="kd">private</span><span class="o">)</span></code></pre></figure> -<p>Here's how you can run a script using the overrideLoginCredentialsWith</p> - -<div class="highlight"><pre><code class="java"><span class="n">templateOptions</span><span class="o">.</span><span class="na">runScript</span><span class="o">(</span><span class="n">_script_</span><span class="o">).</span> <span class="n">authorizePublicKey</span><span class="o">().</span><span class="na">overrideLoginCredentialWith</span><span class="o">(</span><span class="kd">private</span><span class="o">)</span> -</code></pre></div> - - -<p>Keep in mind that <em>authorizePublicKey()</em> is redundant, if it is the same as what corresponds to the <code>keyPair()</code> option.</p> +<p>Keep in mind that <em>authorizePublicKey()</em> is redundant, if it is the same as what corresponds to the <code class="language-plaintext highlighter-rouge">keyPair()</code> option.</p> <p>With respect to the security group, jclouds creates a security group for you, with rules corresponding to the -<code>inboundPorts()</code> option (defaults to open port 22), unless you use the option -<code>EC2TemplateOptions.securityGroups()</code>.</p> +<code class="language-plaintext highlighter-rouge">inboundPorts()</code> option (defaults to open port 22), unless you use the option +<code class="language-plaintext highlighter-rouge">EC2TemplateOptions.securityGroups()</code>.</p> <p>The other way is the push your credentials into the credentials store so that jClouds uses it.</p> <p>When a keypair is automatically created, jclouds <a href="https://github.com/apache/jclouds/blob/master/apis/ec2/src/main/java/org/jclouds/ec2/compute/strategy/CreateKeyPairAndSecurityGroupsAsNeededAndReturnRunOptions.java">puts</a> the keypair into the Credentials Map. You can use the same option to put your credentials into the Credentials Map using the credentialStore</p> -<div class="highlight"><pre><code class="java"><span class="n">ComputeServiceContext</span><span class="o">.</span><span class="na">credentialStore</span> -</code></pre></div> - +<figure class="highlight"><pre><code class="language-java" data-lang="java"><span class="nc">ComputeServiceContext</span><span class="o">.</span><span class="na">credentialStore</span></code></pre></figure> <p><em>Note, the more you use features like security groups and keypairs, the less portable your code will be across clouds.</em></p> -<h3>VPC</h3> - +<h3 id="vpc">VPC</h3> <p>To create nodes in a subnet under Amazon VPC add the following option to your template options. Note that VPCs and Security Groups are mutually exclusive.</p> -<div class="highlight"><pre><code class="java"><span class="n">TemplateOptions</span> <span class="n">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="n">options</span><span class="o">.</span><span class="na">as</span><span class="o">(</span><span class="n">AWSEC2TemplateOptions</span><span class="o">.</span><span class="na">class</span><span class="o">).</span><span class="na">subnetId</span><span class="o">(</span><span class="n">subnetId</span><span class="o">);</span> +<figure class="highlight"><pre><code class="language-java" data-lang="java"><span class="nc">TemplateOptions</span> <span class="n">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="n">options</span><span class="o">.</span><span class="na">as</span><span class="o">(</span><span class="nc">AWSEC2TemplateOptions</span><span class="o">.</span><span class="na">class</span><span class="o">).</span><span class="na">subnetId</span><span class="o">(</span><span class="n">subnetId</span><span class="o">);</span> -<span class="n">Set</span><span class="o"><?</span> <span class="kd">extends</span> <span class="n">NodeMetadata</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">runNodesInGroup</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">options</span><span class="o">);</span> -</code></pre></div> +<span class="nc">Set</span><span class="o"><?</span> <span class="kd">extends</span> <span class="nc">NodeMetadata</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">runNodesInGroup</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">options</span><span class="o">);</span></code></pre></figure> +<p>You can also checkout <code class="language-plaintext highlighter-rouge">EC2ComputeServiceListTest.testExtendedOptionsWithSubnetId()</code></p> -<p>You can also checkout <code>EC2ComputeServiceListTest.testExtendedOptionsWithSubnetId()</code></p> - -<h3>Monitoring (Cloud Watch)</h3> +<h3 id="monitoring-cloud-watch">Monitoring (Cloud Watch)</h3> <p><em>Note this is currently only in 1.0-SNAPSHOT</em></p> <p>To create nodes that are automatically monitored in CloudWatch, add the following to your template options:</p> -<div class="highlight"><pre><code class="java"><span class="n">TemplateOptions</span> <span class="n">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="n">options</span><span class="o">.</span><span class="na">as</span><span class="o">(</span><span class="n">EC2TemplateOptions</span><span class="o">.</span><span class="na">class</span><span class="o">).</span><span class="na">enableMonitoring</span><span class="o">();</span> - -<span class="n">Set</span><span class="o"><?</span> <span class="kd">extends</span> <span class="n">NodeMetadata</span><span class="o">></span> <span class="n">monitoredNodes</span> <span class="o">=</span> <span class="n">compute</span><span class="o">.</span><span class="na">runNodesInGroup</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">options</span><span class="o">);</span> -</code></pre></div> +<figure class="highlight"><pre><code class="language-java" data-lang="java"><span class="nc">TemplateOptions</span> <span class="n">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="n">options</span><span class="o">.</span><span class="na">as</span><span class="o">(</span><span class="nc">EC2TemplateOptions</span><span class="o">.</span><span class="na">class</span><span class="o">).</span><span class="na">enableMonitoring</span><span class="o">();</span> +<span class="nc">Set</span><span class="o"><?</span> <span class="kd">extends</span> <span class="nc">NodeMetadata</span><span class="o">></span> <span class="n">monitoredNodes</span> <span class="o">=</span> <span class="n">compute</span><span class="o">.</span><span class="na">runNodesInGroup</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">options</span><span class="o">);</span></code></pre></figure> <p>You can then use the !CloudWatchClient to get statistics on your nodes.</p> -<div class="highlight"><pre><code class="java"><span class="n">RestContext</span><span class="o"><</span><span class="n">CloudWatchClient</span><span class="o">,</span> <span class="n">CloudWatchAsyncClient</span><span class="o">></span> <span class="n">cloudWatchContext</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">"cloudwatch"</span><span class="o">)</span> +<figure class="highlight"><pre><code class="language-java" data-lang="java"><span class="nc">RestContext</span><span class="o"><</span><span class="nc">CloudWatchClient</span><span class="o">,</span> <span class="nc">CloudWatchAsyncClient</span><span class="o">></span> <span class="n">cloudWatchContext</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">"cloudwatch"</span><span class="o">)</span> <span class="o">.</span><span class="na">credentials</span><span class="o">(</span><span class="n">access</span><span class="o">,</span> <span class="n">secret</span><span class="o">)</span> <span class="o">.</span><span class="na">build</span><span class="o">();</span> -<span class="n">String</span> <span class="n">region</span> <span class="o">=</span> <span class="n">node</span><span class="o">.</span><span class="na">getLocation</span><span class="o">().</span><span class="na">getParent</span><span class="o">().</span><span class="na">getId</span><span class="o">();</span> - -<span class="n">Set</span><span class="o"><</span><span class="n">Datapoint</span><span class="o">></span> <span class="n">datapoints</span> <span class="o">=</span> <span class="n">monitoringContext</span><span class="o">.</span><span class="na">getApi</span><span class="o">().</span><span class="na">getMetricStatisticsInRegion</span><span class="o">(</span><span class="n">region</span><span class="o">,</span> - <span class="s">"CPUUtilization"</span><span class="o">,</span> <span class="n">before</span><span class="o">,</span> <span class="k">new</span> <span class="n">Date</span><span class="o">(),</span> <span class="mi">60</span><span class="o">,</span> <span class="s">"Average"</span><span class="o">);</span> -</code></pre></div> +<span class="nc">String</span> <span class="n">region</span> <span class="o">=</span> <span class="n">node</span><span class="o">.</span><span class="na">getLocation</span><span class="o">().</span><span class="na">getParent</span><span class="o">().</span><span class="na">getId</span><span class="o">();</span> +<span class="nc">Set</span><span class="o"><</span><span class="nc">Datapoint</span><span class="o">></span> <span class="n">datapoints</span> <span class="o">=</span> <span class="n">monitoringContext</span><span class="o">.</span><span class="na">getApi</span><span class="o">().</span><span class="na">getMetricStatisticsInRegion</span><span class="o">(</span><span class="n">region</span><span class="o">,</span> + <span class="s">"CPUUtilization"</span><span class="o">,</span> <span class="n">before</span><span class="o">,</span> <span class="k">new</span> <span class="nc">Date</span><span class="o">(),</span> <span class="mi">60</span><span class="o">,</span> <span class="s">"Average"</span><span class="o">);</span></code></pre></figure> -<h2>GovCloud</h2> - +<h2 id="govcloud">GovCloud</h2> <p>To operate within a GovCloud instance, you will need to override the aws ec2 endpoint. For EC2:</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">String</span> <span class="n">GOV_CLOUD_ENDPOINT</span> <span class="o">=</span> <span class="s">"https://ec2.us-gov-west-1.amazonaws.com"</span><span class="o">;</span> -<span class="n">overrides</span><span class="o">.</span><span class="na">setProperty</span><span class="o">(</span><span class="s">"aws-ec2.endpoint"</span><span class="o">,</span> <span class="n">GOV_CLOUD_ENDPOINT</span><span class="o">);</span> -</code></pre></div> - +<figure class="highlight"><pre><code class="language-java" data-lang="java"><span class="kd">public</span> <span class="kd">static</span> <span class="kd">final</span> <span class="nc">String</span> <span class="no">GOV_CLOUD_ENDPOINT</span> <span class="o">=</span> <span class="s">"https://ec2.us-gov-west-1.amazonaws.com"</span><span class="o">;</span> +<span class="n">overrides</span><span class="o">.</span><span class="na">setProperty</span><span class="o">(</span><span class="s">"aws-ec2.endpoint"</span><span class="o">,</span> <span class="no">GOV_CLOUD_ENDPOINT</span><span class="o">);</span></code></pre></figure> <p>You can find GovCloud endpoints for other services here: http://docs.amazonwebservices.com/general/latest/gr/rande.html#govcloud_region</p>
Modified: jclouds/site-content/guides/aws-s3/index.html URL: http://svn.apache.org/viewvc/jclouds/site-content/guides/aws-s3/index.html?rev=1923693&r1=1923692&r2=1923693&view=diff ============================================================================== --- jclouds/site-content/guides/aws-s3/index.html (original) +++ jclouds/site-content/guides/aws-s3/index.html Mon Feb 10 07:25:53 2025 @@ -156,11 +156,9 @@ jclouds.trust-all-certs=true jclouds.relax-hostname=true </pre> - <p>Here are a few configuration examples of common s3 clones:</p> -<h3>Google Cloud Storage</h3> - +<h3 id="google-cloud-storage">Google Cloud Storage</h3> <p>You must configure your account for <a href="https://developers.google.com/storage/docs/interoperability">interoperability</a> and <a href="https://developers.google.com/storage/docs/reference/v1/getting-startedv1#keys">generate HMAC keys</a>. Note that you must create containers via jclouds, not the web console. Finally set these properties:</p> <pre> @@ -170,9 +168,7 @@ jclouds.s3.virtual-host-buckets=false jclouds.strip-expect-header=true </pre> - -<h3>RiakCS</h3> - +<h3 id="riakcs">RiakCS</h3> <p>You must set these properties:</p> <pre> @@ -180,10 +176,8 @@ jclouds.provider=s3 jclouds.endpoint=http://data.riakcs.net:8080 </pre> - -<h3>Walrus</h3> - -<p>The following properties should help use the <code>s3</code> provider on a walrus install:</p> +<h3 id="walrus">Walrus</h3> +<p>The following properties should help use the <code class="language-plaintext highlighter-rouge">s3</code> provider on a walrus install:</p> <pre> jclouds.regions=walrus @@ -193,8 +187,6 @@ s3.endpoint=http://host:8773/services/Wa </pre> - - <div class="row clearfix"> <div id="footer" class="col-md-12 column"> <div id="footer">
