libcloud-notifications mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From anthonys...@apache.org
Subject svn commit: r1728588 [6/7] - in /libcloud/site/trunk: generated/ generated/assets/ generated/blog/ generated/blog/2010/02/02/ generated/blog/2010/05/11/ generated/blog/2010/10/12/ generated/blog/2011/01/17/ generated/blog/2011/02/15/ generated/blog/201...
Date Fri, 05 Feb 2016 03:08:13 GMT
Modified: libcloud/site/trunk/generated/blog/page/8/index.html
URL: http://svn.apache.org/viewvc/libcloud/site/trunk/generated/blog/page/8/index.html?rev=1728588&r1=1728587&r2=1728588&view=diff
==============================================================================
--- libcloud/site/trunk/generated/blog/page/8/index.html (original)
+++ libcloud/site/trunk/generated/blog/page/8/index.html Fri Feb  5 03:08:11 2016
@@ -47,7 +47,7 @@
 
     
 
-    <link href='/assets/global-e2026f958a032fcde1c942cd7456dd99.css' rel='stylesheet' type='text/css' />
+    <link href='/assets/global-52715da7c55e2d86c5b5bfc2a8e7c73e.css' rel='stylesheet' type='text/css' />
 
   </head>
 
@@ -97,6 +97,125 @@
     
       <div class="post">
   
+    <h2><a href="/blog/2013/11/21/libcloud-0-14-0-beta3-released.html">Libcloud 0.14.0-beta3 released</a></h2>
+  
+
+  
+    
+  
+  <span class="post-date-author">By Tomaz Muraus <span style="display:none">(<a href="https://plus.google.com/+TomazMuraus?rel=author">Google+</a>)</span>on Nov 21, 2013</span>
+
+  <div class="post-content">
+    <p>We are pleased to announce the release of Libcloud 0.14.0-beta3, a first
+(beta) release in the 0.14.0 series.</p>
+
+<p>The reason this is a beta and not a final release is that it includes some
+pretty big changes (most notably the &quot;region&quot; argument change). I would
+like those changes to get some more real-life testing before doing a final
+release.</p>
+
+<p>Being a first release in the 0.14.0 series means it brings many (and I mean
+many!) new features, changes and improvements.</p>
+
+<h3>Release highlights</h3>
+
+<ul>
+<li>To make working with providers which support multiple regions easier and
+more user-friendly, some of the drivers have moved away from the &quot;one
+class per region&quot; to a single class plus &quot;region&quot; argument model. Those
+drivers include: EC2, Rackspace, ElasticHosts, Joyent, CloudFiles.</li>
+<li>Addition of a programmatic way of updating the pricing file and ability
+to use a custom pricing file. For more information, please see the
+<a href="https://libcloud.readthedocs.org/en/latest/compute/pricing.html#using-a-custom-pricing-file">documentation</a></li>
+<li>Addition of block storage management methods to the following drivers:
+OpenNebula, OpenStack, EC2</li>
+<li>Unification of the extension arguments for handling security groups in
+the EC2 and OpenStack driver</li>
+<li>Many new features and improvements in the CloudStack driver</li>
+<li>New compute and loadbalancer driver for Google Compute Engine (GCE)</li>
+<li>Ability to export Libcloud&#39;s DNS zone to BIND zone format</li>
+<li>and much more!</li>
+</ul>
+
+<p>Some of the changes noted above are also backward incompatible. For more
+information on what has changed and how to update your code to work with
+a new release, please visit the <a href="https://libcloud.readthedocs.org/en/latest/upgrade_notes.html#libcloud-0-14-0">Upgrade Notes</a> section in our
+documentation.</p>
+
+<h3>Other non-code changes worth a mention</h3>
+
+<ul>
+<li>Tests now also run on travis-ci - <a href="https://travis-ci.org/apache/libcloud">https://travis-ci.org/apache/libcloud</a></li>
+<li>New documentation is now also available on RTD -
+<a href="https://libcloud.readthedocs.org/en/latest/">https://libcloud.readthedocs.org/en/latest/</a></li>
+</ul>
+
+<p>Full change log can be found <a href="https://git-wip-us.apache.org/repos/asf?p=libcloud.git;a=blob;f=CHANGES;h=1a8d9e2072d4b49b5718b19f534573f9dfb224e4;hb=5ef0707b2a34f0e8520fe029e7313b7c57f15919#l3">here</a>.</p>
+
+<h3>Download</h3>
+
+<p>Libcloud 0.14.0-beta3 can be downloaded from
+http://libcloud.apache.org/downloads.html
+or installed using pip:</p>
+
+<div class="highlight"><pre><code class="bash">pip install apache-libcloud<span class="o">==</span>0.14.0-beta3
+</code></pre></div>
+
+<p>It is possible that the file hasn&#39;t been synced to all the mirrors yet. If
+this
+is the case, please use the main Apache mirror -
+http://www.apache.org/dist/libcloud.</p>
+
+<h3>Upgrading</h3>
+
+<p>If you have installed Libcloud using pip you can also use it to upgrade it:</p>
+
+<div class="highlight"><pre><code class="bash">pip install --upgrade apache-libcloud<span class="o">==</span>0.14.0-beta3
+</code></pre></div>
+
+<h3>Upgrade notes</h3>
+
+<p>A page which describes backward incompatible or semi-incompatible
+changes and how to preserve the old behavior when this is possible
+can be found at
+https://libcloud.readthedocs.org/en/latest/upgrade_notes.html#libcloud-0-14-0
+.</p>
+
+<h3>Documentation</h3>
+
+<p>Regular and API documentation is available at
+https://libcloud.readthedocs.org/en/latest/.</p>
+
+<h3>Bugs / Issues</h3>
+
+<p>If you find any bug or issue, please report it on our issue tracker
+<a href="https://issues.apache.org/jira/browse/LIBCLOUD">https://issues.apache.org/jira/browse/LIBCLOUD</a>.
+Don&#39;t forget to attach an example and / or test which reproduces your
+problem.</p>
+
+<h2>Thanks</h2>
+
+<p>Thanks to everyone who contributed and made this release possible!</p>
+
+<p>Full list of people who contributed to this release can be found in the
+<a href="https://git-wip-us.apache.org/repos/asf?p=libcloud.git;a=blob;f=CHANGES;h=1a8d9e2072d4b49b5718b19f534573f9dfb224e4;hb=5ef0707b2a34f0e8520fe029e7313b7c57f15919#l3">CHANGES file</a>.</p>
+
+<p>Source: <a href="http://mail-archives.apache.org/mod_mbox/libcloud-users/201311.mbox/%3CCAJMHEm%2B51RFT672GanfW9DKopcmDtZz2kkA7m0uufP1UupjeZw@mail.gmail.com%3E">release announcement</a>.</p>
+
+  </div>
+
+  <div class="row section post-meta">
+    <div class="col-md-12 post-tags">
+      <p>Tags: <a href="/blog/tags/news.html" rel="tag">news</a>, <a href="/blog/tags/release%20announcement.html" rel="tag">release announcement</a></p>
+    </div>
+  </div>
+</div>
+
+    
+  
+    
+      <div class="post">
+  
     <h2><a href="/blog/2013/09/05/libcloud-0-13-1-released.html">Libcloud 0.13.1 released</a></h2>
   
 
@@ -365,106 +484,6 @@ people who contributed to this release c
 
     
   
-    
-      <div class="post">
-  
-    <h2><a href="/blog/2013/02/18/libcloud-0-12-1-released.html">Libcloud 0.12.1 released</a></h2>
-  
-
-  
-    
-  
-  <span class="post-date-author">By Tomaz Muraus <span style="display:none">(<a href="https://plus.google.com/+TomazMuraus?rel=author">Google+</a>)</span>on Feb 18, 2013</span>
-
-  <div class="post-content">
-    <p>We are pleased to announce the release of Libcloud 0.12.1!</p>
-
-<p>This release includes many new features, improvements and bug-fixes.</p>
-
-<h3>Release highlights</h3>
-
-<ul>
-<li>New more efficient generator based approach for iterating over paginated
-collections.</li>
-<li>New generator based method for iterating over containers
-(iterate_containers).</li>
-<li>Old ENUM style provided constants have been replaced with a string
-version. This allows users to dynamically register new providers using new
-set_driver method.</li>
-<li>Support for multipart uploads in the Amazon S3 storage driver.</li>
-<li>New load balancer driver for Amazon Load Balancing (ELB) service.</li>
-<li>New storage driver for Azure Blog storage</li>
-<li>New &quot;local storage&quot; storage driver</li>
-<li>Support for multipart uploads in the S3 driver</li>
-<li>Allow user to specify which CA cert is used for verifying server SSL
-certificate by setting &quot;SSL<em>CERT</em>FILE&quot; environment variable</li>
-<li>Drivers which use xmlrplic library now use Libcloud HTTP layer for making
-HTTP requests. This means those drivers now support LIBCLOUD_DEBUG and SSL
-cert validation functionality</li>
-</ul>
-
-<p>Full change log can be found at
-https://svn.apache.org/repos/asf/libcloud/tags/0.12.1/CHANGES</p>
-
-<h3>Download</h3>
-
-<p>Libcloud 0.12.1 can be downloaded from
-http://libcloud.apache.org/downloads.html
-or installed using pip:</p>
-
-<div class="highlight"><pre><code class="bash">pip install apache-libcloud
-</code></pre></div>
-
-<p>It is possible that the file hasn&#39;t been synced to all the mirrors yet. If
-this
-is the case, please use the main Apache mirror -
-http://www.apache.org/dist/libcloud.</p>
-
-<h3>Upgrading</h3>
-
-<p>If you have installed Libcloud using pip you can also use it to upgrade it:</p>
-
-<div class="highlight"><pre><code class="bash">pip install --upgrade apache-libcloud
-</code></pre></div>
-
-<h3>Upgrade notes</h3>
-
-<p>A page which describes backward incompatible or semi-incompatible
-changes and how to preserve the old behavior when this is possible
-can be found at http://libcloud.apache.org/upgrade-notes.html.</p>
-
-<h3>Documentation</h3>
-
-<p>API documentation can be found at http://libcloud.apache.org/apidocs/0.12.1/
-.</p>
-
-<h3>Bugs / Issues</h3>
-
-<p>If you find any bug or issue, please report it on our issue tracker
-<a href="https://issues.apache.org/jira/browse/LIBCLOUD">https://issues.apache.org/jira/browse/LIBCLOUD</a>.
-Don&#39;t forget to attach an example and / or test which reproduces your
-problem.</p>
-
-<h3>Thanks</h3>
-
-<p>Thanks to everyone who contributed and made this release possible! Full
-list of
-people who contributed to this release can be found in the CHANGES file
-<a href="https://svn.apache.org/repos/asf/libcloud/tags/0.12.1/CHANGES">https://svn.apache.org/repos/asf/libcloud/tags/0.12.1/CHANGES</a>.</p>
-
-<p>Source: <a href="http://mail-archives.apache.org/mod_mbox/libcloud-users/201302.mbox/%3CCAJMHEmLc0RfSxM9UhXPeTwKiNDbZPsQs6SJMA1o3y1D4Cv+reA@mail.gmail.com%3E">release announcement</a>.</p>
-
-  </div>
-
-  <div class="row section post-meta">
-    <div class="col-md-12 post-tags">
-      <p>Tags: <a href="/blog/tags/news.html" rel="tag">news</a>, <a href="/blog/tags/release%20announcement.html" rel="tag">release announcement</a></p>
-    </div>
-  </div>
-</div>
-
-    
-  
 </div>
 
 <p class="navigation">
@@ -489,7 +508,7 @@ people who contributed to this release c
   <div class="col-lg-3 col-lg-offset-1">
     <h2>Archive</h1>
     <ul>
