Added: libcloud/site/trunk/source/_site/blog/atom.xml
URL: 
http://svn.apache.org/viewvc/libcloud/site/trunk/source/_site/blog/atom.xml?rev=1749451&view=auto
==============================================================================
--- libcloud/site/trunk/source/_site/blog/atom.xml (added)
+++ libcloud/site/trunk/source/_site/blog/atom.xml Tue Jun 21 06:39:51 2016
@@ -0,0 +1,1342 @@
+<?xml version="1.0" encoding="utf-8"?>
+<feed xmlns="http://www.w3.org/2005/Atom";>
+  <title>Apache Libcloud</title>
+  <subtitle>Python library that abstracts away differences among multiple 
cloud provider APIs</subtitle>
+  <link href="https://libcloud.apache.org"; rel="self" />
+  <link href="https://libcloud.apache.org"; />
+  <id>https://libcloud.apache.org</id>
+  <updated>2016-06-21T16:35:06+10:00</updated>
+  <author>
+    <name>The Apache Software Foundation</name>
+  </author>
+
+    
+  <entry>
+    <title>Libcloud 1.0.0 released</title>
+    <link 
href="https://libcloud.apache.org/blog/2016/06/22/libcloud-1-0-0-released.html"; 
/>
+    
<id>https://libcloud.apache.org/blog/2016/06/22/libcloud-1-0-0-released.html</id>
+    <updated>2016-06-22T00:00:00+10:00</updated>
+    <author>
+      <name>Anthony Shaw</name>
+    </author>
+    <content type="html">&lt;p&gt;We are pleased to announce the release of 
Libcloud 1.0.0.&lt;/p&gt;
+
+&lt;p&gt;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.&lt;/p&gt;
+
+&lt;h3&gt;Release highlights&lt;/h3&gt;
+
+&lt;p&gt;This includes:&lt;/p&gt;
+
+&lt;ul&gt;
+&lt;li&gt;New backup-as-a-service and container-as-a-service driver 
types&lt;/li&gt;
+&lt;li&gt;Deprecated drivers that were no longer available such as Ninefold, 
IBM SCE &lt;a 
href=&quot;http://libcloud.apache.org/blog/2016/02/16/new-drivers-deprecated-drivers.html&quot;&gt;more
 details&lt;/a&gt;&lt;/li&gt;
+&lt;li&gt;Add support for authenticating against Keystone and OpenStack based 
clouds
+using OpenID Connect tokens.&lt;/li&gt;
+&lt;li&gt;GCE nodes can be launched in a subnetwork and support for 
subnetworks&lt;/li&gt;
+&lt;li&gt;Add Image Family support for GCE&lt;/li&gt;
+&lt;li&gt;Add new &lt;code&gt;Perth, Australia&lt;/code&gt; and 
&lt;code&gt;Manila, Philippines&lt;/code&gt; region to the CloudSigma
+v2 driver.&lt;/li&gt;
+&lt;li&gt;Add new S3 RGW storage driver.&lt;/li&gt;
+&lt;li&gt;The Amazon EC2 driver has been changed to use region codes instead 
of separate drivers for each region.&lt;/li&gt;
+&lt;li&gt;Introduce new &lt;code&gt;list_regions&lt;/code&gt; class method on 
the base driver class&lt;/li&gt;
+&lt;li&gt;Support for Dimension Data backup&lt;/li&gt;
+&lt;li&gt;Added NSOne, LuaDNS, NearlyFreeSpeech.NET, BuddyNS, DNSPod DNS 
drivers&lt;/li&gt;
+&lt;li&gt;Added Aliyun compute, load balancer and storage drivers&lt;/li&gt;
+&lt;li&gt;Added Outscale storage driver&lt;/li&gt;
+&lt;/ul&gt;
+
+&lt;p&gt;Full change log can be found at &lt;a 
href=&quot;https://libcloud.readthedocs.org/en/latest/changelog.html&quot;&gt;here&lt;/a&gt;.&lt;/p&gt;
+
+&lt;h3&gt;Special thank you&lt;/h3&gt;
+
+&lt;p&gt;I would like to wish a special thank you to all of our community 
contributors for their ongoing support to the project.&lt;/p&gt;
+
+&lt;p&gt;&lt;a href=&quot;https://github.com/Kami&quot;&gt;Tomaz 
Muraus&lt;/a&gt;, &lt;a href=&quot;https://github.com/pquerna&quot;&gt;Paul 
Querna&lt;/a&gt;, 
+&lt;a href=&quot;https://github.com/jcsalterego&quot;&gt;Jerry Chen&lt;/a&gt;, 
&lt;a href=&quot;https://github.com/jadunham1&quot;&gt;Jeff Dunham&lt;/a&gt;, 
&lt;a href=&quot;https://github.com/erjohnso&quot;&gt;Eric Johnson&lt;/a&gt;,
+&lt;a href=&quot;https://github.com/jedsmith&quot;&gt;Jed Smith&lt;/a&gt;, 
&lt;a href=&quot;https://github.com/wrigri&quot;&gt;Rick Wright&lt;/a&gt;, 
&lt;a href=&quot;https://github.com/novel&quot;&gt;Roman Bogorodskiy&lt;/a&gt;,
+&lt;a href=&quot;https://github.com/baldwinmathew&quot;&gt;Mathew 
Baldwin&lt;/a&gt;, &lt;a 
href=&quot;https://github.com/davidcrossland&quot;&gt;David 
Crossland&lt;/a&gt;, &lt;a href=&quot;https://github.com/alex&quot;&gt;Alex 
Gaynor&lt;/a&gt;,
+&lt;a href=&quot;https://github.com/allardhoeve&quot;&gt;Allard 
Hoeve&lt;/a&gt;, &lt;a href=&quot;https://github.com/runseb&quot;&gt;Sebastien 
Goasguen&lt;/a&gt;, &lt;a 
href=&quot;https://github.com/franckcuny&quot;&gt;Franck Cuny&lt;/a&gt;,
+&lt;a href=&quot;https://github.com/ktdreyer&quot;&gt;Ken Dreyer&lt;/a&gt;, 
&lt;a href=&quot;https://github.com/jcastillo2nd&quot;&gt;Javier Castillo 
II&lt;/a&gt;, &lt;a href=&quot;https://github.com/wido&quot;&gt;Wido den 
Hollander&lt;/a&gt;,
+&lt;a href=&quot;https://github.com/bennettaur&quot;&gt;Michael 
Bennett&lt;/a&gt;, &lt;a href=&quot;https://github.com/ZuluPro&quot;&gt;Anthony 
Monthe&lt;/a&gt;, &lt;a href=&quot;https://github.com/zerthimon&quot;&gt;Lior 
Goikhburg&lt;/a&gt;,
+&lt;a href=&quot;https://github.com/encyphered&quot;&gt;Geunwoo 
Shin&lt;/a&gt;, &lt;a href=&quot;https://github.com/juanfont&quot;&gt;Juan 
Font&lt;/a&gt;, &lt;a 
href=&quot;https://github.com/schaubl&quot;&gt;&amp;quot;schaubl&amp;quot;&lt;/a&gt;,
+&lt;a href=&quot;https://github.com/mbrukman&quot;&gt;Misha Brukman&lt;/a&gt;, 
&lt;a href=&quot;https://github.com/jetbird&quot;&gt;Oltjano 
Terpollari&lt;/a&gt;, &lt;a href=&quot;https://github.com/pzrq&quot;&gt;Peter 
Schmidt&lt;/a&gt;,
+&lt;a href=&quot;https://github.com/mingsheng36&quot;&gt;Ming Sheng&lt;/a&gt;, 
&lt;a href=&quot;https://github.com/gertjanol&quot;&gt;Gertjan Oude 
Lohuis&lt;/a&gt;,
+&lt;a href=&quot;https://github.com/mgogoulos&quot;&gt;Markos 
Gogoulos&lt;/a&gt;, &lt;a 
href=&quot;https://github.com/bernard357&quot;&gt;Bernard Paques&lt;/a&gt;,
+&lt;a href=&quot;https://github.com/Phreedom&quot;&gt;Evgeny 
Egorochkin&lt;/a&gt;, &lt;a 
href=&quot;https://github.com/gigimon&quot;&gt;Oleg&lt;/a&gt;, &lt;a 
href=&quot;https://github.com/atsaki&quot;&gt;Atsushi Sasaki&lt;/a&gt;,
+&lt;a href=&quot;https://github.com/micafer&quot;&gt;Miguel 
Caballer&lt;/a&gt;, &lt;a 
href=&quot;https://github.com/kumarappanc&quot;&gt;Kumar&lt;/a&gt;, &lt;a 
href=&quot;https://github.com/gmcdonald&quot;&gt;Gavin McDonald&lt;/a&gt;,
+&lt;a href=&quot;https://github.com/boul&quot;&gt;Roeland Kuipers&lt;/a&gt;, 
&lt;a href=&quot;https://github.com/briancurtin&quot;&gt;Brian 
Curtin&lt;/a&gt;, &lt;a href=&quot;https://github.com/ikusalic&quot;&gt;Ivan 
Kusalic&lt;/a&gt;,
+&lt;a href=&quot;https://github.com/ferewuz&quot;&gt;Vanč Levstik&lt;/a&gt;, 
&lt;a href=&quot;https://github.com/davidwilson2038&quot;&gt;None&lt;/a&gt;, 
&lt;a href=&quot;https://github.com/Smotko&quot;&gt;Anže Pečar&lt;/a&gt;,
+&lt;a 
href=&quot;https://github.com/MrBasset&quot;&gt;&amp;quot;MrBasset&amp;quot;&lt;/a&gt;,
 &lt;a href=&quot;https://github.com/crunkleton&quot;&gt;None&lt;/a&gt;, &lt;a 
