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">"schaubl"</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">"MrBasset"</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">'us-east-i1'</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">'access key'</span><span class="p">,</span> <span class="s">'secret key'</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 "No address associated with hostname". +(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'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'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">'us-east-i1'</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">'access key'</span><span class="p">,</span> <span class="s">'secret key'</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 "No address associated with hostname". +(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'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'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'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->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'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've since fixed them all since they were coupled to the original implementation, but now I don'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'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'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's time to have a spring clean of the compute drivers. Granted, it's not spring everywhere -actually +I'm writing from Sydney, Australia where it'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't work, can'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'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'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's install the new packages, you probably want to do this within a virtualenv if you're using Apache Libcloud for other projects. </p> + +<p>So run these commands at a Linux Shell to create a virtualenv called 'containers' 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'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">'https://198.61.239.128'</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">'key.pem'</span><span class="p">,</span> <span class="n">cert_file</span><span class="o">=</span><span class="s">'cert.pem'</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">'tomcat:8.0'</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">"22/tcp"</span><span class="p">:</span> <span class="p">[{</span> <span class="s">"HostPort"</span><span class="p">:</span> <span class="s">"11022"</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">'my_tomcat_container'</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 "pull" the image before we deployed it. Kubernetes and Amazon ECS don'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">'tomcat'</span><span class="p">,</span> <span class="s">'8.0'</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'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">'SDHFISJDIFJSIDFJ'</span><span class="p">,</span> + <span class="n">secret</span><span class="o">=</span><span class="s">'THIS_IS)+_MY_SECRET_KEY+I6TVkv68o4H'</span><span class="p">,</span> + <span class="n">region</span><span class="o">=</span><span class="s">'ap-southeast-2'</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">'default'</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">'hello-world'</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 'main' 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'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">'my_username'</span><span class="p">,</span> + <span class="n">secret</span><span class="o">=</span><span class="s">'THIS_IS)+_MY_SECRET_KEY+I6TVkv68o4H'</span><span class="p">,</span> + <span class="n">host</span><span class="o">=</span><span class="s">'126.32.21.4'</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">'default'</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">'hello-world'</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'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'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">"</span><span class="si">%s</span><span class="s"> : </span><span class="si">%s</span><span class="s">"</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'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'm sure you'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'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">'user'</span><span class="p">,</span> <span class="s">'api key'</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">'tomcat:8.0'</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">'tomcat'</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'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">'ubuntu'</span><span class="p">,</span> <span class="s">'latest'</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'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 >= +v1.1. This means Libcloud won'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 >= 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'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 & us-east-2 regions to the OUTSCALE<em>INC & 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'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'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 ...]