-      <li> <a href="/blog/archives/2016/01/"> January 2016</a> &nbsp;(4)</li><li> <a href="/blog/archives/2015/12/"> December 2015</a> &nbsp;(1)</li><li> <a href="/blog/archives/2015/11/"> November 2015</a> &nbsp;(1)</li><li> <a href="/blog/archives/2015/10/"> October 2015</a> &nbsp;(2)</li><li> <a href="/blog/archives/2015/08/"> August 2015</a> &nbsp;(1)</li><li> <a href="/blog/archives/2015/03/"> March 2015</a> &nbsp;(1)</li><li> <a href="/blog/archives/2015/02/"> February 2015</a> &nbsp;(1)</li><li> <a href="/blog/archives/2014/12/"> December 2014</a> &nbsp;(1)</li><li> <a href="/blog/archives/2014/11/"> November 2014</a> &nbsp;(1)</li><li> <a href="/blog/archives/2014/07/"> July 2014</a> &nbsp;(2)</li><li> <a href="/blog/archives/2014/06/"> June 2014</a> &nbsp;(1)</li><li> <a href="/blog/archives/2014/05/"> May 2014</a> &nbsp;(1)</li><li> <a href="/blog/archives/2014/04/"> April 2014</a> &nbsp;(1)</li><li> <a href="/blog/archives/2014/02/"> February 2014</a> &nbsp;(8)</li><li> <
 a href="/blog/archives/2014/01/"> January 2014</a> &nbsp;(4)</li><li> <a href="/blog/archives/2013/12/"> December 2013</a> &nbsp;(3)</li><li> <a href="/blog/archives/2013/11/"> November 2013</a> &nbsp;(2)</li><li> <a href="/blog/archives/2013/09/"> September 2013</a> &nbsp;(1)</li><li> <a href="/blog/archives/2013/08/"> August 2013</a> &nbsp;(1)</li><li> <a href="/blog/archives/2013/07/"> July 2013</a> &nbsp;(1)</li><li> <a href="/blog/archives/2013/03/"> March 2013</a> &nbsp;(1)</li><li> <a href="/blog/archives/2013/02/"> February 2013</a> &nbsp;(1)</li><li> <a href="/blog/archives/2012/12/"> December 2012</a> &nbsp;(2)</li><li> <a href="/blog/archives/2012/11/"> November 2012</a> &nbsp;(2)</li><li> <a href="/blog/archives/2012/09/"> September 2012</a> &nbsp;(1)</li><li> <a href="/blog/archives/2012/08/"> August 2012</a> &nbsp;(1)</li><li> <a href="/blog/archives/2012/07/"> July 2012</a> &nbsp;(1)</li><li> <a href="/blog/archives/2012/05/"> May 2012</a> &nbsp;(2)</li><li> <a href="
 /blog/archives/2012/04/"> April 2012</a> &nbsp;(1)</li><li> <a href="/blog/archives/2012/02/"> February 2012</a> &nbsp;(1)</li><li> <a href="/blog/archives/2011/12/"> December 2011</a> &nbsp;(2)</li><li> <a href="/blog/archives/2011/11/"> November 2011</a> &nbsp;(3)</li><li> <a href="/blog/archives/2011/10/"> October 2011</a> &nbsp;(1)</li><li> <a href="/blog/archives/2011/09/"> September 2011</a> &nbsp;(1)</li><li> <a href="/blog/archives/2011/07/"> July 2011</a> &nbsp;(1)</li><li> <a href="/blog/archives/2011/06/"> June 2011</a> &nbsp;(1)</li><li> <a href="/blog/archives/2011/05/"> May 2011</a> &nbsp;(1)</li><li> <a href="/blog/archives/2011/02/"> February 2011</a> &nbsp;(1)</li><li> <a href="/blog/archives/2011/01/"> January 2011</a> &nbsp;(1)</li><li> <a href="/blog/archives/2010/10/"> October 2010</a> &nbsp;(1)</li><li> <a href="/blog/archives/2010/05/"> May 2010</a> &nbsp;(1)</li><li> <a href="/blog/archives/2010/02/"> February 2010</a> &nbsp;(1)</li>
+      <li> <a href="/blog/archives/2016/02/"> February 2016</a> &nbsp;(1)</li><li> <a href="/blog/archives/2016/01/"> January 2016</a> &nbsp;(4)</li><li> <a href="/blog/archives/2015/12/"> December 2015</a> &nbsp;(1)</li><li> <a href="/blog/archives/2015/11/"> November 2015</a> &nbsp;(1)</li><li> <a href="/blog/archives/2015/10/"> October 2015</a> &nbsp;(2)</li><li> <a href="/blog/archives/2015/08/"> August 2015</a> &nbsp;(1)</li><li> <a href="/blog/archives/2015/03/"> March 2015</a> &nbsp;(1)</li><li> <a href="/blog/archives/2015/02/"> February 2015</a> &nbsp;(1)</li><li> <a href="/blog/archives/2014/12/"> December 2014</a> &nbsp;(1)</li><li> <a href="/blog/archives/2014/11/"> November 2014</a> &nbsp;(1)</li><li> <a href="/blog/archives/2014/07/"> July 2014</a> &nbsp;(2)</li><li> <a href="/blog/archives/2014/06/"> June 2014</a> &nbsp;(1)</li><li> <a href="/blog/archives/2014/05/"> May 2014</a> &nbsp;(1)</li><li> <a href="/blog/archives/2014/04/"> April 2014</a> &nbsp;(1)</li><li> <
 a href="/blog/archives/2014/02/"> February 2014</a> &nbsp;(8)</li><li> <a href="/blog/archives/2014/01/"> January 2014</a> &nbsp;(4)</li><li> <a href="/blog/archives/2013/12/"> December 2013</a> &nbsp;(3)</li><li> <a href="/blog/archives/2013/11/"> November 2013</a> &nbsp;(2)</li><li> <a href="/blog/archives/2013/09/"> September 2013</a> &nbsp;(1)</li><li> <a href="/blog/archives/2013/08/"> August 2013</a> &nbsp;(1)</li><li> <a href="/blog/archives/2013/07/"> July 2013</a> &nbsp;(1)</li><li> <a href="/blog/archives/2013/03/"> March 2013</a> &nbsp;(1)</li><li> <a href="/blog/archives/2013/02/"> February 2013</a> &nbsp;(1)</li><li> <a href="/blog/archives/2012/12/"> December 2012</a> &nbsp;(2)</li><li> <a href="/blog/archives/2012/11/"> November 2012</a> &nbsp;(2)</li><li> <a href="/blog/archives/2012/09/"> September 2012</a> &nbsp;(1)</li><li> <a href="/blog/archives/2012/08/"> August 2012</a> &nbsp;(1)</li><li> <a href="/blog/archives/2012/07/"> July 2012</a> &nbsp;(1)</li><li> <a h
 ref="/blog/archives/2012/05/"> May 2012</a> &nbsp;(2)</li><li> <a href="/blog/archives/2012/04/"> April 2012</a> &nbsp;(1)</li><li> <a href="/blog/archives/2012/02/"> February 2012</a> &nbsp;(1)</li><li> <a href="/blog/archives/2011/12/"> December 2011</a> &nbsp;(2)</li><li> <a href="/blog/archives/2011/11/"> November 2011</a> &nbsp;(3)</li><li> <a href="/blog/archives/2011/10/"> October 2011</a> &nbsp;(1)</li><li> <a href="/blog/archives/2011/09/"> September 2011</a> &nbsp;(1)</li><li> <a href="/blog/archives/2011/07/"> July 2011</a> &nbsp;(1)</li><li> <a href="/blog/archives/2011/06/"> June 2011</a> &nbsp;(1)</li><li> <a href="/blog/archives/2011/05/"> May 2011</a> &nbsp;(1)</li><li> <a href="/blog/archives/2011/02/"> February 2011</a> &nbsp;(1)</li><li> <a href="/blog/archives/2011/01/"> January 2011</a> &nbsp;(1)</li><li> <a href="/blog/archives/2010/10/"> October 2010</a> &nbsp;(1)</li><li> <a href="/blog/archives/2010/05/"> May 2010</a> &nbsp;(1)</li><li> <a href="/blog/archiv
 es/2010/02/"> February 2010</a> &nbsp;(1)</li>
     </ul>
   </div>
 </div>
@@ -520,7 +539,7 @@ people who contributed to this release c
     </div><!-- /.container -->
 
     <!-- JavaScript -->
-    <script src='/assets/global-cd627f201dd4cfb6b045cf9d3aa874a1.js' type='text/javascript'></script>
+    <script src='/assets/global-9c9298ad4670c6fcb2e40b5291d6c657.js' type='text/javascript'></script>
 
 
     

Modified: libcloud/site/trunk/generated/blog/page/9/index.html
URL: http://svn.apache.org/viewvc/libcloud/site/trunk/generated/blog/page/9/index.html?rev=1728588&r1=1728587&r2=1728588&view=diff
==============================================================================
--- libcloud/site/trunk/generated/blog/page/9/index.html (original)
+++ libcloud/site/trunk/generated/blog/page/9/index.html Fri Feb  5 03:08:11 2016
@@ -47,7 +47,7 @@
 
     
 
-    <link href='/assets/global-e2026f958a032fcde1c942cd7456dd99.css' rel='stylesheet' type='text/css' />
+    <link href='/assets/global-52715da7c55e2d86c5b5bfc2a8e7c73e.css' rel='stylesheet' type='text/css' />
 
   </head>
 
@@ -97,6 +97,106 @@
     
       <div class="post">
   
+    <h2><a href="/blog/2013/02/18/libcloud-0-12-1-released.html">Libcloud 0.12.1 released</a></h2>
+  
+
+  
+    
+  
+  <span class="post-date-author">By Tomaz Muraus <span style="display:none">(<a href="https://plus.google.com/+TomazMuraus?rel=author">Google+</a>)</span>on Feb 18, 2013</span>
+
+  <div class="post-content">
+    <p>We are pleased to announce the release of Libcloud 0.12.1!</p>
+
+<p>This release includes many new features, improvements and bug-fixes.</p>
+
+<h3>Release highlights</h3>
+
+<ul>
+<li>New more efficient generator based approach for iterating over paginated
+collections.</li>
+<li>New generator based method for iterating over containers
+(iterate_containers).</li>
+<li>Old ENUM style provided constants have been replaced with a string
+version. This allows users to dynamically register new providers using new
+set_driver method.</li>
+<li>Support for multipart uploads in the Amazon S3 storage driver.</li>
+<li>New load balancer driver for Amazon Load Balancing (ELB) service.</li>
+<li>New storage driver for Azure Blog storage</li>
+<li>New &quot;local storage&quot; storage driver</li>
+<li>Support for multipart uploads in the S3 driver</li>
+<li>Allow user to specify which CA cert is used for verifying server SSL
+certificate by setting &quot;SSL<em>CERT</em>FILE&quot; environment variable</li>
+<li>Drivers which use xmlrplic library now use Libcloud HTTP layer for making
+HTTP requests. This means those drivers now support LIBCLOUD_DEBUG and SSL
+cert validation functionality</li>
+</ul>
+
+<p>Full change log can be found at
+https://svn.apache.org/repos/asf/libcloud/tags/0.12.1/CHANGES</p>
+
+<h3>Download</h3>
+
+<p>Libcloud 0.12.1 can be downloaded from
+http://libcloud.apache.org/downloads.html
+or installed using pip:</p>
+
+<div class="highlight"><pre><code class="bash">pip install apache-libcloud
+</code></pre></div>
+
+<p>It is possible that the file hasn&#39;t been synced to all the mirrors yet. If
+this
+is the case, please use the main Apache mirror -
+http://www.apache.org/dist/libcloud.</p>
+
+<h3>Upgrading</h3>
+
+<p>If you have installed Libcloud using pip you can also use it to upgrade it:</p>
+
+<div class="highlight"><pre><code class="bash">pip install --upgrade apache-libcloud
+</code></pre></div>
+
+<h3>Upgrade notes</h3>
+
+<p>A page which describes backward incompatible or semi-incompatible
+changes and how to preserve the old behavior when this is possible
+can be found at http://libcloud.apache.org/upgrade-notes.html.</p>
+
+<h3>Documentation</h3>
+
+<p>API documentation can be found at http://libcloud.apache.org/apidocs/0.12.1/
+.</p>
+
+<h3>Bugs / Issues</h3>
+
+<p>If you find any bug or issue, please report it on our issue tracker
+<a href="https://issues.apache.org/jira/browse/LIBCLOUD">https://issues.apache.org/jira/browse/LIBCLOUD</a>.
+Don&#39;t forget to attach an example and / or test which reproduces your
+problem.</p>
+
+<h3>Thanks</h3>
+
+<p>Thanks to everyone who contributed and made this release possible! Full
+list of
+people who contributed to this release can be found in the CHANGES file
+<a href="https://svn.apache.org/repos/asf/libcloud/tags/0.12.1/CHANGES">https://svn.apache.org/repos/asf/libcloud/tags/0.12.1/CHANGES</a>.</p>
+
+<p>Source: <a href="http://mail-archives.apache.org/mod_mbox/libcloud-users/201302.mbox/%3CCAJMHEmLc0RfSxM9UhXPeTwKiNDbZPsQs6SJMA1o3y1D4Cv+reA@mail.gmail.com%3E">release announcement</a>.</p>
+
+  </div>
+
+  <div class="row section post-meta">
+    <div class="col-md-12 post-tags">
+      <p>Tags: <a href="/blog/tags/news.html" rel="tag">news</a>, <a href="/blog/tags/release%20announcement.html" rel="tag">release announcement</a></p>
+    </div>
+  </div>
+</div>
+
+    
+  
+    
+      <div class="post">
+  
     <h2><a href="/blog/2012/12/28/new-committer-mahendra-maheshwara-joins-our-team.html">New committer Mahendra Maheshwara joins our team</a></h2>
   
 