href=&quot;https://github.com/jmunhoz&quot;&gt;Javier M. Mellid&lt;/a&gt;,
+&lt;a href=&quot;https://github.com/jimbobhickville&quot;&gt;Greg 
Hill&lt;/a&gt;, &lt;a 
href=&quot;https://github.com/Jc2k&quot;&gt;None&lt;/a&gt;, &lt;a 
href=&quot;https://github.com/sfriesel&quot;&gt;Stefan Friesel&lt;/a&gt;,
+&lt;a href=&quot;https://github.com/relaxdiego&quot;&gt;Mark 
Maglana&lt;/a&gt;, &lt;a 
href=&quot;https://github.com/aleGpereira&quot;&gt;Alejandro Gabriel 
Pereira&lt;/a&gt;,
+&lt;a href=&quot;https://github.com/kyle-long&quot;&gt;Kyle Long&lt;/a&gt;, 
&lt;a href=&quot;https://github.com/teemuvesala&quot;&gt;Teemu 
Vesala&lt;/a&gt;, &lt;a href=&quot;https://github.com/LordShion&quot;&gt;Filipe 
Silva&lt;/a&gt;,
+&lt;a href=&quot;https://github.com/jshridha&quot;&gt;Jay&lt;/a&gt;, &lt;a 
href=&quot;https://github.com/bernieke&quot;&gt;Bernard Kerckenaere&lt;/a&gt;, 
&lt;a href=&quot;https://github.com/jobelenus&quot;&gt;John Obelenus&lt;/a&gt;,
+&lt;a href=&quot;https://github.com/bsdlp&quot;&gt;Jon Chen&lt;/a&gt;, &lt;a 
href=&quot;https://github.com/lawrencellui-dd&quot;&gt;Larry 
Lui&lt;/a&gt;,&lt;/p&gt;
+
+&lt;h3&gt;Important breaking change-  Amazon EC2 driver changes&lt;/h3&gt;
+
+&lt;p&gt;The Amazon EC2 API was updated to consolidate the regional-based 
drivers into a single driver with a region argument in the 
constructor.&lt;/p&gt;
+
+&lt;p&gt;Amazon Instances should now be instantiated using the following 
syntax:&lt;/p&gt;
+&lt;div class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;python 
language-python&quot; data-lang=&quot;python&quot;&gt;&lt;span 
class=&quot;kn&quot;&gt;from&lt;/span&gt; &lt;span 
class=&quot;nn&quot;&gt;libcloud.compute.types&lt;/span&gt; &lt;span 
class=&quot;kn&quot;&gt;import&lt;/span&gt; &lt;span 
class=&quot;n&quot;&gt;Provider&lt;/span&gt;
+&lt;span class=&quot;kn&quot;&gt;from&lt;/span&gt; &lt;span 
class=&quot;nn&quot;&gt;libcloud.compute.providers&lt;/span&gt; &lt;span 
class=&quot;kn&quot;&gt;import&lt;/span&gt; &lt;span 
class=&quot;n&quot;&gt;get_driver&lt;/span&gt;
+
+&lt;span class=&quot;n&quot;&gt;cls&lt;/span&gt; &lt;span 
class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span 
class=&quot;n&quot;&gt;get_driver&lt;/span&gt;&lt;span 
class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span 
class=&quot;n&quot;&gt;Provider&lt;/span&gt;&lt;span 
class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span 
class=&quot;n&quot;&gt;EC2&lt;/span&gt;&lt;span 
class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span 
class=&quot;n&quot;&gt;region&lt;/span&gt;&lt;span 
class=&quot;o&quot;&gt;=&lt;/span&gt;&lt;span 
class=&quot;s&quot;&gt;&amp;#39;us-east-i1&amp;#39;&lt;/span&gt;&lt;span 
class=&quot;p&quot;&gt;)&lt;/span&gt;
+&lt;span class=&quot;n&quot;&gt;driver&lt;/span&gt; &lt;span 
class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span 
class=&quot;n&quot;&gt;cls&lt;/span&gt;&lt;span 
class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span 
class=&quot;s&quot;&gt;&amp;#39;access key&amp;#39;&lt;/span&gt;&lt;span 
class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span 
class=&quot;s&quot;&gt;&amp;#39;secret key&amp;#39;&lt;/span&gt;&lt;span 
class=&quot;p&quot;&gt;)&lt;/span&gt;
+&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
+&lt;p&gt;This brings the Amazon API inline with the other drivers, makes it 
easier to maintain and switch between regions.&lt;/p&gt;
+
+&lt;h3&gt;Bug fixes&lt;/h3&gt;
+
+&lt;h4&gt;General&lt;/h4&gt;
+
+&lt;ul&gt;
+&lt;li&gt;&lt;p&gt;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]&lt;/p&gt;&lt;/li&gt;
+&lt;li&gt;&lt;p&gt;Increase default chunk size from 
&lt;code&gt;1024&lt;/code&gt; to &lt;code&gt;4096&lt;/code&gt; bytes in the 
paramiko
+SSH client. This results in smaller number of receive calls on the average.
+[Tomaz Muraus]&lt;/p&gt;&lt;/li&gt;
+&lt;li&gt;&lt;p&gt;Fix to Dimension Data API address for Middle-East and Africa
+(GITHUB-700)
+[Anthony Shaw]&lt;/p&gt;&lt;/li&gt;
+&lt;li&gt;&lt;p&gt;Throw a more user-friendly exception on &amp;quot;No 
address associated with hostname&amp;quot;.
+(GITHUB-711, GITHUB-714, LIBCLOUD-803)
+[Tomaz Muraus, Scott Crunkleton]&lt;/p&gt;&lt;/li&gt;
+&lt;li&gt;&lt;p&gt;Remove deprecated provider constants with the region in the 
name and related
+driver classes (e.g. &lt;code&gt;EC2_US_EAST&lt;/code&gt;, etc.).&lt;/p&gt;
+
+&lt;p&gt;Those drivers have moved to single provider constant + 
&lt;code&gt;region&lt;/code&gt; constructor
+argument model.
+[Tomaz Muraus]&lt;/p&gt;&lt;/li&gt;
+&lt;/ul&gt;
+
+&lt;h3&gt;New or deprecated drivers&lt;/h3&gt;
+
+&lt;h4&gt;Compute&lt;/h4&gt;
+
+&lt;ul&gt;
+&lt;li&gt;&lt;p&gt;Deprecated IBM SCE, HP Helion, OpSource, Ninefold and 
CloudFrames drivers, removed
+driver code and tests.
+(GITHUB-701, LIBCLOUD-801)
+[Anthony Shaw]&lt;/p&gt;&lt;/li&gt;
+&lt;li&gt;&lt;p&gt;Introduced error messages 
(&lt;code&gt;libcloud.compute.deprecated&lt;/code&gt;) for deprecated drivers
+(GITHUB-701, LIBCLOUD-801)
+[Anthony Shaw]&lt;/p&gt;&lt;/li&gt;
+&lt;li&gt;&lt;p&gt;New Compute drivers- BSNL, Indosat, Med-1, NTT-America, 
Internet Solutions
+(GITHUB-700)
+[Anthony Shaw]&lt;/p&gt;&lt;/li&gt;
+&lt;li&gt;&lt;p&gt;New driver for Aliyun Elastic Compute Service.
+(LIBCLOUD-802, GITHUB-712)
+[Sam Song]&lt;/p&gt;&lt;/li&gt;
+&lt;/ul&gt;
+
+&lt;h4&gt;Storage&lt;/h4&gt;
+
+&lt;ul&gt;
+&lt;li&gt;&lt;p&gt;Added Outscale storage driver
+(GITHUB-730)
+[Javier M. Mellid]&lt;/p&gt;&lt;/li&gt;
+&lt;li&gt;&lt;p&gt;New driver for Aliyun OSS Storage Service.
+(LIBCLOUD-802, GITHUB-712)
+[Sam Song]&lt;/p&gt;&lt;/li&gt;
+&lt;/ul&gt;
+
+&lt;h4&gt;Loadbalancer&lt;/h4&gt;
+
+&lt;ul&gt;
+&lt;li&gt;New driver for Aliyun SLB Loadbalancer Service.
+(LIBCLOUD-802, GITHUB-712)
+[Sam Song]&lt;/li&gt;
+&lt;/ul&gt;
+
+&lt;h4&gt;DNS&lt;/h4&gt;
+
+&lt;ul&gt;
+&lt;li&gt;&lt;p&gt;Added NearlyFreeSpeech.net (NSFN) driver
+[Ken Drayer]&lt;/p&gt;&lt;/li&gt;
+&lt;li&gt;&lt;p&gt;Added Lua DNS driver
+[Oltjano Terpollari]&lt;/p&gt;&lt;/li&gt;
+&lt;li&gt;&lt;p&gt;Added NSOne driver
+[Oltjano Terpollari]&lt;/p&gt;&lt;/li&gt;
+&lt;/ul&gt;
+
+&lt;h2&gt;Bug fixes&lt;/h2&gt;
+
+&lt;ul&gt;
+&lt;li&gt;&lt;p&gt;Fix a bug in the GoDaddy driver - make sure 
&lt;code&gt;host&lt;/code&gt; attribute on the
+connection class is correctly set to the hostname.
+[Tomaz Muraus]&lt;/p&gt;&lt;/li&gt;
+&lt;li&gt;&lt;p&gt;Fix handling of &lt;code&gt;MX&lt;/code&gt; records in the 
Gandi driver.
+(GITHUB-718)
+[Ryan Lee]&lt;/p&gt;&lt;/li&gt;
+&lt;/ul&gt;
+
+&lt;h2&gt;Improvements&lt;/h2&gt;
+
+&lt;h3&gt;Compute&lt;/h3&gt;
+
+&lt;ul&gt;
+&lt;li&gt;&lt;p&gt;Introduce new &lt;code&gt;list_regions&lt;/code&gt; class 
method on the base driver class. This
+method is to be used with provider drivers which support multiple regions and
+&lt;code&gt;region&lt;/code&gt; constructor argument. It allows users to 
enumerate available /
+supported regions.
+[Tomaz Muraus]&lt;/p&gt;&lt;/li&gt;
+&lt;li&gt;&lt;p&gt;[dimension data] added support for VMWare tools VM 
information inside list_nodes responses
+(GITHUB-734)
+[Jeff Dunham]&lt;/p&gt;&lt;/li&gt;
+&lt;li&gt;&lt;p&gt;[ec2] added ex&lt;em&gt;encrypted and 
ex&lt;/em&gt;kms&lt;em&gt;key&lt;/em&gt;id optional parameters to the create 
volume method
+(GITHUB-729)
+[Viktor Ognev]&lt;/p&gt;&lt;/li&gt;
+&lt;li&gt;&lt;p&gt;[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]&lt;/p&gt;&lt;/li&gt;
+&lt;li&gt;&lt;p&gt;Addition of Dimension Data Australia federal government 
region to dimension data
+drivers.
+(GITHUB-700)
+[Anthony Shaw]&lt;/p&gt;&lt;/li&gt;
+&lt;li&gt;&lt;p&gt;[openstack] when creating floating IPs, added pool_id as an 
optional argument
+(GITHUB-725)
+[marko-p]&lt;/p&gt;&lt;/li&gt;
+&lt;li&gt;&lt;p&gt;[google compute] Added setMachineType method to allow for 
changing sizes of instances
+(GITHUB-721)
+[Eric Johnson]&lt;/p&gt;&lt;/li&gt;
+&lt;li&gt;&lt;p&gt;[google compute] allow bypassing image search in standard 
project list
+(GITHUB-713)
+[Max Illfelder]&lt;/p&gt;&lt;/li&gt;
+&lt;li&gt;&lt;p&gt;Add support for requesting a MKS token for accessing the 
remote console in VMware
+vCloud driver
+(GITHUB-706)
+[Juan Font Alonso]&lt;/p&gt;&lt;/li&gt;
+&lt;li&gt;&lt;p&gt;Add support in VMware vCloud driver for v5.5 API, with 
snapshot support
+(GITHUB-658)
+[Juan Font Alonso]&lt;/p&gt;&lt;/li&gt;
+&lt;li&gt;&lt;p&gt;Added support for adding a family to an image on Google 
Compute Driver
+(GITHUB-704)
+[Max Illfelder]&lt;/p&gt;&lt;/li&gt;
+&lt;li&gt;&lt;p&gt;Fix to set default signature version for AWS Seoul region 
to v4, removed
+non-supported size (hs1.xlarge)
+(GITHUB-684)
+[Geunwoo Shin]&lt;/p&gt;&lt;/li&gt;
+&lt;li&gt;&lt;p&gt;Support filtering by location in list_nodes for dimension 
data compute driver
+fix lack of paging support
+(GITHUB-691)
+[Jeff Dunham]&lt;/p&gt;&lt;/li&gt;
+&lt;li&gt;&lt;p&gt;Support for filtering by IPv4, IPv6, network, network 
domain, VLAN in Dimension
+data driver.
+(GITHUB-694)
+[Jeff Dunham]&lt;/p&gt;&lt;/li&gt;
+&lt;li&gt;&lt;p&gt;Added &lt;code&gt;Node.created_at&lt;/code&gt; which, on 
supported drivers, contains the datetime the
+node was first started.
+(GITHUB-698)
+[Allard Hoeve] [Rick van de Loo]&lt;/p&gt;&lt;/li&gt;
+&lt;/ul&gt;
+
+&lt;h3&gt;Storage&lt;/h3&gt;
+
+&lt;ul&gt;
+&lt;li&gt;&lt;p&gt;Improvements to Google Auth for Storage and Compute and 
MIME bug fix
+(LIBCLOUD-800, GITHUB-689)
+[Scott Crunkleton]&lt;/p&gt;&lt;/li&gt;
+&lt;li&gt;&lt;p&gt;Implement &lt;code&gt;get_container&lt;/code&gt;, 
&lt;code&gt;get_object&lt;/code&gt; and 
&lt;code&gt;upload_object_via_stream&lt;/code&gt;
+methods in the Backblaze B2 storage driver.&lt;/p&gt;
+
+&lt;p&gt;Note: Backblaze API doesn&amp;#39;t upload streaming uploads so when 
using
+&lt;code&gt;upload_object_via_stream&lt;/code&gt; whole file is read and 
buffered in memory.
+(GITHUB-696)
+[Jay jshridha]&lt;/p&gt;&lt;/li&gt;
+&lt;/ul&gt;
+
+&lt;h3&gt;Backup&lt;/h3&gt;
+
+&lt;ul&gt;
+&lt;li&gt;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]&lt;/li&gt;
+&lt;/ul&gt;
+
+&lt;h3&gt;Download&lt;/h3&gt;
+
+&lt;p&gt;The release can can be downloaded from
+&lt;a 
href=&quot;https://libcloud.apache.org/downloads.html&quot;&gt;https://libcloud.apache.org/downloads.html&lt;/a&gt;
 or installed using pip:&lt;/p&gt;
+
+&lt;pre&gt;
+pip install apache-libcloud==1.0.0
+&lt;/pre&gt;
+
+&lt;h3&gt;Upgrading&lt;/h3&gt;
+
+&lt;p&gt;If you have installed Libcloud using pip you can also use it to 
upgrade it:&lt;/p&gt;
+
+&lt;pre&gt;
+pip install --upgrade apache-libcloud==1.0.0
+&lt;/pre&gt;
+
+&lt;h3&gt;Upgrade notes&lt;/h3&gt;
+
+&lt;p&gt;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 &lt;a 
href=&quot;https://libcloud.readthedocs.org/en/latest/upgrade_notes.html&quot;&gt;https://libcloud.readthedocs.org/en/latest/upgrade_notes.html&lt;/a&gt;&lt;/p&gt;
+
+&lt;h3&gt;Documentation&lt;/h3&gt;
+
+&lt;p&gt;Regular and API documentation is available at &lt;a 
href=&quot;https://libcloud.readthedocs.org/en/latest/&quot;&gt;https://libcloud.readthedocs.org/en/latest/&lt;/a&gt;&lt;/p&gt;
+
+&lt;h3&gt;Bugs / Issues&lt;/h3&gt;
+
+&lt;p&gt;If you find any bug or issue, please report it on our issue tracker
+&lt;a 
href=&quot;https://issues.apache.org/jira/browse/LIBCLOUD&quot;&gt;https://issues.apache.org/jira/browse/LIBCLOUD&lt;/a&gt;.
+Don&amp;#39;t forget to attach an example and / or test which reproduces your
+problem.&lt;/p&gt;
+
+&lt;h3&gt;Thanks&lt;/h3&gt;
+
+&lt;p&gt;Thanks to everyone who contributed and made this release possible! 
Full
+list of people who contributed to this release can be found in the
+&lt;a 
href=&quot;https://libcloud.readthedocs.org/en/latest/changelog.html&quot;&gt;CHANGES
 file&lt;/a&gt;.&lt;/p&gt;
+</content>
+  </entry>
+    
+  <entry>
+    <title>Libcloud 1.0.0-rc2 released</title>
+    <link 
href="https://libcloud.apache.org/blog/2016/04/11/libcloud-1-0-0-rc2-released.html";
 />
+    
<id>https://libcloud.apache.org/blog/2016/04/11/libcloud-1-0-0-rc2-released.html</id>
+    <updated>2016-04-11T00:00:00+10:00</updated>
+    <author>
+      <name>Anthony Shaw</name>
+    </author>
+    <content type="html">&lt;p&gt;We are pleased to announce the release of 
Libcloud 1.0.0-rc2.&lt;/p&gt;
+
+&lt;p&gt;This the second pre-release in the 1.0.0 series which means it brings 
many new
+features, improvements, bug-fixes, and DNS drivers.&lt;/p&gt;
+
+&lt;h3&gt;Release highlights&lt;/h3&gt;
+
+&lt;p&gt;This includes:&lt;/p&gt;
+
+&lt;ul&gt;
+&lt;li&gt;Deprecated drivers that were no longer available such as Ninefold, 
IBM SCE &lt;a 
href=&quot;http://libcloud.apache.org/blog/2016/02/16/new-drivers-deprecated-drivers.html&quot;&gt;more
 details&lt;/a&gt;&lt;/li&gt;
