Modified: libcloud/site/trunk/generated/blog/page/4/index.html URL: http://svn.apache.org/viewvc/libcloud/site/trunk/generated/blog/page/4/index.html?rev=1873342&r1=1873341&r2=1873342&view=diff ============================================================================== --- libcloud/site/trunk/generated/blog/page/4/index.html (original) +++ libcloud/site/trunk/generated/blog/page/4/index.html Wed Jan 29 21:51:53 2020 @@ -47,7 +47,7 @@ - <link href='/assets/global-140a5c5bd4aaacea6b89074520e5562b.css' rel='stylesheet' type='text/css' /> + <link href='/assets/global-73ae5b95993dad7a856dae3f60df3e3c.css' rel='stylesheet' type='text/css' /> </head> @@ -97,6 +97,175 @@ <div class="post"> + <h2><a href="/blog/2017/04/09/async-rfc.html">Have your say - async support in Apache Libcloud</a></h2> + + + + + + <span class="post-date-author">By Anthony Shaw on Apr 09, 2017</span> + + <div class="post-content"> + <p>One of the big requests whilst we were replacing <code>httplib</code> with the <code>requests</code> package in 2.0 was why didn't +we use a HTTP library that supports <em>asynchronous</em> API calls.</p> + +<p>The intention for 2.0 and replacing the HTTP backend classes was to improve the usability of the project, by making SSL +certificates easier to manage, improving the maintainability of our source code by using an active 3rd party package and +also improving performance and stability.</p> + +<p>Apache Libcloud already has documentation on threaded libraries like gevent and callback-based libraries like Twisted, see +<a href="https://libcloud.readthedocs.io/en/latest/other/using-libcloud-in-multithreaded-and-async-environments.html">using libcloud in multithreaded environments</a> +for examples.</p> + +<p><a href="https://www.python.org/dev/peps/pep-0492/#">PEP 492</a>, implemented in Python 3.5 provides a new coroutine protocol using methods, +<code>__await__</code> for classes, a coroutine method wrapper, or a method that returns a coroutine object. +Also async <a href="https://www.python.org/dev/peps/pep-0492/#asynchronous-iterators-and-async-for">iterators</a> and <a href="https://www.python.org/dev/peps/pep-0492/#asynchronous-context-managers-and-async-with">context managers</a> +have been introduced.</p> + +<p>We would like to take advantage of the new language features by offering APIs in Apache Libcloud without breaking backward compatibility and +compatibility for users of <Python 3.5.</p> + +<p>Use cases for this would be:</p> + +<ul> +<li>Being able to fetch <code>Node</code> or <code>StorageObject</code>s from multiple geographies or drivers simultaneously.</li> +<li>Being able to quickly upload or download storage objects by parallelizing operations on the <code>StorageDriver</code>.</li> +<li>Being able to call a long-running API method (e.g. generate report), whilst running other code.</li> +</ul> + +<h2>Design 1 - async context managers <a href="https://github.com/apache/libcloud/pull/1016">PR 1016</a></h2> + +<p>This design would allow drivers to operate in 2 modes, the first is for synchronous method calls, they return list or object +data as per usual. The second mode, API methods like <code>NodeDriver.list_nodes</code> would return a <a href="https://www.python.org/dev/peps/pep-0492/#coroutine-objects">coroutine object</a> +and could be awaited or gathered using an event loop.</p> + +<div class="highlight"><pre><code class="python language-python" data-lang="python"><span class="kn">import</span> <span class="nn">asyncio</span> + +<span class="kn">from</span> <span class="nn">integration.driver.test</span> <span class="kn">import</span> <span class="n">TestNodeDriver</span> +<span class="kn">from</span> <span class="nn">libcloud.async_util</span> <span class="kn">import</span> <span class="n">AsyncSession</span> + +<span class="n">driver</span> <span class="o">=</span> <span class="n">TestNodeDriver</span><span class="p">(</span><span class="s">'apache'</span><span class="p">,</span> <span class="s">'libcloud'</span><span class="p">)</span> + +<span class="n">async</span> <span class="k">def</span> <span class="nf">run</span><span class="p">():</span> + <span class="c"># regular API call</span> + <span class="n">nodes</span> <span class="o">=</span> <span class="n">driver</span><span class="o">.</span><span class="n">list_nodes</span><span class="p">()</span> + + <span class="n">async</span> <span class="k">with</span> <span class="n">AsyncSession</span><span class="p">(</span><span class="n">driver</span><span class="p">)</span> <span class="k">as</span> <span class="n">async_instance</span><span class="p">:</span> + <span class="n">nodes</span> <span class="o">=</span> <span class="n">await</span> <span class="n">async_instance</span><span class="o">.</span><span class="n">list_nodes</span><span class="p">()</span> + + <span class="k">assert</span> <span class="nb">len</span><span class="p">(</span><span class="n">nodes</span><span class="p">)</span> <span class="o">==</span> <span class="mi">2</span> + +<span class="n">loop</span> <span class="o">=</span> <span class="n">asyncio</span><span class="o">.</span><span class="n">get_event_loop</span><span class="p">()</span> +<span class="n">loop</span><span class="o">.</span><span class="n">run_until_complete</span><span class="p">(</span><span class="n">run</span><span class="p">())</span> +<span class="n">loop</span><span class="o">.</span><span class="n">close</span><span class="p">()</span> +</code></pre></div> + +<h2>Design 2 - Additional methods in each driver for coroutines <a href="https://github.com/apache/libcloud/pull/1027">PR 1027</a></h2> + +<p>This is the second design concept for async support in Libcloud.</p> + +<p>The concept here is to have Asynchronous Mixins, <code>LibcloudConnection</code> uses requests and <code>LibcloudAsyncConnection</code> uses aiohttp for async transport <a href="https://github.com/tonybaloney/libcloud/blob/d4fe097476d2f02941e17d5e1b1d405fcf44c0f7/libcloud/connection_async.py#L22-L42">see</a></p> + +<p>The LibcloudAsyncConnection is an implementation detail of AsyncConnection, which is the API for the drivers to consume <a href="https://github.com/tonybaloney/libcloud/blob/d4fe097476d2f02941e17d5e1b1d405fcf44c0f7/libcloud/common/base.py#L742-L778">see</a></p> + +<p>The drivers then use this mixin for their custom connection classes, e.g.</p> + +<div class="highlight"><pre><code class="python language-python" data-lang="python"><span class="k">class</span> <span class="nc">GoogleStorageConnection</span><span class="p">(</span><span class="n">ConnectionUserAndKey</span><span class="p">,</span> <span class="n">AsyncConnection</span><span class="p">):</span> + <span class="o">...</span> +</code></pre></div> + +<p>They then inherit from <code>libcloud.storage.base.StorageAsyncDriver</code>, which uses a new set of base methods, e.g. <code>iterate_containers_async</code> and can be implemented like this:</p> + +<div class="highlight"><pre><code class="python language-python" data-lang="python"> <span class="n">async</span> <span class="k">def</span> <span class="nf">iterate_containers_async</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span> + <span class="n">response</span> <span class="o">=</span> <span class="n">await</span> <span class="bp">self</span><span class="o">.</span><span class="n">connection</span><span class="o">.</span><span class="n">request_async</span><span class="p">(</span><span class="s">'/'</span><span class="p">)</span> + <span class="k">if</span> <span class="n">response</span><span class="o">.</span><span class="n">status</span> <span class="o">==</span> <span class="n">httplib</span><span class="o">.</span><span class="n">OK</span><span class="p">:</span> + <span class="n">containers</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_to_containers</span><span class="p">(</span><span class="n">obj</span><span class="o">=</span><span class="n">response</span><span class="o">.</span><span class="n">object</span><span class="p">,</span> + <span class="n">xpath</span><span class="o">=</span><span class="s">'Buckets/Bucket'</span><span class="p">)</span> + <span class="k">return</span> <span class="n">containers</span> + + <span class="k">raise</span> <span class="n">LibcloudError</span><span class="p">(</span><span class="s">'Unexpected status code: </span><span class="si">%s</span><span class="s">'</span> <span class="o">%</span> <span class="p">(</span><span class="n">response</span><span class="o">.</span><span class="n">status</span><span class="p">),</span> + <span class="n">driver</span><span class="o">=</span><span class="bp">self</span><span class="p">)</span> +</code></pre></div> + +<p>Now the consumer can more or less do this:</p> + +<div class="highlight"><pre><code class="python language-python" data-lang="python"><span class="kn">from</span> <span class="nn">libcloud.storage.providers</span> <span class="kn">import</span> <span class="n">get_driver</span> +<span class="kn">from</span> <span class="nn">libcloud.storage.types</span> <span class="kn">import</span> <span class="n">Provider</span> + +<span class="kn">import</span> <span class="nn">asyncio</span> + +<span class="n">GoogleStorageDriver</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">GOOGLE_STORAGE</span><span class="p">)</span> +<span class="n">driver</span> <span class="o">=</span> <span class="n">GoogleStorageDriver</span><span class="p">(</span><span class="n">key</span><span class="o">=</span><span class="n">KEY</span><span class="p">,</span> <span class="n">secret</span><span class="o">=</span><span class="n">SECRET</span><span class="p">)</span> + +<span class="k">def</span> <span class="nf">do_stuff_with_object</span><span class="p">(</span><span class="n">obj</span><span class="p">):</span> + <span class="k">print</span><span class="p">(</span><span class="n">obj</span><span class="p">)</span> + +<span class="n">async</span> <span class="k">def</span> <span class="nf">run</span><span class="p">():</span> + <span class="n">tasks</span> <span class="o">=</span> <span class="p">[]</span> + <span class="n">async</span> <span class="k">for</span> <span class="n">container</span> <span class="ow">in</span> <span class="n">driver</span><span class="o">.</span><span class="n">iterate_containers_async</span><span class="p">():</span> + <span class="n">async</span> <span class="k">for</span> <span class="n">obj</span> <span class="ow">in</span> <span class="n">driver</span><span class="o">.</span><span class="n">iterate_container_objects_async</span><span class="p">(</span><span class="n">container</span><span class="p">):</span> + <span class="n">tasks</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">asyncio</span><span class="o">.</span><span class="n">ensure_future</span><span class="p">(</span><span class="n">do_stuff_with_object</span><span class="p">(</span><span class="n">obj</span><span class="p">)))</span> + <span class="n">await</span> <span class="n">asyncio</span><span class="o">.</span><span class="n">gather</span><span class="p">(</span><span class="o">*</span><span class="n">tasks</span><span class="p">)</span> + +<span class="n">loop</span> <span class="o">=</span> <span class="n">asyncio</span><span class="o">.</span><span class="n">get_event_loop</span><span class="p">()</span> +<span class="n">loop</span><span class="o">.</span><span class="n">run_until_complete</span><span class="p">(</span><span class="n">run</span><span class="p">())</span> +<span class="n">loop</span><span class="o">.</span><span class="n">close</span><span class="p">()</span> +</code></pre></div> + +<h2>Design 3 - Initializer with "<em>async</em>" mode</h2> + +<p>This option is similar to 2, except that if a driver is instantiated with "<code>async=True</code>", +then all driver class methods would return coroutine objects. Internally, it would +patch the Connection class with the AsyncConnection class.</p> + +<p>The downside of this is that all method calls to a driver would need to be awaited or used +by an event loop.</p> + +<div class="highlight"><pre><code class="python language-python" data-lang="python"><span class="kn">from</span> <span class="nn">libcloud.storage.providers</span> <span class="kn">import</span> <span class="n">get_driver</span> +<span class="kn">from</span> <span class="nn">libcloud.storage.types</span> <span class="kn">import</span> <span class="n">Provider</span> + +<span class="kn">import</span> <span class="nn">asyncio</span> + +<span class="n">GoogleStorageDriver</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">GOOGLE_STORAGE</span><span class="p">)</span> +<span class="n">driver</span> <span class="o">=</span> <span class="n">GoogleStorageDriver</span><span class="p">(</span><span class="n">key</span><span class="o">=</span><span class="n">KEY</span><span class="p">,</span> <span class="n">secret</span><span class="o">=</span><span class="n">SECRET</span><span class="p">,</span> <span class="n">async</span><span class="o">=</span><span class="bp">True</span><span class="p">)</span> + +<span class="k">def</span> <span class="nf">do_stuff_with_object</span><span class="p">(</span><span class="n">obj</span><span class="p">):</span> + <span class="k">print</span><span class="p">(</span><span class="n">obj</span><span class="p">)</span> + +<span class="n">async</span> <span class="k">def</span> <span class="nf">run</span><span class="p">():</span> + <span class="n">tasks</span> <span class="o">=</span> <span class="p">[]</span> + <span class="n">async</span> <span class="k">for</span> <span class="n">container</span> <span class="ow">in</span> <span class="n">driver</span><span class="o">.</span><span class="n">iterate_containers</span><span class="p">():</span> + <span class="n">async</span> <span class="k">for</span> <span class="n">obj</span> <span class="ow">in</span> <span class="n">driver</span><span class="o">.</span><span class="n">iterate_container_objects</span><span class="p">(</span><span class="n">container</span><span class="p">):</span> + <span class="n">tasks</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">asyncio</span><span class="o">.</span><span class="n">ensure_future</span><span class="p">(</span><span class="n">do_stuff_with_object</span><span class="p">(</span><span class="n">obj</span><span class="p">)))</span> + <span class="n">await</span> <span class="n">asyncio</span><span class="o">.</span><span class="n">gather</span><span class="p">(</span><span class="o">*</span><span class="n">tasks</span><span class="p">)</span> + +<span class="n">loop</span> <span class="o">=</span> <span class="n">asyncio</span><span class="o">.</span><span class="n">get_event_loop</span><span class="p">()</span> +<span class="n">loop</span><span class="o">.</span><span class="n">run_until_complete</span><span class="p">(</span><span class="n">run</span><span class="p">())</span> +<span class="n">loop</span><span class="o">.</span><span class="n">close</span><span class="p">()</span> +</code></pre></div> + +<h1>Give us feedback</h1> + +<p>Got a better idea? Have an API or design, the question we're asking is +"if you wanted to use Libcloud for an async application, what would the code look like?" This helps us design +the API and the implementation details can follow.</p> + +<p>Feel free to comment on the mailing list or on the pull requests, or raise your own pull-request with an API design.</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/tutorial.html" rel="tag">tutorial</a></p> + </div> + </div> +</div> + + + + + <div class="post"> + <h2><a href="/blog/2017/04/07/libcloud-2-0-0-rc2-released.html">Libcloud 2.0.0rc2 released</a></h2> @@ -539,142 +708,6 @@ list of people who contributed to this r - - <div class="post"> - - <h2><a href="/blog/2016/09/23/libcloud-1-2-1-released.html">Libcloud 1.2.1 released</a></h2> - - - - - - <span class="post-date-author">By Anthony Shaw on Sep 23, 2016</span> - - <div class="post-content"> - <p>We are pleased to announce the release of Libcloud 1.2.1.</p> - -<p>This release brings many new features, improvements, bug-fixes, and drivers.</p> - -<h2>Release highlights</h2> - -<h3>Changes in Apache Libcloud 1.2.1</h3> - -<ul> -<li>Fix issue enabling backups on Dimension Data driver</li> -</ul> - -<h3>Changes in Apache Libcloud 1.2.0</h3> - -<h4>General</h4> - -<ul> -<li>Fix caching of auth tokens in the Google Compute Engine drivers. Now we make -sure that the file is truncated before writing a new token. Not truncating the -file would cause issues if the new token is shorted then the existing one -which is cached in the file.</li> -</ul> - -<h4>Compute</h4> - -<ul> -<li>Fix image undeprecation in GCE</li> -<li>Added Managed Instance Groups in GCE</li> -<li>Allow undeprecation of an image in GCE</li> -<li>BUGFIX Values with wildcards failed signature validation in cloudstack</li> -<li>Added StorageState-Migrating to the cloudstack driver.</li> -<li>Update copy image logic to match create image in GCE driver.</li> -<li>Removed HD attribute from the Abiquo compute driver to support the 3.4 API</li> -<li>Add image and size details to list_nodes response in Dimension Data driver</li> -<li>Add support for changing VM admin password in VMware driver</li> -<li>Add Barcelona (Spain) region to the Aurora Compute driver.</li> -<li>Various improvements in the libvirt driver.</li> -</ul> - -<h4>Load balancer</h4> - -<ul> -<li>Add support for temporary IAM role credentials (token) to the AWS ELB driver.</li> -</ul> - -<h4>DNS</h4> - -<ul> -<li>Updated the 'extra' parameter in update_record() to be optional in aurora driver</li> -<li>Support for iterating over records and zones in the Aurora DNS driver</li> -<li>Add support for DS, PTR, SSFHFP and TLSA record type to the Aurora DNS driver.</li> -</ul> - -<h4>Container</h4> - -<ul> -<li>Add network mode and labels when creating containers within docker driver</li> -</ul> - -<h4>Storage</h4> - -<ul> -<li>Fix authentication issue in S3/China region, disabled multipart uploads as -not supported by region.</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> - -<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.2.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==1.2.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> <p class="navigation"> @@ -699,7 +732,7 @@ list of people who contributed to this r <div class="col-lg-3 col-lg-offset-1"> <h2>Archive</h1> <ul> - <li> <a href="/blog/archives/2020/01/"> January 2020</a> (1)</li><li> <a href="/blog/archives/2019/12/"> December 2019</a> (1)</li><li> <a href="/blog/archives/2019/11/"> November 2019</a> (1)</li><li> <a href="/blog/archives/2019/08/"> August 2019</a> (2)</li><li> <a href="/blog/archives/2019/05/"> May 2019</a> (1)</li><li> <a href="/blog/archives/2018/11/"> November 2018</a> (1)</li><li> <a href="/blog/archives/2018/06/"> June 2018</a> (1)</li><li> <a href="/blog/archives/2018/03/"> March 2018</a> (1)</li><li> <a href="/blog/archives/2017/12/"> December 2017</a> (1)</li><li> <a href="/blog/archives/2017/09/"> September 2017</a> (2)</li><li> <a href="/blog/archives/2017/07/"> July 2017</a> (1)</li><li> <a href="/blog/archives/2017/04/"> April 2017</a> (3)</li><li> <a href="/blog/archives/2016/12/"> December 2016</a> (1)</li><li> <a href="/blog/archives/2016/11/"> November 2016</a> (1)</li><li> <a href="/blog/archives/2016/10/"> October 2016</a> (1)</li><li> <a href="/blog/archives/2016/09/"> September 2016</a> (1)</li><li> <a href="/blog/archives/2016/07/"> July 2016</a> (1)</li><li> <a href="/blog/archives/2016/06/"> June 2016</a> (1)</li><li> <a href="/blog/archives/2016/04/"> April 2016</a> (2)</li><li> <a href="/blog/archives/2016/02/"> February 2016</a> (2)</li><li> <a href="/blog/archives/2016/01/"> January 2016</a> (4)</li><li> <a href="/blog/archives/2015/12/"> December 2015</a> (1)</li><li> <a href="/blog/archives/2015/11/"> November 2015</a> (1)</li><li> <a href="/blog/archives/2015/10/"> October 2015</a> (2)</li><li> <a href="/blog/archives/2015/08/"> August 2015</a> (1)</li><li> <a href="/blog/archives/2015/03/"> March 2015</a> (1)</li><li> <a href="/blog/archives/2015/02/"> February 2015</a> (1)</li><li> <a href="/blog/archives/2014/12/"> December 2014</a> (1)</li><li> <a hre f="/blog/archives/2014/11/"> November 2014</a> (1)</li><li> <a href="/blog/archives/2014/07/"> July 2014</a> (2)</li><li> <a href="/blog/archives/2014/06/"> June 2014</a> (1)</li><li> <a href="/blog/archives/2014/05/"> May 2014</a> (1)</li><li> <a href="/blog/archives/2014/04/"> April 2014</a> (1)</li><li> <a href="/blog/archives/2014/02/"> February 2014</a> (8)</li><li> <a href="/blog/archives/2014/01/"> January 2014</a> (4)</li><li> <a href="/blog/archives/2013/12/"> December 2013</a> (3)</li><li> <a href="/blog/archives/2013/11/"> November 2013</a> (2)</li><li> <a href="/blog/archives/2013/09/"> September 2013</a> (1)</li><li> <a href="/blog/archives/2013/08/"> August 2013</a> (1)</li><li> <a href="/blog/archives/2013/07/"> July 2013</a> (1)</li><li> <a href="/blog/archives/2013/03/"> March 2013</a> (1)</li><li> <a href="/blog/archives/2013/02/"> February 2013</a> (1)</li><li> <a href="/blog/archi ves/2012/12/"> December 2012</a> (2)</li><li> <a href="/blog/archives/2012/11/"> November 2012</a> (2)</li><li> <a href="/blog/archives/2012/09/"> September 2012</a> (1)</li><li> <a href="/blog/archives/2012/08/"> August 2012</a> (1)</li><li> <a href="/blog/archives/2012/07/"> July 2012</a> (1)</li><li> <a href="/blog/archives/2012/05/"> May 2012</a> (2)</li><li> <a href="/blog/archives/2012/04/"> April 2012</a> (1)</li><li> <a href="/blog/archives/2012/02/"> February 2012</a> (1)</li><li> <a href="/blog/archives/2011/12/"> December 2011</a> (2)</li><li> <a href="/blog/archives/2011/11/"> November 2011</a> (3)</li><li> <a href="/blog/archives/2011/10/"> October 2011</a> (1)</li><li> <a href="/blog/archives/2011/09/"> September 2011</a> (1)</li><li> <a href="/blog/archives/2011/07/"> July 2011</a> (1)</li><li> <a href="/blog/archives/2011/06/"> June 2011</a> (1)</li><li> <a href="/blog/archives/2011/0 5/"> May 2011</a> (1)</li><li> <a href="/blog/archives/2011/02/"> February 2011</a> (1)</li><li> <a href="/blog/archives/2011/01/"> January 2011</a> (1)</li><li> <a href="/blog/archives/2010/10/"> October 2010</a> (1)</li><li> <a href="/blog/archives/2010/05/"> May 2010</a> (1)</li><li> <a href="/blog/archives/2010/02/"> February 2010</a> (1)</li> + <li> <a href="/blog/archives/2020/01/"> January 2020</a> (2)</li><li> <a href="/blog/archives/2019/12/"> December 2019</a> (1)</li><li> <a href="/blog/archives/2019/11/"> November 2019</a> (1)</li><li> <a href="/blog/archives/2019/08/"> August 2019</a> (2)</li><li> <a href="/blog/archives/2019/05/"> May 2019</a> (1)</li><li> <a href="/blog/archives/2018/11/"> November 2018</a> (1)</li><li> <a href="/blog/archives/2018/06/"> June 2018</a> (1)</li><li> <a href="/blog/archives/2018/03/"> March 2018</a> (1)</li><li> <a href="/blog/archives/2017/12/"> December 2017</a> (1)</li><li> <a href="/blog/archives/2017/09/"> September 2017</a> (2)</li><li> <a href="/blog/archives/2017/07/"> July 2017</a> (1)</li><li> <a href="/blog/archives/2017/04/"> April 2017</a> (3)</li><li> <a href="/blog/archives/2016/12/"> December 2016</a> (1)</li><li> <a href="/blog/archives/2016/11/"> November 2016</a> (1)</li><li> <a href="/blog/archives/2016/10/"> October 2016</a> (1)</li><li> <a href="/blog/archives/2016/09/"> September 2016</a> (1)</li><li> <a href="/blog/archives/2016/07/"> July 2016</a> (1)</li><li> <a href="/blog/archives/2016/06/"> June 2016</a> (1)</li><li> <a href="/blog/archives/2016/04/"> April 2016</a> (2)</li><li> <a href="/blog/archives/2016/02/"> February 2016</a> (2)</li><li> <a href="/blog/archives/2016/01/"> January 2016</a> (4)</li><li> <a href="/blog/archives/2015/12/"> December 2015</a> (1)</li><li> <a href="/blog/archives/2015/11/"> November 2015</a> (1)</li><li> <a href="/blog/archives/2015/10/"> October 2015</a> (2)</li><li> <a href="/blog/archives/2015/08/"> August 2015</a> (1)</li><li> <a href="/blog/archives/2015/03/"> March 2015</a> (1)</li><li> <a href="/blog/archives/2015/02/"> February 2015</a> (1)</li><li> <a href="/blog/archives/2014/12/"> December 2014</a> (1)</li><li> <a hre f="/blog/archives/2014/11/"> November 2014</a> (1)</li><li> <a href="/blog/archives/2014/07/"> July 2014</a> (2)</li><li> <a href="/blog/archives/2014/06/"> June 2014</a> (1)</li><li> <a href="/blog/archives/2014/05/"> May 2014</a> (1)</li><li> <a href="/blog/archives/2014/04/"> April 2014</a> (1)</li><li> <a href="/blog/archives/2014/02/"> February 2014</a> (8)</li><li> <a href="/blog/archives/2014/01/"> January 2014</a> (4)</li><li> <a href="/blog/archives/2013/12/"> December 2013</a> (3)</li><li> <a href="/blog/archives/2013/11/"> November 2013</a> (2)</li><li> <a href="/blog/archives/2013/09/"> September 2013</a> (1)</li><li> <a href="/blog/archives/2013/08/"> August 2013</a> (1)</li><li> <a href="/blog/archives/2013/07/"> July 2013</a> (1)</li><li> <a href="/blog/archives/2013/03/"> March 2013</a> (1)</li><li> <a href="/blog/archives/2013/02/"> February 2013</a> (1)</li><li> <a href="/blog/archi ves/2012/12/"> December 2012</a> (2)</li><li> <a href="/blog/archives/2012/11/"> November 2012</a> (2)</li><li> <a href="/blog/archives/2012/09/"> September 2012</a> (1)</li><li> <a href="/blog/archives/2012/08/"> August 2012</a> (1)</li><li> <a href="/blog/archives/2012/07/"> July 2012</a> (1)</li><li> <a href="/blog/archives/2012/05/"> May 2012</a> (2)</li><li> <a href="/blog/archives/2012/04/"> April 2012</a> (1)</li><li> <a href="/blog/archives/2012/02/"> February 2012</a> (1)</li><li> <a href="/blog/archives/2011/12/"> December 2011</a> (2)</li><li> <a href="/blog/archives/2011/11/"> November 2011</a> (3)</li><li> <a href="/blog/archives/2011/10/"> October 2011</a> (1)</li><li> <a href="/blog/archives/2011/09/"> September 2011</a> (1)</li><li> <a href="/blog/archives/2011/07/"> July 2011</a> (1)</li><li> <a href="/blog/archives/2011/06/"> June 2011</a> (1)</li><li> <a href="/blog/archives/2011/0 5/"> May 2011</a> (1)</li><li> <a href="/blog/archives/2011/02/"> February 2011</a> (1)</li><li> <a href="/blog/archives/2011/01/"> January 2011</a> (1)</li><li> <a href="/blog/archives/2010/10/"> October 2010</a> (1)</li><li> <a href="/blog/archives/2010/05/"> May 2010</a> (1)</li><li> <a href="/blog/archives/2010/02/"> February 2010</a> (1)</li> </ul> </div> </div> @@ -730,7 +763,7 @@ list of people who contributed to this r </div><!-- /.container --> <!-- JavaScript --> - <script src='/assets/global-c6c762cf30e99cb14d2cfafae2f87ab3.js' type='text/javascript'></script> + <script src='/assets/global-dfa80e7474b58ee1c1f578e43dccac44.js' type='text/javascript'></script>
Modified: libcloud/site/trunk/generated/blog/page/5/index.html URL: http://svn.apache.org/viewvc/libcloud/site/trunk/generated/blog/page/5/index.html?rev=1873342&r1=1873341&r2=1873342&view=diff ============================================================================== --- libcloud/site/trunk/generated/blog/page/5/index.html (original) +++ libcloud/site/trunk/generated/blog/page/5/index.html Wed Jan 29 21:51:53 2020 @@ -47,7 +47,7 @@ - <link href='/assets/global-140a5c5bd4aaacea6b89074520e5562b.css' rel='stylesheet' type='text/css' /> + <link href='/assets/global-73ae5b95993dad7a856dae3f60df3e3c.css' rel='stylesheet' type='text/css' /> </head> @@ -97,6 +97,142 @@ <div class="post"> + <h2><a href="/blog/2016/09/23/libcloud-1-2-1-released.html">Libcloud 1.2.1 released</a></h2> + + + + + + <span class="post-date-author">By Anthony Shaw on Sep 23, 2016</span> + + <div class="post-content"> + <p>We are pleased to announce the release of Libcloud 1.2.1.</p> + +<p>This release brings many new features, improvements, bug-fixes, and drivers.</p> + +<h2>Release highlights</h2> + +<h3>Changes in Apache Libcloud 1.2.1</h3> + +<ul> +<li>Fix issue enabling backups on Dimension Data driver</li> +</ul> + +<h3>Changes in Apache Libcloud 1.2.0</h3> + +<h4>General</h4> + +<ul> +<li>Fix caching of auth tokens in the Google Compute Engine drivers. Now we make +sure that the file is truncated before writing a new token. Not truncating the +file would cause issues if the new token is shorted then the existing one +which is cached in the file.</li> +</ul> + +<h4>Compute</h4> + +<ul> +<li>Fix image undeprecation in GCE</li> +<li>Added Managed Instance Groups in GCE</li> +<li>Allow undeprecation of an image in GCE</li> +<li>BUGFIX Values with wildcards failed signature validation in cloudstack</li> +<li>Added StorageState-Migrating to the cloudstack driver.</li> +<li>Update copy image logic to match create image in GCE driver.</li> +<li>Removed HD attribute from the Abiquo compute driver to support the 3.4 API</li> +<li>Add image and size details to list_nodes response in Dimension Data driver</li> +<li>Add support for changing VM admin password in VMware driver</li> +<li>Add Barcelona (Spain) region to the Aurora Compute driver.</li> +<li>Various improvements in the libvirt driver.</li> +</ul> + +<h4>Load balancer</h4> + +<ul> +<li>Add support for temporary IAM role credentials (token) to the AWS ELB driver.</li> +</ul> + +<h4>DNS</h4> + +<ul> +<li>Updated the 'extra' parameter in update_record() to be optional in aurora driver</li> +<li>Support for iterating over records and zones in the Aurora DNS driver</li> +<li>Add support for DS, PTR, SSFHFP and TLSA record type to the Aurora DNS driver.</li> +</ul> + +<h4>Container</h4> + +<ul> +<li>Add network mode and labels when creating containers within docker driver</li> +</ul> + +<h4>Storage</h4> + +<ul> +<li>Fix authentication issue in S3/China region, disabled multipart uploads as +not supported by region.</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> + +<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.2.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==1.2.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/07/07/libcloud-1-1-0-released.html">Libcloud 1.1.0 released</a></h2> @@ -866,90 +1002,6 @@ that there are no regression bugs with t - - <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> <p class="navigation"> @@ -974,7 +1026,7 @@ this provider is no longer supported wit <div class="col-lg-3 col-lg-offset-1"> <h2>Archive</h1> <ul> - <li> <a href="/blog/archives/2020/01/"> January 2020</a> (1)</li><li> <a href="/blog/archives/2019/12/"> December 2019</a> (1)</li><li> <a href="/blog/archives/2019/11/"> November 2019</a> (1)</li><li> <a href="/blog/archives/2019/08/"> August 2019</a> (2)</li><li> <a href="/blog/archives/2019/05/"> May 2019</a> (1)</li><li> <a href="/blog/archives/2018/11/"> November 2018</a> (1)</li><li> <a href="/blog/archives/2018/06/"> June 2018</a> (1)</li><li> <a href="/blog/archives/2018/03/"> March 2018</a> (1)</li><li> <a href="/blog/archives/2017/12/"> December 2017</a> (1)</li><li> <a href="/blog/archives/2017/09/"> September 2017</a> (2)</li><li> <a href="/blog/archives/2017/07/"> July 2017</a> (1)</li><li> <a href="/blog/archives/2017/04/"> April 2017</a> (3)</li><li> <a href="/blog/archives/2016/12/"> December 2016</a> (1)</li><li> <a href="/blog/archives/2016/11/"> November 2016</a> (1)</li><li> <a href="/blog/archives/2016/10/"> October 2016</a> (1)</li><li> <a href="/blog/archives/2016/09/"> September 2016</a> (1)</li><li> <a href="/blog/archives/2016/07/"> July 2016</a> (1)</li><li> <a href="/blog/archives/2016/06/"> June 2016</a> (1)</li><li> <a href="/blog/archives/2016/04/"> April 2016</a> (2)</li><li> <a href="/blog/archives/2016/02/"> February 2016</a> (2)</li><li> <a href="/blog/archives/2016/01/"> January 2016</a> (4)</li><li> <a href="/blog/archives/2015/12/"> December 2015</a> (1)</li><li> <a href="/blog/archives/2015/11/"> November 2015</a> (1)</li><li> <a href="/blog/archives/2015/10/"> October 2015</a> (2)</li><li> <a href="/blog/archives/2015/08/"> August 2015</a> (1)</li><li> <a href="/blog/archives/2015/03/"> March 2015</a> (1)</li><li> <a href="/blog/archives/2015/02/"> February 2015</a> (1)</li><li> <a href="/blog/archives/2014/12/"> December 2014</a> (1)</li><li> <a hre f="/blog/archives/2014/11/"> November 2014</a> (1)</li><li> <a href="/blog/archives/2014/07/"> July 2014</a> (2)</li><li> <a href="/blog/archives/2014/06/"> June 2014</a> (1)</li><li> <a href="/blog/archives/2014/05/"> May 2014</a> (1)</li><li> <a href="/blog/archives/2014/04/"> April 2014</a> (1)</li><li> <a href="/blog/archives/2014/02/"> February 2014</a> (8)</li><li> <a href="/blog/archives/2014/01/"> January 2014</a> (4)</li><li> <a href="/blog/archives/2013/12/"> December 2013</a> (3)</li><li> <a href="/blog/archives/2013/11/"> November 2013</a> (2)</li><li> <a href="/blog/archives/2013/09/"> September 2013</a> (1)</li><li> <a href="/blog/archives/2013/08/"> August 2013</a> (1)</li><li> <a href="/blog/archives/2013/07/"> July 2013</a> (1)</li><li> <a href="/blog/archives/2013/03/"> March 2013</a> (1)</li><li> <a href="/blog/archives/2013/02/"> February 2013</a> (1)</li><li> <a href="/blog/archi ves/2012/12/"> December 2012</a> (2)</li><li> <a href="/blog/archives/2012/11/"> November 2012</a> (2)</li><li> <a href="/blog/archives/2012/09/"> September 2012</a> (1)</li><li> <a href="/blog/archives/2012/08/"> August 2012</a> (1)</li><li> <a href="/blog/archives/2012/07/"> July 2012</a> (1)</li><li> <a href="/blog/archives/2012/05/"> May 2012</a> (2)</li><li> <a href="/blog/archives/2012/04/"> April 2012</a> (1)</li><li> <a href="/blog/archives/2012/02/"> February 2012</a> (1)</li><li> <a href="/blog/archives/2011/12/"> December 2011</a> (2)</li><li> <a href="/blog/archives/2011/11/"> November 2011</a> (3)</li><li> <a href="/blog/archives/2011/10/"> October 2011</a> (1)</li><li> <a href="/blog/archives/2011/09/"> September 2011</a> (1)</li><li> <a href="/blog/archives/2011/07/"> July 2011</a> (1)</li><li> <a href="/blog/archives/2011/06/"> June 2011</a> (1)</li><li> <a href="/blog/archives/2011/0 5/"> May 2011</a> (1)</li><li> <a href="/blog/archives/2011/02/"> February 2011</a> (1)</li><li> <a href="/blog/archives/2011/01/"> January 2011</a> (1)</li><li> <a href="/blog/archives/2010/10/"> October 2010</a> (1)</li><li> <a href="/blog/archives/2010/05/"> May 2010</a> (1)</li><li> <a href="/blog/archives/2010/02/"> February 2010</a> (1)</li> + <li> <a href="/blog/archives/2020/01/"> January 2020</a> (2)</li><li> <a href="/blog/archives/2019/12/"> December 2019</a> (1)</li><li> <a href="/blog/archives/2019/11/"> November 2019</a> (1)</li><li> <a href="/blog/archives/2019/08/"> August 2019</a> (2)</li><li> <a href="/blog/archives/2019/05/"> May 2019</a> (1)</li><li> <a href="/blog/archives/2018/11/"> November 2018</a> (1)</li><li> <a href="/blog/archives/2018/06/"> June 2018</a> (1)</li><li> <a href="/blog/archives/2018/03/"> March 2018</a> (1)</li><li> <a href="/blog/archives/2017/12/"> December 2017</a> (1)</li><li> <a href="/blog/archives/2017/09/"> September 2017</a> (2)</li><li> <a href="/blog/archives/2017/07/"> July 2017</a> (1)</li><li> <a href="/blog/archives/2017/04/"> April 2017</a> (3)</li><li> <a href="/blog/archives/2016/12/"> December 2016</a> (1)</li><li> <a href="/blog/archives/2016/11/"> November 2016</a> (1)</li><li> <a href="/blog/archives/2016/10/"> October 2016</a> (1)</li><li> <a href="/blog/archives/2016/09/"> September 2016</a> (1)</li><li> <a href="/blog/archives/2016/07/"> July 2016</a> (1)</li><li> <a href="/blog/archives/2016/06/"> June 2016</a> (1)</li><li> <a href="/blog/archives/2016/04/"> April 2016</a> (2)</li><li> <a href="/blog/archives/2016/02/"> February 2016</a> (2)</li><li> <a href="/blog/archives/2016/01/"> January 2016</a> (4)</li><li> <a href="/blog/archives/2015/12/"> December 2015</a> (1)</li><li> <a href="/blog/archives/2015/11/"> November 2015</a> (1)</li><li> <a href="/blog/archives/2015/10/"> October 2015</a> (2)</li><li> <a href="/blog/archives/2015/08/"> August 2015</a> (1)</li><li> <a href="/blog/archives/2015/03/"> March 2015</a> (1)</li><li> <a href="/blog/archives/2015/02/"> February 2015</a> (1)</li><li> <a href="/blog/archives/2014/12/"> December 2014</a> (1)</li><li> <a hre f="/blog/archives/2014/11/"> November 2014</a> (1)</li><li> <a href="/blog/archives/2014/07/"> July 2014</a> (2)</li><li> <a href="/blog/archives/2014/06/"> June 2014</a> (1)</li><li> <a href="/blog/archives/2014/05/"> May 2014</a> (1)</li><li> <a href="/blog/archives/2014/04/"> April 2014</a> (1)</li><li> <a href="/blog/archives/2014/02/"> February 2014</a> (8)</li><li> <a href="/blog/archives/2014/01/"> January 2014</a> (4)</li><li> <a href="/blog/archives/2013/12/"> December 2013</a> (3)</li><li> <a href="/blog/archives/2013/11/"> November 2013</a> (2)</li><li> <a href="/blog/archives/2013/09/"> September 2013</a> (1)</li><li> <a href="/blog/archives/2013/08/"> August 2013</a> (1)</li><li> <a href="/blog/archives/2013/07/"> July 2013</a> (1)</li><li> <a href="/blog/archives/2013/03/"> March 2013</a> (1)</li><li> <a href="/blog/archives/2013/02/"> February 2013</a> (1)</li><li> <a href="/blog/archi ves/2012/12/"> December 2012</a> (2)</li><li> <a href="/blog/archives/2012/11/"> November 2012</a> (2)</li><li> <a href="/blog/archives/2012/09/"> September 2012</a> (1)</li><li> <a href="/blog/archives/2012/08/"> August 2012</a> (1)</li><li> <a href="/blog/archives/2012/07/"> July 2012</a> (1)</li><li> <a href="/blog/archives/2012/05/"> May 2012</a> (2)</li><li> <a href="/blog/archives/2012/04/"> April 2012</a> (1)</li><li> <a href="/blog/archives/2012/02/"> February 2012</a> (1)</li><li> <a href="/blog/archives/2011/12/"> December 2011</a> (2)</li><li> <a href="/blog/archives/2011/11/"> November 2011</a> (3)</li><li> <a href="/blog/archives/2011/10/"> October 2011</a> (1)</li><li> <a href="/blog/archives/2011/09/"> September 2011</a> (1)</li><li> <a href="/blog/archives/2011/07/"> July 2011</a> (1)</li><li> <a href="/blog/archives/2011/06/"> June 2011</a> (1)</li><li> <a href="/blog/archives/2011/0 5/"> May 2011</a> (1)</li><li> <a href="/blog/archives/2011/02/"> February 2011</a> (1)</li><li> <a href="/blog/archives/2011/01/"> January 2011</a> (1)</li><li> <a href="/blog/archives/2010/10/"> October 2010</a> (1)</li><li> <a href="/blog/archives/2010/05/"> May 2010</a> (1)</li><li> <a href="/blog/archives/2010/02/"> February 2010</a> (1)</li> </ul> </div> </div> @@ -1005,7 +1057,7 @@ this provider is no longer supported wit </div><!-- /.container --> <!-- JavaScript --> - <script src='/assets/global-c6c762cf30e99cb14d2cfafae2f87ab3.js' type='text/javascript'></script> + <script src='/assets/global-dfa80e7474b58ee1c1f578e43dccac44.js' type='text/javascript'></script> Modified: libcloud/site/trunk/generated/blog/page/6/index.html URL: http://svn.apache.org/viewvc/libcloud/site/trunk/generated/blog/page/6/index.html?rev=1873342&r1=1873341&r2=1873342&view=diff ============================================================================== --- libcloud/site/trunk/generated/blog/page/6/index.html (original) +++ libcloud/site/trunk/generated/blog/page/6/index.html Wed Jan 29 21:51:53 2020 @@ -47,7 +47,7 @@ - <link href='/assets/global-140a5c5bd4aaacea6b89074520e5562b.css' rel='stylesheet' type='text/css' /> + <link href='/assets/global-73ae5b95993dad7a856dae3f60df3e3c.css' rel='stylesheet' type='text/css' /> </head> @@ -97,6 +97,90 @@ <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> @@ -645,91 +729,6 @@ list of people who contributed to this r - - <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> <p class="navigation"> @@ -754,7 +753,7 @@ and compatibility reasons. SSL v3.0 is c <div class="col-lg-3 col-lg-offset-1"> <h2>Archive</h1> <ul> - <li> <a href="/blog/archives/2020/01/"> January 2020</a> (1)</li><li> <a href="/blog/archives/2019/12/"> December 2019</a> (1)</li><li> <a href="/blog/archives/2019/11/"> November 2019</a> (1)</li><li> <a href="/blog/archives/2019/08/"> August 2019</a> (2)</li><li> <a href="/blog/archives/2019/05/"> May 2019</a> (1)</li><li> <a href="/blog/archives/2018/11/"> November 2018</a> (1)</li><li> <a href="/blog/archives/2018/06/"> June 2018</a> (1)</li><li> <a href="/blog/archives/2018/03/"> March 2018</a> (1)</li><li> <a href="/blog/archives/2017/12/"> December 2017</a> (1)</li><li> <a href="/blog/archives/2017/09/"> September 2017</a> (2)</li><li> <a href="/blog/archives/2017/07/"> July 2017</a> (1)</li><li> <a href="/blog/archives/2017/04/"> April 2017</a> (3)</li><li> <a href="/blog/archives/2016/12/"> December 2016</a> (1)</li><li> <a href="/blog/archives/2016/11/"> November 2016</a> (1)</li><li> <a href="/blog/archives/2016/10/"> October 2016</a> (1)</li><li> <a href="/blog/archives/2016/09/"> September 2016</a> (1)</li><li> <a href="/blog/archives/2016/07/"> July 2016</a> (1)</li><li> <a href="/blog/archives/2016/06/"> June 2016</a> (1)</li><li> <a href="/blog/archives/2016/04/"> April 2016</a> (2)</li><li> <a href="/blog/archives/2016/02/"> February 2016</a> (2)</li><li> <a href="/blog/archives/2016/01/"> January 2016</a> (4)</li><li> <a href="/blog/archives/2015/12/"> December 2015</a> (1)</li><li> <a href="/blog/archives/2015/11/"> November 2015</a> (1)</li><li> <a href="/blog/archives/2015/10/"> October 2015</a> (2)</li><li> <a href="/blog/archives/2015/08/"> August 2015</a> (1)</li><li> <a href="/blog/archives/2015/03/"> March 2015</a> (1)</li><li> <a href="/blog/archives/2015/02/"> February 2015</a> (1)</li><li> <a href="/blog/archives/2014/12/"> December 2014</a> (1)</li><li> <a hre f="/blog/archives/2014/11/"> November 2014</a> (1)</li><li> <a href="/blog/archives/2014/07/"> July 2014</a> (2)</li><li> <a href="/blog/archives/2014/06/"> June 2014</a> (1)</li><li> <a href="/blog/archives/2014/05/"> May 2014</a> (1)</li><li> <a href="/blog/archives/2014/04/"> April 2014</a> (1)</li><li> <a href="/blog/archives/2014/02/"> February 2014</a> (8)</li><li> <a href="/blog/archives/2014/01/"> January 2014</a> (4)</li><li> <a href="/blog/archives/2013/12/"> December 2013</a> (3)</li><li> <a href="/blog/archives/2013/11/"> November 2013</a> (2)</li><li> <a href="/blog/archives/2013/09/"> September 2013</a> (1)</li><li> <a href="/blog/archives/2013/08/"> August 2013</a> (1)</li><li> <a href="/blog/archives/2013/07/"> July 2013</a> (1)</li><li> <a href="/blog/archives/2013/03/"> March 2013</a> (1)</li><li> <a href="/blog/archives/2013/02/"> February 2013</a> (1)</li><li> <a href="/blog/archi ves/2012/12/"> December 2012</a> (2)</li><li> <a href="/blog/archives/2012/11/"> November 2012</a> (2)</li><li> <a href="/blog/archives/2012/09/"> September 2012</a> (1)</li><li> <a href="/blog/archives/2012/08/"> August 2012</a> (1)</li><li> <a href="/blog/archives/2012/07/"> July 2012</a> (1)</li><li> <a href="/blog/archives/2012/05/"> May 2012</a> (2)</li><li> <a href="/blog/archives/2012/04/"> April 2012</a> (1)</li><li> <a href="/blog/archives/2012/02/"> February 2012</a> (1)</li><li> <a href="/blog/archives/2011/12/"> December 2011</a> (2)</li><li> <a href="/blog/archives/2011/11/"> November 2011</a> (3)</li><li> <a href="/blog/archives/2011/10/"> October 2011</a> (1)</li><li> <a href="/blog/archives/2011/09/"> September 2011</a> (1)</li><li> <a href="/blog/archives/2011/07/"> July 2011</a> (1)</li><li> <a href="/blog/archives/2011/06/"> June 2011</a> (1)</li><li> <a href="/blog/archives/2011/0 5/"> May 2011</a> (1)</li><li> <a href="/blog/archives/2011/02/"> February 2011</a> (1)</li><li> <a href="/blog/archives/2011/01/"> January 2011</a> (1)</li><li> <a href="/blog/archives/2010/10/"> October 2010</a> (1)</li><li> <a href="/blog/archives/2010/05/"> May 2010</a> (1)</li><li> <a href="/blog/archives/2010/02/"> February 2010</a> (1)</li> + <li> <a href="/blog/archives/2020/01/"> January 2020</a> (2)</li><li> <a href="/blog/archives/2019/12/"> December 2019</a> (1)</li><li> <a href="/blog/archives/2019/11/"> November 2019</a> (1)</li><li> <a href="/blog/archives/2019/08/"> August 2019</a> (2)</li><li> <a href="/blog/archives/2019/05/"> May 2019</a> (1)</li><li> <a href="/blog/archives/2018/11/"> November 2018</a> (1)</li><li> <a href="/blog/archives/2018/06/"> June 2018</a> (1)</li><li> <a href="/blog/archives/2018/03/"> March 2018</a> (1)</li><li> <a href="/blog/archives/2017/12/"> December 2017</a> (1)</li><li> <a href="/blog/archives/2017/09/"> September 2017</a> (2)</li><li> <a href="/blog/archives/2017/07/"> July 2017</a> (1)</li><li> <a href="/blog/archives/2017/04/"> April 2017</a> (3)</li><li> <a href="/blog/archives/2016/12/"> December 2016</a> (1)</li><li> <a href="/blog/archives/2016/11/"> November 2016</a> (1)</li><li> <a href="/blog/archives/2016/10/"> October 2016</a> (1)</li><li> <a href="/blog/archives/2016/09/"> September 2016</a> (1)</li><li> <a href="/blog/archives/2016/07/"> July 2016</a> (1)</li><li> <a href="/blog/archives/2016/06/"> June 2016</a> (1)</li><li> <a href="/blog/archives/2016/04/"> April 2016</a> (2)</li><li> <a href="/blog/archives/2016/02/"> February 2016</a> (2)</li><li> <a href="/blog/archives/2016/01/"> January 2016</a> (4)</li><li> <a href="/blog/archives/2015/12/"> December 2015</a> (1)</li><li> <a href="/blog/archives/2015/11/"> November 2015</a> (1)</li><li> <a href="/blog/archives/2015/10/"> October 2015</a> (2)</li><li> <a href="/blog/archives/2015/08/"> August 2015</a> (1)</li><li> <a href="/blog/archives/2015/03/"> March 2015</a> (1)</li><li> <a href="/blog/archives/2015/02/"> February 2015</a> (1)</li><li> <a href="/blog/archives/2014/12/"> December 2014</a> (1)</li><li> <a hre f="/blog/archives/2014/11/"> November 2014</a> (1)</li><li> <a href="/blog/archives/2014/07/"> July 2014</a> (2)</li><li> <a href="/blog/archives/2014/06/"> June 2014</a> (1)</li><li> <a href="/blog/archives/2014/05/"> May 2014</a> (1)</li><li> <a href="/blog/archives/2014/04/"> April 2014</a> (1)</li><li> <a href="/blog/archives/2014/02/"> February 2014</a> (8)</li><li> <a href="/blog/archives/2014/01/"> January 2014</a> (4)</li><li> <a href="/blog/archives/2013/12/"> December 2013</a> (3)</li><li> <a href="/blog/archives/2013/11/"> November 2013</a> (2)</li><li> <a href="/blog/archives/2013/09/"> September 2013</a> (1)</li><li> <a href="/blog/archives/2013/08/"> August 2013</a> (1)</li><li> <a href="/blog/archives/2013/07/"> July 2013</a> (1)</li><li> <a href="/blog/archives/2013/03/"> March 2013</a> (1)</li><li> <a href="/blog/archives/2013/02/"> February 2013</a> (1)</li><li> <a href="/blog/archi ves/2012/12/"> December 2012</a> (2)</li><li> <a href="/blog/archives/2012/11/"> November 2012</a> (2)</li><li> <a href="/blog/archives/2012/09/"> September 2012</a> (1)</li><li> <a href="/blog/archives/2012/08/"> August 2012</a> (1)</li><li> <a href="/blog/archives/2012/07/"> July 2012</a> (1)</li><li> <a href="/blog/archives/2012/05/"> May 2012</a> (2)</li><li> <a href="/blog/archives/2012/04/"> April 2012</a> (1)</li><li> <a href="/blog/archives/2012/02/"> February 2012</a> (1)</li><li> <a href="/blog/archives/2011/12/"> December 2011</a> (2)</li><li> <a href="/blog/archives/2011/11/"> November 2011</a> (3)</li><li> <a href="/blog/archives/2011/10/"> October 2011</a> (1)</li><li> <a href="/blog/archives/2011/09/"> September 2011</a> (1)</li><li> <a href="/blog/archives/2011/07/"> July 2011</a> (1)</li><li> <a href="/blog/archives/2011/06/"> June 2011</a> (1)</li><li> <a href="/blog/archives/2011/0 5/"> May 2011</a> (1)</li><li> <a href="/blog/archives/2011/02/"> February 2011</a> (1)</li><li> <a href="/blog/archives/2011/01/"> January 2011</a> (1)</li><li> <a href="/blog/archives/2010/10/"> October 2010</a> (1)</li><li> <a href="/blog/archives/2010/05/"> May 2010</a> (1)</li><li> <a href="/blog/archives/2010/02/"> February 2010</a> (1)</li> </ul> </div> </div> @@ -785,7 +784,7 @@ and compatibility reasons. SSL v3.0 is c </div><!-- /.container --> <!-- JavaScript --> - <script src='/assets/global-c6c762cf30e99cb14d2cfafae2f87ab3.js' type='text/javascript'></script> + <script src='/assets/global-dfa80e7474b58ee1c1f578e43dccac44.js' type='text/javascript'></script> Modified: libcloud/site/trunk/generated/blog/page/7/index.html URL: http://svn.apache.org/viewvc/libcloud/site/trunk/generated/blog/page/7/index.html?rev=1873342&r1=1873341&r2=1873342&view=diff ============================================================================== --- libcloud/site/trunk/generated/blog/page/7/index.html (original) +++ libcloud/site/trunk/generated/blog/page/7/index.html Wed Jan 29 21:51:53 2020 @@ -47,7 +47,7 @@ - <link href='/assets/global-140a5c5bd4aaacea6b89074520e5562b.css' rel='stylesheet' type='text/css' /> + <link href='/assets/global-73ae5b95993dad7a856dae3f60df3e3c.css' rel='stylesheet' type='text/css' /> </head> @@ -97,6 +97,91 @@ <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> @@ -389,96 +474,6 @@ from <a href="https://github.com/blog/20 - - <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 -<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.18.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.18.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.18.0/">https://libcloud.readthedocs.org/en/v0.18.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-18-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> <p class="navigation"> @@ -503,7 +498,7 @@ list of people who contributed to this r <div class="col-lg-3 col-lg-offset-1"> <h2>Archive</h1> <ul> - <li> <a href="/blog/archives/2020/01/"> January 2020</a> (1)</li><li> <a href="/blog/archives/2019/12/"> December 2019</a> (1)</li><li> <a href="/blog/archives/2019/11/"> November 2019</a> (1)</li><li> <a href="/blog/archives/2019/08/"> August 2019</a> (2)</li><li> <a href="/blog/archives/2019/05/"> May 2019</a> (1)</li><li> <a href="/blog/archives/2018/11/"> November 2018</a> (1)</li><li> <a href="/blog/archives/2018/06/"> June 2018</a> (1)</li><li> <a href="/blog/archives/2018/03/"> March 2018</a> (1)</li><li> <a href="/blog/archives/2017/12/"> December 2017</a> (1)</li><li> <a href="/blog/archives/2017/09/"> September 2017</a> (2)</li><li> <a href="/blog/archives/2017/07/"> July 2017</a> (1)</li><li> <a href="/blog/archives/2017/04/"> April 2017</a> (3)</li><li> <a href="/blog/archives/2016/12/"> December 2016</a> (1)</li><li> <a href="/blog/archives/2016/11/"> November 2016</a> (1)</li><li> <a href="/blog/archives/2016/10/"> October 2016</a> (1)</li><li> <a href="/blog/archives/2016/09/"> September 2016</a> (1)</li><li> <a href="/blog/archives/2016/07/"> July 2016</a> (1)</li><li> <a href="/blog/archives/2016/06/"> June 2016</a> (1)</li><li> <a href="/blog/archives/2016/04/"> April 2016</a> (2)</li><li> <a href="/blog/archives/2016/02/"> February 2016</a> (2)</li><li> <a href="/blog/archives/2016/01/"> January 2016</a> (4)</li><li> <a href="/blog/archives/2015/12/"> December 2015</a> (1)</li><li> <a href="/blog/archives/2015/11/"> November 2015</a> (1)</li><li> <a href="/blog/archives/2015/10/"> October 2015</a> (2)</li><li> <a href="/blog/archives/2015/08/"> August 2015</a> (1)</li><li> <a href="/blog/archives/2015/03/"> March 2015</a> (1)</li><li> <a href="/blog/archives/2015/02/"> February 2015</a> (1)</li><li> <a href="/blog/archives/2014/12/"> December 2014</a> (1)</li><li> <a hre f="/blog/archives/2014/11/"> November 2014</a> (1)</li><li> <a href="/blog/archives/2014/07/"> July 2014</a> (2)</li><li> <a href="/blog/archives/2014/06/"> June 2014</a> (1)</li><li> <a href="/blog/archives/2014/05/"> May 2014</a> (1)</li><li> <a href="/blog/archives/2014/04/"> April 2014</a> (1)</li><li> <a href="/blog/archives/2014/02/"> February 2014</a> (8)</li><li> <a href="/blog/archives/2014/01/"> January 2014</a> (4)</li><li> <a href="/blog/archives/2013/12/"> December 2013</a> (3)</li><li> <a href="/blog/archives/2013/11/"> November 2013</a> (2)</li><li> <a href="/blog/archives/2013/09/"> September 2013</a> (1)</li><li> <a href="/blog/archives/2013/08/"> August 2013</a> (1)</li><li> <a href="/blog/archives/2013/07/"> July 2013</a> (1)</li><li> <a href="/blog/archives/2013/03/"> March 2013</a> (1)</li><li> <a href="/blog/archives/2013/02/"> February 2013</a> (1)</li><li> <a href="/blog/archi ves/2012/12/"> December 2012</a> (2)</li><li> <a href="/blog/archives/2012/11/"> November 2012</a> (2)</li><li> <a href="/blog/archives/2012/09/"> September 2012</a> (1)</li><li> <a href="/blog/archives/2012/08/"> August 2012</a> (1)</li><li> <a href="/blog/archives/2012/07/"> July 2012</a> (1)</li><li> <a href="/blog/archives/2012/05/"> May 2012</a> (2)</li><li> <a href="/blog/archives/2012/04/"> April 2012</a> (1)</li><li> <a href="/blog/archives/2012/02/"> February 2012</a> (1)</li><li> <a href="/blog/archives/2011/12/"> December 2011</a> (2)</li><li> <a href="/blog/archives/2011/11/"> November 2011</a> (3)</li><li> <a href="/blog/archives/2011/10/"> October 2011</a> (1)</li><li> <a href="/blog/archives/2011/09/"> September 2011</a> (1)</li><li> <a href="/blog/archives/2011/07/"> July 2011</a> (1)</li><li> <a href="/blog/archives/2011/06/"> June 2011</a> (1)</li><li> <a href="/blog/archives/2011/0 5/"> May 2011</a> (1)</li><li> <a href="/blog/archives/2011/02/"> February 2011</a> (1)</li><li> <a href="/blog/archives/2011/01/"> January 2011</a> (1)</li><li> <a href="/blog/archives/2010/10/"> October 2010</a> (1)</li><li> <a href="/blog/archives/2010/05/"> May 2010</a> (1)</li><li> <a href="/blog/archives/2010/02/"> February 2010</a> (1)</li> + <li> <a href="/blog/archives/2020/01/"> January 2020</a> (2)</li><li> <a href="/blog/archives/2019/12/"> December 2019</a> (1)</li><li> <a href="/blog/archives/2019/11/"> November 2019</a> (1)</li><li> <a href="/blog/archives/2019/08/"> August 2019</a> (2)</li><li> <a href="/blog/archives/2019/05/"> May 2019</a> (1)</li><li> <a href="/blog/archives/2018/11/"> November 2018</a> (1)</li><li> <a href="/blog/archives/2018/06/"> June 2018</a> (1)</li><li> <a href="/blog/archives/2018/03/"> March 2018</a> (1)</li><li> <a href="/blog/archives/2017/12/"> December 2017</a> (1)</li><li> <a href="/blog/archives/2017/09/"> September 2017</a> (2)</li><li> <a href="/blog/archives/2017/07/"> July 2017</a> (1)</li><li> <a href="/blog/archives/2017/04/"> April 2017</a> (3)</li><li> <a href="/blog/archives/2016/12/"> December 2016</a> (1)</li><li> <a href="/blog/archives/2016/11/"> November 2016</a> (1)</li><li> <a href="/blog/archives/2016/10/"> October 2016</a> (1)</li><li> <a href="/blog/archives/2016/09/"> September 2016</a> (1)</li><li> <a href="/blog/archives/2016/07/"> July 2016</a> (1)</li><li> <a href="/blog/archives/2016/06/"> June 2016</a> (1)</li><li> <a href="/blog/archives/2016/04/"> April 2016</a> (2)</li><li> <a href="/blog/archives/2016/02/"> February 2016</a> (2)</li><li> <a href="/blog/archives/2016/01/"> January 2016</a> (4)</li><li> <a href="/blog/archives/2015/12/"> December 2015</a> (1)</li><li> <a href="/blog/archives/2015/11/"> November 2015</a> (1)</li><li> <a href="/blog/archives/2015/10/"> October 2015</a> (2)</li><li> <a href="/blog/archives/2015/08/"> August 2015</a> (1)</li><li> <a href="/blog/archives/2015/03/"> March 2015</a> (1)</li><li> <a href="/blog/archives/2015/02/"> February 2015</a> (1)</li><li> <a href="/blog/archives/2014/12/"> December 2014</a> (1)</li><li> <a hre f="/blog/archives/2014/11/"> November 2014</a> (1)</li><li> <a href="/blog/archives/2014/07/"> July 2014</a> (2)</li><li> <a href="/blog/archives/2014/06/"> June 2014</a> (1)</li><li> <a href="/blog/archives/2014/05/"> May 2014</a> (1)</li><li> <a href="/blog/archives/2014/04/"> April 2014</a> (1)</li><li> <a href="/blog/archives/2014/02/"> February 2014</a> (8)</li><li> <a href="/blog/archives/2014/01/"> January 2014</a> (4)</li><li> <a href="/blog/archives/2013/12/"> December 2013</a> (3)</li><li> <a href="/blog/archives/2013/11/"> November 2013</a> (2)</li><li> <a href="/blog/archives/2013/09/"> September 2013</a> (1)</li><li> <a href="/blog/archives/2013/08/"> August 2013</a> (1)</li><li> <a href="/blog/archives/2013/07/"> July 2013</a> (1)</li><li> <a href="/blog/archives/2013/03/"> March 2013</a> (1)</li><li> <a href="/blog/archives/2013/02/"> February 2013</a> (1)</li><li> <a href="/blog/archi ves/2012/12/"> December 2012</a> (2)</li><li> <a href="/blog/archives/2012/11/"> November 2012</a> (2)</li><li> <a href="/blog/archives/2012/09/"> September 2012</a> (1)</li><li> <a href="/blog/archives/2012/08/"> August 2012</a> (1)</li><li> <a href="/blog/archives/2012/07/"> July 2012</a> (1)</li><li> <a href="/blog/archives/2012/05/"> May 2012</a> (2)</li><li> <a href="/blog/archives/2012/04/"> April 2012</a> (1)</li><li> <a href="/blog/archives/2012/02/"> February 2012</a> (1)</li><li> <a href="/blog/archives/2011/12/"> December 2011</a> (2)</li><li> <a href="/blog/archives/2011/11/"> November 2011</a> (3)</li><li> <a href="/blog/archives/2011/10/"> October 2011</a> (1)</li><li> <a href="/blog/archives/2011/09/"> September 2011</a> (1)</li><li> <a href="/blog/archives/2011/07/"> July 2011</a> (1)</li><li> <a href="/blog/archives/2011/06/"> June 2011</a> (1)</li><li> <a href="/blog/archives/2011/0 5/"> May 2011</a> (1)</li><li> <a href="/blog/archives/2011/02/"> February 2011</a> (1)</li><li> <a href="/blog/archives/2011/01/"> January 2011</a> (1)</li><li> <a href="/blog/archives/2010/10/"> October 2010</a> (1)</li><li> <a href="/blog/archives/2010/05/"> May 2010</a> (1)</li><li> <a href="/blog/archives/2010/02/"> February 2010</a> (1)</li> </ul> </div> </div> @@ -534,7 +529,7 @@ list of people who contributed to this r </div><!-- /.container --> <!-- JavaScript --> - <script src='/assets/global-c6c762cf30e99cb14d2cfafae2f87ab3.js' type='text/javascript'></script> + <script src='/assets/global-dfa80e7474b58ee1c1f578e43dccac44.js' type='text/javascript'></script>