@@ -335,97 +435,6 @@ project and work on integrating Libcloud
 
     
   
-    
-      <div class="post">
-  
-    <h2><a href="/blog/2012/09/25/libcloud-0-11-3-released.html">Libcloud 0.11.3 released</a></h2>
-  
-
-  
-    
-  
-  <span class="post-date-author">By Tomaz Muraus <span style="display:none">(<a href="https://plus.google.com/+TomazMuraus?rel=author">Google+</a>)</span>on Sep 25, 2012</span>
-
-  <div class="post-content">
-    <p>We are pleased to announce the release of Libcloud 0.11.3!</p>
-
-<h3>Release highlights</h3>
-
-<p><strong>Compute</strong></p>
-
-<ul>
-<li>Add new Rackspace Nova driver for Chicago (ORD) location</li>
-<li>Add new methods for managing storage volumes and other extenstion methods
-to the IBM SCE driver.</li>
-<li>Allow user to pass &#39;timeout&#39; argument to the &#39;deploy_node&#39; method</li>
-</ul>
-
-<p><strong>Bug fixes</strong></p>
-
-<ul>
-<li>Fix a bug with the Libcloud SSL verification code. Code was too strict
-and didn&#39;t allow &quot;-&quot; character in the sub-domain when using a wildcard
-certificate.</li>
-</ul>
-
-<p>Full change log can be found at
-<a href="https://svn.apache.org/viewvc/libcloud/tags/0.11.3/CHANGES?revision=r1388947&amp;view=markup">https://svn.apache.org/viewvc/libcloud/tags/0.11.3/CHANGES?revision=r1388947&amp;view=markup</a>.</p>
-
-<h3>Download</h3>
-
-<p>Libcloud 0.11.3 can be downloaded from
-http://libcloud.apache.org/downloads.html
-or installed using pip:</p>
-
-<div class="highlight"><pre><code class="bash">pip install apache-libcloud
-</code></pre></div>
-
-<p>It is possible that the file hasn&#39;t been synced to all the mirrors yet. If
-this is the case, please use the main Apache mirror -
-http://www.apache.org/dist/libcloud.</p>
-
-<h3>Upgrading</h3>
-
-<p>If you have installed Libcloud using pip you can also use it to upgrade it:</p>
-
-<div class="highlight"><pre><code class="bash">pip install --upgrade apache-libcloud
-</code></pre></div>
-
-<h3>Upgrade notes</h3>
-
-<p>A page which describes backward incompatible or semi-incompatible
-changes and how to preserve the old behavior when this is possible
-can be found at http://libcloud.apache.org/upgrade-notes.html.</p>
-
-<h3>Documentation</h3>
-
-<p>API documentation can be found at http://libcloud.apache.org/apidocs/0.11.3/.</p>
-
-<h3>Bugs / Issues</h3>
-
-<p>If you find any bug or issue, please report it on our issue tracker
-<a href="https://issues.apache.org/jira/browse/LIBCLOUD">https://issues.apache.org/jira/browse/LIBCLOUD</a>. Don&#39;t forget to attach an
-example and / ortest which reproduces your problem.</p>
-
-<h3>Thanks</h3>
-
-<p>Thanks to everyone who contributed and made this release possible! Full
-list of people who contributed to this release can be found in the CHANGES
-file <a href="https://svn.apache.org/viewvc/libcloud/tags/0.11.3/CHANGES?revision=r1388947&amp;view=markup">https://svn.apache.org/viewvc/libcloud/tags/0.11.3/CHANGES?revision=r1388947&amp;view=markup</a>.</p>
-
-<p>Source: <a href="http://mail-archives.apache.org/mod_mbox/www-announce/201209.mbox/%3CCAJMHEmLn+MV_pcNZv03PW5wuS5c=O8cFdqMH8LFtaUr1gggkdw@mail.gmail.com%3E">release announcement</a>.</p>
-
-  </div>
-
-  <div class="row section post-meta">
-    <div class="col-md-12 post-tags">
-      <p>Tags: <a href="/blog/tags/news.html" rel="tag">news</a>, <a href="/blog/tags/release%20announcement.html" rel="tag">release announcement</a></p>
-    </div>
-  </div>
-</div>
-
-    
-  
 </div>
 
 <p class="navigation">
@@ -450,7 +459,7 @@ file <a href="https://svn.apache.org/vie
   <div class="col-lg-3 col-lg-offset-1">
     <h2>Archive</h1>
     <ul>
-      <li> <a href="/blog/archives/2016/01/"> January 2016</a> &nbsp;(4)</li><li> <a href="/blog/archives/2015/12/"> December 2015</a> &nbsp;(1)</li><li> <a href="/blog/archives/2015/11/"> November 2015</a> &nbsp;(1)</li><li> <a href="/blog/archives/2015/10/"> October 2015</a> &nbsp;(2)</li><li> <a href="/blog/archives/2015/08/"> August 2015</a> &nbsp;(1)</li><li> <a href="/blog/archives/2015/03/"> March 2015</a> &nbsp;(1)</li><li> <a href="/blog/archives/2015/02/"> February 2015</a> &nbsp;(1)</li><li> <a href="/blog/archives/2014/12/"> December 2014</a> &nbsp;(1)</li><li> <a href="/blog/archives/2014/11/"> November 2014</a> &nbsp;(1)</li><li> <a href="/blog/archives/2014/07/"> July 2014</a> &nbsp;(2)</li><li> <a href="/blog/archives/2014/06/"> June 2014</a> &nbsp;(1)</li><li> <a href="/blog/archives/2014/05/"> May 2014</a> &nbsp;(1)</li><li> <a href="/blog/archives/2014/04/"> April 2014</a> &nbsp;(1)</li><li> <a href="/blog/archives/2014/02/"> February 2014</a> &nbsp;(8)</li><li> <
 a href="/blog/archives/2014/01/"> January 2014</a> &nbsp;(4)</li><li> <a href="/blog/archives/2013/12/"> December 2013</a> &nbsp;(3)</li><li> <a href="/blog/archives/2013/11/"> November 2013</a> &nbsp;(2)</li><li> <a href="/blog/archives/2013/09/"> September 2013</a> &nbsp;(1)</li><li> <a href="/blog/archives/2013/08/"> August 2013</a> &nbsp;(1)</li><li> <a href="/blog/archives/2013/07/"> July 2013</a> &nbsp;(1)</li><li> <a href="/blog/archives/2013/03/"> March 2013</a> &nbsp;(1)</li><li> <a href="/blog/archives/2013/02/"> February 2013</a> &nbsp;(1)</li><li> <a href="/blog/archives/2012/12/"> December 2012</a> &nbsp;(2)</li><li> <a href="/blog/archives/2012/11/"> November 2012</a> &nbsp;(2)</li><li> <a href="/blog/archives/2012/09/"> September 2012</a> &nbsp;(1)</li><li> <a href="/blog/archives/2012/08/"> August 2012</a> &nbsp;(1)</li><li> <a href="/blog/archives/2012/07/"> July 2012</a> &nbsp;(1)</li><li> <a href="/blog/archives/2012/05/"> May 2012</a> &nbsp;(2)</li><li> <a href="
 /blog/archives/2012/04/"> April 2012</a> &nbsp;(1)</li><li> <a href="/blog/archives/2012/02/"> February 2012</a> &nbsp;(1)</li><li> <a href="/blog/archives/2011/12/"> December 2011</a> &nbsp;(2)</li><li> <a href="/blog/archives/2011/11/"> November 2011</a> &nbsp;(3)</li><li> <a href="/blog/archives/2011/10/"> October 2011</a> &nbsp;(1)</li><li> <a href="/blog/archives/2011/09/"> September 2011</a> &nbsp;(1)</li><li> <a href="/blog/archives/2011/07/"> July 2011</a> &nbsp;(1)</li><li> <a href="/blog/archives/2011/06/"> June 2011</a> &nbsp;(1)</li><li> <a href="/blog/archives/2011/05/"> May 2011</a> &nbsp;(1)</li><li> <a href="/blog/archives/2011/02/"> February 2011</a> &nbsp;(1)</li><li> <a href="/blog/archives/2011/01/"> January 2011</a> &nbsp;(1)</li><li> <a href="/blog/archives/2010/10/"> October 2010</a> &nbsp;(1)</li><li> <a href="/blog/archives/2010/05/"> May 2010</a> &nbsp;(1)</li><li> <a href="/blog/archives/2010/02/"> February 2010</a> &nbsp;(1)</li>
+      <li> <a href="/blog/archives/2016/02/"> February 2016</a> &nbsp;(1)</li><li> <a href="/blog/archives/2016/01/"> January 2016</a> &nbsp;(4)</li><li> <a href="/blog/archives/2015/12/"> December 2015</a> &nbsp;(1)</li><li> <a href="/blog/archives/2015/11/"> November 2015</a> &nbsp;(1)</li><li> <a href="/blog/archives/2015/10/"> October 2015</a> &nbsp;(2)</li><li> <a href="/blog/archives/2015/08/"> August 2015</a> &nbsp;(1)</li><li> <a href="/blog/archives/2015/03/"> March 2015</a> &nbsp;(1)</li><li> <a href="/blog/archives/2015/02/"> February 2015</a> &nbsp;(1)</li><li> <a href="/blog/archives/2014/12/"> December 2014</a> &nbsp;(1)</li><li> <a href="/blog/archives/2014/11/"> November 2014</a> &nbsp;(1)</li><li> <a href="/blog/archives/2014/07/"> July 2014</a> &nbsp;(2)</li><li> <a href="/blog/archives/2014/06/"> June 2014</a> &nbsp;(1)</li><li> <a href="/blog/archives/2014/05/"> May 2014</a> &nbsp;(1)</li><li> <a href="/blog/archives/2014/04/"> April 2014</a> &nbsp;(1)</li><li> <
 a href="/blog/archives/2014/02/"> February 2014</a> &nbsp;(8)</li><li> <a href="/blog/archives/2014/01/"> January 2014</a> &nbsp;(4)</li><li> <a href="/blog/archives/2013/12/"> December 2013</a> &nbsp;(3)</li><li> <a href="/blog/archives/2013/11/"> November 2013</a> &nbsp;(2)</li><li> <a href="/blog/archives/2013/09/"> September 2013</a> &nbsp;(1)</li><li> <a href="/blog/archives/2013/08/"> August 2013</a> &nbsp;(1)</li><li> <a href="/blog/archives/2013/07/"> July 2013</a> &nbsp;(1)</li><li> <a href="/blog/archives/2013/03/"> March 2013</a> &nbsp;(1)</li><li> <a href="/blog/archives/2013/02/"> February 2013</a> &nbsp;(1)</li><li> <a href="/blog/archives/2012/12/"> December 2012</a> &nbsp;(2)</li><li> <a href="/blog/archives/2012/11/"> November 2012</a> &nbsp;(2)</li><li> <a href="/blog/archives/2012/09/"> September 2012</a> &nbsp;(1)</li><li> <a href="/blog/archives/2012/08/"> August 2012</a> &nbsp;(1)</li><li> <a href="/blog/archives/2012/07/"> July 2012</a> &nbsp;(1)</li><li> <a h
 ref="/blog/archives/2012/05/"> May 2012</a> &nbsp;(2)</li><li> <a href="/blog/archives/2012/04/"> April 2012</a> &nbsp;(1)</li><li> <a href="/blog/archives/2012/02/"> February 2012</a> &nbsp;(1)</li><li> <a href="/blog/archives/2011/12/"> December 2011</a> &nbsp;(2)</li><li> <a href="/blog/archives/2011/11/"> November 2011</a> &nbsp;(3)</li><li> <a href="/blog/archives/2011/10/"> October 2011</a> &nbsp;(1)</li><li> <a href="/blog/archives/2011/09/"> September 2011</a> &nbsp;(1)</li><li> <a href="/blog/archives/2011/07/"> July 2011</a> &nbsp;(1)</li><li> <a href="/blog/archives/2011/06/"> June 2011</a> &nbsp;(1)</li><li> <a href="/blog/archives/2011/05/"> May 2011</a> &nbsp;(1)</li><li> <a href="/blog/archives/2011/02/"> February 2011</a> &nbsp;(1)</li><li> <a href="/blog/archives/2011/01/"> January 2011</a> &nbsp;(1)</li><li> <a href="/blog/archives/2010/10/"> October 2010</a> &nbsp;(1)</li><li> <a href="/blog/archives/2010/05/"> May 2010</a> &nbsp;(1)</li><li> <a href="/blog/archiv
 es/2010/02/"> February 2010</a> &nbsp;(1)</li>
     </ul>
   </div>
 </div>