+&lt;li&gt;The Amazon EC2 driver has been changed to use region codes instead 
of separate drivers for each region.&lt;/li&gt;
+&lt;li&gt;Introduce new &lt;code&gt;list_regions&lt;/code&gt; class method on 
the base driver class&lt;/li&gt;
+&lt;li&gt;Support for Dimension Data backup&lt;/li&gt;
+&lt;li&gt;Added NSOne, LuaDNS, NearlyFreeSpeech.NET DNS drivers&lt;/li&gt;
+&lt;li&gt;Added Aliyun compute, load balancer and storage drivers&lt;/li&gt;
+&lt;li&gt;Added Outscale storage driver&lt;/li&gt;
+&lt;/ul&gt;
+
+&lt;p&gt;Full change log can be found at &lt;a 
href=&quot;https://libcloud.readthedocs.org/en/latest/changelog.html&quot;&gt;here&lt;/a&gt;.&lt;/p&gt;
+
+&lt;h3&gt;Important breaking change-  Amazon EC2 driver changes&lt;/h3&gt;
+
+&lt;p&gt;The Amazon EC2 API was updated to consolidate the regional-based 
drivers into a single driver with a region argument in the 
constructor.&lt;/p&gt;
+
+&lt;p&gt;Amazon Instances should now be instantiated using the following 
syntax:&lt;/p&gt;
+&lt;div class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;python 
language-python&quot; data-lang=&quot;python&quot;&gt;&lt;span 
class=&quot;kn&quot;&gt;from&lt;/span&gt; &lt;span 
class=&quot;nn&quot;&gt;libcloud.compute.types&lt;/span&gt; &lt;span 
class=&quot;kn&quot;&gt;import&lt;/span&gt; &lt;span 
class=&quot;n&quot;&gt;Provider&lt;/span&gt;
+&lt;span class=&quot;kn&quot;&gt;from&lt;/span&gt; &lt;span 
class=&quot;nn&quot;&gt;libcloud.compute.providers&lt;/span&gt; &lt;span 
class=&quot;kn&quot;&gt;import&lt;/span&gt; &lt;span 
class=&quot;n&quot;&gt;get_driver&lt;/span&gt;
+
+&lt;span class=&quot;n&quot;&gt;cls&lt;/span&gt; &lt;span 
class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span 
class=&quot;n&quot;&gt;get_driver&lt;/span&gt;&lt;span 
class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span 
class=&quot;n&quot;&gt;Provider&lt;/span&gt;&lt;span 
class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span 
class=&quot;n&quot;&gt;EC2&lt;/span&gt;&lt;span 
class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span 
class=&quot;n&quot;&gt;region&lt;/span&gt;&lt;span 
class=&quot;o&quot;&gt;=&lt;/span&gt;&lt;span 
class=&quot;s&quot;&gt;&amp;#39;us-east-i1&amp;#39;&lt;/span&gt;&lt;span 
class=&quot;p&quot;&gt;)&lt;/span&gt;
+&lt;span class=&quot;n&quot;&gt;driver&lt;/span&gt; &lt;span 
class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span 
class=&quot;n&quot;&gt;cls&lt;/span&gt;&lt;span 
class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span 
class=&quot;s&quot;&gt;&amp;#39;access key&amp;#39;&lt;/span&gt;&lt;span 
class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span 
class=&quot;s&quot;&gt;&amp;#39;secret key&amp;#39;&lt;/span&gt;&lt;span 
class=&quot;p&quot;&gt;)&lt;/span&gt;
+&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
+&lt;p&gt;This brings the Amazon API inline with the other drivers, makes it 
easier to maintain and switch between regions.&lt;/p&gt;
+
+&lt;h3&gt;Bug fixes&lt;/h3&gt;
+
+&lt;h4&gt;General&lt;/h4&gt;
+
+&lt;ul&gt;
+&lt;li&gt;&lt;p&gt;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]&lt;/p&gt;&lt;/li&gt;
+&lt;li&gt;&lt;p&gt;Increase default chunk size from 
&lt;code&gt;1024&lt;/code&gt; to &lt;code&gt;4096&lt;/code&gt; bytes in the 
paramiko
+SSH client. This results in smaller number of receive calls on the average.
+[Tomaz Muraus]&lt;/p&gt;&lt;/li&gt;
+&lt;li&gt;&lt;p&gt;Fix to Dimension Data API address for Middle-East and Africa
+(GITHUB-700)
+[Anthony Shaw]&lt;/p&gt;&lt;/li&gt;
+&lt;li&gt;&lt;p&gt;Throw a more user-friendly exception on &amp;quot;No 
address associated with hostname&amp;quot;.
+(GITHUB-711, GITHUB-714, LIBCLOUD-803)
+[Tomaz Muraus, Scott Crunkleton]&lt;/p&gt;&lt;/li&gt;
+&lt;li&gt;&lt;p&gt;Remove deprecated provider constants with the region in the 
name and related
+driver classes (e.g. &lt;code&gt;EC2_US_EAST&lt;/code&gt;, etc.).&lt;/p&gt;
+
+&lt;p&gt;Those drivers have moved to single provider constant + 
&lt;code&gt;region&lt;/code&gt; constructor
+argument model.
+[Tomaz Muraus]&lt;/p&gt;&lt;/li&gt;
+&lt;/ul&gt;
+
+&lt;h3&gt;New or deprecated drivers&lt;/h3&gt;
+
+&lt;h4&gt;Compute&lt;/h4&gt;
+
+&lt;ul&gt;
+&lt;li&gt;&lt;p&gt;Deprecated IBM SCE, HP Helion, OpSource, Ninefold and 
CloudFrames drivers, removed
+driver code and tests.
+(GITHUB-701, LIBCLOUD-801)
+[Anthony Shaw]&lt;/p&gt;&lt;/li&gt;
+&lt;li&gt;&lt;p&gt;Introduced error messages 
(&lt;code&gt;libcloud.compute.deprecated&lt;/code&gt;) for deprecated drivers
+(GITHUB-701, LIBCLOUD-801)
+[Anthony Shaw]&lt;/p&gt;&lt;/li&gt;
+&lt;li&gt;&lt;p&gt;New Compute drivers- BSNL, Indosat, Med-1, NTT-America, 
Internet Solutions
+(GITHUB-700)
+[Anthony Shaw]&lt;/p&gt;&lt;/li&gt;
+&lt;li&gt;&lt;p&gt;New driver for Aliyun Elastic Compute Service.
+(LIBCLOUD-802, GITHUB-712)
+[Sam Song]&lt;/p&gt;&lt;/li&gt;
+&lt;/ul&gt;
+
+&lt;h4&gt;Storage&lt;/h4&gt;
+
+&lt;ul&gt;
+&lt;li&gt;&lt;p&gt;Added Outscale storage driver
+(GITHUB-730)
+[Javier M. Mellid]&lt;/p&gt;&lt;/li&gt;
+&lt;li&gt;&lt;p&gt;New driver for Aliyun OSS Storage Service.
+(LIBCLOUD-802, GITHUB-712)
+[Sam Song]&lt;/p&gt;&lt;/li&gt;
+&lt;/ul&gt;
+
+&lt;h4&gt;Loadbalancer&lt;/h4&gt;
+
+&lt;ul&gt;
+&lt;li&gt;New driver for Aliyun SLB Loadbalancer Service.
+(LIBCLOUD-802, GITHUB-712)
+[Sam Song]&lt;/li&gt;
+&lt;/ul&gt;
+
+&lt;h4&gt;DNS&lt;/h4&gt;
+
+&lt;ul&gt;
+&lt;li&gt;&lt;p&gt;Added NearlyFreeSpeech.net (NSFN) driver
+[Ken Drayer]&lt;/p&gt;&lt;/li&gt;
+&lt;li&gt;&lt;p&gt;Added Lua DNS driver
+[Oltjano Terpollari]&lt;/p&gt;&lt;/li&gt;
+&lt;li&gt;&lt;p&gt;Added NSOne driver
+[Oltjano Terpollari]&lt;/p&gt;&lt;/li&gt;
+&lt;/ul&gt;
+
+&lt;h2&gt;Bug fixes&lt;/h2&gt;
+
+&lt;ul&gt;
+&lt;li&gt;&lt;p&gt;Fix a bug in the GoDaddy driver - make sure 
&lt;code&gt;host&lt;/code&gt; attribute on the
+connection class is correctly set to the hostname.
+[Tomaz Muraus]&lt;/p&gt;&lt;/li&gt;
+&lt;li&gt;&lt;p&gt;Fix handling of &lt;code&gt;MX&lt;/code&gt; records in the 
Gandi driver.
+(GITHUB-718)
+[Ryan Lee]&lt;/p&gt;&lt;/li&gt;
+&lt;/ul&gt;
+
+&lt;h2&gt;Improvements&lt;/h2&gt;
+
+&lt;h3&gt;Compute&lt;/h3&gt;
+
+&lt;ul&gt;
+&lt;li&gt;&lt;p&gt;Introduce new &lt;code&gt;list_regions&lt;/code&gt; class 
method on the base driver class. This
+method is to be used with provider drivers which support multiple regions and
+&lt;code&gt;region&lt;/code&gt; constructor argument. It allows users to 
enumerate available /
+supported regions.
+[Tomaz Muraus]&lt;/p&gt;&lt;/li&gt;
+&lt;li&gt;&lt;p&gt;[dimension data] added support for VMWare tools VM 
information inside list_nodes responses
+(GITHUB-734)
+[Jeff Dunham]&lt;/p&gt;&lt;/li&gt;
+&lt;li&gt;&lt;p&gt;[ec2] added ex&lt;em&gt;encrypted and 
ex&lt;/em&gt;kms&lt;em&gt;key&lt;/em&gt;id optional parameters to the create 
volume method
+(GITHUB-729)
+[Viktor Ognev]&lt;/p&gt;&lt;/li&gt;
+&lt;li&gt;&lt;p&gt;[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]&lt;/p&gt;&lt;/li&gt;
+&lt;li&gt;&lt;p&gt;Addition of Dimension Data Australia federal government 
region to dimension data
+drivers.
+(GITHUB-700)
+[Anthony Shaw]&lt;/p&gt;&lt;/li&gt;
+&lt;li&gt;&lt;p&gt;[openstack] when creating floating IPs, added pool_id as an 
optional argument
+(GITHUB-725)
+[marko-p]&lt;/p&gt;&lt;/li&gt;
+&lt;li&gt;&lt;p&gt;[google compute] Added setMachineType method to allow for 
changing sizes of instances
+(GITHUB-721)
+[Eric Johnson]&lt;/p&gt;&lt;/li&gt;
+&lt;li&gt;&lt;p&gt;[google compute] allow bypassing image search in standard 
project list
+(GITHUB-713)
+[Max Illfelder]&lt;/p&gt;&lt;/li&gt;
+&lt;li&gt;&lt;p&gt;Add support for requesting a MKS token for accessing the 
remote console in VMware
+vCloud driver
+(GITHUB-706)
+[Juan Font Alonso]&lt;/p&gt;&lt;/li&gt;
+&lt;li&gt;&lt;p&gt;Add support in VMware vCloud driver for v5.5 API, with 
snapshot support
+(GITHUB-658)
+[Juan Font Alonso]&lt;/p&gt;&lt;/li&gt;
+&lt;li&gt;&lt;p&gt;Added support for adding a family to an image on Google 
Compute Driver
+(GITHUB-704)
+[Max Illfelder]&lt;/p&gt;&lt;/li&gt;
+&lt;li&gt;&lt;p&gt;Fix to set default signature version for AWS Seoul region 
to v4, removed
+non-supported size (hs1.xlarge)
+(GITHUB-684)
+[Geunwoo Shin]&lt;/p&gt;&lt;/li&gt;
+&lt;li&gt;&lt;p&gt;Support filtering by location in list_nodes for dimension 
data compute driver
+fix lack of paging support
+(GITHUB-691)
+[Jeff Dunham]&lt;/p&gt;&lt;/li&gt;
+&lt;li&gt;&lt;p&gt;Support for filtering by IPv4, IPv6, network, network 
domain, VLAN in Dimension
+data driver.
+(GITHUB-694)
+[Jeff Dunham]&lt;/p&gt;&lt;/li&gt;
+&lt;li&gt;&lt;p&gt;Added &lt;code&gt;Node.created_at&lt;/code&gt; which, on 
supported drivers, contains the datetime the
+node was first started.
+(GITHUB-698)
+[Allard Hoeve] [Rick van de Loo]&lt;/p&gt;&lt;/li&gt;
+&lt;/ul&gt;
+
+&lt;h3&gt;Storage&lt;/h3&gt;
+
+&lt;ul&gt;
+&lt;li&gt;&lt;p&gt;Improvements to Google Auth for Storage and Compute and 
MIME bug fix
+(LIBCLOUD-800, GITHUB-689)
+[Scott Crunkleton]&lt;/p&gt;&lt;/li&gt;
+&lt;li&gt;&lt;p&gt;Implement &lt;code&gt;get_container&lt;/code&gt;, 
&lt;code&gt;get_object&lt;/code&gt; and 
&lt;code&gt;upload_object_via_stream&lt;/code&gt;
+methods in the Backblaze B2 storage driver.&lt;/p&gt;
+
+&lt;p&gt;Note: Backblaze API doesn&amp;#39;t upload streaming uploads so when 
using
+&lt;code&gt;upload_object_via_stream&lt;/code&gt; whole file is read and 
buffered in memory.
+(GITHUB-696)
+[Jay jshridha]&lt;/p&gt;&lt;/li&gt;
+&lt;/ul&gt;
+
+&lt;h3&gt;Backup&lt;/h3&gt;
+
+&lt;ul&gt;
+&lt;li&gt;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]&lt;/li&gt;
+&lt;/ul&gt;
+
+&lt;h3&gt;Download&lt;/h3&gt;
+
+&lt;p&gt;The release can can be downloaded from
+&lt;a 
href=&quot;https://libcloud.apache.org/downloads.html&quot;&gt;https://libcloud.apache.org/downloads.html&lt;/a&gt;
 or installed using pip:&lt;/p&gt;
