Added: libcloud/site/trunk/source/_site/blog/tags/news.html
URL: 
http://svn.apache.org/viewvc/libcloud/site/trunk/source/_site/blog/tags/news.html?rev=1749451&view=auto
==============================================================================
--- libcloud/site/trunk/source/_site/blog/tags/news.html (added)
+++ libcloud/site/trunk/source/_site/blog/tags/news.html Tue Jun 21 06:39:51 
2016
@@ -0,0 +1,5432 @@
+<!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/news.html"; 
property="og:url">
+    
+    
+
+    
+
+    <link href='/assets/global-ace798c7a9ed56532fb1a044cb094574.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: news</h1>
+
+
+
+  
+    <div class="post">
+  
+    <h2><a href="/blog/2016/06/22/libcloud-1-0-0-released.html">Libcloud 1.0.0 
released</a></h2>
+  
+
+  
+    
+  
+  <span class="post-date-author">By Anthony Shaw on Jun 22, 2016</span>
+
+  <div class="post-content">
+    <p>We are pleased to announce the release of Libcloud 1.0.0.</p>
+
+<p>This first release in the 1.0 series which means it brings many new
+features, improvements, bug-fixes, and drivers. The 1.0 series includes 2 new 
driver types, container-as-a-service and backup-as-a-service.</p>
+
+<h3>Release highlights</h3>
+
+<p>This includes:</p>
+
+<ul>
+<li>New backup-as-a-service and container-as-a-service driver types</li>
+<li>Deprecated drivers that were no longer available such as Ninefold, IBM SCE 
<a 
href="http://libcloud.apache.org/blog/2016/02/16/new-drivers-deprecated-drivers.html";>more
 details</a></li>