@@ -481,7 +490,7 @@ file <a href="https://svn.apache.org/vie
     </div><!-- /.container -->
 
     <!-- JavaScript -->
-    <script src='/assets/global-cd627f201dd4cfb6b045cf9d3aa874a1.js' type='text/javascript'></script>
+    <script src='/assets/global-9c9298ad4670c6fcb2e40b5291d6c657.js' type='text/javascript'></script>
 
 
     

Modified: libcloud/site/trunk/generated/blog/tags/announcement.html
URL: http://svn.apache.org/viewvc/libcloud/site/trunk/generated/blog/tags/announcement.html?rev=1728588&r1=1728587&r2=1728588&view=diff
==============================================================================
--- libcloud/site/trunk/generated/blog/tags/announcement.html (original)
+++ libcloud/site/trunk/generated/blog/tags/announcement.html Fri Feb  5 03:08:11 2016
@@ -47,7 +47,7 @@
 
     
 
-    <link href='/assets/global-e2026f958a032fcde1c942cd7456dd99.css' rel='stylesheet' type='text/css' />
+    <link href='/assets/global-52715da7c55e2d86c5b5bfc2a8e7c73e.css' rel='stylesheet' type='text/css' />
 
   </head>
 
@@ -415,7 +415,7 @@ and compatibility reasons. SSL v3.0 is c
     </div><!-- /.container -->
 
     <!-- JavaScript -->
-    <script src='/assets/global-cd627f201dd4cfb6b045cf9d3aa874a1.js' type='text/javascript'></script>
+    <script src='/assets/global-9c9298ad4670c6fcb2e40b5291d6c657.js' type='text/javascript'></script>
 
 
     

Modified: libcloud/site/trunk/generated/blog/tags/apachecon.html
URL: http://svn.apache.org/viewvc/libcloud/site/trunk/generated/blog/tags/apachecon.html?rev=1728588&r1=1728587&r2=1728588&view=diff
==============================================================================
--- libcloud/site/trunk/generated/blog/tags/apachecon.html (original)
+++ libcloud/site/trunk/generated/blog/tags/apachecon.html Fri Feb  5 03:08:11 2016
@@ -47,7 +47,7 @@
 
     
 
-    <link href='/assets/global-e2026f958a032fcde1c942cd7456dd99.css' rel='stylesheet' type='text/css' />
+    <link href='/assets/global-52715da7c55e2d86c5b5bfc2a8e7c73e.css' rel='stylesheet' type='text/css' />
 
   </head>
 
@@ -177,7 +177,7 @@ strecthing for over 3 weeks, I sadly had
     </div><!-- /.container -->
 
     <!-- JavaScript -->
-    <script src='/assets/global-cd627f201dd4cfb6b045cf9d3aa874a1.js' type='text/javascript'></script>
+    <script src='/assets/global-9c9298ad4670c6fcb2e40b5291d6c657.js' type='text/javascript'></script>
 
 
     

Modified: libcloud/site/trunk/generated/blog/tags/articles.html
URL: http://svn.apache.org/viewvc/libcloud/site/trunk/generated/blog/tags/articles.html?rev=1728588&r1=1728587&r2=1728588&view=diff
==============================================================================
--- libcloud/site/trunk/generated/blog/tags/articles.html (original)
+++ libcloud/site/trunk/generated/blog/tags/articles.html Fri Feb  5 03:08:11 2016
@@ -47,7 +47,7 @@
 
     
 
-    <link href='/assets/global-e2026f958a032fcde1c942cd7456dd99.css' rel='stylesheet' type='text/css' />
+    <link href='/assets/global-52715da7c55e2d86c5b5bfc2a8e7c73e.css' rel='stylesheet' type='text/css' />
 
   </head>
 
@@ -480,7 +480,7 @@ been written by one of our developers an
     </div><!-- /.container -->
 
     <!-- JavaScript -->
-    <script src='/assets/global-cd627f201dd4cfb6b045cf9d3aa874a1.js' type='text/javascript'></script>
+    <script src='/assets/global-9c9298ad4670c6fcb2e40b5291d6c657.js' type='text/javascript'></script>
 
 
     

Modified: libcloud/site/trunk/generated/blog/tags/ccna.html
URL: http://svn.apache.org/viewvc/libcloud/site/trunk/generated/blog/tags/ccna.html?rev=1728588&r1=1728587&r2=1728588&view=diff
==============================================================================
--- libcloud/site/trunk/generated/blog/tags/ccna.html (original)
+++ libcloud/site/trunk/generated/blog/tags/ccna.html Fri Feb  5 03:08:11 2016
@@ -47,7 +47,7 @@
 
     
 
-    <link href='/assets/global-e2026f958a032fcde1c942cd7456dd99.css' rel='stylesheet' type='text/css' />
+    <link href='/assets/global-52715da7c55e2d86c5b5bfc2a8e7c73e.css' rel='stylesheet' type='text/css' />
 
   </head>
 
@@ -177,7 +177,7 @@ strecthing for over 3 weeks, I sadly had
     </div><!-- /.container -->
 
     <!-- JavaScript -->
-    <script src='/assets/global-cd627f201dd4cfb6b045cf9d3aa874a1.js' type='text/javascript'></script>
+    <script src='/assets/global-9c9298ad4670c6fcb2e40b5291d6c657.js' type='text/javascript'></script>
 
 
     

Modified: libcloud/site/trunk/generated/blog/tags/celebrations.html
URL: http://svn.apache.org/viewvc/libcloud/site/trunk/generated/blog/tags/celebrations.html?rev=1728588&r1=1728587&r2=1728588&view=diff
==============================================================================
--- libcloud/site/trunk/generated/blog/tags/celebrations.html (original)
+++ libcloud/site/trunk/generated/blog/tags/celebrations.html Fri Feb  5 03:08:11 2016
@@ -47,7 +47,7 @@
 
     
 
-    <link href='/assets/global-e2026f958a032fcde1c942cd7456dd99.css' rel='stylesheet' type='text/css' />
+    <link href='/assets/global-52715da7c55e2d86c5b5bfc2a8e7c73e.css' rel='stylesheet' type='text/css' />
 
   </head>
 
@@ -171,7 +171,7 @@ attend the celebration.</p>
     </div><!-- /.container -->
 
     <!-- JavaScript -->
-    <script src='/assets/global-cd627f201dd4cfb6b045cf9d3aa874a1.js' type='text/javascript'></script>
+    <script src='/assets/global-9c9298ad4670c6fcb2e40b5291d6c657.js' type='text/javascript'></script>
 
 
     

Modified: libcloud/site/trunk/generated/blog/tags/cloudstack.html
URL: http://svn.apache.org/viewvc/libcloud/site/trunk/generated/blog/tags/cloudstack.html?rev=1728588&r1=1728587&r2=1728588&view=diff
==============================================================================
--- libcloud/site/trunk/generated/blog/tags/cloudstack.html (original)
+++ libcloud/site/trunk/generated/blog/tags/cloudstack.html Fri Feb  5 03:08:11 2016
@@ -47,7 +47,7 @@
 
     
 
-    <link href='/assets/global-e2026f958a032fcde1c942cd7456dd99.css' rel='stylesheet' type='text/css' />
+    <link href='/assets/global-52715da7c55e2d86c5b5bfc2a8e7c73e.css' rel='stylesheet' type='text/css' />
 
   </head>
 
@@ -161,7 +161,7 @@ Ikoula</a>.</p>
     </div><!-- /.container -->
 
     <!-- JavaScript -->
-    <script src='/assets/global-cd627f201dd4cfb6b045cf9d3aa874a1.js' type='text/javascript'></script>
+    <script src='/assets/global-9c9298ad4670c6fcb2e40b5291d6c657.js' type='text/javascript'></script>
 
 
     

Modified: libcloud/site/trunk/generated/blog/tags/conferences.html
URL: http://svn.apache.org/viewvc/libcloud/site/trunk/generated/blog/tags/conferences.html?rev=1728588&r1=1728587&r2=1728588&view=diff
==============================================================================
--- libcloud/site/trunk/generated/blog/tags/conferences.html (original)
+++ libcloud/site/trunk/generated/blog/tags/conferences.html Fri Feb  5 03:08:11 2016
@@ -47,7 +47,7 @@
 
     
 
-    <link href='/assets/global-e2026f958a032fcde1c942cd7456dd99.css' rel='stylesheet' type='text/css' />
+    <link href='/assets/global-52715da7c55e2d86c5b5bfc2a8e7c73e.css' rel='stylesheet' type='text/css' />
 
   </head>
 
@@ -225,7 +225,7 @@ strecthing for over 3 weeks, I sadly had
     </div><!-- /.container -->
 
     <!-- JavaScript -->
-    <script src='/assets/global-cd627f201dd4cfb6b045cf9d3aa874a1.js' type='text/javascript'></script>
+    <script src='/assets/global-9c9298ad4670c6fcb2e40b5291d6c657.js' type='text/javascript'></script>
 
 
     