+
+&lt;pre&gt;
+pip install apache-libcloud==1.0.0-rc2
+&lt;/pre&gt;
+
+&lt;h3&gt;Upgrading&lt;/h3&gt;
+
+&lt;p&gt;If you have installed Libcloud using pip you can also use it to 
upgrade it:&lt;/p&gt;
+
+&lt;pre&gt;
+pip install --upgrade apache-libcloud==1.0.0-rc2
+&lt;/pre&gt;
+
+&lt;h3&gt;Upgrade notes&lt;/h3&gt;
+
+&lt;p&gt;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 &lt;a 
href=&quot;https://libcloud.readthedocs.org/en/latest/upgrade_notes.html&quot;&gt;https://libcloud.readthedocs.org/en/latest/upgrade_notes.html&lt;/a&gt;&lt;/p&gt;
+
+&lt;h3&gt;Documentation&lt;/h3&gt;
+
+&lt;p&gt;Regular and API documentation is available at &lt;a 
href=&quot;https://libcloud.readthedocs.org/en/latest/&quot;&gt;https://libcloud.readthedocs.org/en/latest/&lt;/a&gt;&lt;/p&gt;
+
+&lt;h3&gt;Bugs / Issues&lt;/h3&gt;
+
+&lt;p&gt;If you find any bug or issue, please report it on our issue tracker
+&lt;a 
href=&quot;https://issues.apache.org/jira/browse/LIBCLOUD&quot;&gt;https://issues.apache.org/jira/browse/LIBCLOUD&lt;/a&gt;.
+Don&amp;#39;t forget to attach an example and / or test which reproduces your
+problem.&lt;/p&gt;
+
+&lt;h3&gt;Thanks&lt;/h3&gt;
+
+&lt;p&gt;Thanks to everyone who contributed and made this release possible! 
Full
+list of people who contributed to this release can be found in the
+&lt;a 
href=&quot;https://libcloud.readthedocs.org/en/latest/changelog.html&quot;&gt;CHANGES
 file&lt;/a&gt;.&lt;/p&gt;
+
+&lt;p&gt;We would like to thank the following community members for their 
contribution to this release:&lt;/p&gt;
+
+&lt;ul&gt;
+&lt;li&gt;Jeff Dunham&lt;/li&gt;
+&lt;li&gt;Max Illfelder&lt;/li&gt;
+&lt;li&gt;Ken Dreyer&lt;/li&gt;
+&lt;li&gt;Sam Song&lt;/li&gt;
+&lt;li&gt;Oltjano Terpollari&lt;/li&gt;
+&lt;li&gt;Javier M. Mellid&lt;/li&gt;
+&lt;/ul&gt;
+</content>
+  </entry>
+    
+  <entry>
+    <title>Experimental support for the requests package</title>
+    <link 
href="https://libcloud.apache.org/blog/2016/04/06/requests-support.html"; />
+    <id>https://libcloud.apache.org/blog/2016/04/06/requests-support.html</id>
+    <updated>2016-04-06T00:00:00+10:00</updated>
+    <author>
+      <name>Anthony Shaw</name>
+    </author>
+    <content type="html">&lt;h2&gt;Background&lt;/h2&gt;
+
+&lt;p&gt;I&amp;#39;ve just pushed a branch of the latest version of libcloud 
using the popular &lt;code&gt;requests&lt;/code&gt; package by Kenneth Reitz 
instead of our home-rolled HTTP client library.&lt;/p&gt;
+
+&lt;p&gt;This article is for both users and developers of libcloud. If you 
want to give feedback, please join the developer mailing list.&lt;/p&gt;
+
+&lt;h2&gt;Why?&lt;/h2&gt;
+
+&lt;ul&gt;
+&lt;li&gt;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&lt;/li&gt;
+&lt;li&gt;it works with python 2.6-&amp;gt;3.5&lt;/li&gt;
+&lt;li&gt;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&lt;/li&gt;
+&lt;li&gt;Developers can use requests_mock for deeper integration 
testing&lt;/li&gt;
+&lt;li&gt;less code to maintain&lt;/li&gt;
+&lt;li&gt;the role of libcloud is for cloud abstraction, we provide no value 
in writing and maintaining our own HTTP client library&lt;/li&gt;
+&lt;/ul&gt;
+
+&lt;h2&gt;Benefits of requests&lt;/h2&gt;
+
+&lt;p&gt;There are a number of benefits to having a requests package&lt;/p&gt;
+
+&lt;ul&gt;
+&lt;li&gt;The client library code is smaller, leaner and simpler.&lt;/li&gt;
+&lt;li&gt;Requests has built in decompression support, we no longer need to 
support this&lt;/li&gt;
+&lt;li&gt;Requests has built in RAW download, upload support, helping with our 
storage drivers&lt;/li&gt;
+&lt;/ul&gt;
+
+&lt;h2&gt;Implications of the change&lt;/h2&gt;
+
+&lt;ul&gt;
+&lt;li&gt;There are no longer 2 classes 
(&lt;code&gt;LibcloudHTTPSConnection&lt;/code&gt; and 
&lt;code&gt;LibcloudHTTPConnection&lt;/code&gt;) to be provided to each driver, 
they are now 1 class - &lt;code&gt;LibcloudConnection&lt;/code&gt;. You 
probably won&amp;#39;t notice this because it is a property of the 
&lt;code&gt;Connection&lt;/code&gt; class, but
+if you are developing or extending functionality then it is 
implicated.&lt;/li&gt;
+&lt;li&gt;Unit tests will look slightly different (see below)&lt;/li&gt;
+&lt;li&gt;This change broke 4200 unit tests (out of 6340)! I&amp;#39;ve since 
fixed them all since they were coupled to the original implementation, but now 
I don&amp;#39;t know if all of tests are valid.&lt;/li&gt;
+&lt;/ul&gt;
+
+&lt;h2&gt;Testing with requests&lt;/h2&gt;
+
+&lt;p&gt;Unit tests that were written like this:&lt;/p&gt;
+&lt;div class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;python 
language-python&quot; data-lang=&quot;python&quot;&gt;&lt;span 
class=&quot;k&quot;&gt;class&lt;/span&gt; &lt;span 
class=&quot;nc&quot;&gt;DigitalOceanTests&lt;/span&gt;&lt;span 
class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span 
class=&quot;n&quot;&gt;LibcloudTestCase&lt;/span&gt;&lt;span 
class=&quot;p&quot;&gt;):&lt;/span&gt;
+
+      &lt;span class=&quot;k&quot;&gt;def&lt;/span&gt; &lt;span 
class=&quot;nf&quot;&gt;setUp&lt;/span&gt;&lt;span 
class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span 
class=&quot;bp&quot;&gt;self&lt;/span&gt;&lt;span 
class=&quot;p&quot;&gt;):&lt;/span&gt;
+          &lt;span 
class=&quot;n&quot;&gt;DigitalOceanBaseDriver&lt;/span&gt;&lt;span 
class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span 
class=&quot;n&quot;&gt;connectionCls&lt;/span&gt;&lt;span 
class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span 
class=&quot;n&quot;&gt;conn_classes&lt;/span&gt; &lt;span 
class=&quot;o&quot;&gt;=&lt;/span&gt; \ 
+           &lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span 
class=&quot;bp&quot;&gt;None&lt;/span&gt;&lt;span 
class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span 
class=&quot;n&quot;&gt;DigitalOceanMockHttp&lt;/span&gt;&lt;span 
class=&quot;p&quot;&gt;)&lt;/span&gt;
+          &lt;span 
class=&quot;n&quot;&gt;DigitalOceanMockHttp&lt;/span&gt;&lt;span 
class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span 
class=&quot;n&quot;&gt;type&lt;/span&gt; &lt;span 
class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span 
class=&quot;bp&quot;&gt;None&lt;/span&gt;
+          &lt;span class=&quot;bp&quot;&gt;self&lt;/span&gt;&lt;span 
class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span 
class=&quot;n&quot;&gt;driver&lt;/span&gt; &lt;span 
class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span 
class=&quot;n&quot;&gt;DigitalOceanBaseDriver&lt;/span&gt;&lt;span 
class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span 
class=&quot;o&quot;&gt;*&lt;/span&gt;&lt;span 
class=&quot;n&quot;&gt;DIGITALOCEAN_v1_PARAMS&lt;/span&gt;&lt;span 
class=&quot;p&quot;&gt;)&lt;/span&gt;
+&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
+&lt;p&gt;Because of the change have been modified to (I updated all of them - 
so this is just for future reference)&lt;/p&gt;
+&lt;div class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;python 
language-python&quot; data-lang=&quot;python&quot;&gt;&lt;span 
class=&quot;k&quot;&gt;class&lt;/span&gt; &lt;span 
class=&quot;nc&quot;&gt;DigitalOceanTests&lt;/span&gt;&lt;span 
class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span 
class=&quot;n&quot;&gt;LibcloudTestCase&lt;/span&gt;&lt;span 
class=&quot;p&quot;&gt;):&lt;/span&gt;
+
+      &lt;span class=&quot;k&quot;&gt;def&lt;/span&gt; &lt;span 
class=&quot;nf&quot;&gt;setUp&lt;/span&gt;&lt;span 
class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span 
class=&quot;bp&quot;&gt;self&lt;/span&gt;&lt;span 
class=&quot;p&quot;&gt;):&lt;/span&gt;
+          &lt;span 
class=&quot;n&quot;&gt;DigitalOceanBaseDriver&lt;/span&gt;&lt;span 
class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span 
class=&quot;n&quot;&gt;connectionCls&lt;/span&gt;&lt;span 
class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span 
class=&quot;n&quot;&gt;conn_class&lt;/span&gt; &lt;span 
class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span 
class=&quot;n&quot;&gt;DigitalOceanMockHttp&lt;/span&gt;
+          &lt;span 
class=&quot;n&quot;&gt;DigitalOceanMockHttp&lt;/span&gt;&lt;span 
class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span 
class=&quot;n&quot;&gt;type&lt;/span&gt; &lt;span 
class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span 
class=&quot;bp&quot;&gt;None&lt;/span&gt;
+          &lt;span class=&quot;bp&quot;&gt;self&lt;/span&gt;&lt;span 
class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span 
class=&quot;n&quot;&gt;driver&lt;/span&gt; &lt;span 
class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span 
class=&quot;n&quot;&gt;DigitalOceanBaseDriver&lt;/span&gt;&lt;span 
class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span 
class=&quot;o&quot;&gt;*&lt;/span&gt;&lt;span 
class=&quot;n&quot;&gt;DIGITALOCEAN_v1_PARAMS&lt;/span&gt;&lt;span 
class=&quot;p&quot;&gt;)&lt;/span&gt;
+&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
+&lt;h1&gt;Check it out!&lt;/h1&gt;
+
+&lt;p&gt;The package is on my personal apache site, you can download it and 
install it in a virtualenv for testing.&lt;/p&gt;
+
+&lt;p&gt;&lt;code&gt;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&lt;/code&gt;&lt;/p&gt;
+
+&lt;p&gt;The hashes are my &lt;a 
href=&quot;http://people.apache.org/%7Eanthonyshaw/libcloud/1.0.0-rc2-requests/&quot;&gt;apache
 space&lt;/a&gt;&lt;/p&gt;
+
+&lt;p&gt;Have a look at the &lt;a 
href=&quot;https://github.com/apache/libcloud/pull/728/files&quot;&gt;PR and 
the change set&lt;/a&gt; for a list of changes&lt;/p&gt;
+
+&lt;h1&gt;What might break?&lt;/h1&gt;
+
+&lt;p&gt;What I&amp;#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.&lt;/p&gt;
+
+&lt;p&gt;I&amp;#39;m particularly sceptical about the storage 
drivers.&lt;/p&gt;
+
+&lt;p&gt;Once we have enough community feedback, we will propose a vote to 
merge this into trunk for future release.&lt;/p&gt;
+
+&lt;h2&gt;Credit&lt;/h2&gt;
+
+&lt;p&gt;Credit to dz0ny on IRC for contributing some of the requests 
patch.&lt;/p&gt;
+</content>
+  </entry>
+    
+  <entry>
+    <title>New compute drivers and deprecated drivers in 1.0</title>
+    <link 
href="https://libcloud.apache.org/blog/2016/02/16/new-drivers-deprecated-drivers.html";
 />
+    
<id>https://libcloud.apache.org/blog/2016/02/16/new-drivers-deprecated-drivers.html</id>
+    <updated>2016-02-16T00:00:00+11:00</updated>
+    <author>
+      <name>Anthony Shaw</name>
+    </author>
+    <content type="html">&lt;p&gt;With Libcloud 1.0.0 around the corner, 
it&amp;#39;s time to have a spring clean of the compute drivers. Granted, 
it&amp;#39;s not spring everywhere -actually
+I&amp;#39;m writing from Sydney, Australia where it&amp;#39;s definitely 
summer.&lt;/p&gt;
+
+&lt;p&gt;Looking at the 52 providers in the 0.21.0 release, I have identified 
5 providers that are no longer available or open.&lt;/p&gt;
+
+&lt;ul&gt;
+&lt;li&gt;CloudFrames
+
+&lt;ul&gt;
+&lt;li&gt;Looks dead - website doesn&amp;#39;t work, can&amp;#39;t see any 
references to this online.&lt;/li&gt;
+&lt;li&gt;&lt;code&gt;libcloud.compute.drivers.cloudframes&lt;/code&gt;&lt;/li&gt;
+&lt;/ul&gt;&lt;/li&gt;
+&lt;li&gt;HP Public Cloud (Helion)
+
+&lt;ul&gt;
+&lt;li&gt;&lt;a 
href=&quot;https://tahoe-lafs.org/trac/tahoe-lafs/ticket/2566&quot;&gt;Shut 
down on 31st of January 2016&lt;/a&gt;&lt;/li&gt;
+&lt;li&gt;&lt;code&gt;libcloud.compute.drivers.hpcloud&lt;/code&gt;&lt;/li&gt;
+&lt;/ul&gt;&lt;/li&gt;
+&lt;li&gt;IBM SmartCloud Enterprise
+
+&lt;ul&gt;
+&lt;li&gt;&lt;a 
href=&quot;http://www.theregister.co.uk/2013/10/31/ibm_to_shutter_smartcloud_enterprise_moves_customers_to_softlayer/&quot;&gt;Shut
 down 2014, customers instructed to move to SoftLayer&lt;/a&gt;&lt;/li&gt;
+&lt;li&gt;&lt;code&gt;libcloud.compute.drivers.ibm_sce&lt;/code&gt;&lt;/li&gt;
+&lt;/ul&gt;&lt;/li&gt;
+&lt;li&gt;Ninefold
+
+&lt;ul&gt;
+&lt;li&gt;&lt;a 
href=&quot;http://www.itnews.com.au/news/ninefold-to-shut-down-411312&quot;&gt;Ninefold
 shut down in January 2016&lt;/a&gt;&lt;/li&gt;