+<li>Add support for authenticating against Keystone and OpenStack based clouds
+using OpenID Connect tokens.</li>
+<li>GCE nodes can be launched in a subnetwork and support for subnetworks</li>
+<li>Add Image Family support for GCE</li>
+<li>Add new <code>Perth, Australia</code> and <code>Manila, Philippines</code> 
region to the CloudSigma
+v2 driver.</li>
+<li>Add new S3 RGW storage driver.</li>
+<li>The Amazon EC2 driver has been changed to use region codes instead of 
separate drivers for each region.</li>
+<li>Introduce new <code>list_regions</code> class method on the base driver 
class</li>
+<li>Support for Dimension Data backup</li>
+<li>Added NSOne, LuaDNS, NearlyFreeSpeech.NET, BuddyNS, DNSPod DNS drivers</li>
+<li>Added Aliyun compute, load balancer and storage drivers</li>
+<li>Added Outscale storage driver</li>
+</ul>
+
+<p>Full change log can be found at <a 
href="https://libcloud.readthedocs.org/en/latest/changelog.html";>here</a>.</p>
+
+<h3>Special thank you</h3>
+
+<p>I would like to wish a special thank you to all of our community 
contributors for their ongoing support to the project.</p>
+
+<p><a href="https://github.com/Kami";>Tomaz Muraus</a>, <a 
href="https://github.com/pquerna";>Paul Querna</a>, 
+<a href="https://github.com/jcsalterego";>Jerry Chen</a>, <a 
href="https://github.com/jadunham1";>Jeff Dunham</a>, <a 
href="https://github.com/erjohnso";>Eric Johnson</a>,
+<a href="https://github.com/jedsmith";>Jed Smith</a>, <a 
href="https://github.com/wrigri";>Rick Wright</a>, <a 
href="https://github.com/novel";>Roman Bogorodskiy</a>,
+<a href="https://github.com/baldwinmathew";>Mathew Baldwin</a>, <a 
href="https://github.com/davidcrossland";>David Crossland</a>, <a 
href="https://github.com/alex";>Alex Gaynor</a>,
+<a href="https://github.com/allardhoeve";>Allard Hoeve</a>, <a 
href="https://github.com/runseb";>Sebastien Goasguen</a>, <a 
href="https://github.com/franckcuny";>Franck Cuny</a>,
+<a href="https://github.com/ktdreyer";>Ken Dreyer</a>, <a 
href="https://github.com/jcastillo2nd";>Javier Castillo II</a>, <a 
href="https://github.com/wido";>Wido den Hollander</a>,
+<a href="https://github.com/bennettaur";>Michael Bennett</a>, <a 
href="https://github.com/ZuluPro";>Anthony Monthe</a>, <a 
href="https://github.com/zerthimon";>Lior Goikhburg</a>,
+<a href="https://github.com/encyphered";>Geunwoo Shin</a>, <a 
href="https://github.com/juanfont";>Juan Font</a>, <a 
href="https://github.com/schaubl";>&quot;schaubl&quot;</a>,
+<a href="https://github.com/mbrukman";>Misha Brukman</a>, <a 
href="https://github.com/jetbird";>Oltjano Terpollari</a>, <a 
href="https://github.com/pzrq";>Peter Schmidt</a>,
+<a href="https://github.com/mingsheng36";>Ming Sheng</a>, <a 
href="https://github.com/gertjanol";>Gertjan Oude Lohuis</a>,
+<a href="https://github.com/mgogoulos";>Markos Gogoulos</a>, <a 
href="https://github.com/bernard357";>Bernard Paques</a>,
+<a href="https://github.com/Phreedom";>Evgeny Egorochkin</a>, <a 
href="https://github.com/gigimon";>Oleg</a>, <a 
href="https://github.com/atsaki";>Atsushi Sasaki</a>,
+<a href="https://github.com/micafer";>Miguel Caballer</a>, <a 
href="https://github.com/kumarappanc";>Kumar</a>, <a 
href="https://github.com/gmcdonald";>Gavin McDonald</a>,
+<a href="https://github.com/boul";>Roeland Kuipers</a>, <a 
href="https://github.com/briancurtin";>Brian Curtin</a>, <a 
href="https://github.com/ikusalic";>Ivan Kusalic</a>,
+<a href="https://github.com/ferewuz";>Vanč Levstik</a>, <a 
href="https://github.com/davidwilson2038";>None</a>, <a 
href="https://github.com/Smotko";>Anže Pečar</a>,
+<a href="https://github.com/MrBasset";>&quot;MrBasset&quot;</a>, <a 
href="https://github.com/crunkleton";>None</a>, <a 
href="https://github.com/jmunhoz";>Javier M. Mellid</a>,
+<a href="https://github.com/jimbobhickville";>Greg Hill</a>, <a 
href="https://github.com/Jc2k";>None</a>, <a 
href="https://github.com/sfriesel";>Stefan Friesel</a>,
+<a href="https://github.com/relaxdiego";>Mark Maglana</a>, <a 
href="https://github.com/aleGpereira";>Alejandro Gabriel Pereira</a>,
+<a href="https://github.com/kyle-long";>Kyle Long</a>, <a 
href="https://github.com/teemuvesala";>Teemu Vesala</a>, <a 
href="https://github.com/LordShion";>Filipe Silva</a>,
+<a href="https://github.com/jshridha";>Jay</a>, <a 
href="https://github.com/bernieke";>Bernard Kerckenaere</a>, <a 
href="https://github.com/jobelenus";>John Obelenus</a>,
+<a href="https://github.com/bsdlp";>Jon Chen</a>, <a 
href="https://github.com/lawrencellui-dd";>Larry Lui</a>,</p>
+
+<h3>Important breaking change-  Amazon EC2 driver changes</h3>
+
+<p>The Amazon EC2 API was updated to consolidate the regional-based drivers 
into a single driver with a region argument in the constructor.</p>
+
+<p>Amazon Instances should now be instantiated using the following syntax:</p>
+
+<div class="highlight"><pre><code class="python language-python" 
data-lang="python"><span class="kn">from</span> <span 
class="nn">libcloud.compute.types</span> <span class="kn">import</span> <span 
class="n">Provider</span>
+<span class="kn">from</span> <span 
class="nn">libcloud.compute.providers</span> <span class="kn">import</span> 
<span class="n">get_driver</span>
+
+<span class="n">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">EC2</span><span class="p">,</span> <span class="n">region</span><span 
class="o">=</span><span class="s">&#39;us-east-i1&#39;</span><span 
class="p">)</span>
+<span class="n">driver</span> <span class="o">=</span> <span 
class="n">cls</span><span class="p">(</span><span class="s">&#39;access 
key&#39;</span><span class="p">,</span> <span class="s">&#39;secret 
key&#39;</span><span class="p">)</span>
+</code></pre></div>
+
+<p>This brings the Amazon API inline with the other drivers, makes it easier 
to maintain and switch between regions.</p>
+
+<h3>Bug fixes</h3>
+
+<h4>General</h4>
+
+<ul>
+<li><p>Fix a bug with consuming stdout and stderr in the paramiko SSH client 
which
+would manifest itself under very rare condition when a consumed chunk only
+contained a single byte or part of a multi byte UTF-8 character.
+[Lakshmi Kannan, Tomaz Muraus]</p></li>
+<li><p>Increase default chunk size from <code>1024</code> to <code>4096</code> 
bytes in the paramiko
+SSH client. This results in smaller number of receive calls on the average.
+[Tomaz Muraus]</p></li>
+<li><p>Fix to Dimension Data API address for Middle-East and Africa
+(GITHUB-700)
+[Anthony Shaw]</p></li>
+<li><p>Throw a more user-friendly exception on &quot;No address associated 
with hostname&quot;.
+(GITHUB-711, GITHUB-714, LIBCLOUD-803)
+[Tomaz Muraus, Scott Crunkleton]</p></li>
+<li><p>Remove deprecated provider constants with the region in the name and 
related
+driver classes (e.g. <code>EC2_US_EAST</code>, etc.).</p>
+
+<p>Those drivers have moved to single provider constant + <code>region</code> 
constructor
+argument model.
+[Tomaz Muraus]</p></li>
+</ul>
+
+<h3>New or deprecated drivers</h3>
+
+<h4>Compute</h4>
+
+<ul>
+<li><p>Deprecated IBM SCE, HP Helion, OpSource, Ninefold and CloudFrames 
drivers, removed
+driver code and tests.
+(GITHUB-701, LIBCLOUD-801)
+[Anthony Shaw]</p></li>
+<li><p>Introduced error messages (<code>libcloud.compute.deprecated</code>) 
for deprecated drivers
+(GITHUB-701, LIBCLOUD-801)
+[Anthony Shaw]</p></li>
+<li><p>New Compute drivers- BSNL, Indosat, Med-1, NTT-America, Internet 
Solutions
+(GITHUB-700)
+[Anthony Shaw]</p></li>
+<li><p>New driver for Aliyun Elastic Compute Service.
+(LIBCLOUD-802, GITHUB-712)
+[Sam Song]</p></li>
+</ul>
+
+<h4>Storage</h4>
+
+<ul>
+<li><p>Added Outscale storage driver
+(GITHUB-730)
+[Javier M. Mellid]</p></li>
+<li><p>New driver for Aliyun OSS Storage Service.
+(LIBCLOUD-802, GITHUB-712)
+[Sam Song]</p></li>
+</ul>
+
+<h4>Loadbalancer</h4>
+
+<ul>
+<li>New driver for Aliyun SLB Loadbalancer Service.
+(LIBCLOUD-802, GITHUB-712)
+[Sam Song]</li>
+</ul>
+
+<h4>DNS</h4>
+
+<ul>
+<li><p>Added NearlyFreeSpeech.net (NSFN) driver
+[Ken Drayer]</p></li>
+<li><p>Added Lua DNS driver
+[Oltjano Terpollari]</p></li>
+<li><p>Added NSOne driver
+[Oltjano Terpollari]</p></li>
+</ul>
+
+<h2>Bug fixes</h2>
+
+<ul>
+<li><p>Fix a bug in the GoDaddy driver - make sure <code>host</code> attribute 
on the
+connection class is correctly set to the hostname.
+[Tomaz Muraus]</p></li>
+<li><p>Fix handling of <code>MX</code> records in the Gandi driver.
+(GITHUB-718)
+[Ryan Lee]</p></li>
+</ul>
+
+<h2>Improvements</h2>
+
+<h3>Compute</h3>
+
+<ul>
+<li><p>Introduce new <code>list_regions</code> class method on the base driver 
class. This
+method is to be used with provider drivers which support multiple regions and
+<code>region</code> constructor argument. It allows users to enumerate 
available /
+supported regions.
+[Tomaz Muraus]</p></li>
+<li><p>[dimension data] added support for VMWare tools VM information inside 
list_nodes responses
+(GITHUB-734)
+[Jeff Dunham]</p></li>
+<li><p>[ec2] added ex<em>encrypted and ex</em>kms<em>key</em>id optional 
parameters to the create volume method
+(GITHUB-729)
+[Viktor Ognev]</p></li>
+<li><p>[dimension data] added support for managing host anti-affinity rules, 
added paging support to
+all supported calls and added support for requesting priority ordering when 
creating ACL rules
+(GITHUB-726)
+[Jeff Dunham]</p></li>
+<li><p>Addition of Dimension Data Australia federal government region to 
dimension data
+drivers.
+(GITHUB-700)
+[Anthony Shaw]</p></li>
+<li><p>[openstack] when creating floating IPs, added pool_id as an optional 
argument
+(GITHUB-725)
+[marko-p]</p></li>
+<li><p>[google compute] Added setMachineType method to allow for changing 
sizes of instances
+(GITHUB-721)
+[Eric Johnson]</p></li>
+<li><p>[google compute] allow bypassing image search in standard project list
+(GITHUB-713)
+[Max Illfelder]</p></li>
+<li><p>Add support for requesting a MKS token for accessing the remote console 
in VMware
+vCloud driver
+(GITHUB-706)
+[Juan Font Alonso]</p></li>
+<li><p>Add support in VMware vCloud driver for v5.5 API, with snapshot support
+(GITHUB-658)
+[Juan Font Alonso]</p></li>
+<li><p>Added support for adding a family to an image on Google Compute Driver
+(GITHUB-704)
+[Max Illfelder]</p></li>
+<li><p>Fix to set default signature version for AWS Seoul region to v4, removed
+non-supported size (hs1.xlarge)
+(GITHUB-684)
+[Geunwoo Shin]</p></li>
+<li><p>Support filtering by location in list_nodes for dimension data compute 
driver
+fix lack of paging support
+(GITHUB-691)
+[Jeff Dunham]</p></li>
+<li><p>Support for filtering by IPv4, IPv6, network, network domain, VLAN in 
Dimension
+data driver.
+(GITHUB-694)
+[Jeff Dunham]</p></li>
+<li><p>Added <code>Node.created_at</code> which, on supported drivers, 
contains the datetime the
+node was first started.
+(GITHUB-698)
+[Allard Hoeve] [Rick van de Loo]</p></li>
+</ul>
+
+<h3>Storage</h3>
+
+<ul>
+<li><p>Improvements to Google Auth for Storage and Compute and MIME bug fix
+(LIBCLOUD-800, GITHUB-689)
+[Scott Crunkleton]</p></li>
+<li><p>Implement <code>get_container</code>, <code>get_object</code> and 
<code>upload_object_via_stream</code>
+methods in the Backblaze B2 storage driver.</p>
+
+<p>Note: Backblaze API doesn&#39;t upload streaming uploads so when using
+<code>upload_object_via_stream</code> whole file is read and buffered in 
memory.
+(GITHUB-696)
+[Jay jshridha]</p></li>
+</ul>
+
+<h3>Backup</h3>
+
+<ul>
+<li>Dimension Data - added additional testing, fixed bug on client response 
naming,
+added support for adding backup clients to a backup enabled node.
+(GITHUB-692, GITHUB-693, GITHUB-695)
+[Jeff Dunham]</li>
+</ul>
+
+<h3>Download</h3>
+
+<p>The release can can be downloaded from
+<a 
href="https://libcloud.apache.org/downloads.html";>https://libcloud.apache.org/downloads.html</a>
 or installed using pip:</p>
+
+<pre>
+pip install apache-libcloud==1.0.0
+</pre>
+
+<h3>Upgrading</h3>
+
+<p>If you have installed Libcloud using pip you can also use it to upgrade 
it:</p>
+
+<pre>
+pip install --upgrade apache-libcloud==1.0.0
+</pre>
+
+<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 <a 
href="https://libcloud.readthedocs.org/en/latest/upgrade_notes.html";>https://libcloud.readthedocs.org/en/latest/upgrade_notes.html</a></p>
+
+<h3>Documentation</h3>
+
+<p>Regular and API documentation is available at <a 
href="https://libcloud.readthedocs.org/en/latest/";>https://libcloud.readthedocs.org/en/latest/</a></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
+<a href="https://libcloud.readthedocs.org/en/latest/changelog.html";>CHANGES 
file</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/2016/04/11/libcloud-1-0-0-rc2-released.html">Libcloud 
1.0.0-rc2 released</a></h2>
+  
+
+  
+    
+  
+  <span class="post-date-author">By Anthony Shaw on Apr 11, 2016</span>
+
+  <div class="post-content">
+    <p>We are pleased to announce the release of Libcloud 1.0.0-rc2.</p>
+
+<p>This the second pre-release in the 1.0.0 series which means it brings many 
new
+features, improvements, bug-fixes, and DNS drivers.</p>
+
+<h3>Release highlights</h3>
+
+<p>This includes:</p>
+
+<ul>
+<li>Deprecated drivers that were no longer available such as Ninefold, IBM SCE 
<a 
href="http://libcloud.apache.org/blog/2016/02/16/new-drivers-deprecated-drivers.html";>more
 details</a></li>
+<li>The Amazon EC2 driver has been changed to use region codes instead of 
separate drivers for each region.</li>
+<li>Introduce new <code>list_regions</code> class method on the base driver 
class</li>
+<li>Support for Dimension Data backup</li>
+<li>Added NSOne, LuaDNS, NearlyFreeSpeech.NET DNS drivers</li>
+<li>Added Aliyun compute, load balancer and storage drivers</li>
+<li>Added Outscale storage driver</li>
+</ul>
+
+<p>Full change log can be found at <a 
href="https://libcloud.readthedocs.org/en/latest/changelog.html";>here</a>.</p>
+
+<h3>Important breaking change-  Amazon EC2 driver changes</h3>
+
+<p>The Amazon EC2 API was updated to consolidate the regional-based drivers 
into a single driver with a region argument in the constructor.</p>
+
+<p>Amazon Instances should now be instantiated using the following syntax:</p>
+
+<div class="highlight"><pre><code class="python language-python" 
data-lang="python"><span class="kn">from</span> <span 
class="nn">libcloud.compute.types</span> <span class="kn">import</span> <span 
class="n">Provider</span>
+<span class="kn">from</span> <span 
class="nn">libcloud.compute.providers</span> <span class="kn">import</span> 
<span class="n">get_driver</span>
+
+<span class="n">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">EC2</span><span class="p">,</span> <span class="n">region</span><span 
class="o">=</span><span class="s">&#39;us-east-i1&#39;</span><span 
class="p">)</span>
+<span class="n">driver</span> <span class="o">=</span> <span 
class="n">cls</span><span class="p">(</span><span class="s">&#39;access 
key&#39;</span><span class="p">,</span> <span class="s">&#39;secret 
key&#39;</span><span class="p">)</span>
+</code></pre></div>
+
+<p>This brings the Amazon API inline with the other drivers, makes it easier 
to maintain and switch between regions.</p>
+
+<h3>Bug fixes</h3>
+
+<h4>General</h4>
+
+<ul>
+<li><p>Fix a bug with consuming stdout and stderr in the paramiko SSH client 
which
+would manifest itself under very rare condition when a consumed chunk only
+contained a single byte or part of a multi byte UTF-8 character.
+[Lakshmi Kannan, Tomaz Muraus]</p></li>
+<li><p>Increase default chunk size from <code>1024</code> to <code>4096</code> 
bytes in the paramiko
+SSH client. This results in smaller number of receive calls on the average.
+[Tomaz Muraus]</p></li>
+<li><p>Fix to Dimension Data API address for Middle-East and Africa
+(GITHUB-700)
+[Anthony Shaw]</p></li>
+<li><p>Throw a more user-friendly exception on &quot;No address associated 
with hostname&quot;.
+(GITHUB-711, GITHUB-714, LIBCLOUD-803)
+[Tomaz Muraus, Scott Crunkleton]</p></li>
+<li><p>Remove deprecated provider constants with the region in the name and 
related
+driver classes (e.g. <code>EC2_US_EAST</code>, etc.).</p>
+
+<p>Those drivers have moved to single provider constant + <code>region</code> 
constructor
+argument model.
+[Tomaz Muraus]</p></li>
+</ul>
+
+<h3>New or deprecated drivers</h3>
+
+<h4>Compute</h4>
+
+<ul>
+<li><p>Deprecated IBM SCE, HP Helion, OpSource, Ninefold and CloudFrames 
drivers, removed
+driver code and tests.
+(GITHUB-701, LIBCLOUD-801)
+[Anthony Shaw]</p></li>
+<li><p>Introduced error messages (<code>libcloud.compute.deprecated</code>) 
for deprecated drivers
+(GITHUB-701, LIBCLOUD-801)
+[Anthony Shaw]</p></li>
+<li><p>New Compute drivers- BSNL, Indosat, Med-1, NTT-America, Internet 
Solutions
+(GITHUB-700)
+[Anthony Shaw]</p></li>
+<li><p>New driver for Aliyun Elastic Compute Service.
+(LIBCLOUD-802, GITHUB-712)
+[Sam Song]</p></li>
+</ul>
+
+<h4>Storage</h4>
+
+<ul>
+<li><p>Added Outscale storage driver
+(GITHUB-730)
+[Javier M. Mellid]</p></li>
+<li><p>New driver for Aliyun OSS Storage Service.
+(LIBCLOUD-802, GITHUB-712)
+[Sam Song]</p></li>
+</ul>
+
+<h4>Loadbalancer</h4>
+
+<ul>
+<li>New driver for Aliyun SLB Loadbalancer Service.
+(LIBCLOUD-802, GITHUB-712)
+[Sam Song]</li>
+</ul>
+
+<h4>DNS</h4>
+
+<ul>
+<li><p>Added NearlyFreeSpeech.net (NSFN) driver
+[Ken Drayer]</p></li>
+<li><p>Added Lua DNS driver
+[Oltjano Terpollari]</p></li>
+<li><p>Added NSOne driver
+[Oltjano Terpollari]</p></li>
+</ul>
+
+<h2>Bug fixes</h2>
+
+<ul>
+<li><p>Fix a bug in the GoDaddy driver - make sure <code>host</code> attribute 
on the
+connection class is correctly set to the hostname.
+[Tomaz Muraus]</p></li>
+<li><p>Fix handling of <code>MX</code> records in the Gandi driver.
+(GITHUB-718)
+[Ryan Lee]</p></li>
+</ul>
+
+<h2>Improvements</h2>
+
+<h3>Compute</h3>
+
+<ul>
+<li><p>Introduce new <code>list_regions</code> class method on the base driver 
class. This
+method is to be used with provider drivers which support multiple regions and
+<code>region</code> constructor argument. It allows users to enumerate 
available /
+supported regions.
+[Tomaz Muraus]</p></li>
+<li><p>[dimension data] added support for VMWare tools VM information inside 
list_nodes responses
+(GITHUB-734)
+[Jeff Dunham]</p></li>
+<li><p>[ec2] added ex<em>encrypted and ex</em>kms<em>key</em>id optional 
parameters to the create volume method
+(GITHUB-729)
+[Viktor Ognev]</p></li>
+<li><p>[dimension data] added support for managing host anti-affinity rules, 
added paging support to
+all supported calls and added support for requesting priority ordering when 
creating ACL rules
+(GITHUB-726)
+[Jeff Dunham]</p></li>
+<li><p>Addition of Dimension Data Australia federal government region to 
dimension data
+drivers.
+(GITHUB-700)
+[Anthony Shaw]</p></li>
+<li><p>[openstack] when creating floating IPs, added pool_id as an optional 
argument
+(GITHUB-725)
+[marko-p]</p></li>
+<li><p>[google compute] Added setMachineType method to allow for changing 
sizes of instances
+(GITHUB-721)
+[Eric Johnson]</p></li>
+<li><p>[google compute] allow bypassing image search in standard project list
+(GITHUB-713)
+[Max Illfelder]</p></li>
+<li><p>Add support for requesting a MKS token for accessing the remote console 
in VMware
+vCloud driver
+(GITHUB-706)
+[Juan Font Alonso]</p></li>
+<li><p>Add support in VMware vCloud driver for v5.5 API, with snapshot support
+(GITHUB-658)
+[Juan Font Alonso]</p></li>
+<li><p>Added support for adding a family to an image on Google Compute Driver
+(GITHUB-704)
+[Max Illfelder]</p></li>
+<li><p>Fix to set default signature version for AWS Seoul region to v4, removed
+non-supported size (hs1.xlarge)
+(GITHUB-684)
+[Geunwoo Shin]</p></li>
+<li><p>Support filtering by location in list_nodes for dimension data compute 
driver
+fix lack of paging support
+(GITHUB-691)
+[Jeff Dunham]</p></li>
+<li><p>Support for filtering by IPv4, IPv6, network, network domain, VLAN in 
Dimension
+data driver.
+(GITHUB-694)
+[Jeff Dunham]</p></li>
+<li><p>Added <code>Node.created_at</code> which, on supported drivers, 
contains the datetime the
+node was first started.
+(GITHUB-698)
+[Allard Hoeve] [Rick van de Loo]</p></li>
+</ul>
+
+<h3>Storage</h3>
+
+<ul>
+<li><p>Improvements to Google Auth for Storage and Compute and MIME bug fix
+(LIBCLOUD-800, GITHUB-689)
+[Scott Crunkleton]</p></li>
+<li><p>Implement <code>get_container</code>, <code>get_object</code> and 
<code>upload_object_via_stream</code>
+methods in the Backblaze B2 storage driver.</p>
+
+<p>Note: Backblaze API doesn&#39;t upload streaming uploads so when using
+<code>upload_object_via_stream</code> whole file is read and buffered in 
memory.
+(GITHUB-696)
+[Jay jshridha]</p></li>
+</ul>
+
+<h3>Backup</h3>
+
+<ul>
+<li>Dimension Data - added additional testing, fixed bug on client response 
naming,
+added support for adding backup clients to a backup enabled node.
+(GITHUB-692, GITHUB-693, GITHUB-695)
+[Jeff Dunham]</li>
+</ul>
+
+<h3>Download</h3>
+
+<p>The release can can be downloaded from
+<a 
href="https://libcloud.apache.org/downloads.html";>https://libcloud.apache.org/downloads.html</a>
 or installed using pip:</p>
+
+<pre>
+pip install apache-libcloud==1.0.0-rc2
+</pre>
+
+<h3>Upgrading</h3>
+
+<p>If you have installed Libcloud using pip you can also use it to upgrade 
it:</p>
+
+<pre>
+pip install --upgrade apache-libcloud==1.0.0-rc2
+</pre>
+
+<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 <a 
href="https://libcloud.readthedocs.org/en/latest/upgrade_notes.html";>https://libcloud.readthedocs.org/en/latest/upgrade_notes.html</a></p>
+
+<h3>Documentation</h3>
+
+<p>Regular and API documentation is available at <a 
href="https://libcloud.readthedocs.org/en/latest/";>https://libcloud.readthedocs.org/en/latest/</a></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
+<a href="https://libcloud.readthedocs.org/en/latest/changelog.html";>CHANGES 
file</a>.</p>
+
+<p>We would like to thank the following community members for their 
contribution to this release:</p>
+
+<ul>
+<li>Jeff Dunham</li>
+<li>Max Illfelder</li>
+<li>Ken Dreyer</li>
+<li>Sam Song</li>
+<li>Oltjano Terpollari</li>
+<li>Javier M. Mellid</li>
+</ul>
+
+  </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/2016/04/06/requests-support.html">Experimental support 
for the requests package</a></h2>
+  
+
+  
+    
+  
+  <span class="post-date-author">By Anthony Shaw on Apr 06, 2016</span>
+
+  <div class="post-content">
+    <h2>Background</h2>
+
+<p>I&#39;ve just pushed a branch of the latest version of libcloud using the 
popular <code>requests</code> package by Kenneth Reitz instead of our 
home-rolled HTTP client library.</p>
+
+<p>This article is for both users and developers of libcloud. If you want to 
give feedback, please join the developer mailing list.</p>
+
+<h2>Why?</h2>
+
+<ul>
+<li>requests is the defacto standard - it would be in the standard library but 
agreed against to allow it to develop faster 
https://github.com/kennethreitz/requests/issues/2424</li>
+<li>it works with python 2.6-&gt;3.5</li>
+<li>Our SSL experience has a lot to be desired for Windows users, having to 
download the CA cert package and setting environment variables just to get SSL 
working</li>
+<li>Developers can use requests_mock for deeper integration testing</li>
+<li>less code to maintain</li>
+<li>the role of libcloud is for cloud abstraction, we provide no value in 
writing and maintaining our own HTTP client library</li>
+</ul>
+
+<h2>Benefits of requests</h2>
+
+<p>There are a number of benefits to having a requests package</p>
+
+<ul>
+<li>The client library code is smaller, leaner and simpler.</li>
+<li>Requests has built in decompression support, we no longer need to support 
this</li>
+<li>Requests has built in RAW download, upload support, helping with our 
storage drivers</li>
+</ul>
+
+<h2>Implications of the change</h2>
+
+<ul>
+<li>There are no longer 2 classes (<code>LibcloudHTTPSConnection</code> and 
<code>LibcloudHTTPConnection</code>) to be provided to each driver, they are 
now 1 class - <code>LibcloudConnection</code>. You probably won&#39;t notice 
this because it is a property of the <code>Connection</code> class, but
+if you are developing or extending functionality then it is implicated.</li>
+<li>Unit tests will look slightly different (see below)</li>
+<li>This change broke 4200 unit tests (out of 6340)! I&#39;ve since fixed them 
all since they were coupled to the original implementation, but now I don&#39;t 
know if all of tests are valid.</li>
+</ul>
+
+<h2>Testing with requests</h2>
+
+<p>Unit tests that were written like this:</p>
+
+<div class="highlight"><pre><code class="python language-python" 
data-lang="python"><span class="k">class</span> <span 
class="nc">DigitalOceanTests</span><span class="p">(</span><span 
class="n">LibcloudTestCase</span><span class="p">):</span>
+
+      <span class="k">def</span> <span class="nf">setUp</span><span 
class="p">(</span><span class="bp">self</span><span class="p">):</span>
+          <span class="n">DigitalOceanBaseDriver</span><span 
class="o">.</span><span class="n">connectionCls</span><span 
class="o">.</span><span class="n">conn_classes</span> <span class="o">=</span> 
\ 
+           <span class="p">(</span><span class="bp">None</span><span 
class="p">,</span> <span class="n">DigitalOceanMockHttp</span><span 
class="p">)</span>
+          <span class="n">DigitalOceanMockHttp</span><span 
class="o">.</span><span class="n">type</span> <span class="o">=</span> <span 
class="bp">None</span>
+          <span class="bp">self</span><span class="o">.</span><span 
class="n">driver</span> <span class="o">=</span> <span 
class="n">DigitalOceanBaseDriver</span><span class="p">(</span><span 
class="o">*</span><span class="n">DIGITALOCEAN_v1_PARAMS</span><span 
class="p">)</span>
+</code></pre></div>
+
+<p>Because of the change have been modified to (I updated all of them - so 
this is just for future reference)</p>
+
+<div class="highlight"><pre><code class="python language-python" 
data-lang="python"><span class="k">class</span> <span 
class="nc">DigitalOceanTests</span><span class="p">(</span><span 
class="n">LibcloudTestCase</span><span class="p">):</span>
+
+      <span class="k">def</span> <span class="nf">setUp</span><span 
class="p">(</span><span class="bp">self</span><span class="p">):</span>
+          <span class="n">DigitalOceanBaseDriver</span><span 
class="o">.</span><span class="n">connectionCls</span><span 
class="o">.</span><span class="n">conn_class</span> <span class="o">=</span> 
<span class="n">DigitalOceanMockHttp</span>
+          <span class="n">DigitalOceanMockHttp</span><span 
class="o">.</span><span class="n">type</span> <span class="o">=</span> <span 
class="bp">None</span>
+          <span class="bp">self</span><span class="o">.</span><span 
class="n">driver</span> <span class="o">=</span> <span 
class="n">DigitalOceanBaseDriver</span><span class="p">(</span><span 
class="o">*</span><span class="n">DIGITALOCEAN_v1_PARAMS</span><span 
class="p">)</span>
+</code></pre></div>
+
+<h1>Check it out!</h1>
+
+<p>The package is on my personal apache site, you can download it and install 
it in a virtualenv for testing.</p>
+
+<p><code>pip install -e 
http://people.apache.org/~anthonyshaw/libcloud/1.0.0-rc2-requests/apache-libcloud-1.0.0-rc2-requests.zip@feature#egg=apache-libcloud</code></p>
+
+<p>The hashes are my <a 
href="http://people.apache.org/%7Eanthonyshaw/libcloud/1.0.0-rc2-requests/";>apache
 space</a></p>
+
+<p>Have a look at the <a 
href="https://github.com/apache/libcloud/pull/728/files";>PR and the change 
set</a> for a list of changes</p>
+
+<h1>What might break?</h1>
+
+<p>What I&#39;m really looking for is for users of Libcloud to take 15 
minutes, an existing (working) libcloud script, install this package in a 
virtualenv and just validate
+that there are no regression bugs with this change.</p>
+
+<p>I&#39;m particularly sceptical about the storage drivers.</p>
+
+<p>Once we have enough community feedback, we will propose a vote to merge 
this into trunk for future release.</p>
+
+<h2>Credit</h2>
+
+<p>Credit to dz0ny on IRC for contributing some of the requests patch.</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/API.html" rel="tag">API</a>, <a 
href="/blog/tags/tutorial.html" rel="tag">tutorial</a></p>
+    </div>
+  </div>
+</div>
+
+  
+
+  
+    <div class="post">
+  
+    <h2><a href="/blog/2016/02/16/new-drivers-deprecated-drivers.html">New 
compute drivers and deprecated drivers in 1.0</a></h2>
+  
+
+  
+    
+  
+  <span class="post-date-author">By Anthony Shaw on Feb 16, 2016</span>
+
+  <div class="post-content">
+    <p>With Libcloud 1.0.0 around the corner, it&#39;s time to have a spring 
clean of the compute drivers. Granted, it&#39;s not spring everywhere -actually
+I&#39;m writing from Sydney, Australia where it&#39;s definitely summer.</p>
+
+<p>Looking at the 52 providers in the 0.21.0 release, I have identified 5 
providers that are no longer available or open.</p>
+
+<ul>
+<li>CloudFrames
+
+<ul>
+<li>Looks dead - website doesn&#39;t work, can&#39;t see any references to 
this online.</li>
+<li><code>libcloud.compute.drivers.cloudframes</code></li>
+</ul></li>
+<li>HP Public Cloud (Helion)
+
+<ul>
+<li><a href="https://tahoe-lafs.org/trac/tahoe-lafs/ticket/2566";>Shut down on 
31st of January 2016</a></li>
+<li><code>libcloud.compute.drivers.hpcloud</code></li>
+</ul></li>
+<li>IBM SmartCloud Enterprise
+
+<ul>
+<li><a 
href="http://www.theregister.co.uk/2013/10/31/ibm_to_shutter_smartcloud_enterprise_moves_customers_to_softlayer/";>Shut
 down 2014, customers instructed to move to SoftLayer</a></li>
+<li><code>libcloud.compute.drivers.ibm_sce</code></li>
+</ul></li>
+<li>Ninefold
+
+<ul>
+<li><a 
href="http://www.itnews.com.au/news/ninefold-to-shut-down-411312";>Ninefold shut 
down in January 2016</a></li>
+<li><code>libcloud.compute.drivers.ninefold</code></li>
+</ul></li>
+<li>Opsource
+
+<ul>
+<li>Dimension Data acquired OpSource in 2012, the Opsource driver is succeeded 
by the Dimension Data driver.</li>
+<li><code>libcloud.compute.drivers.opsource</code></li>
+</ul></li>
+</ul>
+
+<h3>Handling deprecated drivers</h3>
+
+<p>For 1.0.0, we need a clean and user-friendly way of handling deprecated 
drivers as well as keeping the repository clean from legacy code.</p>
+
+<p>The most obvious implementation is that calls to 
<code>get_driver(Provider.NINEFOLD)</code> as an example will return a user 
error message saying
+this provider is no longer supported with a link to a new article and an 
alternative solution.</p>
+
+<p>Currently, users trying to instantiate a HPE public cloud driver for 
example will get a connection error, which is not user friendly.</p>
+
+<h3>New compute drivers in 1.0.0-pre2</h3>
+
+<p>The upcoming release, so currently available in trunk contains some new 
compute drivers.</p>
+
+<ul>
+<li><a 
href="http://libcloud.readthedocs.org/en/latest/compute/drivers/ntta.html";>NTT 
America Public Cloud</a></li>
+<li><a 
href="http://libcloud.readthedocs.org/en/latest/compute/drivers/internetsolutions.html";>Internet
 Solutions Public Cloud</a></li>
+<li><a 
href="http://libcloud.readthedocs.org/en/latest/compute/drivers/medone.html";>Med-1
 Public Cloud</a></li>
+<li><a 
href="http://libcloud.readthedocs.org/en/latest/compute/drivers/indosat.html";>Indosat
 Cloud</a></li>
+<li><a 
href="http://libcloud.readthedocs.org/en/latest/compute/drivers/bsnl.html";>BSNL 
IDC Cloud</a></li>
+</ul>
+
+<p>Full change log can be found at <a 
href="https://github.com/apache/libcloud/blob/trunk/CHANGES.rst";>here</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/announcement.html" rel="tag">announcement</a></p>
+    </div>
+  </div>
+</div>
+
+  
+
+  
+    <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>
+
+<p>In this tutorial we&#39;re going to explore how to do this:</p>
+
+<div class="imginline">
+  <img src="/images/posts/2016-02-05-containers/container_cloud_example.png" 
class="img-responsive inline" />
+  <p class="img-caption">Deploying containers across platforms.</p>
+</div>
+
+<p>Pulling images from the Docker hub, deploying to Docker, Kubernetes and 
Amazon ECS then auditing them with a single query.</p>
+
+<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>
+  
+
+  
+    
+  
+  <span class="post-date-author">By Anthony Shaw on Jan 26, 2016</span>
+
+  <div class="post-content">
+    <p>We are pleased to announce the release of Libcloud 1.0.0-pre1.</p>
+
+<p>This is a first pre-release in the 1.0.0 series which means it brings many 
new
+features, improvements, bug-fixes, and DNS drivers.</p>
+
+<h3>Release highlights</h3>
+
+<p>A full blog post on the new features in 1.0.0 can be found <a 
href="http://libcloud.apache.org/blog/2016/01/20/libcloud-1.0-pre1.html";>here</a></p>
+
+<p>This includes:</p>
+
+<ul>
+<li>Introduction of Container-as-a-Service API drivers for <a 
href="http://libcloud.readthedocs.org/en/latest/container/drivers/kubernetes.html";>Kubernetes</a>,
 <a 
href="http://libcloud.readthedocs.org/en/latest/container/drivers/docker.html";>Docker</a>,
 <a 
href="http://libcloud.readthedocs.org/en/latest/container/drivers/ecs.html";>Amazon
 ECS</a> and <a 
href="http://libcloud.readthedocs.org/en/latest/container/drivers/joyent.html";>Joyent
 Triton</a></li>
+<li>Introduction of Backup-as-a-Service API</li>
+<li>Addition of South Korea region for Amazon EC2</li>
+</ul>
+
+<p>Full change log can be found at <a 
href="https://libcloud.readthedocs.org/en/latest/changelog.html";>here</a>.</p>
+
+<h3>Download</h3>
+
+<p>The release can can be downloaded from
+<a 
href="https://libcloud.apache.org/downloads.html";>https://libcloud.apache.org/downloads.html</a>
 or installed using pip:</p>
+
+<pre>
+pip install apache-libcloud==1.0.0-pre1
+</pre>
+
+<h3>Upgrading</h3>
+
+<p>If you have installed Libcloud using pip you can also use it to upgrade 
it:</p>
+
+<pre>
+pip install --upgrade apache-libcloud==1.0.0-pre1
+</pre>
+
+<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 <a 
href="https://libcloud.readthedocs.org/en/latest/upgrade_notes.html";>https://libcloud.readthedocs.org/en/latest/upgrade_notes.html</a></p>
+
+<h3>Documentation</h3>
+
+<p>Regular and API documentation is available at <a 
href="https://libcloud.readthedocs.org/en/latest/";>https://libcloud.readthedocs.org/en/latest/</a></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
+<a href="https://libcloud.readthedocs.org/en/latest/changelog.html";>CHANGES 
file</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/2016/01/20/libcloud-1.0-pre1.html">Libcloud 1.0-pre1 
open for feedback</a></h2>
+  
+
+  
+    
+  
+  <span class="post-date-author">By Anthony Shaw on Jan 20, 2016</span>
+
+  <div class="post-content">
+    <p>We are pleased to announce that version 1.0-pre1 vote thread is open 
and the release is ready for community feedback.</p>
+
+<p>1.0-pre1 marks the first pre-release of the 1.0 major release. Some years 
ago, Tomaz Muraus spoke on the podcast <a 
href="https://twit.tv/shows/floss-weekly/episodes/181";>FLOSS weekly</a>.
+Tomaz spoke about how much of a huge challenge porting the project to Python 
3.x would be(!) as well as the 1.0 milestone.</p>
+
+<p>It is worth listening to the podcast to see how far things have come, we 
now average 2 pull-requests a day and have 156 contributors.</p>
+
+<p>As the project has matured over the last 5 years one of the most remarkable 
changes has been the adoption from the community and 
+continued support from our contributors adding new drivers, patching strange 
API issues and keeping the project alive.</p>
+
+<p>Anthony Shaw will be speaking on the FLOSS weekly podcast on February 2nd 
and discussing our community and the project, so 
+please tune in. </p>
+
+<p>The Cloud market as I&#39;m sure you&#39;re all aware of is thriving, the 
purpose of Libcloud was originally:</p>
+
+<ul>
+<li>To help prevent lock-in to a particular vendor</li>
+<li>To abstract the complexity of vendor APIs</li>
+<li>To give a simple way for deploying to and managing multiple cloud 
vendors</li>
+</ul>
+
+<p>Since that we have had (at the last count) 2,118,539 downloads. The project 
continues to grow in popularity with each new release.</p>
+
+<p>So with the 1.0 major release we would like to announce 2 new driver types, 
containers and backup.</p>
+
+<h2>History of our drivers</h2>
+
+<p>The compute (IaaS) API is what libcloud is best known for but there is a 
range of drivers available for many other capabilities.</p>
+
+<p>There is a presentation on the value of using Libcloud to avoid lock in <a 
href="http://www.slideshare.net/AnthonyShaw5/apache-libcloud-keeping-up-with-the-cloud-market-in-2016";>on
 SlideShare</a></p>
+
+<p>This is a history of the different driver types in the libcloud project.</p>
+
+<ul>
+<li>Compute (v0.1.0)
+
+<ul>
+<li> Support for nodes, node images, locations, states</li>
+<li> 52 providers including every major cloud provider in the market. Plus 
local services like Vmware, OpenStack, libvirt</li>
+</ul></li>
+<li>DNS (v0.6.0)
+
+<ul>
+<li> Support for zones, records, recordtypes</li>
+<li> 19 providers including CloudFlare, DigitalOcean, DNSimple, GoDaddy, 
Google DNS, Linode, Rackspace, Amazon R53, Zerigo</li>
+</ul></li>
+<li>Object Storage (v0.5.0)
+
+<ul>
+<li> Support for containers and objects</li>
+<li> 11 providers including Amazon S3, Azure Blobs, Google storage, 
CloudFiles, OpenStack Swift</li>
+</ul></li>
+<li>Load Balancer (v0.5.0)
+
+<ul>
+<li> Support for nodes, balancers, listeners and algorithms</li>
+<li> 11 providers including CloudStack, Dimension Data, Amazon ELB, Google GCE 
LB, SoftLayer LB</li>
+</ul></li>
+<li>Backup (v0.20.0)
+
+<ul>
+<li> Support for backup targets, recovery points and jobs</li>
+<li> 3 providers, Dimension Data, Amazon EBS snaps, Google snaps</li>
+</ul></li>
+</ul>
+
+<h2>Introducing Backup Drivers</h2>
+
+<p>With 1.0-pre1 we have introduced a new driver type for backup, 
<code>libcloud.backup</code></p>
+
+<p>Backup API allows you to manage Backup as A Service and services such as 
EBS Snaps,
+GCE volume snap and dimension data backup.</p>
+
+<h3>Terminology</h3>
+
+<ul>
+<li><code>libcloud.backup.base.BackupTarget</code> - Represents a backup 
target, like a Virtual Machine, a folder or a database.</li>
+<li><code>libcloud.backup.base.BackupTargetRecoveryPoint</code> - Represents a 
copy of the data in the target, a recovery point can be
+recovered to a backup target. An inplace restore is where you recover to the 
same target and an out-of-place restore is where you
+recover to another target.</li>
+<li><code>libcloud.backup.base.BackupTargetJob</code> - Represents a backup 
job running on backup target.</li>
+</ul>
+
+<h2>Introducing Container-as-a-Service Drivers</h2>
+
+<p>The API is for Container-as-a-Service providers, these new types of cloud 
services offer container management and hosting as a service.
+The new services are already providing proprietary APIs, giving the need for a 
tool like Libcloud if you want to provision to any cloud provider.</p>
+
+<p>Google, Amazon and Joyent have all announced Container cloud services and 
Microsoft have launched a beta service also, so we are getting on the front 
foot with an
+abstraction API for people wishing to gain similar benefits to the compute, 
load balancer and storage APIs.</p>
+
+<p><a 
href="http://www.slideshare.net/AnthonyShaw5/introducing-container-asaservice-support-to-apache-libcloud";>A
 presentation on this topic is available on SlideShare.</a></p>
+
+<p><strong>Isn&#39;t docker a standard?</strong>
+Well, yes and no.</p>
+
+<p>Docker has been the main technology adopted by these providers as the host 
system for the containers and also as the specification of the containers 
themselves.
+But, Docker is not a provisioning system, it is a virtualization host. Also 
there are alternatives, like CoreOS Rkt. </p>
+
+<h3>Container API design</h3>
+
+<p>Container-as-a-Service providers will implement the 
<code>ContainerDriver</code> class to provide functionality for :</p>
+
+<ul>
+<li>Listing deployed containers</li>
+<li>Starting, stopping and restarting containers (where supported)</li>
+<li>Destroying containers</li>
+<li>Creating/deploying containers</li>
+<li>Listing container images</li>
+<li>Installing container images (pulling an image from a local copy or remote 
repository)</li>
+</ul>
+
+<h3>Simple Container Support</h3>
+
+<ul>
+<li><code>libcloud.container.base.ContainerImage</code> - Represents an image 
that can be deployed, like an application or an operating system</li>
+<li><code>libcloud.container.base.Container</code> - Represents a deployed 
container image running on a container host</li>
+</ul>
+
+<h3>Cluster Suppport</h3>
+
+<p>Cluster support extends on the basic driver functions, but where drivers 
implement the class-level attribute <code>supports_clusters</code> as True
+clusters may be listed, created and destroyed. When containers are deployed, 
the target cluster can be specified.</p>
+
+<ul>
+<li><code>libcloud.container.base.ContainerCluster</code> - Represents a 
deployed container image running on a container host</li>
+<li><code>libcloud.container.base.ClusterLocation</code> - Represents a 
location for clusters to be deployed</li>
+</ul>
+
+<h3>Using the container drivers</h3>
+
+<p>The container drivers have been designed around similar principles to the 
compute driver. It is simple to use and a flat class design. </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>
+
+<span class="n">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">DOCKER</span><span class="p">)</span>
+<span class="n">driver</span> <span class="o">=</span> <span 
class="n">Cls</span><span class="p">(</span><span 
class="s">&#39;user&#39;</span><span class="p">,</span> <span 
class="s">&#39;api key&#39;</span><span class="p">)</span>
+
+<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>
+<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;tomcat&#39;</span><span class="p">,</span> <span 
class="n">image</span><span class="p">)</span>
+
+<span class="n">container</span><span class="o">.</span><span 
class="n">restart</span><span class="p">()</span>
+</code></pre></div>
+
+<h3>Container Registries</h3>
+
+<p>The Docker Registry API is used by services like Amazon ECR, the Docker Hub 
website and by anyone hosting their own Docker registry.
+It doesn&#39;t belong to a particular driver, so is a utility class. 
+Some providers, like Amazon ECR have a factory method to provide a registry 
client
+Images from docker registry can be sent to the deploy_container method for any 
driver.</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;ubuntu&#39;</span><span class="p">,</span> <span 
class="s">&#39;latest&#39;</span><span class="p">)</span> 
+</code></pre></div>
+
+<p>When other container registry services are made available these can be 
provided in a similar context.</p>
+
+<h3>Prototype drivers in libcloud.container</h3>
+
+<p>Drivers have been provided to show example implementations of the API, 
these drivers are <strong>experimental</strong> and need to go through more 
thorough community testing
+before they are ready for a stable release.</p>
+
+<ul>
+<li><a 
href="http://libcloud.readthedocs.org/en/latest/container/drivers/docker.html";>Docker</a></li>
+<li><a 
href="http://libcloud.readthedocs.org/en/latest/container/drivers/joyent.html";>Joyent
 Triton</a></li>
+<li><a 
href="http://libcloud.readthedocs.org/en/latest/container/drivers/kubernetes.html";>Google
 Kubernetes</a> </li>
+<li><a 
href="http://libcloud.readthedocs.org/en/latest/container/drivers/ecs.html";>Amazon
 Elastic Container Service (as well as Amazon Container Registry 
Service)</a></li>
+</ul>
+
+<p>The driver with the most contentious implementation is Kubernetes. We would 
like users of the Amazon ECS, Google Containers and Kubernetes project to 
provide feedback
+on how they would like to map clusters, pods, namespaces to the low level 
concepts in the driver.</p>
+
+<h1>Providing feedback</h1>
+
+<p>The <a 
href="http://mail-archives.apache.org/mod_mbox/libcloud-dev/201601.mbox/%3CCAOZ4b6sJM8ofMinGJCpfJEq7BYcAbfJBVCE7cfPniESqkEpkPQ%40mail.gmail.com%3E";>voting
 thread</a> is open, please use this as your opportunity to give feedback.</p>
+
+<h1>Thanks</h1>
+
+<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
+<a href="https://libcloud.readthedocs.org/en/latest/changelog.html";>CHANGES 
file</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/announcement.html" rel="tag">announcement</a></p>
+    </div>
+  </div>
+</div>
+
+  
+
+  
+    <div class="post">
+  
+    <h2><a href="/blog/2016/01/19/libcloud-0-20-1-released.html">Libcloud 
0.20.1 released</a></h2>
+  
+
+  
+    
+  
+  <span class="post-date-author">By Eric Johnson on Jan 19, 2016</span>
+
+  <div class="post-content">
+    <p>We are pleased to announce the release of Libcloud 0.20.1.</p>
+
+<p>This is a bug-fix release in the 0.20 series.</p>
+
+<h3>Release highlights</h3>
+
+<ul>
+<li>Allow for old and new style service accounts for GCE driver</li>
+<li>Fix syntax error with DimensionDataStatus object</li>
+<li>Fix bug in public IP addition command for DimensionData driver</li>
+<li>Fix error with proxy_url with vCloud Compute driver.</li>
+<li>Fix with hasattr for Rackspace DNS driver.</li>
+</ul>
+
+<p>Full change log can be found at <a 
href="https://libcloud.readthedocs.org/en/latest/changelog.html";>here</a>.</p>
+
+<h3>Download</h3>
+
+<p>The release can can be downloaded from
+<a 
href="https://libcloud.apache.org/downloads.html";>https://libcloud.apache.org/downloads.html</a>
 or installed using pip:</p>
+
+<pre>
+pip install apache-libcloud==0.20.1
+</pre>
+
+<h3>Upgrading</h3>
+
+<p>If you have installed Libcloud using pip you can also use it to upgrade 
it:</p>
+
+<pre>
+pip install --upgrade apache-libcloud==0.20.1
+</pre>
+
+<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 <a 
href="https://libcloud.readthedocs.org/en/latest/upgrade_notes.html";>https://libcloud.readthedocs.org/en/latest/upgrade_notes.html</a></p>
+
+<h3>Documentation</h3>
+
+<p>Regular and API documentation is available at <a 
href="https://libcloud.readthedocs.org/en/latest/";>https://libcloud.readthedocs.org/en/latest/</a></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
+<a href="https://libcloud.readthedocs.org/en/latest/changelog.html";>CHANGES 
file</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/2016/01/14/notice-for-linode-users.html">Notice for 
Linode users</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 
Jan 14, 2016</span>
+
+  <div class="post-content">
+    <p>This is an announcement for users of the Linode driver for Libcloud who 
might
+have started experiencing issues recently.</p>
+
+<h2>Background</h2>
+
+<p>A couple of Libcloud users have reported that they have recently started
+experiencing issues when talking to the Linode API using Libcloud. They have
+received messages similar to the one shown below.</p>
+
+<pre>
+socket.error: [Errno 104] Connection reset by peer
+</pre>
+
+<p>It turns out that the issue is related to the used SSL / TLS version. For
+compatibility and security reasons (Libcloud also supports older Python
+versions), Libcloud uses TLS v1.0 by default.</p>
+
+<p>Linode recently dropped support for TLS v1.0 and it now only support TLS 
&gt;=
+v1.1. This means Libcloud won&#39;t work out of the box anymore.</p>
+
+<h2>Solution</h2>
+
+<p>If you are experiencing this issue, you should update your code to use TLS 
v1.2
+or TLS v1.1 as shown below.</p>
+
+<div class="highlight"><pre><code class="text language-text" 
data-lang="text">import ssl
+
+import libcloud.security
+libcloud.security.SSL_VERSION = ssl.PROTOCOL_TLSv1_1
+# or even better if your system and Python version supports TLS v1.2
+libcloud.security.SSL_VERSION = ssl.PROTOCOL_TLSv1_2
+
+# Instantiate and work with the Linode driver here...
+</code></pre></div>
+
+<p>Keep in mind that for this to work you need to have a recent version of 
OpenSSL
+installed on your system and you need to use Python &gt;= 3.4 or Python 
2.7.9.</p>
+
+<p>For more details please see recently updated <a 
href="https://libcloud.readthedocs.org/en/latest/other/ssl-certificate-validation.html#changing-used-ssl-tls-version";>documentation</a>.
 If you are
+still experiencing issues or have any questions, please feel free to reach
+us via the mailing list or IRC.</p>
+
+<p>Note: Even if you are not experiencing any issues, it&#39;s generally a 
good idea
+to use the highest version of TLS supported by your system and the provider you
+use.</p>
+
+<h2>Quick note on ssl.PROTOCOL_SSLv23</h2>
+
+<p>Python uses <code>ssl.PROTOCOL_SSLv23</code> constant by default. When this 
constant is
+used, it will let client known to pick the highest protocol version which both
+the client and server support (it will be selecting between SSL v3.0, TLS v1.0,
+TLS v1.1 and TLS v1.2).</p>
+
+<p>We use <code>ssl.PROTOCOL_TLSv1</code> instead of 
<code>ssl.PROTOCOL_SSLv23</code> for security
+and compatibility reasons. SSL v3.0 is considered broken and unsafe and using
+<code>ssl.PROTOCOL_SSLv23</code> can result in an increased risk for a 
downgrade attack.</p>
+
+<h3>Thanks</h3>
+
+<p>Special thanks to Jacob Riley, Steve V, Heath Naylor and everyone from
+<a href="https://issues.apache.org/jira/browse/LIBCLOUD-791";>LIBCLOUD-791</a> 
who helped debug and track down the root cause of this issue.</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/linode.html" rel="tag">linode</a>, <a 
href="/blog/tags/announcement.html" rel="tag">announcement</a></p>
+    </div>
+  </div>
+</div>
+
+  
+
+  
+    <div class="post">
+  
+    <h2><a href="/blog/2015/12/15/libcloud-0-20-0-released.html">Libcloud 
0.20.0 released</a></h2>
+  
+
+  
+    
+  
+  <span class="post-date-author">By Anthony Shaw on Dec 15, 2015</span>
+
+  <div class="post-content">
+    <p>We are pleased to announce the release of Libcloud 0.20.0.</p>
+
+<p>This is a first release in the 0.20 series which means it brings many new
+features, improvements, bug-fixes, and DNS drivers.</p>
+
+<h3>Release highlights</h3>
+
+<ul>
+<li>New DNS driver for <a 
href="http://libcloud.readthedocs.org/en/latest/dns/drivers/godaddy.html";>GoDaddy</a></li>
+<li>New DNS driver for <a href="https://www.cloudflare.com/dns/";>CloudFlare 
DNS</a></li>
+<li>Many more improvements and API v2.1 support for the <a 
href="http://cloud.dimensiondata.com/am/en/";>Dimension Data compute 
driver</a></li>
+<li>Support for adding and configuring PTR (reverse DNS) record in RackSpace 
DNS driver</li>
+<li>Support for preemptable instances in Google Compute driver</li>
+<li>Add new eu-west-2 &amp; us-east-2 regions to the OUTSCALE<em>INC &amp; 
OUTSCALE</em>SAS drivers</li>
+<li>Added C4, M4 instance types in Amazon EC2 driver</li>
+<li>Add support for multiple regions in Aurora compute driver</li>
+<li>GoogleStorageDriver can now use either our S3 authentication or other 
Google Cloud Platform OAuth2 authentication methods.</li>
+<li>Removed DreamHosts Compute Driver, DreamHosts users will now use the 
OpenStack Node driver since DreamHosts are OpenStack API compliant</li>
+<li>and much more!</li>
+</ul>
+
+<p>Full change log can be found at <a 
href="https://libcloud.readthedocs.org/en/latest/changelog.html#changes-with-apache-libcloud-0-20-0";>here</a>.</p>
+
+<h3>Download</h3>
+
+<p>The release can can be downloaded from
+<a 
href="https://libcloud.apache.org/downloads.html";>https://libcloud.apache.org/downloads.html</a>
 or installed using pip:</p>
+
+<pre>
+pip install apache-libcloud==0.20.0
+</pre>
+
+<h3>Upgrading</h3>
+
+<p>If you have installed Libcloud using pip you can also use it to upgrade 
it:</p>
+
+<pre>
+pip install --upgrade apache-libcloud==0.20.0
+</pre>
+
+<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 <a 
href="https://libcloud.readthedocs.org/en/latest/upgrade_notes.html";>https://libcloud.readthedocs.org/en/latest/upgrade_notes.html</a></p>
+
+<h3>Documentation</h3>
+
+<p>Regular and API documentation is available at <a 
href="https://libcloud.readthedocs.org/en/latest/";>https://libcloud.readthedocs.org/en/latest/</a></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
+<a 
href="https://libcloud.readthedocs.org/en/latest/changelog.html#changes-with-apache-libcloud-0-20-0";>CHANGES
 file</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/2015/11/18/anthony-shaw-joins-our-team.html">Anthony 
Shaw (anthonyshaw) joins our team</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 18, 2015</span>
+
+  <div class="post-content">
+    <p>Please help us extend a warm welcome to our newest team member <a 
href="https://github.com/tonybaloney";>Anthony
+Shaw</a>!</p>
+
+<p>The Project Management Committee (PMC) for Apache Libcloud has invited 
Anthony
+Shaw to join us as a committer and a PMC member and we are pleased to announce
+that he has accepted.</p>
+
+<p>Anthony has joined the community fairly recently, but he has already made a 
lot
+of <a 
href="https://github.com/apache/libcloud/pulls?q=is%3Apr+author%3Atonybaloney+is%3Aclosed";>substantial
 contributions</a>. Those contributions range from new Dimension
+Data drivers and various related improvements to a proposal for a new <a 
href="https://github.com/apache/libcloud/pull/629";>backup
+API</a> for Backup as a Service products and projects.</p>
+
+<p>While we are talking about the new backup API - we would like to encourage
+everyone who is either a service provider offering Backup as a Service product
+or a person interested in using this API to join us and <a 
href="https://github.com/apache/libcloud/pull/629";>participate in the
+discussion</a>. The more feedback we get, the better and more widely applicable
+we can make this new API.</p>
+
+<p>For anyone who would like to know more about Anthony here is his short 
bio:</p>
+
+<blockquote>
+<p>Anthony Shaw works for the global system integrator Dimension Data as Head 
of
+Innovation. Anthony has been working in the hosting/service provider industry
+for the last 10 years for MSPs within Europe, North America and Australia in
+various Product Management and Product Development roles. Anthony is an
+open-source advocate and has been promoting the Libcloud project internally to
+Dimension Data for the last 9 months as well as maintaining its driver.</p>
+</blockquote>
+
+<p>And in his own words:</p>
+
+<blockquote>
+<p>I think we will continue to see consolidation in IaaS providers over the 
next
+12 months, so likelihood is the number of drivers will reduce, but the
+importance of being cloud agnostic to people is becoming more apparent as some
+are already being burnt by integrations into APIs that companies like Dell and
+Ninefold have pulled the plug on. Libcloud is a key project for developers not
+wanting to lock themselves too heavily to a vendor. I would also like to see
+expansion of additional services like backup, load balancing and containers so
+that users can still take advantages of these features through our driver.</p>
+</blockquote>
+
+<p>We are happy to have him in our team and we are looking forward to his 
future
+participation and contributions.</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/new%20committer.html" rel="tag">new committer</a>, <a 
href="/blog/tags/new%20PMC%20member.html" rel="tag">new PMC member</a></p>
+    </div>
+  </div>
+</div>
+
+  
+
+  
+    <div class="post">
+  
+    <h2><a href="/blog/2015/10/30/libcloud-0-19-0-released.html">Libcloud 
0.19.0 released</a></h2>
+  
+
+  
+    
+  
+  <span class="post-date-author">By Eric Johnson on Oct 30, 2015</span>
+
+  <div class="post-content">
+    <p>We are pleased to announce the release of Libcloud 0.19.0.</p>
+
+<p>This is a first release in the 0.19 series which means it brings many new
+features, improvements, bug-fixes, and DNS drivers.</p>
+
+<h3>Release highlights</h3>
+
+<ul>
+<li>New load balancer driver for <a 
href="http://cloud.dimensiondata.com/am/en/";>Dimension Data</a></li>
+<li>New DNS driver for <a 
href="https://www.pcextreme.com/aurora/dns";>AuroraDNS</a></li>
+<li>New DNS driver for <a 
href="http://www.worldwidedns.net/home.asp";>WorldWideDNS</a></li>
+<li>New DNS driver for <a href="https://dnsimple.com/";>DNSimple</a></li>
+<li>New DNS driver for <a href="https://pointhq.com/";>PointDNS</a></li>
+<li>New DNS driver for <a href="https://www.vultr.com/";>Vult DNS</a></li>
+<li>New DNS driver for <a href="http://www.liquidweb.com/";>Liquidweb 
DNS</a></li>
+<li>New DNS driver for <a href="http://zonomi.com/";>Zonomi DNS</a></li>
+<li>New DNS driver for <a href="https://durabledns.com/";>Durable DNS</a></li>
+<li>Added volume management methods and more to <a 
href="https://www.runabove.com/index.xml";>RunAbove compute service</a></li>
+<li>Added new South America East region to <a 
href="https://aws.amazon.com/s3/";>S3 storage driver</a></li>
+<li>Many more improvements and API v2.0 added to the <a 
href="http://cloud.dimensiondata.com/am/en/services/public-cloud/cloud-networks";>Dimension
 Data compute driver</a></li>
+<li>New API v1 support for <a href="https://cloud.google.com/dns/";>Google 
Cloud DNS</a></li>
+<li>Many improvements in the HostVirtual compute driver</li>
+<li>and much more!</li>
+</ul>
+
+<p>Full change log can be found at <a 
href="https://libcloud.readthedocs.org/en/latest/changelog.html#changes-with-apache-libcloud-0-19-0";>here</a>.</p>
+
+<h3>Download</h3>
+
+<p>The release can can be downloaded from
+<a 
href="https://libcloud.apache.org/downloads.html";>https://libcloud.apache.org/downloads.html</a>
 or installed using pip:</p>
+
+<pre>
+pip install apache-libcloud==0.19.0
+</pre>
+
+<h3>Upgrading</h3>
+
+<p>If you have installed Libcloud using pip you can also use it to upgrade 
it:</p>
+
+<pre>
+pip install --upgrade apache-libcloud==0.19.0
+</pre>
+
+<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 <a 
href="https://libcloud.readthedocs.org/en/latest/upgrade_notes.html";>https://libcloud.readthedocs.org/en/latest/upgrade_notes.html</a></p>
+
+<h3>Documentation</h3>
+
+<p>Regular and API documentation is available at <a 
href="https://libcloud.readthedocs.org/en/v0.19.0/";>https://libcloud.readthedocs.org/en/v0.19.0/</a></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
+<a 
href="https://libcloud.readthedocs.org/en/latest/changelog.html#changes-with-apache-libcloud-0-19-0";>CHANGES
 file</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/2015/10/05/libcloud-is-participating-in-hacktoberfest.html">Libcloud
 is participating in Hacktoberfest</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 
Oct 05, 2015</span>
+
+  <div class="post-content">
+    <p>Github and DigitalOcean are organizing <a 
href="https://hacktoberfest.digitalocean.com/";>Hacktoberfest</a> again this 
year.</p>
+
+<p>Hacktoberfest is a month-long celebration of open source software where 
people
+are encouraged to contribute to different open source projects. Each user who
+submits four pull requests to any Github hosted open source project of their
+choice will receive a free t-shirt.</p>
+
+<div class="imginline">
+  <img 
src="/images/posts/2015-10-05-libcloud-is-participating-in-hacktoberfest/hacktoberfest-tshirt.png"
 class="img-responsive inline" />
+  <p class="img-caption">Hacktoberfest 2015 t-shirt.</p>
+</div>
+
+<p>This year we are also happy to announce that we have been selected as one of
+the highlighted Python projects which users are invited to check, play with it
+and contribute to.</p>
+
+<p>We think this is a great opportunity for both, long time users and 
contributors,
+but especially people who are new to open source to learn how open source works
+and participate.</p>
+
+<p>Having said that, we would like to invite anyone who is interested to 
participate
+and contribute to our project. You can find more information on contributing to
+Libcloud in our <a 
href="https://libcloud.readthedocs.org/en/latest/development.html#contributing";>contribution
 guide</a>.</p>
+
+<p>For more information about the Hacktoberfest project itself and information 
on
+how to sign up, please visit the <a 
href="https://hacktoberfest.digitalocean.com/";>official website</a> and 
announcement blog post
+from <a 
href="https://github.com/blog/2067-hacktoberfest-contribute-to-open-source-in-october";>Github</a>
 and <a 
href="https://www.digitalocean.com/company/blog/hacktoberfest-is-back/";>DigitalOcean</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/hacktoberfest.html" rel="tag">hacktoberfest</a>, <a 
href="/blog/tags/github.html" rel="tag">github</a></p>
+    </div>
+  </div>
+</div>
+
+  
+
+  
+    <div class="post">
+  
+    <h2><a href="/blog/2015/08/13/libcloud-0-18-0-released.html">Libcloud 
0.18.0 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 
Aug 13, 2015</span>
+
+  <div class="post-content">
+    <p>We are pleased to announce the release of Libcloud 0.18.0.</p>
+
+<p>This is a first release in the 0.18 series which means it brings many new
+features, improvements and bug-fixes.</p>
+
+<h3>Release highlights</h3>
+
+<ul>
+<li>New compute driver for <a 
href="https://azure.microsoft.com/en-us/services/virtual-machines/";>Microsoft 
Azure Virtual Machines service</a></li>
+<li>New compute driver for <a 
href="https://www.runabove.com/index.xml";>RunAbove compute service</a></li>
+<li>New compute driver for <a href="https://www.cloudwatt.com/en/";>Cloudwatt 
compute service</a></li>
+<li>New compute driver for <a 
href="https://www.packet.net/";>Packet.net</a></li>
+<li>New compute driver for <a 
href="https://onapp.com/platform/onapp-cloud";>OnApp Cloud service</a></li>
+<li>New compute driver for <a 
href="http://cloud.dimensiondata.com/am/en/";>Dimension Data compute 
service</a></li>
+<li>New storage driver for <a 
href="https://www.pcextreme.nl/en/aurora/objects";>AuroraObjects service</a></li>
+<li>New load balancer driver for <a 
href="https://www.softlayer.com/load-balancing";>Softlayer loadbalancing 
service</a></li>
+<li>New DNS driver for <a href="https://www.digitalocean.com/";>DigitalOcean 
DNS service</a></li>
+<li>Support for DigitalOcean API v2 which is not used by default.</li>
+<li>Support for AWS Signature version 4 and new AWS Frankfurt, Germany 
region</li>
+<li>Support for retrying failed HTTP requests (disabled by default, to enable 
it, 
+set <code>LIBCLOUD_RETRY_FAILED_HTTP_REQUESTS</code> environment variable to 
True)</li>
+<li>Many improvements in the HostVirtual compute driver</li>
+<li>and much more!</li>
+</ul>
+
+<p>Full change log can be found at <a 
href="https://libcloud.readthedocs.org/en/latest/changelog.html#changes-with-apache-libcloud-0-18-0";>here</a>.</p>
+
+<h3>Download</h3>
+
+<p>The release can can be downloaded from

[... 3589 lines stripped ...]


Reply via email to