Added: libcloud/site/trunk/generated/blog/tags/containers.html
URL: http://svn.apache.org/viewvc/libcloud/site/trunk/generated/blog/tags/containers.html?rev=1728588&view=auto
==============================================================================
--- libcloud/site/trunk/generated/blog/tags/containers.html (added)
+++ libcloud/site/trunk/generated/blog/tags/containers.html Fri Feb  5 03:08:11 2016
@@ -0,0 +1,318 @@
+<!DOCTYPE html>
+<html lang="en">
+  <head>
+    <meta charset="utf-8">
+    <meta name="viewport" content="width=device-width, initial-scale=1.0">
+
+    
+
+    <meta name="author" content="The Apache Software Foundation">
+
+    
+      <meta name="keywords" content="python,libcloud,cloud,cloud computing,rackspace,amazon ec2,cloudfiles,openstack,cloudstack" />
+    
+
+    
+      <title>Tag Archive | Apache Libcloud</title>
+    
+
+    <!-- fav icons -->
+    <link rel="shortcut icon" href="/images/favicon.png" />
+    <link rel="apple-touch-icon" href="/images/apple-touch-icon.png" />
+    <link rel="apple-touch-icon-precomposed" href="/images/apple-touch-icon.png" />
+
+    <link href="/blog/atom.xml" type="application/atom+xml" rel="alternate" title="Apache Libcloud Blog Feed" />
+
+    <link href='https://fonts.googleapis.com/css?family=Open+Sans:400,400italic' rel='stylesheet' type='text/css'>
+    <link href='https://fonts.googleapis.com/css?family=Inconsolata' rel='stylesheet' type='text/css'>
+
+    <!-- Facebook OpenGraph tags -->
+    <meta content="Apache Libcloud" property="og:site_name">
+    
+      <meta content="Tag Archive" property="og:title">
+    
+
+    
+
+    
+
+    
+      <meta content="website" property="og:type">
+    
+
+    
+      <meta content="https://libcloud.apache.org/blog/tags/containers.html" property="og:url">
+    
+    
+
+    
+
+    <link href='/assets/global-52715da7c55e2d86c5b5bfc2a8e7c73e.css' rel='stylesheet' type='text/css' />
+
+  </head>
+
+  <body data-spy="scroll" data-target=".sidebar-nav" data-offset="80">
+    <nav class="navbar navbar-fixed-top navbar-inverse" role="navigation">
+      <div class="container">
+        <div class="navbar-header">
+          <button type="button" class="navbar-toggle" data-toggle="collapse" data-target=".navbar-ex1-collapse">
+            <span class="sr-only">Toggle navigation</span>
+            <span class="icon-bar"></span>
+            <span class="icon-bar"></span>
+            <span class="icon-bar"></span>
+          </button>
+          <a class="navbar-brand" href="/index.html"><img src="/images/libcloud_logo.png" class="navbar-logo" /> Apache Libcloud</a>
+        </div>
+        <div class="collapse navbar-collapse navbar-ex1-collapse">
+          <ul class="nav navbar-nav">
+            
+            
+              <li ><a href="/" >Home</a></li>
+            
+              <li ><a href="/about.html" >About</a></li>
+            
+              <li ><a href="/getting-started.html" >Quick Start</a></li>
+            
+              <li ><a href="https://libcloud.readthedocs.org/en/latest/" target="_blank">Documentation</a></li>
+            
+              <li ><a href="/downloads.html" >Downloads</a></li>
+            
+              <li ><a href="/community.html" >Community</a></li>
+            
+              <li ><a href="/blog/" >Blog</a></li>
+            
+          </ul>
+        </div><!-- /.navbar-collapse -->
+      </div><!-- /.container -->
+    </nav>
+
+    <div class="container main-container">
+      <div class="row section page-content">
+  <div class="col-lg-8 col-lg-offset-2">
+    <h1>Tag: containers</h1>
+
+
+
+  
+    <div class="post">
+  
+    <h2><a href="/blog/2016/02/05/libcloud-containers-example.html">Using the container abstraction API in 1.0.0-pre1</a></h2>
+  
+
+  
+    
+  
+  <span class="post-date-author">By Anthony Shaw on Feb 05, 2016</span>
+
+  <div class="post-content">
+    <h2>Background</h2>
+
+<p>Containers are the talk of the town, you can&#39;t escape an event or meetup without someone talking about containers. The lessons we
+learnt with compute abstraction are applying widely with containers in 2016. APIs are not consistent between clouds, designs are not
+standardised and yet, users are trying to consume multiple services.</p>
+
+<p>We introduced Container-as-a-Service support in <a href="http://libcloud.apache.org/blog/2016/01/26/libcloud-1-0-0-pre1-released.html">1.0.0-pre1</a>, a community pre-release with the intention of sparking feedback from 
+the open-source community about the design and the implementation of 4 example drivers :  </p>
+
+<ul>
+<li>Docker</li>
+<li>Joyent Triton</li>
+<li>Amazon EC2 Container Service</li>
+<li>Google Kubernetes</li>
+</ul>
+
+<h2>Getting Started with 1.0.0-pre1</h2>
+
+<p>First off, let&#39;s install the new packages, you probably want to do this within a virtualenv if you&#39;re using Apache Libcloud for other projects. </p>
+
+<p>So run these commands at a Linux Shell to create a virtualenv called &#39;containers&#39; and install the pre-release packages into that environment.</p>
+
+<div class="highlight"><pre><code class="bash language-bash" data-lang="bash">   virtualenv containers
+   <span class="nb">cd </span>containers
+   <span class="nb">source </span>bin/activate
+   pip install apache-libcloud<span class="o">==</span>1.0.0-pre1
+</code></pre></div>
+
+<p>Now you can start using this package with a test script, let&#39;s create one called containers.py</p>
+
+<div class="highlight"><pre><code class="bash language-bash" data-lang="bash">   touch containers.py
+</code></pre></div>
+
+<p>Using your favourite text editor, update that file to import the 1.0.0-pre1 libraries and the factory methods for instantiating containers.</p>
+
+<div class="highlight"><pre><code class="python language-python" data-lang="python">   <span class="kn">from</span> <span class="nn">libcloud.container.providers</span> <span class="kn">import</span> <span class="n">get_driver</span>
+   <span class="kn">from</span> <span class="nn">libcloud.container.types</span> <span class="kn">import</span> <span class="n">Provider</span>
+</code></pre></div>
+
+<p><code>get_driver</code> is a factory method as with all libcloud APIs, you call this method with the <code>Provider</code> that you want to instantiate. Our options are:</p>
+
+<ul>
+<li><code>Provider.DOCKER</code> - Standalone Docker API</li>
+<li><code>Provider.KUBERNETES</code> - Kubernetes Cluster endpoint</li>
+<li><code>Provider.JOYENT</code> - Joyent Triton Public API</li>
+<li><code>Provider.ECS</code> - Amazon EC2 Container Service</li>
+</ul>
+
+<p>Calling <code>get_driver</code> will return a reference to the driver class that you requested. You can then instantiate that class into an object using the 
+contructor. This is always a set of parameters for setting the host or region, the authentication and any other options.</p>
+
+<div class="highlight"><pre><code class="python language-python" data-lang="python">   <span class="n">driver</span> <span class="o">=</span> <span class="n">get_driver</span><span class="p">(</span><span class="n">Provider</span><span class="o">.</span><span class="n">DOCKER</span><span class="p">)</span>
+</code></pre></div>
+
+<p>Now we can call our driver and get an instance of it called <code>docker_driver</code> and use that to deploy a container. For Docker you need the pem files on the server,
+the host (IP or FQDN) and the port.</p>
+
+<div class="highlight"><pre><code class="python language-python" data-lang="python">   <span class="n">docker_driver</span> <span class="o">=</span> <span class="n">driver</span><span class="p">(</span><span class="n">host</span><span class="o">=</span><span class="s">&#39;https://198.61.239.128&#39;</span><span class="p">,</span> <span class="n">port</span><span class="o">=</span><span class="mi">4243</span><span class="p">,</span>
+             <span class="n">key_file</span><span class="o">=</span><span class="s">&#39;key.pem&#39;</span><span class="p">,</span> <span class="n">cert_file</span><span class="o">=</span><span class="s">&#39;cert.pem&#39;</span><span class="p">)</span>
+</code></pre></div>
+
+<p>Docker requires that images are available in the image database before they can be deployed as containers. With Kubernetes and Amazon ECS this step is not required
+as when you deploy a container it carries out that download for you. </p>
+
+<div class="highlight"><pre><code class="python language-python" data-lang="python">   <span class="n">image</span> <span class="o">=</span> <span class="n">driver</span><span class="o">.</span><span class="n">install_image</span><span class="p">(</span><span class="s">&#39;tomcat:8.0&#39;</span><span class="p">)</span>
+</code></pre></div>
+
+<p>Now that Docker has the version 8.0 image of Apache Tomcat, you can deploy this as a container called <code>my_tomcat_container</code>. Tomcat runs on TCP/8080 by default so we 
+want to bind that port for our container using an optional parameter <code>port_bindings</code></p>
+
+<div class="highlight"><pre><code class="python language-python" data-lang="python">   <span class="n">bindings</span> <span class="o">=</span> <span class="p">{</span> <span class="s">&quot;22/tcp&quot;</span><span class="p">:</span> <span class="p">[{</span> <span class="s">&quot;HostPort&quot;</span><span class="p">:</span> <span class="s">&quot;11022&quot;</span> <span class="p">}]</span> <span class="p">}</span>
+   <span class="n">container</span> <span class="o">=</span> <span class="n">driver</span><span class="o">.</span><span class="n">deploy_container</span><span class="p">(</span><span class="s">&#39;my_tomcat_container&#39;</span><span class="p">,</span> <span class="n">image</span><span class="p">,</span> <span class="n">port_bindings</span><span class="o">=</span><span class="n">bindings</span><span class="p">)</span>
+</code></pre></div>
+
+<p>This will have deployed the container and started it up for you, you can disable the automatic startup by using <code>start=False</code> as a keyword argument. You can now call upon this container and 
+run methods, <code>restart</code>, <code>start</code>, <code>stop</code> and <code>destroy</code>.</p>
+
+<p>For example, to blow away that test container: </p>
+
+<div class="highlight"><pre><code class="python language-python" data-lang="python">   <span class="n">container</span><span class="o">.</span><span class="n">destroy</span><span class="p">()</span>
+</code></pre></div>
+
+<h2>Crossing the streams; calling Kubernetes and Amazon EC2 Container Service</h2>
+
+<p>With Docker we saw that we needed to &quot;pull&quot; the image before we deployed it. Kubernetes and Amazon ECS don&#39;t have that requirement, but as a safeguard you can query the Docker Hub API using a 
+utility class provided</p>
+
+<div class="highlight"><pre><code class="python language-python" data-lang="python">   <span class="kn">from</span> <span class="nn">libcloud.container.utils.docker</span> <span class="kn">import</span> <span class="n">HubClient</span>
+   <span class="n">hub</span> <span class="o">=</span> <span class="n">HubClient</span><span class="p">()</span>
+   <span class="n">image</span> <span class="o">=</span> <span class="n">hub</span><span class="o">.</span><span class="n">get_image</span><span class="p">(</span><span class="s">&#39;tomcat&#39;</span><span class="p">,</span> <span class="s">&#39;8.0&#39;</span><span class="p">)</span>
+</code></pre></div>
+
+<p>Now <code>image</code> can be used to deploy to any driver instance that you create. Let&#39;s try that against Kubernetes and ECS.</p>
+
+<h3>Amazon ECS</h3>
+
+<p>Before you run this example, you will need an API key and the permissions for that key to have the <code>AmazonEC2ContainerServiceFullAccess</code> role. <code>ap-southeast-2</code> is my nearest region, but you can 
+swap this out for any of the Amazon public regions that have the ECS service available. </p>
+
+<div class="highlight"><pre><code class="python language-python" data-lang="python">   <span class="n">e_cls</span> <span class="o">=</span> <span class="n">get_driver</span><span class="p">(</span><span class="n">Provider</span><span class="o">.</span><span class="n">ECS</span><span class="p">)</span>
+   <span class="n">ecs</span> <span class="o">=</span> <span class="n">e_cls</span><span class="p">(</span><span class="n">access_id</span><span class="o">=</span><span class="s">&#39;SDHFISJDIFJSIDFJ&#39;</span><span class="p">,</span>
+               <span class="n">secret</span><span class="o">=</span><span class="s">&#39;THIS_IS)+_MY_SECRET_KEY+I6TVkv68o4H&#39;</span><span class="p">,</span>
+               <span class="n">region</span><span class="o">=</span><span class="s">&#39;ap-southeast-2&#39;</span><span class="p">)</span>
+</code></pre></div>
+
+<p>ECS and Kubernetes both support some form of grouping or clustering for your containers. This is available as <code>create_cluster</code>, <code>list_cluster</code>.</p>
+
+<div class="highlight"><pre><code class="python language-python" data-lang="python">   <span class="n">cluster</span> <span class="o">=</span> <span class="n">ecs</span><span class="o">.</span><span class="n">create_cluster</span><span class="p">(</span><span class="s">&#39;default&#39;</span><span class="p">)</span>
+   <span class="n">container</span> <span class="o">=</span> <span class="n">ecs</span><span class="o">.</span><span class="n">deploy_container</span><span class="p">(</span>
+            <span class="n">cluster</span><span class="o">=</span><span class="n">cluster</span><span class="p">,</span>
+            <span class="n">name</span><span class="o">=</span><span class="s">&#39;hello-world&#39;</span><span class="p">,</span>
+            <span class="n">image</span><span class="o">=</span><span class="n">image</span><span class="p">,</span>
+        <span class="n">start</span><span class="o">=</span><span class="bp">False</span><span class="p">,</span>
+        <span class="n">ex_container_port</span><span class="o">=</span><span class="mi">8080</span><span class="p">,</span> <span class="n">ex_host_port</span><span class="o">=</span><span class="mi">8080</span><span class="p">)</span>
+</code></pre></div>
+
+<p>This will have deployed a task definition in Amazon ECS with a single container inside, with a cluster called &#39;main&#39; and deployed the tomcat:8.0 image from the Docker hub to that region. </p>
+
+<p>Check out the <a href="http://libcloud.readthedocs.org/en/latest/container/drivers/ecs.html">ECS Documentation</a> for more details.</p>
+
+<h3>Kubernetes</h3>
+
+<p>Kubernetes authentication is currently only implemented for None (off) and Basic HTTP authentication. Let&#39;s use the <a href="http://kubernetes.io/v1.1/docs/admin/authentication.html">basic HTTP authentication method</a> to connect.</p>
+
+<div class="highlight"><pre><code class="python language-python" data-lang="python"><span class="n">k_cls</span> <span class="o">=</span> <span class="n">get_driver</span><span class="p">(</span><span class="n">Provider</span><span class="o">.</span><span class="n">KUBERNETES</span><span class="p">)</span>
+
+<span class="n">kubernetes</span> <span class="o">=</span> <span class="n">k_cls</span><span class="p">(</span><span class="n">key</span><span class="o">=</span><span class="s">&#39;my_username&#39;</span><span class="p">,</span>
+                   <span class="n">secret</span><span class="o">=</span><span class="s">&#39;THIS_IS)+_MY_SECRET_KEY+I6TVkv68o4H&#39;</span><span class="p">,</span>
+                   <span class="n">host</span><span class="o">=</span><span class="s">&#39;126.32.21.4&#39;</span><span class="p">)</span>
+<span class="n">cluster2</span> <span class="o">=</span> <span class="n">kubernetes</span><span class="o">.</span><span class="n">create_cluster</span><span class="p">(</span><span class="s">&#39;default&#39;</span><span class="p">)</span>
+<span class="n">container2</span> <span class="o">=</span> <span class="n">kubernetes</span><span class="o">.</span><span class="n">deploy_container</span><span class="p">(</span>
+            <span class="n">cluster</span><span class="o">=</span><span class="n">cluster</span><span class="p">,</span>
+            <span class="n">name</span><span class="o">=</span><span class="s">&#39;hello-world&#39;</span><span class="p">,</span>
+            <span class="n">image</span><span class="o">=</span><span class="n">image</span><span class="p">,</span>
+        <span class="n">start</span><span class="o">=</span><span class="bp">False</span><span class="p">)</span>
+</code></pre></div>
+
+<h2>Wrapping it up</h2>
+
+<p>Now, let&#39;s wrap that all up by doing a list comprehension across the 3 drivers to get a list of all containers and print their ID&#39;s and Names. Then delete them.</p>
+
+<div class="highlight"><pre><code class="python language-python" data-lang="python"><span class="n">containers</span> <span class="o">=</span> <span class="p">[</span><span class="n">conn</span><span class="o">.</span><span class="n">list_containers</span><span class="p">()</span> <span class="k">for</span> <span class="n">conn</span> <span class="ow">in</span> <span class="p">[</span><span class="n">docker</span><span class="p">,</span> <span class="n">ecs</span><span class="p">,</span> <span class="n">kubernetes</span><span class="p">]]</span>
+<span class="k">for</span> <span class="n">container</span> <span class="ow">in</span> <span class="n">containers</span><span class="p">:</span>
+    <span class="k">print</span><span class="p">(</span><span class="s">&quot;</span><span class="si">%s</span><span class="s"> : </span><span class="si">%s</span><span class="s">&quot;</span> <span class="o">%</span> <span class="p">(</span><span class="n">container</span><span class="o">.</span><span class="n">id</span><span class="p">,</span> <span class="n">container</span><span class="o">.</span><span class="n">name</span><span class="p">))</span>
+    <span class="n">container</span><span class="o">.</span><span class="n">destroy</span><span class="p">()</span>
+</code></pre></div>
+
+<h3>About the Author</h3>
+
+<p>Anthony Shaw is on the PMC for Apache Libcloud, you can follow Anthony on Twitter at <a href="https://twitter.com/anthonypjshaw">@anthonypjshaw</a>.</p>
+
+  </div>
+
+  <div class="row section post-meta">
+    <div class="col-md-12 post-tags">
+      <p>Tags: <a href="/blog/tags/news.html" rel="tag">news</a>, <a href="/blog/tags/containers.html" rel="tag">containers</a>, <a href="/blog/tags/tutorial.html" rel="tag">tutorial</a></p>
+    </div>
+  </div>
+</div>
+
+  
+
+
+  </div>
+</div>
+
+
+      <hr />
+
+      <footer>
+        <div class="row">
+          <div class="col-lg-12 text-center">
+            <div class="footer-links">
+  <p><a href="http://www.apache.org/licenses/">License</a> | <a
+  href="/security.html">Security</a> | <a
+  href="http://www.apache.org/foundation/sponsorship.html">Sponsorship</a> |
+  <a href="http://www.apache.org/foundation/thanks.html">Thanks</a> |
+  <a href="/credits.html">Credits</a> | <a href="/media.html">Media</a>
+</div>
+
+<div class="footer-text">
+  <p class="">Copyright &copy; 2009-2016 <a href="https://www.apache.org/" target="_blank">The Apache Software Foundation</a></p>
+  <p class="">Apache Libcloud, Libcloud, Apache, the Apache feather, and the Apache Libcloud project logo are trademarks of the Apache Software Foundation. All other marks mentioned may be trademarks or registered trademarks of their respective owners.</p>
+</div>
+
+          </div>
+        </div>
+      </footer>
+
+    </div><!-- /.container -->
+
+    <!-- JavaScript -->
+    <script src='/assets/global-9c9298ad4670c6fcb2e40b5291d6c657.js' type='text/javascript'></script>
+
+
+    
+
+    <script type="text/javascript">
+  var _gaq = _gaq || [];
+  _gaq.push(['_setAccount', 'UA-23580482-1']);
+  _gaq.push(['_trackPageview']);
+
+  (function() {
+    var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
+    ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
+    var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
+  })();
+</script>
+
+  </body>
+</html>

Modified: libcloud/site/trunk/generated/blog/tags/europython.html
URL: http://svn.apache.org/viewvc/libcloud/site/trunk/generated/blog/tags/europython.html?rev=1728588&r1=1728587&r2=1728588&view=diff
==============================================================================
--- libcloud/site/trunk/generated/blog/tags/europython.html (original)
+++ libcloud/site/trunk/generated/blog/tags/europython.html Fri Feb  5 03:08:11 2016
@@ -47,7 +47,7 @@
 
     
 
-    <link href='/assets/global-e2026f958a032fcde1c942cd7456dd99.css' rel='stylesheet' type='text/css' />
+    <link href='/assets/global-52715da7c55e2d86c5b5bfc2a8e7c73e.css' rel='stylesheet' type='text/css' />
 
   </head>
 
@@ -149,7 +149,7 @@ information, please refer to the <a href
     </div><!-- /.container -->
 
     <!-- JavaScript -->
-    <script src='/assets/global-cd627f201dd4cfb6b045cf9d3aa874a1.js' type='text/javascript'></script>
+    <script src='/assets/global-9c9298ad4670c6fcb2e40b5291d6c657.js' type='text/javascript'></script>
 
 
     

Modified: libcloud/site/trunk/generated/blog/tags/events.html
URL: http://svn.apache.org/viewvc/libcloud/site/trunk/generated/blog/tags/events.html?rev=1728588&r1=1728587&r2=1728588&view=diff
==============================================================================
--- libcloud/site/trunk/generated/blog/tags/events.html (original)
+++ libcloud/site/trunk/generated/blog/tags/events.html Fri Feb  5 03:08:11 2016
@@ -47,7 +47,7 @@
 
     
 
-    <link href='/assets/global-e2026f958a032fcde1c942cd7456dd99.css' rel='stylesheet' type='text/css' />
+    <link href='/assets/global-52715da7c55e2d86c5b5bfc2a8e7c73e.css' rel='stylesheet' type='text/css' />
 
   </head>
 
@@ -171,7 +171,7 @@ attend the celebration.</p>
     </div><!-- /.container -->
 
     <!-- JavaScript -->
-    <script src='/assets/global-cd627f201dd4cfb6b045cf9d3aa874a1.js' type='text/javascript'></script>
+    <script src='/assets/global-9c9298ad4670c6fcb2e40b5291d6c657.js' type='text/javascript'></script>
 
 
     

Modified: libcloud/site/trunk/generated/blog/tags/gce.html
URL: http://svn.apache.org/viewvc/libcloud/site/trunk/generated/blog/tags/gce.html?rev=1728588&r1=1728587&r2=1728588&view=diff
==============================================================================
--- libcloud/site/trunk/generated/blog/tags/gce.html (original)
+++ libcloud/site/trunk/generated/blog/tags/gce.html Fri Feb  5 03:08:11 2016
@@ -47,7 +47,7 @@
 
     
 
-    <link href='/assets/global-e2026f958a032fcde1c942cd7456dd99.css' rel='stylesheet' type='text/css' />
+    <link href='/assets/global-52715da7c55e2d86c5b5bfc2a8e7c73e.css' rel='stylesheet' type='text/css' />
 
   </head>
 
@@ -323,7 +323,7 @@ to fix and enhance the Compute Engine dr
     </div><!-- /.container -->
 
     <!-- JavaScript -->
-    <script src='/assets/global-cd627f201dd4cfb6b045cf9d3aa874a1.js' type='text/javascript'></script>
+    <script src='/assets/global-9c9298ad4670c6fcb2e40b5291d6c657.js' type='text/javascript'></script>
 
 
     

Modified: libcloud/site/trunk/generated/blog/tags/github.html
URL: http://svn.apache.org/viewvc/libcloud/site/trunk/generated/blog/tags/github.html?rev=1728588&r1=1728587&r2=1728588&view=diff
==============================================================================
--- libcloud/site/trunk/generated/blog/tags/github.html (original)
+++ libcloud/site/trunk/generated/blog/tags/github.html Fri Feb  5 03:08:11 2016
@@ -47,7 +47,7 @@
 
     
 
-    <link href='/assets/global-e2026f958a032fcde1c942cd7456dd99.css' rel='stylesheet' type='text/css' />
+    <link href='/assets/global-52715da7c55e2d86c5b5bfc2a8e7c73e.css' rel='stylesheet' type='text/css' />
 
   </head>
 
@@ -174,7 +174,7 @@ from <a href="https://github.com/blog/20
     </div><!-- /.container -->
 
     <!-- JavaScript -->
-    <script src='/assets/global-cd627f201dd4cfb6b045cf9d3aa874a1.js' type='text/javascript'></script>
+    <script src='/assets/global-9c9298ad4670c6fcb2e40b5291d6c657.js' type='text/javascript'></script>
 
 
     

Modified: libcloud/site/trunk/generated/blog/tags/gsoc.html
URL: http://svn.apache.org/viewvc/libcloud/site/trunk/generated/blog/tags/gsoc.html?rev=1728588&r1=1728587&r2=1728588&view=diff
==============================================================================
--- libcloud/site/trunk/generated/blog/tags/gsoc.html (original)
+++ libcloud/site/trunk/generated/blog/tags/gsoc.html Fri Feb  5 03:08:11 2016
@@ -47,7 +47,7 @@
 
     
 
-    <link href='/assets/global-e2026f958a032fcde1c942cd7456dd99.css' rel='stylesheet' type='text/css' />
+    <link href='/assets/global-52715da7c55e2d86c5b5bfc2a8e7c73e.css' rel='stylesheet' type='text/css' />
 
   </head>
 
@@ -193,7 +193,7 @@ information - <a href="http://www.tomaz.
     </div><!-- /.container -->
 
     <!-- JavaScript -->
-    <script src='/assets/global-cd627f201dd4cfb6b045cf9d3aa874a1.js' type='text/javascript'></script>
+    <script src='/assets/global-9c9298ad4670c6fcb2e40b5291d6c657.js' type='text/javascript'></script>
 
 
     

Modified: libcloud/site/trunk/generated/blog/tags/gsoc2014.html
URL: http://svn.apache.org/viewvc/libcloud/site/trunk/generated/blog/tags/gsoc2014.html?rev=1728588&r1=1728587&r2=1728588&view=diff
==============================================================================
--- libcloud/site/trunk/generated/blog/tags/gsoc2014.html (original)
+++ libcloud/site/trunk/generated/blog/tags/gsoc2014.html Fri Feb  5 03:08:11 2016
@@ -47,7 +47,7 @@
 
     
 
-    <link href='/assets/global-e2026f958a032fcde1c942cd7456dd99.css' rel='stylesheet' type='text/css' />
+    <link href='/assets/global-52715da7c55e2d86c5b5bfc2a8e7c73e.css' rel='stylesheet' type='text/css' />
 
   </head>
 
@@ -193,7 +193,7 @@ information - <a href="http://www.tomaz.
     </div><!-- /.container -->
 
     <!-- JavaScript -->
-    <script src='/assets/global-cd627f201dd4cfb6b045cf9d3aa874a1.js' type='text/javascript'></script>
+    <script src='/assets/global-9c9298ad4670c6fcb2e40b5291d6c657.js' type='text/javascript'></script>
 
 
     

Modified: libcloud/site/trunk/generated/blog/tags/hacktoberfest.html
URL: http://svn.apache.org/viewvc/libcloud/site/trunk/generated/blog/tags/hacktoberfest.html?rev=1728588&r1=1728587&r2=1728588&view=diff
==============================================================================
--- libcloud/site/trunk/generated/blog/tags/hacktoberfest.html (original)
+++ libcloud/site/trunk/generated/blog/tags/hacktoberfest.html Fri Feb  5 03:08:11 2016
@@ -47,7 +47,7 @@
 
     
 
-    <link href='/assets/global-e2026f958a032fcde1c942cd7456dd99.css' rel='stylesheet' type='text/css' />
+    <link href='/assets/global-52715da7c55e2d86c5b5bfc2a8e7c73e.css' rel='stylesheet' type='text/css' />
 
   </head>
 
@@ -174,7 +174,7 @@ from <a href="https://github.com/blog/20
     </div><!-- /.container -->
 
     <!-- JavaScript -->
-    <script src='/assets/global-cd627f201dd4cfb6b045cf9d3aa874a1.js' type='text/javascript'></script>
+    <script src='/assets/global-9c9298ad4670c6fcb2e40b5291d6c657.js' type='text/javascript'></script>
 
 
     

Modified: libcloud/site/trunk/generated/blog/tags/ikoula.html
URL: http://svn.apache.org/viewvc/libcloud/site/trunk/generated/blog/tags/ikoula.html?rev=1728588&r1=1728587&r2=1728588&view=diff
==============================================================================
--- libcloud/site/trunk/generated/blog/tags/ikoula.html (original)
+++ libcloud/site/trunk/generated/blog/tags/ikoula.html Fri Feb  5 03:08:11 2016
@@ -47,7 +47,7 @@
 
     
 
-    <link href='/assets/global-e2026f958a032fcde1c942cd7456dd99.css' rel='stylesheet' type='text/css' />
+    <link href='/assets/global-52715da7c55e2d86c5b5bfc2a8e7c73e.css' rel='stylesheet' type='text/css' />
 
   </head>
 
@@ -161,7 +161,7 @@ Ikoula</a>.</p>
     </div><!-- /.container -->
 
     <!-- JavaScript -->
-    <script src='/assets/global-cd627f201dd4cfb6b045cf9d3aa874a1.js' type='text/javascript'></script>
+    <script src='/assets/global-9c9298ad4670c6fcb2e40b5291d6c657.js' type='text/javascript'></script>
 
 
     

Modified: libcloud/site/trunk/generated/blog/tags/infrastructure.html
URL: http://svn.apache.org/viewvc/libcloud/site/trunk/generated/blog/tags/infrastructure.html?rev=1728588&r1=1728587&r2=1728588&view=diff
==============================================================================
--- libcloud/site/trunk/generated/blog/tags/infrastructure.html (original)
+++ libcloud/site/trunk/generated/blog/tags/infrastructure.html Fri Feb  5 03:08:11 2016
@@ -47,7 +47,7 @@
 
     
 
-    <link href='/assets/global-e2026f958a032fcde1c942cd7456dd99.css' rel='stylesheet' type='text/css' />
+    <link href='/assets/global-52715da7c55e2d86c5b5bfc2a8e7c73e.css' rel='stylesheet' type='text/css' />
 
   </head>
 
@@ -187,7 +187,7 @@ to manually edit markdown files again wh
     </div><!-- /.container -->
 
     <!-- JavaScript -->
-    <script src='/assets/global-cd627f201dd4cfb6b045cf9d3aa874a1.js' type='text/javascript'></script>
+    <script src='/assets/global-9c9298ad4670c6fcb2e40b5291d6c657.js' type='text/javascript'></script>
 
 
     

Modified: libcloud/site/trunk/generated/blog/tags/linode.html
URL: http://svn.apache.org/viewvc/libcloud/site/trunk/generated/blog/tags/linode.html?rev=1728588&r1=1728587&r2=1728588&view=diff
==============================================================================
--- libcloud/site/trunk/generated/blog/tags/linode.html (original)
+++ libcloud/site/trunk/generated/blog/tags/linode.html Fri Feb  5 03:08:11 2016
@@ -47,7 +47,7 @@
 
     
 
-    <link href='/assets/global-e2026f958a032fcde1c942cd7456dd99.css' rel='stylesheet' type='text/css' />
+    <link href='/assets/global-52715da7c55e2d86c5b5bfc2a8e7c73e.css' rel='stylesheet' type='text/css' />
 
   </head>
 
@@ -208,7 +208,7 @@ and compatibility reasons. SSL v3.0 is c
     </div><!-- /.container -->
 
     <!-- JavaScript -->
-    <script src='/assets/global-cd627f201dd4cfb6b045cf9d3aa874a1.js' type='text/javascript'></script>
+    <script src='/assets/global-9c9298ad4670c6fcb2e40b5291d6c657.js' type='text/javascript'></script>
 
 
     

Modified: libcloud/site/trunk/generated/blog/tags/new PMC member.html
URL: http://svn.apache.org/viewvc/libcloud/site/trunk/generated/blog/tags/new%20PMC%20member.html?rev=1728588&r1=1728587&r2=1728588&view=diff
==============================================================================
--- libcloud/site/trunk/generated/blog/tags/new PMC member.html (original)
+++ libcloud/site/trunk/generated/blog/tags/new PMC member.html Fri Feb  5 03:08:11 2016
@@ -47,7 +47,7 @@
 
     
 
-    <link href='/assets/global-e2026f958a032fcde1c942cd7456dd99.css' rel='stylesheet' type='text/css' />
+    <link href='/assets/global-52715da7c55e2d86c5b5bfc2a8e7c73e.css' rel='stylesheet' type='text/css' />
 
   </head>
 
@@ -191,7 +191,7 @@ participation and contributions.</p>
     </div><!-- /.container -->
 
     <!-- JavaScript -->
-    <script src='/assets/global-cd627f201dd4cfb6b045cf9d3aa874a1.js' type='text/javascript'></script>
+    <script src='/assets/global-9c9298ad4670c6fcb2e40b5291d6c657.js' type='text/javascript'></script>
 
 
     

Modified: libcloud/site/trunk/generated/blog/tags/new committer.html
URL: http://svn.apache.org/viewvc/libcloud/site/trunk/generated/blog/tags/new%20committer.html?rev=1728588&r1=1728587&r2=1728588&view=diff
==============================================================================
--- libcloud/site/trunk/generated/blog/tags/new committer.html (original)
+++ libcloud/site/trunk/generated/blog/tags/new committer.html Fri Feb  5 03:08:11 2016
@@ -47,7 +47,7 @@
 
     
 
-    <link href='/assets/global-e2026f958a032fcde1c942cd7456dd99.css' rel='stylesheet' type='text/css' />
+    <link href='/assets/global-52715da7c55e2d86c5b5bfc2a8e7c73e.css' rel='stylesheet' type='text/css' />
 
   </head>
 
@@ -507,7 +507,7 @@ easily and directly contribute to the pr
     </div><!-- /.container -->
 
     <!-- JavaScript -->
-    <script src='/assets/global-cd627f201dd4cfb6b045cf9d3aa874a1.js' type='text/javascript'></script>
+    <script src='/assets/global-9c9298ad4670c6fcb2e40b5291d6c657.js' type='text/javascript'></script>
 
 
     

Modified: libcloud/site/trunk/generated/blog/tags/new features.html
URL: http://svn.apache.org/viewvc/libcloud/site/trunk/generated/blog/tags/new%20features.html?rev=1728588&r1=1728587&r2=1728588&view=diff
==============================================================================
--- libcloud/site/trunk/generated/blog/tags/new features.html (original)
+++ libcloud/site/trunk/generated/blog/tags/new features.html Fri Feb  5 03:08:11 2016
@@ -47,7 +47,7 @@
 
     
 
-    <link href='/assets/global-e2026f958a032fcde1c942cd7456dd99.css' rel='stylesheet' type='text/css' />
+    <link href='/assets/global-52715da7c55e2d86c5b5bfc2a8e7c73e.css' rel='stylesheet' type='text/css' />
 
   </head>
 
@@ -280,7 +280,7 @@ been written by one of our developers an
     </div><!-- /.container -->
 
     <!-- JavaScript -->
-    <script src='/assets/global-cd627f201dd4cfb6b045cf9d3aa874a1.js' type='text/javascript'></script>
+    <script src='/assets/global-9c9298ad4670c6fcb2e40b5291d6c657.js' type='text/javascript'></script>
 
 
     

Modified: libcloud/site/trunk/generated/blog/tags/new pmc member.html
URL: http://svn.apache.org/viewvc/libcloud/site/trunk/generated/blog/tags/new%20pmc%20member.html?rev=1728588&r1=1728587&r2=1728588&view=diff
==============================================================================
--- libcloud/site/trunk/generated/blog/tags/new pmc member.html (original)
+++ libcloud/site/trunk/generated/blog/tags/new pmc member.html Fri Feb  5 03:08:11 2016
@@ -47,7 +47,7 @@
 
     
 
-    <link href='/assets/global-e2026f958a032fcde1c942cd7456dd99.css' rel='stylesheet' type='text/css' />
+    <link href='/assets/global-52715da7c55e2d86c5b5bfc2a8e7c73e.css' rel='stylesheet' type='text/css' />
 
   </head>
 
@@ -194,7 +194,7 @@ our local &quot;CloudStack guy&quot;.</p
     </div><!-- /.container -->
 
     <!-- JavaScript -->
-    <script src='/assets/global-cd627f201dd4cfb6b045cf9d3aa874a1.js' type='text/javascript'></script>
+    <script src='/assets/global-9c9298ad4670c6fcb2e40b5291d6c657.js' type='text/javascript'></script>
 
 
     

Modified: libcloud/site/trunk/generated/blog/tags/news.html
URL: http://svn.apache.org/viewvc/libcloud/site/trunk/generated/blog/tags/news.html?rev=1728588&r1=1728587&r2=1728588&view=diff
==============================================================================
--- libcloud/site/trunk/generated/blog/tags/news.html (original)
+++ libcloud/site/trunk/generated/blog/tags/news.html Fri Feb  5 03:08:11 2016
@@ -47,7 +47,7 @@
 
     
 
-    <link href='/assets/global-e2026f958a032fcde1c942cd7456dd99.css' rel='stylesheet' type='text/css' />
+    <link href='/assets/global-52715da7c55e2d86c5b5bfc2a8e7c73e.css' rel='stylesheet' type='text/css' />
 
   </head>
 
@@ -96,6 +96,180 @@
   
     <div class="post">
   
+    <h2><a href="/blog/2016/02/05/libcloud-containers-example.html">Using the container abstraction API in 1.0.0-pre1</a></h2>
+  
+
+  
+    
+  
+  <span class="post-date-author">By Anthony Shaw on Feb 05, 2016</span>
+
+  <div class="post-content">
+    <h2>Background</h2>
+
+<p>Containers are the talk of the town, you can&#39;t escape an event or meetup without someone talking about containers. The lessons we
+learnt with compute abstraction are applying widely with containers in 2016. APIs are not consistent between clouds, designs are not
+standardised and yet, users are trying to consume multiple services.</p>
+
+<p>We introduced Container-as-a-Service support in <a href="http://libcloud.apache.org/blog/2016/01/26/libcloud-1-0-0-pre1-released.html">1.0.0-pre1</a>, a community pre-release with the intention of sparking feedback from 
+the open-source community about the design and the implementation of 4 example drivers :  </p>
+
+<ul>
+<li>Docker</li>
+<li>Joyent Triton</li>
+<li>Amazon EC2 Container Service</li>
+<li>Google Kubernetes</li>
+</ul>
+
+<h2>Getting Started with 1.0.0-pre1</h2>
+
+<p>First off, let&#39;s install the new packages, you probably want to do this within a virtualenv if you&#39;re using Apache Libcloud for other projects. </p>
+
+<p>So run these commands at a Linux Shell to create a virtualenv called &#39;containers&#39; and install the pre-release packages into that environment.</p>
+
+<div class="highlight"><pre><code class="bash language-bash" data-lang="bash">   virtualenv containers
+   <span class="nb">cd </span>containers
+   <span class="nb">source </span>bin/activate
+   pip install apache-libcloud<span class="o">==</span>1.0.0-pre1
+</code></pre></div>
+
+<p>Now you can start using this package with a test script, let&#39;s create one called containers.py</p>
+
+<div class="highlight"><pre><code class="bash language-bash" data-lang="bash">   touch containers.py
+</code></pre></div>
+
+<p>Using your favourite text editor, update that file to import the 1.0.0-pre1 libraries and the factory methods for instantiating containers.</p>
+
+<div class="highlight"><pre><code class="python language-python" data-lang="python">   <span class="kn">from</span> <span class="nn">libcloud.container.providers</span> <span class="kn">import</span> <span class="n">get_driver</span>
+   <span class="kn">from</span> <span class="nn">libcloud.container.types</span> <span class="kn">import</span> <span class="n">Provider</span>
+</code></pre></div>
+
+<p><code>get_driver</code> is a factory method as with all libcloud APIs, you call this method with the <code>Provider</code> that you want to instantiate. Our options are:</p>
+
+<ul>
+<li><code>Provider.DOCKER</code> - Standalone Docker API</li>
+<li><code>Provider.KUBERNETES</code> - Kubernetes Cluster endpoint</li>
+<li><code>Provider.JOYENT</code> - Joyent Triton Public API</li>
+<li><code>Provider.ECS</code> - Amazon EC2 Container Service</li>
+</ul>
+
+<p>Calling <code>get_driver</code> will return a reference to the driver class that you requested. You can then instantiate that class into an object using the 
+contructor. This is always a set of parameters for setting the host or region, the authentication and any other options.</p>
+
+<div class="highlight"><pre><code class="python language-python" data-lang="python">   <span class="n">driver</span> <span class="o">=</span> <span class="n">get_driver</span><span class="p">(</span><span class="n">Provider</span><span class="o">.</span><span class="n">DOCKER</span><span class="p">)</span>
+</code></pre></div>
+
+<p>Now we can call our driver and get an instance of it called <code>docker_driver</code> and use that to deploy a container. For Docker you need the pem files on the server,
+the host (IP or FQDN) and the port.</p>
+
+<div class="highlight"><pre><code class="python language-python" data-lang="python">   <span class="n">docker_driver</span> <span class="o">=</span> <span class="n">driver</span><span class="p">(</span><span class="n">host</span><span class="o">=</span><span class="s">&#39;https://198.61.239.128&#39;</span><span class="p">,</span> <span class="n">port</span><span class="o">=</span><span class="mi">4243</span><span class="p">,</span>
+             <span class="n">key_file</span><span class="o">=</span><span class="s">&#39;key.pem&#39;</span><span class="p">,</span> <span class="n">cert_file</span><span class="o">=</span><span class="s">&#39;cert.pem&#39;</span><span class="p">)</span>
+</code></pre></div>
+
+<p>Docker requires that images are available in the image database before they can be deployed as containers. With Kubernetes and Amazon ECS this step is not required
+as when you deploy a container it carries out that download for you. </p>
+
+<div class="highlight"><pre><code class="python language-python" data-lang="python">   <span class="n">image</span> <span class="o">=</span> <span class="n">driver</span><span class="o">.</span><span class="n">install_image</span><span class="p">(</span><span class="s">&#39;tomcat:8.0&#39;</span><span class="p">)</span>
+</code></pre></div>
+
+<p>Now that Docker has the version 8.0 image of Apache Tomcat, you can deploy this as a container called <code>my_tomcat_container</code>. Tomcat runs on TCP/8080 by default so we 
+want to bind that port for our container using an optional parameter <code>port_bindings</code></p>
+
+<div class="highlight"><pre><code class="python language-python" data-lang="python">   <span class="n">bindings</span> <span class="o">=</span> <span class="p">{</span> <span class="s">&quot;22/tcp&quot;</span><span class="p">:</span> <span class="p">[{</span> <span class="s">&quot;HostPort&quot;</span><span class="p">:</span> <span class="s">&quot;11022&quot;</span> <span class="p">}]</span> <span class="p">}</span>
+   <span class="n">container</span> <span class="o">=</span> <span class="n">driver</span><span class="o">.</span><span class="n">deploy_container</span><span class="p">(</span><span class="s">&#39;my_tomcat_container&#39;</span><span class="p">,</span> <span class="n">image</span><span class="p">,</span> <span class="n">port_bindings</span><span class="o">=</span><span class="n">bindings</span><span class="p">)</span>
+</code></pre></div>
+
+<p>This will have deployed the container and started it up for you, you can disable the automatic startup by using <code>start=False</code> as a keyword argument. You can now call upon this container and 
+run methods, <code>restart</code>, <code>start</code>, <code>stop</code> and <code>destroy</code>.</p>
+
+<p>For example, to blow away that test container: </p>
+
+<div class="highlight"><pre><code class="python language-python" data-lang="python">   <span class="n">container</span><span class="o">.</span><span class="n">destroy</span><span class="p">()</span>
+</code></pre></div>
+
+<h2>Crossing the streams; calling Kubernetes and Amazon EC2 Container Service</h2>
+
+<p>With Docker we saw that we needed to &quot;pull&quot; the image before we deployed it. Kubernetes and Amazon ECS don&#39;t have that requirement, but as a safeguard you can query the Docker Hub API using a 
+utility class provided</p>
+
+<div class="highlight"><pre><code class="python language-python" data-lang="python">   <span class="kn">from</span> <span class="nn">libcloud.container.utils.docker</span> <span class="kn">import</span> <span class="n">HubClient</span>
+   <span class="n">hub</span> <span class="o">=</span> <span class="n">HubClient</span><span class="p">()</span>
+   <span class="n">image</span> <span class="o">=</span> <span class="n">hub</span><span class="o">.</span><span class="n">get_image</span><span class="p">(</span><span class="s">&#39;tomcat&#39;</span><span class="p">,</span> <span class="s">&#39;8.0&#39;</span><span class="p">)</span>
+</code></pre></div>
+
+<p>Now <code>image</code> can be used to deploy to any driver instance that you create. Let&#39;s try that against Kubernetes and ECS.</p>
+
+<h3>Amazon ECS</h3>
+
+<p>Before you run this example, you will need an API key and the permissions for that key to have the <code>AmazonEC2ContainerServiceFullAccess</code> role. <code>ap-southeast-2</code> is my nearest region, but you can 
+swap this out for any of the Amazon public regions that have the ECS service available. </p>
+
+<div class="highlight"><pre><code class="python language-python" data-lang="python">   <span class="n">e_cls</span> <span class="o">=</span> <span class="n">get_driver</span><span class="p">(</span><span class="n">Provider</span><span class="o">.</span><span class="n">ECS</span><span class="p">)</span>
+   <span class="n">ecs</span> <span class="o">=</span> <span class="n">e_cls</span><span class="p">(</span><span class="n">access_id</span><span class="o">=</span><span class="s">&#39;SDHFISJDIFJSIDFJ&#39;</span><span class="p">,</span>
+               <span class="n">secret</span><span class="o">=</span><span class="s">&#39;THIS_IS)+_MY_SECRET_KEY+I6TVkv68o4H&#39;</span><span class="p">,</span>
+               <span class="n">region</span><span class="o">=</span><span class="s">&#39;ap-southeast-2&#39;</span><span class="p">)</span>
+</code></pre></div>
+
+<p>ECS and Kubernetes both support some form of grouping or clustering for your containers. This is available as <code>create_cluster</code>, <code>list_cluster</code>.</p>
+
+<div class="highlight"><pre><code class="python language-python" data-lang="python">   <span class="n">cluster</span> <span class="o">=</span> <span class="n">ecs</span><span class="o">.</span><span class="n">create_cluster</span><span class="p">(</span><span class="s">&#39;default&#39;</span><span class="p">)</span>
+   <span class="n">container</span> <span class="o">=</span> <span class="n">ecs</span><span class="o">.</span><span class="n">deploy_container</span><span class="p">(</span>
+            <span class="n">cluster</span><span class="o">=</span><span class="n">cluster</span><span class="p">,</span>
+            <span class="n">name</span><span class="o">=</span><span class="s">&#39;hello-world&#39;</span><span class="p">,</span>
+            <span class="n">image</span><span class="o">=</span><span class="n">image</span><span class="p">,</span>
+        <span class="n">start</span><span class="o">=</span><span class="bp">False</span><span class="p">,</span>
+        <span class="n">ex_container_port</span><span class="o">=</span><span class="mi">8080</span><span class="p">,</span> <span class="n">ex_host_port</span><span class="o">=</span><span class="mi">8080</span><span class="p">)</span>
+</code></pre></div>
+
+<p>This will have deployed a task definition in Amazon ECS with a single container inside, with a cluster called &#39;main&#39; and deployed the tomcat:8.0 image from the Docker hub to that region. </p>
+
+<p>Check out the <a href="http://libcloud.readthedocs.org/en/latest/container/drivers/ecs.html">ECS Documentation</a> for more details.</p>
+
+<h3>Kubernetes</h3>
+
+<p>Kubernetes authentication is currently only implemented for None (off) and Basic HTTP authentication. Let&#39;s use the <a href="http://kubernetes.io/v1.1/docs/admin/authentication.html">basic HTTP authentication method</a> to connect.</p>
+
+<div class="highlight"><pre><code class="python language-python" data-lang="python"><span class="n">k_cls</span> <span class="o">=</span> <span class="n">get_driver</span><span class="p">(</span><span class="n">Provider</span><span class="o">.</span><span class="n">KUBERNETES</span><span class="p">)</span>
+
+<span class="n">kubernetes</span> <span class="o">=</span> <span class="n">k_cls</span><span class="p">(</span><span class="n">key</span><span class="o">=</span><span class="s">&#39;my_username&#39;</span><span class="p">,</span>
+                   <span class="n">secret</span><span class="o">=</span><span class="s">&#39;THIS_IS)+_MY_SECRET_KEY+I6TVkv68o4H&#39;</span><span class="p">,</span>
+                   <span class="n">host</span><span class="o">=</span><span class="s">&#39;126.32.21.4&#39;</span><span class="p">)</span>
+<span class="n">cluster2</span> <span class="o">=</span> <span class="n">kubernetes</span><span class="o">.</span><span class="n">create_cluster</span><span class="p">(</span><span class="s">&#39;default&#39;</span><span class="p">)</span>
+<span class="n">container2</span> <span class="o">=</span> <span class="n">kubernetes</span><span class="o">.</span><span class="n">deploy_container</span><span class="p">(</span>
+            <span class="n">cluster</span><span class="o">=</span><span class="n">cluster</span><span class="p">,</span>
+            <span class="n">name</span><span class="o">=</span><span class="s">&#39;hello-world&#39;</span><span class="p">,</span>
+            <span class="n">image</span><span class="o">=</span><span class="n">image</span><span class="p">,</span>
+        <span class="n">start</span><span class="o">=</span><span class="bp">False</span><span class="p">)</span>
+</code></pre></div>
+
+<h2>Wrapping it up</h2>
+
+<p>Now, let&#39;s wrap that all up by doing a list comprehension across the 3 drivers to get a list of all containers and print their ID&#39;s and Names. Then delete them.</p>
+
+<div class="highlight"><pre><code class="python language-python" data-lang="python"><span class="n">containers</span> <span class="o">=</span> <span class="p">[</span><span class="n">conn</span><span class="o">.</span><span class="n">list_containers</span><span class="p">()</span> <span class="k">for</span> <span class="n">conn</span> <span class="ow">in</span> <span class="p">[</span><span class="n">docker</span><span class="p">,</span> <span class="n">ecs</span><span class="p">,</span> <span class="n">kubernetes</span><span class="p">]]</span>
+<span class="k">for</span> <span class="n">container</span> <span class="ow">in</span> <span class="n">containers</span><span class="p">:</span>
+    <span class="k">print</span><span class="p">(</span><span class="s">&quot;</span><span class="si">%s</span><span class="s"> : </span><span class="si">%s</span><span class="s">&quot;</span> <span class="o">%</span> <span class="p">(</span><span class="n">container</span><span class="o">.</span><span class="n">id</span><span class="p">,</span> <span class="n">container</span><span class="o">.</span><span class="n">name</span><span class="p">))</span>
+    <span class="n">container</span><span class="o">.</span><span class="n">destroy</span><span class="p">()</span>
+</code></pre></div>
+
+<h3>About the Author</h3>
+
+<p>Anthony Shaw is on the PMC for Apache Libcloud, you can follow Anthony on Twitter at <a href="https://twitter.com/anthonypjshaw">@anthonypjshaw</a>.</p>
+
+  </div>
+
+  <div class="row section post-meta">
+    <div class="col-md-12 post-tags">
+      <p>Tags: <a href="/blog/tags/news.html" rel="tag">news</a>, <a href="/blog/tags/containers.html" rel="tag">containers</a>, <a href="/blog/tags/tutorial.html" rel="tag">tutorial</a></p>
+    </div>
+  </div>
+</div>
+
+  
+
+  
+    <div class="post">
+  
     <h2><a href="/blog/2016/01/26/libcloud-1-0-0-pre1-released.html">Libcloud 1.0.0-pre1 released</a></h2>
   
 
@@ -4452,7 +4626,7 @@ Cloud and SoftLayer.</li>
     </div><!-- /.container -->
 
     <!-- JavaScript -->
-    <script src='/assets/global-cd627f201dd4cfb6b045cf9d3aa874a1.js' type='text/javascript'></script>
+    <script src='/assets/global-9c9298ad4670c6fcb2e40b5291d6c657.js' type='text/javascript'></script>
 
 
     




Mime
View raw message