+&lt;li&gt;&lt;code&gt;libcloud.compute.drivers.ninefold&lt;/code&gt;&lt;/li&gt;
+&lt;/ul&gt;&lt;/li&gt;
+&lt;li&gt;Opsource
+
+&lt;ul&gt;
+&lt;li&gt;Dimension Data acquired OpSource in 2012, the Opsource driver is 
succeeded by the Dimension Data driver.&lt;/li&gt;
+&lt;li&gt;&lt;code&gt;libcloud.compute.drivers.opsource&lt;/code&gt;&lt;/li&gt;
+&lt;/ul&gt;&lt;/li&gt;
+&lt;/ul&gt;
+
+&lt;h3&gt;Handling deprecated drivers&lt;/h3&gt;
+
+&lt;p&gt;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.&lt;/p&gt;
+
+&lt;p&gt;The most obvious implementation is that calls to 
&lt;code&gt;get_driver(Provider.NINEFOLD)&lt;/code&gt; 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.&lt;/p&gt;
+
+&lt;p&gt;Currently, users trying to instantiate a HPE public cloud driver for 
example will get a connection error, which is not user friendly.&lt;/p&gt;
+
+&lt;h3&gt;New compute drivers in 1.0.0-pre2&lt;/h3&gt;
+
+&lt;p&gt;The upcoming release, so currently available in trunk contains some 
new compute drivers.&lt;/p&gt;
+
+&lt;ul&gt;
+&lt;li&gt;&lt;a 
href=&quot;http://libcloud.readthedocs.org/en/latest/compute/drivers/ntta.html&quot;&gt;NTT
 America Public Cloud&lt;/a&gt;&lt;/li&gt;
+&lt;li&gt;&lt;a 
href=&quot;http://libcloud.readthedocs.org/en/latest/compute/drivers/internetsolutions.html&quot;&gt;Internet
 Solutions Public Cloud&lt;/a&gt;&lt;/li&gt;
+&lt;li&gt;&lt;a 
href=&quot;http://libcloud.readthedocs.org/en/latest/compute/drivers/medone.html&quot;&gt;Med-1
 Public Cloud&lt;/a&gt;&lt;/li&gt;
+&lt;li&gt;&lt;a 
href=&quot;http://libcloud.readthedocs.org/en/latest/compute/drivers/indosat.html&quot;&gt;Indosat
 Cloud&lt;/a&gt;&lt;/li&gt;
+&lt;li&gt;&lt;a 
href=&quot;http://libcloud.readthedocs.org/en/latest/compute/drivers/bsnl.html&quot;&gt;BSNL
 IDC Cloud&lt;/a&gt;&lt;/li&gt;
+&lt;/ul&gt;
+
+&lt;p&gt;Full change log can be found at &lt;a 
href=&quot;https://github.com/apache/libcloud/blob/trunk/CHANGES.rst&quot;&gt;here&lt;/a&gt;.&lt;/p&gt;
+</content>
+  </entry>
+    
+  <entry>
+    <title>Using the container abstraction API in 1.0.0-pre1</title>
+    <link 
href="https://libcloud.apache.org/blog/2016/02/05/libcloud-containers-example.html";
 />
+    
<id>https://libcloud.apache.org/blog/2016/02/05/libcloud-containers-example.html</id>
+    <updated>2016-02-05T00:00:00+11:00</updated>
+    <author>
+      <name>Anthony Shaw</name>
+    </author>
+    <content type="html">&lt;h2&gt;Background&lt;/h2&gt;
+
+&lt;p&gt;Containers are the talk of the town, you can&amp;#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.&lt;/p&gt;
+
+&lt;p&gt;We introduced Container-as-a-Service support in &lt;a 
href=&quot;http://libcloud.apache.org/blog/2016/01/26/libcloud-1-0-0-pre1-released.html&quot;&gt;1.0.0-pre1&lt;/a&gt;,
 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 :  &lt;/p&gt;
+
+&lt;ul&gt;
+&lt;li&gt;Docker&lt;/li&gt;
+&lt;li&gt;Joyent Triton&lt;/li&gt;
+&lt;li&gt;Amazon EC2 Container Service&lt;/li&gt;
+&lt;li&gt;Google Kubernetes&lt;/li&gt;
+&lt;/ul&gt;
+
+&lt;p&gt;In this tutorial we&amp;#39;re going to explore how to do 
this:&lt;/p&gt;
+
+&lt;div class=&quot;imginline&quot;&gt;
+  &lt;img 
src=&quot;/images/posts/2016-02-05-containers/container_cloud_example.png&quot; 
class=&quot;img-responsive inline&quot; /&gt;
+  &lt;p class=&quot;img-caption&quot;&gt;Deploying containers across 
platforms.&lt;/p&gt;
+&lt;/div&gt;
+
+&lt;p&gt;Pulling images from the Docker hub, deploying to Docker, Kubernetes 
and Amazon ECS then auditing them with a single query.&lt;/p&gt;
+
+&lt;h2&gt;Getting Started with 1.0.0-pre1&lt;/h2&gt;
+
+&lt;p&gt;First off, let&amp;#39;s install the new packages, you probably want 
to do this within a virtualenv if you&amp;#39;re using Apache Libcloud for 
other projects. &lt;/p&gt;
+
+&lt;p&gt;So run these commands at a Linux Shell to create a virtualenv called 
&amp;#39;containers&amp;#39; and install the pre-release packages into that 
environment.&lt;/p&gt;
+&lt;div class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;bash 
language-bash&quot; data-lang=&quot;bash&quot;&gt;   virtualenv containers
+   &lt;span class=&quot;nb&quot;&gt;cd &lt;/span&gt;containers
+   &lt;span class=&quot;nb&quot;&gt;source &lt;/span&gt;bin/activate
+   pip install apache-libcloud&lt;span 
class=&quot;o&quot;&gt;==&lt;/span&gt;1.0.0-pre1
+&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
+&lt;p&gt;Now you can start using this package with a test script, 
let&amp;#39;s create one called containers.py&lt;/p&gt;
+&lt;div class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;bash 
language-bash&quot; data-lang=&quot;bash&quot;&gt;   touch containers.py
+&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
+&lt;p&gt;Using your favourite text editor, update that file to import the 
1.0.0-pre1 libraries and the factory methods for instantiating 
containers.&lt;/p&gt;
+&lt;div class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;python 
language-python&quot; data-lang=&quot;python&quot;&gt;   &lt;span 
class=&quot;kn&quot;&gt;from&lt;/span&gt; &lt;span 
class=&quot;nn&quot;&gt;libcloud.container.providers&lt;/span&gt; &lt;span 
class=&quot;kn&quot;&gt;import&lt;/span&gt; &lt;span 
class=&quot;n&quot;&gt;get_driver&lt;/span&gt;
+   &lt;span class=&quot;kn&quot;&gt;from&lt;/span&gt; &lt;span 
class=&quot;nn&quot;&gt;libcloud.container.types&lt;/span&gt; &lt;span 
class=&quot;kn&quot;&gt;import&lt;/span&gt; &lt;span 
class=&quot;n&quot;&gt;Provider&lt;/span&gt;
+&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
+&lt;p&gt;&lt;code&gt;get_driver&lt;/code&gt; is a factory method as with all 
libcloud APIs, you call this method with the &lt;code&gt;Provider&lt;/code&gt; 
that you want to instantiate. Our options are:&lt;/p&gt;
+
+&lt;ul&gt;
+&lt;li&gt;&lt;code&gt;Provider.DOCKER&lt;/code&gt; - Standalone Docker 
API&lt;/li&gt;
+&lt;li&gt;&lt;code&gt;Provider.KUBERNETES&lt;/code&gt; - Kubernetes Cluster 
endpoint&lt;/li&gt;
+&lt;li&gt;&lt;code&gt;Provider.JOYENT&lt;/code&gt; - Joyent Triton Public 
API&lt;/li&gt;
+&lt;li&gt;&lt;code&gt;Provider.ECS&lt;/code&gt; - Amazon EC2 Container 
Service&lt;/li&gt;
+&lt;/ul&gt;
+
+&lt;p&gt;Calling &lt;code&gt;get_driver&lt;/code&gt; 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.&lt;/p&gt;
+&lt;div class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;python 
language-python&quot; data-lang=&quot;python&quot;&gt;   &lt;span 
class=&quot;n&quot;&gt;driver&lt;/span&gt; &lt;span 
class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span 
class=&quot;n&quot;&gt;get_driver&lt;/span&gt;&lt;span 
class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span 
class=&quot;n&quot;&gt;Provider&lt;/span&gt;&lt;span 
class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span 
class=&quot;n&quot;&gt;DOCKER&lt;/span&gt;&lt;span 
class=&quot;p&quot;&gt;)&lt;/span&gt;
+&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
+&lt;p&gt;Now we can call our driver and get an instance of it called 
&lt;code&gt;docker_driver&lt;/code&gt; 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.&lt;/p&gt;
+&lt;div class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;python 
language-python&quot; data-lang=&quot;python&quot;&gt;   &lt;span 
class=&quot;n&quot;&gt;docker_driver&lt;/span&gt; &lt;span 
class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span 
class=&quot;n&quot;&gt;driver&lt;/span&gt;&lt;span 
class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span 
class=&quot;n&quot;&gt;host&lt;/span&gt;&lt;span 
class=&quot;o&quot;&gt;=&lt;/span&gt;&lt;span 
class=&quot;s&quot;&gt;&amp;#39;https://198.61.239.128&amp;#39;&lt;/span&gt;&lt;span
 class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span 
class=&quot;n&quot;&gt;port&lt;/span&gt;&lt;span 
class=&quot;o&quot;&gt;=&lt;/span&gt;&lt;span 
class=&quot;mi&quot;&gt;4243&lt;/span&gt;&lt;span 
class=&quot;p&quot;&gt;,&lt;/span&gt;
+             &lt;span class=&quot;n&quot;&gt;key_file&lt;/span&gt;&lt;span 
class=&quot;o&quot;&gt;=&lt;/span&gt;&lt;span 
class=&quot;s&quot;&gt;&amp;#39;key.pem&amp;#39;&lt;/span&gt;&lt;span 
class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span 
class=&quot;n&quot;&gt;cert_file&lt;/span&gt;&lt;span 
class=&quot;o&quot;&gt;=&lt;/span&gt;&lt;span 
class=&quot;s&quot;&gt;&amp;#39;cert.pem&amp;#39;&lt;/span&gt;&lt;span 
class=&quot;p&quot;&gt;)&lt;/span&gt;
+&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
+&lt;p&gt;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. &lt;/p&gt;
+&lt;div class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;python 
language-python&quot; data-lang=&quot;python&quot;&gt;   &lt;span 
class=&quot;n&quot;&gt;image&lt;/span&gt; &lt;span 
class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span 
class=&quot;n&quot;&gt;driver&lt;/span&gt;&lt;span 
class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span 
class=&quot;n&quot;&gt;install_image&lt;/span&gt;&lt;span 
class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span 
class=&quot;s&quot;&gt;&amp;#39;tomcat:8.0&amp;#39;&lt;/span&gt;&lt;span 
class=&quot;p&quot;&gt;)&lt;/span&gt;
+&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
+&lt;p&gt;Now that Docker has the version 8.0 image of Apache Tomcat, you can 
deploy this as a container called &lt;code&gt;my_tomcat_container&lt;/code&gt;. 
Tomcat runs on TCP/8080 by default so we 
+want to bind that port for our container using an optional parameter 
&lt;code&gt;port_bindings&lt;/code&gt;&lt;/p&gt;
+&lt;div class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;python 
language-python&quot; data-lang=&quot;python&quot;&gt;   &lt;span 
class=&quot;n&quot;&gt;bindings&lt;/span&gt; &lt;span 
class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span 
class=&quot;p&quot;&gt;{&lt;/span&gt; &lt;span 
class=&quot;s&quot;&gt;&amp;quot;22/tcp&amp;quot;&lt;/span&gt;&lt;span 
class=&quot;p&quot;&gt;:&lt;/span&gt; &lt;span 
class=&quot;p&quot;&gt;[{&lt;/span&gt; &lt;span 
class=&quot;s&quot;&gt;&amp;quot;HostPort&amp;quot;&lt;/span&gt;&lt;span 
class=&quot;p&quot;&gt;:&lt;/span&gt; &lt;span 
class=&quot;s&quot;&gt;&amp;quot;11022&amp;quot;&lt;/span&gt; &lt;span 
class=&quot;p&quot;&gt;}]&lt;/span&gt; &lt;span 
class=&quot;p&quot;&gt;}&lt;/span&gt;
+   &lt;span class=&quot;n&quot;&gt;container&lt;/span&gt; &lt;span 
class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span 
class=&quot;n&quot;&gt;driver&lt;/span&gt;&lt;span 
class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span 
class=&quot;n&quot;&gt;deploy_container&lt;/span&gt;&lt;span 
class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span 
class=&quot;s&quot;&gt;&amp;#39;my_tomcat_container&amp;#39;&lt;/span&gt;&lt;span
 class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span 
class=&quot;n&quot;&gt;image&lt;/span&gt;&lt;span 
class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span 
class=&quot;n&quot;&gt;port_bindings&lt;/span&gt;&lt;span 
class=&quot;o&quot;&gt;=&lt;/span&gt;&lt;span 
class=&quot;n&quot;&gt;bindings&lt;/span&gt;&lt;span 
class=&quot;p&quot;&gt;)&lt;/span&gt;
+&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
+&lt;p&gt;This will have deployed the container and started it up for you, you 
can disable the automatic startup by using &lt;code&gt;start=False&lt;/code&gt; 
as a keyword argument. You can now call upon this container and 
+run methods, &lt;code&gt;restart&lt;/code&gt;, &lt;code&gt;start&lt;/code&gt;, 
&lt;code&gt;stop&lt;/code&gt; and &lt;code&gt;destroy&lt;/code&gt;.&lt;/p&gt;
+
+&lt;p&gt;For example, to blow away that test container: &lt;/p&gt;
+&lt;div class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;python 
language-python&quot; data-lang=&quot;python&quot;&gt;   &lt;span 
class=&quot;n&quot;&gt;container&lt;/span&gt;&lt;span 
class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span 
class=&quot;n&quot;&gt;destroy&lt;/span&gt;&lt;span 
class=&quot;p&quot;&gt;()&lt;/span&gt;
+&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
+&lt;h2&gt;Crossing the streams; calling Kubernetes and Amazon EC2 Container 
Service&lt;/h2&gt;
+
+&lt;p&gt;With Docker we saw that we needed to &amp;quot;pull&amp;quot; the 
image before we deployed it. Kubernetes and Amazon ECS don&amp;#39;t have that 
requirement, but as a safeguard you can query the Docker Hub API using a 
+utility class provided&lt;/p&gt;
+&lt;div class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;python 
language-python&quot; data-lang=&quot;python&quot;&gt;   &lt;span 
class=&quot;kn&quot;&gt;from&lt;/span&gt; &lt;span 
class=&quot;nn&quot;&gt;libcloud.container.utils.docker&lt;/span&gt; &lt;span 
class=&quot;kn&quot;&gt;import&lt;/span&gt; &lt;span 
class=&quot;n&quot;&gt;HubClient&lt;/span&gt;
+   &lt;span class=&quot;n&quot;&gt;hub&lt;/span&gt; &lt;span 
class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span 
class=&quot;n&quot;&gt;HubClient&lt;/span&gt;&lt;span 
class=&quot;p&quot;&gt;()&lt;/span&gt;
+   &lt;span class=&quot;n&quot;&gt;image&lt;/span&gt; &lt;span 
class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span 
class=&quot;n&quot;&gt;hub&lt;/span&gt;&lt;span 
class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span 
class=&quot;n&quot;&gt;get_image&lt;/span&gt;&lt;span 
class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span 
class=&quot;s&quot;&gt;&amp;#39;tomcat&amp;#39;&lt;/span&gt;&lt;span 
class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span 
class=&quot;s&quot;&gt;&amp;#39;8.0&amp;#39;&lt;/span&gt;&lt;span 
class=&quot;p&quot;&gt;)&lt;/span&gt;
+&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
+&lt;p&gt;Now &lt;code&gt;image&lt;/code&gt; can be used to deploy to any 
driver instance that you create. Let&amp;#39;s try that against Kubernetes and 
ECS.&lt;/p&gt;
+
+&lt;h3&gt;Amazon ECS&lt;/h3&gt;
+
+&lt;p&gt;Before you run this example, you will need an API key and the 
permissions for that key to have the 
&lt;code&gt;AmazonEC2ContainerServiceFullAccess&lt;/code&gt; role. 
&lt;code&gt;ap-southeast-2&lt;/code&gt; is my nearest region, but you can 
+swap this out for any of the Amazon public regions that have the ECS service 
available. &lt;/p&gt;
+&lt;div class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;python 
language-python&quot; data-lang=&quot;python&quot;&gt;   &lt;span 
class=&quot;n&quot;&gt;e_cls&lt;/span&gt; &lt;span 
class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span 
class=&quot;n&quot;&gt;get_driver&lt;/span&gt;&lt;span 
class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span 
class=&quot;n&quot;&gt;Provider&lt;/span&gt;&lt;span 
class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span 
class=&quot;n&quot;&gt;ECS&lt;/span&gt;&lt;span 
class=&quot;p&quot;&gt;)&lt;/span&gt;
+   &lt;span class=&quot;n&quot;&gt;ecs&lt;/span&gt; &lt;span 
class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span 
class=&quot;n&quot;&gt;e_cls&lt;/span&gt;&lt;span 
class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span 
class=&quot;n&quot;&gt;access_id&lt;/span&gt;&lt;span 
class=&quot;o&quot;&gt;=&lt;/span&gt;&lt;span 
class=&quot;s&quot;&gt;&amp;#39;SDHFISJDIFJSIDFJ&amp;#39;&lt;/span&gt;&lt;span 
class=&quot;p&quot;&gt;,&lt;/span&gt;
+               &lt;span class=&quot;n&quot;&gt;secret&lt;/span&gt;&lt;span 
class=&quot;o&quot;&gt;=&lt;/span&gt;&lt;span 
class=&quot;s&quot;&gt;&amp;#39;THIS_IS)+_MY_SECRET_KEY+I6TVkv68o4H&amp;#39;&lt;/span&gt;&lt;span
 class=&quot;p&quot;&gt;,&lt;/span&gt;
+               &lt;span class=&quot;n&quot;&gt;region&lt;/span&gt;&lt;span 
class=&quot;o&quot;&gt;=&lt;/span&gt;&lt;span 
class=&quot;s&quot;&gt;&amp;#39;ap-southeast-2&amp;#39;&lt;/span&gt;&lt;span 
class=&quot;p&quot;&gt;)&lt;/span&gt;
+&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
+&lt;p&gt;ECS and Kubernetes both support some form of grouping or clustering 
for your containers. This is available as 
&lt;code&gt;create_cluster&lt;/code&gt;, 
&lt;code&gt;list_cluster&lt;/code&gt;.&lt;/p&gt;
+&lt;div class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;python 
language-python&quot; data-lang=&quot;python&quot;&gt;   &lt;span 
class=&quot;n&quot;&gt;cluster&lt;/span&gt; &lt;span 
class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span 
class=&quot;n&quot;&gt;ecs&lt;/span&gt;&lt;span 
class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span 
class=&quot;n&quot;&gt;create_cluster&lt;/span&gt;&lt;span 
class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span 
class=&quot;s&quot;&gt;&amp;#39;default&amp;#39;&lt;/span&gt;&lt;span 
class=&quot;p&quot;&gt;)&lt;/span&gt;
+   &lt;span class=&quot;n&quot;&gt;container&lt;/span&gt; &lt;span 
class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span 
class=&quot;n&quot;&gt;ecs&lt;/span&gt;&lt;span 
class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span 
class=&quot;n&quot;&gt;deploy_container&lt;/span&gt;&lt;span 
class=&quot;p&quot;&gt;(&lt;/span&gt;
+            &lt;span class=&quot;n&quot;&gt;cluster&lt;/span&gt;&lt;span 
class=&quot;o&quot;&gt;=&lt;/span&gt;&lt;span 
class=&quot;n&quot;&gt;cluster&lt;/span&gt;&lt;span 
class=&quot;p&quot;&gt;,&lt;/span&gt;
+            &lt;span class=&quot;n&quot;&gt;name&lt;/span&gt;&lt;span 
class=&quot;o&quot;&gt;=&lt;/span&gt;&lt;span 
class=&quot;s&quot;&gt;&amp;#39;hello-world&amp;#39;&lt;/span&gt;&lt;span 
class=&quot;p&quot;&gt;,&lt;/span&gt;
+            &lt;span class=&quot;n&quot;&gt;image&lt;/span&gt;&lt;span 
class=&quot;o&quot;&gt;=&lt;/span&gt;&lt;span 
class=&quot;n&quot;&gt;image&lt;/span&gt;&lt;span 
class=&quot;p&quot;&gt;,&lt;/span&gt;
+            &lt;span class=&quot;n&quot;&gt;start&lt;/span&gt;&lt;span 
class=&quot;o&quot;&gt;=&lt;/span&gt;&lt;span 
class=&quot;bp&quot;&gt;False&lt;/span&gt;&lt;span 
class=&quot;p&quot;&gt;,&lt;/span&gt;
+            &lt;span 
class=&quot;n&quot;&gt;ex_container_port&lt;/span&gt;&lt;span 
class=&quot;o&quot;&gt;=&lt;/span&gt;&lt;span 
class=&quot;mi&quot;&gt;8080&lt;/span&gt;&lt;span 
class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span 
class=&quot;n&quot;&gt;ex_host_port&lt;/span&gt;&lt;span 
class=&quot;o&quot;&gt;=&lt;/span&gt;&lt;span 
class=&quot;mi&quot;&gt;8080&lt;/span&gt;&lt;span 
class=&quot;p&quot;&gt;)&lt;/span&gt;
+&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
+&lt;p&gt;This will have deployed a task definition in Amazon ECS with a single 
container inside, with a cluster called &amp;#39;main&amp;#39; and deployed the 
tomcat:8.0 image from the Docker hub to that region. &lt;/p&gt;
+
+&lt;p&gt;Check out the &lt;a 
href=&quot;http://libcloud.readthedocs.org/en/latest/container/drivers/ecs.html&quot;&gt;ECS
 Documentation&lt;/a&gt; for more details.&lt;/p&gt;
+
+&lt;h3&gt;Kubernetes&lt;/h3&gt;
+
+&lt;p&gt;Kubernetes authentication is currently only implemented for None 
(off) and Basic HTTP authentication. Let&amp;#39;s use the &lt;a 
href=&quot;http://kubernetes.io/v1.1/docs/admin/authentication.html&quot;&gt;basic
 HTTP authentication method&lt;/a&gt; to connect.&lt;/p&gt;
+&lt;div class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;python 
language-python&quot; data-lang=&quot;python&quot;&gt;&lt;span 
class=&quot;n&quot;&gt;k_cls&lt;/span&gt; &lt;span 
class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span 
class=&quot;n&quot;&gt;get_driver&lt;/span&gt;&lt;span 
class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span 
class=&quot;n&quot;&gt;Provider&lt;/span&gt;&lt;span 
class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span 
class=&quot;n&quot;&gt;KUBERNETES&lt;/span&gt;&lt;span 
class=&quot;p&quot;&gt;)&lt;/span&gt;
+
+&lt;span class=&quot;n&quot;&gt;kubernetes&lt;/span&gt; &lt;span 
class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span 
class=&quot;n&quot;&gt;k_cls&lt;/span&gt;&lt;span 
class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span 
class=&quot;n&quot;&gt;key&lt;/span&gt;&lt;span 
class=&quot;o&quot;&gt;=&lt;/span&gt;&lt;span 
class=&quot;s&quot;&gt;&amp;#39;my_username&amp;#39;&lt;/span&gt;&lt;span 
class=&quot;p&quot;&gt;,&lt;/span&gt;
+                   &lt;span class=&quot;n&quot;&gt;secret&lt;/span&gt;&lt;span 
class=&quot;o&quot;&gt;=&lt;/span&gt;&lt;span 
class=&quot;s&quot;&gt;&amp;#39;THIS_IS)+_MY_SECRET_KEY+I6TVkv68o4H&amp;#39;&lt;/span&gt;&lt;span
 class=&quot;p&quot;&gt;,&lt;/span&gt;
+                   &lt;span class=&quot;n&quot;&gt;host&lt;/span&gt;&lt;span 
class=&quot;o&quot;&gt;=&lt;/span&gt;&lt;span 
class=&quot;s&quot;&gt;&amp;#39;126.32.21.4&amp;#39;&lt;/span&gt;&lt;span 
class=&quot;p&quot;&gt;)&lt;/span&gt;
+&lt;span class=&quot;n&quot;&gt;cluster2&lt;/span&gt; &lt;span 
class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span 
class=&quot;n&quot;&gt;kubernetes&lt;/span&gt;&lt;span 
class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span 
class=&quot;n&quot;&gt;create_cluster&lt;/span&gt;&lt;span 
class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span 
class=&quot;s&quot;&gt;&amp;#39;default&amp;#39;&lt;/span&gt;&lt;span 
class=&quot;p&quot;&gt;)&lt;/span&gt;
+&lt;span class=&quot;n&quot;&gt;container2&lt;/span&gt; &lt;span 
class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span 
class=&quot;n&quot;&gt;kubernetes&lt;/span&gt;&lt;span 
class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span 
class=&quot;n&quot;&gt;deploy_container&lt;/span&gt;&lt;span 
class=&quot;p&quot;&gt;(&lt;/span&gt;
+            &lt;span class=&quot;n&quot;&gt;cluster&lt;/span&gt;&lt;span 
class=&quot;o&quot;&gt;=&lt;/span&gt;&lt;span 
class=&quot;n&quot;&gt;cluster&lt;/span&gt;&lt;span 
class=&quot;p&quot;&gt;,&lt;/span&gt;
+            &lt;span class=&quot;n&quot;&gt;name&lt;/span&gt;&lt;span 
class=&quot;o&quot;&gt;=&lt;/span&gt;&lt;span 
class=&quot;s&quot;&gt;&amp;#39;hello-world&amp;#39;&lt;/span&gt;&lt;span 
class=&quot;p&quot;&gt;,&lt;/span&gt;
+            &lt;span class=&quot;n&quot;&gt;image&lt;/span&gt;&lt;span 
class=&quot;o&quot;&gt;=&lt;/span&gt;&lt;span 
class=&quot;n&quot;&gt;image&lt;/span&gt;&lt;span 
class=&quot;p&quot;&gt;,&lt;/span&gt;
+            &lt;span class=&quot;n&quot;&gt;start&lt;/span&gt;&lt;span 
class=&quot;o&quot;&gt;=&lt;/span&gt;&lt;span 
class=&quot;bp&quot;&gt;False&lt;/span&gt;&lt;span 
class=&quot;p&quot;&gt;)&lt;/span&gt;
+&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
+&lt;h2&gt;Wrapping it up&lt;/h2&gt;
+
+&lt;p&gt;Now, let&amp;#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&amp;#39;s and Names. Then delete them.&lt;/p&gt;
+&lt;div class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;python 
language-python&quot; data-lang=&quot;python&quot;&gt;&lt;span 
class=&quot;n&quot;&gt;containers&lt;/span&gt; &lt;span 
class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span 
class=&quot;p&quot;&gt;[&lt;/span&gt;&lt;span 
class=&quot;n&quot;&gt;conn&lt;/span&gt;&lt;span 
class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span 
class=&quot;n&quot;&gt;list_containers&lt;/span&gt;&lt;span 
class=&quot;p&quot;&gt;()&lt;/span&gt; &lt;span 
class=&quot;k&quot;&gt;for&lt;/span&gt; &lt;span 
class=&quot;n&quot;&gt;conn&lt;/span&gt; &lt;span 
class=&quot;ow&quot;&gt;in&lt;/span&gt; &lt;span 
class=&quot;p&quot;&gt;[&lt;/span&gt;&lt;span 
class=&quot;n&quot;&gt;docker&lt;/span&gt;&lt;span 
class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span 
class=&quot;n&quot;&gt;ecs&lt;/span&gt;&lt;span 
class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span 
class=&quot;n&quot;&gt;kubernetes&lt;/span&gt;&lt;span 
class=&quot;p&quot;&gt;]]&lt;/span&gt;
+&lt;span class=&quot;k&quot;&gt;for&lt;/span&gt; &lt;span 
class=&quot;n&quot;&gt;container&lt;/span&gt; &lt;span 
class=&quot;ow&quot;&gt;in&lt;/span&gt; &lt;span 
class=&quot;n&quot;&gt;containers&lt;/span&gt;&lt;span 
class=&quot;p&quot;&gt;:&lt;/span&gt;
+    &lt;span class=&quot;k&quot;&gt;print&lt;/span&gt;&lt;span 
class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span 
class=&quot;s&quot;&gt;&amp;quot;&lt;/span&gt;&lt;span 
class=&quot;si&quot;&gt;%s&lt;/span&gt;&lt;span class=&quot;s&quot;&gt; : 
&lt;/span&gt;&lt;span class=&quot;si&quot;&gt;%s&lt;/span&gt;&lt;span 
class=&quot;s&quot;&gt;&amp;quot;&lt;/span&gt; &lt;span 
class=&quot;o&quot;&gt;%&lt;/span&gt; &lt;span 
class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span 
class=&quot;n&quot;&gt;container&lt;/span&gt;&lt;span 
class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span 
class=&quot;n&quot;&gt;id&lt;/span&gt;&lt;span 
class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span 
class=&quot;n&quot;&gt;container&lt;/span&gt;&lt;span 
class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span 
class=&quot;n&quot;&gt;name&lt;/span&gt;&lt;span 
class=&quot;p&quot;&gt;))&lt;/span&gt;
+    &lt;span class=&quot;n&quot;&gt;container&lt;/span&gt;&lt;span 
class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span 
class=&quot;n&quot;&gt;destroy&lt;/span&gt;&lt;span 
class=&quot;p&quot;&gt;()&lt;/span&gt;
+&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
+&lt;h3&gt;About the Author&lt;/h3&gt;
+
+&lt;p&gt;Anthony Shaw is on the PMC for Apache Libcloud, you can follow 
Anthony on Twitter at &lt;a 
href=&quot;https://twitter.com/anthonypjshaw&quot;&gt;@anthonypjshaw&lt;/a&gt;.&lt;/p&gt;
+</content>
+  </entry>
+    
+  <entry>
+    <title>Libcloud 1.0.0-pre1 released</title>
+    <link 
href="https://libcloud.apache.org/blog/2016/01/26/libcloud-1-0-0-pre1-released.html";
 />
+    
<id>https://libcloud.apache.org/blog/2016/01/26/libcloud-1-0-0-pre1-released.html</id>
+    <updated>2016-01-26T00:00:00+11:00</updated>
+    <author>
+      <name>Anthony Shaw</name>
+    </author>
+    <content type="html">&lt;p&gt;We are pleased to announce the release of 
Libcloud 1.0.0-pre1.&lt;/p&gt;
+
+&lt;p&gt;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.&lt;/p&gt;
+
+&lt;h3&gt;Release highlights&lt;/h3&gt;
+
+&lt;p&gt;A full blog post on the new features in 1.0.0 can be found &lt;a 
href=&quot;http://libcloud.apache.org/blog/2016/01/20/libcloud-1.0-pre1.html&quot;&gt;here&lt;/a&gt;&lt;/p&gt;
+
+&lt;p&gt;This includes:&lt;/p&gt;
+
+&lt;ul&gt;
+&lt;li&gt;Introduction of Container-as-a-Service API drivers for &lt;a 
href=&quot;http://libcloud.readthedocs.org/en/latest/container/drivers/kubernetes.html&quot;&gt;Kubernetes&lt;/a&gt;,
 &lt;a 
href=&quot;http://libcloud.readthedocs.org/en/latest/container/drivers/docker.html&quot;&gt;Docker&lt;/a&gt;,
 &lt;a 
href=&quot;http://libcloud.readthedocs.org/en/latest/container/drivers/ecs.html&quot;&gt;Amazon
 ECS&lt;/a&gt; and &lt;a 
href=&quot;http://libcloud.readthedocs.org/en/latest/container/drivers/joyent.html&quot;&gt;Joyent
 Triton&lt;/a&gt;&lt;/li&gt;
+&lt;li&gt;Introduction of Backup-as-a-Service API&lt;/li&gt;
+&lt;li&gt;Addition of South Korea region for Amazon EC2&lt;/li&gt;
+&lt;/ul&gt;
+
+&lt;p&gt;Full change log can be found at &lt;a 
href=&quot;https://libcloud.readthedocs.org/en/latest/changelog.html&quot;&gt;here&lt;/a&gt;.&lt;/p&gt;
+
+&lt;h3&gt;Download&lt;/h3&gt;
+
+&lt;p&gt;The release can can be downloaded from
+&lt;a 
href=&quot;https://libcloud.apache.org/downloads.html&quot;&gt;https://libcloud.apache.org/downloads.html&lt;/a&gt;
 or installed using pip:&lt;/p&gt;
+
+&lt;pre&gt;
+pip install apache-libcloud==1.0.0-pre1
+&lt;/pre&gt;
+
+&lt;h3&gt;Upgrading&lt;/h3&gt;
+
+&lt;p&gt;If you have installed Libcloud using pip you can also use it to 
upgrade it:&lt;/p&gt;
+
+&lt;pre&gt;
+pip install --upgrade apache-libcloud==1.0.0-pre1
+&lt;/pre&gt;
+
+&lt;h3&gt;Upgrade notes&lt;/h3&gt;
+
+&lt;p&gt;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 &lt;a 
href=&quot;https://libcloud.readthedocs.org/en/latest/upgrade_notes.html&quot;&gt;https://libcloud.readthedocs.org/en/latest/upgrade_notes.html&lt;/a&gt;&lt;/p&gt;
+
+&lt;h3&gt;Documentation&lt;/h3&gt;
+
+&lt;p&gt;Regular and API documentation is available at &lt;a 
href=&quot;https://libcloud.readthedocs.org/en/latest/&quot;&gt;https://libcloud.readthedocs.org/en/latest/&lt;/a&gt;&lt;/p&gt;
+
+&lt;h3&gt;Bugs / Issues&lt;/h3&gt;
+
+&lt;p&gt;If you find any bug or issue, please report it on our issue tracker
+&lt;a 
href=&quot;https://issues.apache.org/jira/browse/LIBCLOUD&quot;&gt;https://issues.apache.org/jira/browse/LIBCLOUD&lt;/a&gt;.
+Don&amp;#39;t forget to attach an example and / or test which reproduces your
+problem.&lt;/p&gt;
+
+&lt;h3&gt;Thanks&lt;/h3&gt;
+
+&lt;p&gt;Thanks to everyone who contributed and made this release possible! 
Full
+list of people who contributed to this release can be found in the
+&lt;a 
href=&quot;https://libcloud.readthedocs.org/en/latest/changelog.html&quot;&gt;CHANGES
 file&lt;/a&gt;.&lt;/p&gt;
+</content>
+  </entry>
+    
+  <entry>
+    <title>Libcloud 1.0-pre1 open for feedback</title>
+    <link 
href="https://libcloud.apache.org/blog/2016/01/20/libcloud-1.0-pre1.html"; />
+    <id>https://libcloud.apache.org/blog/2016/01/20/libcloud-1.0-pre1.html</id>
+    <updated>2016-01-20T00:00:00+11:00</updated>
+    <author>
+      <name>Anthony Shaw</name>
+    </author>
+    <content type="html">&lt;p&gt;We are pleased to announce that version 
1.0-pre1 vote thread is open and the release is ready for community 
feedback.&lt;/p&gt;
+
+&lt;p&gt;1.0-pre1 marks the first pre-release of the 1.0 major release. Some 
years ago, Tomaz Muraus spoke on the podcast &lt;a 
href=&quot;https://twit.tv/shows/floss-weekly/episodes/181&quot;&gt;FLOSS 
weekly&lt;/a&gt;.
+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.&lt;/p&gt;
+
+&lt;p&gt;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.&lt;/p&gt;
+
+&lt;p&gt;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.&lt;/p&gt;
+
+&lt;p&gt;Anthony Shaw will be speaking on the FLOSS weekly podcast on February 
2nd and discussing our community and the project, so 
+please tune in. &lt;/p&gt;
+
+&lt;p&gt;The Cloud market as I&amp;#39;m sure you&amp;#39;re all aware of is 
thriving, the purpose of Libcloud was originally:&lt;/p&gt;
+
+&lt;ul&gt;
+&lt;li&gt;To help prevent lock-in to a particular vendor&lt;/li&gt;
+&lt;li&gt;To abstract the complexity of vendor APIs&lt;/li&gt;
+&lt;li&gt;To give a simple way for deploying to and managing multiple cloud 
vendors&lt;/li&gt;
+&lt;/ul&gt;
+
+&lt;p&gt;Since that we have had (at the last count) 2,118,539 downloads. The 
project continues to grow in popularity with each new release.&lt;/p&gt;
+
+&lt;p&gt;So with the 1.0 major release we would like to announce 2 new driver 
types, containers and backup.&lt;/p&gt;
+
+&lt;h2&gt;History of our drivers&lt;/h2&gt;
+
+&lt;p&gt;The compute (IaaS) API is what libcloud is best known for but there 
is a range of drivers available for many other capabilities.&lt;/p&gt;
+
+&lt;p&gt;There is a presentation on the value of using Libcloud to avoid lock 
in &lt;a 
href=&quot;http://www.slideshare.net/AnthonyShaw5/apache-libcloud-keeping-up-with-the-cloud-market-in-2016&quot;&gt;on
 SlideShare&lt;/a&gt;&lt;/p&gt;
+
+&lt;p&gt;This is a history of the different driver types in the libcloud 
project.&lt;/p&gt;
+
+&lt;ul&gt;
+&lt;li&gt;Compute (v0.1.0)
+
+&lt;ul&gt;
+&lt;li&gt; Support for nodes, node images, locations, states&lt;/li&gt;
+&lt;li&gt; 52 providers including every major cloud provider in the market. 
Plus local services like Vmware, OpenStack, libvirt&lt;/li&gt;
+&lt;/ul&gt;&lt;/li&gt;
+&lt;li&gt;DNS (v0.6.0)
+
+&lt;ul&gt;
+&lt;li&gt; Support for zones, records, recordtypes&lt;/li&gt;
+&lt;li&gt; 19 providers including CloudFlare, DigitalOcean, DNSimple, GoDaddy, 
Google DNS, Linode, Rackspace, Amazon R53, Zerigo&lt;/li&gt;
+&lt;/ul&gt;&lt;/li&gt;
+&lt;li&gt;Object Storage (v0.5.0)
+
+&lt;ul&gt;
+&lt;li&gt; Support for containers and objects&lt;/li&gt;
+&lt;li&gt; 11 providers including Amazon S3, Azure Blobs, Google storage, 
CloudFiles, OpenStack Swift&lt;/li&gt;
+&lt;/ul&gt;&lt;/li&gt;
+&lt;li&gt;Load Balancer (v0.5.0)
+
+&lt;ul&gt;
+&lt;li&gt; Support for nodes, balancers, listeners and algorithms&lt;/li&gt;
+&lt;li&gt; 11 providers including CloudStack, Dimension Data, Amazon ELB, 
Google GCE LB, SoftLayer LB&lt;/li&gt;
+&lt;/ul&gt;&lt;/li&gt;
+&lt;li&gt;Backup (v0.20.0)
+
+&lt;ul&gt;
+&lt;li&gt; Support for backup targets, recovery points and jobs&lt;/li&gt;
+&lt;li&gt; 3 providers, Dimension Data, Amazon EBS snaps, Google 
snaps&lt;/li&gt;
+&lt;/ul&gt;&lt;/li&gt;
+&lt;/ul&gt;
+
+&lt;h2&gt;Introducing Backup Drivers&lt;/h2&gt;
+
+&lt;p&gt;With 1.0-pre1 we have introduced a new driver type for backup, 
&lt;code&gt;libcloud.backup&lt;/code&gt;&lt;/p&gt;
+
+&lt;p&gt;Backup API allows you to manage Backup as A Service and services such 
as EBS Snaps,
+GCE volume snap and dimension data backup.&lt;/p&gt;
+
+&lt;h3&gt;Terminology&lt;/h3&gt;
+
+&lt;ul&gt;
+&lt;li&gt;&lt;code&gt;libcloud.backup.base.BackupTarget&lt;/code&gt; - 
Represents a backup target, like a Virtual Machine, a folder or a 
database.&lt;/li&gt;
+&lt;li&gt;&lt;code&gt;libcloud.backup.base.BackupTargetRecoveryPoint&lt;/code&gt;
 - 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.&lt;/li&gt;
+&lt;li&gt;&lt;code&gt;libcloud.backup.base.BackupTargetJob&lt;/code&gt; - 
Represents a backup job running on backup target.&lt;/li&gt;
+&lt;/ul&gt;
+
+&lt;h2&gt;Introducing Container-as-a-Service Drivers&lt;/h2&gt;
+
+&lt;p&gt;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.&lt;/p&gt;
+
+&lt;p&gt;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.&lt;/p&gt;
+
+&lt;p&gt;&lt;a 
href=&quot;http://www.slideshare.net/AnthonyShaw5/introducing-container-asaservice-support-to-apache-libcloud&quot;&gt;A
 presentation on this topic is available on SlideShare.&lt;/a&gt;&lt;/p&gt;
+
+&lt;p&gt;&lt;strong&gt;Isn&amp;#39;t docker a standard?&lt;/strong&gt;
+Well, yes and no.&lt;/p&gt;
+
+&lt;p&gt;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. &lt;/p&gt;
+
+&lt;h3&gt;Container API design&lt;/h3&gt;
+
+&lt;p&gt;Container-as-a-Service providers will implement the 
&lt;code&gt;ContainerDriver&lt;/code&gt; class to provide functionality for 
:&lt;/p&gt;
+
+&lt;ul&gt;
+&lt;li&gt;Listing deployed containers&lt;/li&gt;
+&lt;li&gt;Starting, stopping and restarting containers (where 
supported)&lt;/li&gt;
+&lt;li&gt;Destroying containers&lt;/li&gt;
+&lt;li&gt;Creating/deploying containers&lt;/li&gt;
+&lt;li&gt;Listing container images&lt;/li&gt;
+&lt;li&gt;Installing container images (pulling an image from a local copy or 
remote repository)&lt;/li&gt;
+&lt;/ul&gt;
+
+&lt;h3&gt;Simple Container Support&lt;/h3&gt;
+
+&lt;ul&gt;
+&lt;li&gt;&lt;code&gt;libcloud.container.base.ContainerImage&lt;/code&gt; - 
Represents an image that can be deployed, like an application or an operating 
system&lt;/li&gt;
+&lt;li&gt;&lt;code&gt;libcloud.container.base.Container&lt;/code&gt; - 
Represents a deployed container image running on a container host&lt;/li&gt;
+&lt;/ul&gt;
+
+&lt;h3&gt;Cluster Suppport&lt;/h3&gt;
+
+&lt;p&gt;Cluster support extends on the basic driver functions, but where 
drivers implement the class-level attribute 
&lt;code&gt;supports_clusters&lt;/code&gt; as True
+clusters may be listed, created and destroyed. When containers are deployed, 
the target cluster can be specified.&lt;/p&gt;
+
+&lt;ul&gt;
+&lt;li&gt;&lt;code&gt;libcloud.container.base.ContainerCluster&lt;/code&gt; - 
Represents a deployed container image running on a container host&lt;/li&gt;
+&lt;li&gt;&lt;code&gt;libcloud.container.base.ClusterLocation&lt;/code&gt; - 
Represents a location for clusters to be deployed&lt;/li&gt;
+&lt;/ul&gt;
+
+&lt;h3&gt;Using the container drivers&lt;/h3&gt;
+
+&lt;p&gt;The container drivers have been designed around similar principles to 
the compute driver. It is simple to use and a flat class design. &lt;/p&gt;
+&lt;div class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;python 
language-python&quot; data-lang=&quot;python&quot;&gt;&lt;span 
class=&quot;kn&quot;&gt;from&lt;/span&gt; &lt;span 
class=&quot;nn&quot;&gt;libcloud.container.providers&lt;/span&gt; &lt;span 
class=&quot;kn&quot;&gt;import&lt;/span&gt; &lt;span 
class=&quot;n&quot;&gt;get_driver&lt;/span&gt;
+&lt;span class=&quot;kn&quot;&gt;from&lt;/span&gt; &lt;span 
class=&quot;nn&quot;&gt;libcloud.container.types&lt;/span&gt; &lt;span 
class=&quot;kn&quot;&gt;import&lt;/span&gt; &lt;span 
class=&quot;n&quot;&gt;Provider&lt;/span&gt;
+
+&lt;span class=&quot;n&quot;&gt;Cls&lt;/span&gt; &lt;span 
class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span 
class=&quot;n&quot;&gt;get_driver&lt;/span&gt;&lt;span 
class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span 
class=&quot;n&quot;&gt;Provider&lt;/span&gt;&lt;span 
class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span 
class=&quot;n&quot;&gt;DOCKER&lt;/span&gt;&lt;span 
class=&quot;p&quot;&gt;)&lt;/span&gt;
+&lt;span class=&quot;n&quot;&gt;driver&lt;/span&gt; &lt;span 
class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span 
class=&quot;n&quot;&gt;Cls&lt;/span&gt;&lt;span 
class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span 
class=&quot;s&quot;&gt;&amp;#39;user&amp;#39;&lt;/span&gt;&lt;span 
class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span 
class=&quot;s&quot;&gt;&amp;#39;api key&amp;#39;&lt;/span&gt;&lt;span 
class=&quot;p&quot;&gt;)&lt;/span&gt;
+
+&lt;span class=&quot;n&quot;&gt;image&lt;/span&gt; &lt;span 
class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span 
class=&quot;n&quot;&gt;driver&lt;/span&gt;&lt;span 
class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span 
class=&quot;n&quot;&gt;install_image&lt;/span&gt;&lt;span 
class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span 
class=&quot;s&quot;&gt;&amp;#39;tomcat:8.0&amp;#39;&lt;/span&gt;&lt;span 
class=&quot;p&quot;&gt;)&lt;/span&gt;
+&lt;span class=&quot;n&quot;&gt;container&lt;/span&gt; &lt;span 
class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span 
class=&quot;n&quot;&gt;driver&lt;/span&gt;&lt;span 
class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span 
class=&quot;n&quot;&gt;deploy_container&lt;/span&gt;&lt;span 
class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span 
class=&quot;s&quot;&gt;&amp;#39;tomcat&amp;#39;&lt;/span&gt;&lt;span 
class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span 
class=&quot;n&quot;&gt;image&lt;/span&gt;&lt;span 
class=&quot;p&quot;&gt;)&lt;/span&gt;
+
+&lt;span class=&quot;n&quot;&gt;container&lt;/span&gt;&lt;span 
class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span 
class=&quot;n&quot;&gt;restart&lt;/span&gt;&lt;span 
class=&quot;p&quot;&gt;()&lt;/span&gt;
+&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
+&lt;h3&gt;Container Registries&lt;/h3&gt;
+
+&lt;p&gt;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&amp;#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.&lt;/p&gt;
+&lt;div class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;python 
language-python&quot; data-lang=&quot;python&quot;&gt;&lt;span 
class=&quot;kn&quot;&gt;from&lt;/span&gt; &lt;span 
class=&quot;nn&quot;&gt;libcloud.container.utils.docker&lt;/span&gt; &lt;span 
class=&quot;kn&quot;&gt;import&lt;/span&gt; &lt;span 
class=&quot;n&quot;&gt;HubClient&lt;/span&gt; 
+&lt;span class=&quot;n&quot;&gt;hub&lt;/span&gt; &lt;span 
class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span 
class=&quot;n&quot;&gt;HubClient&lt;/span&gt;&lt;span 
class=&quot;p&quot;&gt;()&lt;/span&gt; 
+&lt;span class=&quot;n&quot;&gt;image&lt;/span&gt; &lt;span 
class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span 
class=&quot;n&quot;&gt;hub&lt;/span&gt;&lt;span 
class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span 
class=&quot;n&quot;&gt;get_image&lt;/span&gt;&lt;span 
class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span 
class=&quot;s&quot;&gt;&amp;#39;ubuntu&amp;#39;&lt;/span&gt;&lt;span 
class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span 
class=&quot;s&quot;&gt;&amp;#39;latest&amp;#39;&lt;/span&gt;&lt;span 
class=&quot;p&quot;&gt;)&lt;/span&gt; 
+&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
+&lt;p&gt;When other container registry services are made available these can 
be provided in a similar context.&lt;/p&gt;
+
+&lt;h3&gt;Prototype drivers in libcloud.container&lt;/h3&gt;
+
+&lt;p&gt;Drivers have been provided to show example implementations of the 
API, these drivers are &lt;strong&gt;experimental&lt;/strong&gt; and need to go 
through more thorough community testing
+before they are ready for a stable release.&lt;/p&gt;
+
+&lt;ul&gt;
+&lt;li&gt;&lt;a 
href=&quot;http://libcloud.readthedocs.org/en/latest/container/drivers/docker.html&quot;&gt;Docker&lt;/a&gt;&lt;/li&gt;
+&lt;li&gt;&lt;a 
href=&quot;http://libcloud.readthedocs.org/en/latest/container/drivers/joyent.html&quot;&gt;Joyent
 Triton&lt;/a&gt;&lt;/li&gt;
+&lt;li&gt;&lt;a 
href=&quot;http://libcloud.readthedocs.org/en/latest/container/drivers/kubernetes.html&quot;&gt;Google
 Kubernetes&lt;/a&gt; &lt;/li&gt;
+&lt;li&gt;&lt;a 
href=&quot;http://libcloud.readthedocs.org/en/latest/container/drivers/ecs.html&quot;&gt;Amazon
 Elastic Container Service (as well as Amazon Container Registry 
Service)&lt;/a&gt;&lt;/li&gt;
+&lt;/ul&gt;
+
+&lt;p&gt;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.&lt;/p&gt;
+
+&lt;h1&gt;Providing feedback&lt;/h1&gt;
+
+&lt;p&gt;The &lt;a 
href=&quot;http://mail-archives.apache.org/mod_mbox/libcloud-dev/201601.mbox/%3CCAOZ4b6sJM8ofMinGJCpfJEq7BYcAbfJBVCE7cfPniESqkEpkPQ%40mail.gmail.com%3E&quot;&gt;voting
 thread&lt;/a&gt; is open, please use this as your opportunity to give 
feedback.&lt;/p&gt;
+
+&lt;h1&gt;Thanks&lt;/h1&gt;
+
+&lt;p&gt;Thanks to everyone who contributed and made this release possible! 
Full
+list of people who contributed to this release can be found in the
+&lt;a 
href=&quot;https://libcloud.readthedocs.org/en/latest/changelog.html&quot;&gt;CHANGES
 file&lt;/a&gt;.&lt;/p&gt;
+</content>
+  </entry>
+    
+  <entry>
+    <title>Libcloud 0.20.1 released</title>
+    <link 
href="https://libcloud.apache.org/blog/2016/01/19/libcloud-0-20-1-released.html";
 />
+    
<id>https://libcloud.apache.org/blog/2016/01/19/libcloud-0-20-1-released.html</id>
+    <updated>2016-01-19T00:00:00+11:00</updated>
+    <author>
+      <name>Eric Johnson</name>
+    </author>
+    <content type="html">&lt;p&gt;We are pleased to announce the release of 
Libcloud 0.20.1.&lt;/p&gt;
+
+&lt;p&gt;This is a bug-fix release in the 0.20 series.&lt;/p&gt;
+
+&lt;h3&gt;Release highlights&lt;/h3&gt;
+
+&lt;ul&gt;
+&lt;li&gt;Allow for old and new style service accounts for GCE 
driver&lt;/li&gt;
+&lt;li&gt;Fix syntax error with DimensionDataStatus object&lt;/li&gt;
+&lt;li&gt;Fix bug in public IP addition command for DimensionData 
driver&lt;/li&gt;
+&lt;li&gt;Fix error with proxy_url with vCloud Compute driver.&lt;/li&gt;
+&lt;li&gt;Fix with hasattr for Rackspace DNS driver.&lt;/li&gt;
+&lt;/ul&gt;
+
+&lt;p&gt;Full change log can be found at &lt;a 
href=&quot;https://libcloud.readthedocs.org/en/latest/changelog.html&quot;&gt;here&lt;/a&gt;.&lt;/p&gt;
+
+&lt;h3&gt;Download&lt;/h3&gt;
+
+&lt;p&gt;The release can can be downloaded from
+&lt;a 
href=&quot;https://libcloud.apache.org/downloads.html&quot;&gt;https://libcloud.apache.org/downloads.html&lt;/a&gt;
 or installed using pip:&lt;/p&gt;
+
+&lt;pre&gt;
+pip install apache-libcloud==0.20.1
+&lt;/pre&gt;
+
+&lt;h3&gt;Upgrading&lt;/h3&gt;
+
+&lt;p&gt;If you have installed Libcloud using pip you can also use it to 
upgrade it:&lt;/p&gt;
+
+&lt;pre&gt;
+pip install --upgrade apache-libcloud==0.20.1
+&lt;/pre&gt;
+
+&lt;h3&gt;Upgrade notes&lt;/h3&gt;
+
+&lt;p&gt;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 &lt;a 
href=&quot;https://libcloud.readthedocs.org/en/latest/upgrade_notes.html&quot;&gt;https://libcloud.readthedocs.org/en/latest/upgrade_notes.html&lt;/a&gt;&lt;/p&gt;
+
+&lt;h3&gt;Documentation&lt;/h3&gt;
+
+&lt;p&gt;Regular and API documentation is available at &lt;a 
href=&quot;https://libcloud.readthedocs.org/en/latest/&quot;&gt;https://libcloud.readthedocs.org/en/latest/&lt;/a&gt;&lt;/p&gt;
+
+&lt;h3&gt;Bugs / Issues&lt;/h3&gt;
+
+&lt;p&gt;If you find any bug or issue, please report it on our issue tracker
+&lt;a 
href=&quot;https://issues.apache.org/jira/browse/LIBCLOUD&quot;&gt;https://issues.apache.org/jira/browse/LIBCLOUD&lt;/a&gt;.
+Don&amp;#39;t forget to attach an example and / or test which reproduces your
+problem.&lt;/p&gt;
+
+&lt;h3&gt;Thanks&lt;/h3&gt;
+
+&lt;p&gt;Thanks to everyone who contributed and made this release possible! 
Full
+list of people who contributed to this release can be found in the
+&lt;a 
href=&quot;https://libcloud.readthedocs.org/en/latest/changelog.html&quot;&gt;CHANGES
 file&lt;/a&gt;.&lt;/p&gt;
+</content>
+  </entry>
+    
+  <entry>
+    <title>Notice for Linode users</title>
+    <link 
href="https://libcloud.apache.org/blog/2016/01/14/notice-for-linode-users.html"; 
/>
+    
<id>https://libcloud.apache.org/blog/2016/01/14/notice-for-linode-users.html</id>
+    <updated>2016-01-14T00:00:00+11:00</updated>
+    <author>
+      <name>Tomaz Muraus</name>
+    </author>
+    <content type="html">&lt;p&gt;This is an announcement for users of the 
Linode driver for Libcloud who might
+have started experiencing issues recently.&lt;/p&gt;
+
+&lt;h2&gt;Background&lt;/h2&gt;
+
+&lt;p&gt;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.&lt;/p&gt;
+
+&lt;pre&gt;
+socket.error: [Errno 104] Connection reset by peer
+&lt;/pre&gt;
+
+&lt;p&gt;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.&lt;/p&gt;
+
+&lt;p&gt;Linode recently dropped support for TLS v1.0 and it now only support 
TLS &amp;gt;=
+v1.1. This means Libcloud won&amp;#39;t work out of the box anymore.&lt;/p&gt;
+
+&lt;h2&gt;Solution&lt;/h2&gt;
+
+&lt;p&gt;If you are experiencing this issue, you should update your code to 
use TLS v1.2
+or TLS v1.1 as shown below.&lt;/p&gt;
+&lt;div class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;text 
language-text&quot; data-lang=&quot;text&quot;&gt;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...
+&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
+&lt;p&gt;Keep in mind that for this to work you need to have a recent version 
of OpenSSL

[... 103 lines stripped ...]


Reply via email to