blob: 95b5158cd36bc4f036608324c455b7db529f7d86 [file] [log] [blame]
<!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>Blog | 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" />
<!-- Facebook OpenGraph tags -->
<meta content="Apache Libcloud" property="og:site_name">
<meta content="Blog" property="og:title">
<meta content="website" property="og:type">
<meta content="https://libcloud.apache.org/blog/page/7/" property="og:url">
<link href='/assets/global-1768bfa479597eed443be67c5aec2edc.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="/"><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/stable/" 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 class="material-switch pull-right">
<input id="theme-switch" name="theme-switch" type="checkbox" onclick="modeSwitcher()"/>
<label for="theme-switch" class="label-default"></label>
<span id="theme-toggle" class="theme-switch">Dark mode</span>
</div>
</div><!-- /.navbar-collapse -->
</div><!-- /.container -->
</nav>
<div class="container main-container">
<div class="row section page-content">
<div class="col-lg-8">
<h1>Blog</h1>
<div class="posts">
<div class="post">
<h2 class="post-title"><a href="/blog/2017/12/30/libcloud-year-in-review-2017-released.html">Libcloud Year in Review 2017</a></h2>
<span class="post-date-author">By Tomaz Muraus on Dec 30, 2017</span>
<div class="post-content">
<p>Another year is behind us. Like most of the previous years, this year included
a lot of exciting development. This post is going to present some statistics and
highlights of the year.</p>
<h3 id="year-in-numbers-recap">Year in Numbers (recap)</h3>
<ul>
<li>800+ commits</li>
<li>191 opened PRs on Github (159 closed, 32 open at the time of this writing)</li>
<li>86 opened JIRA issues</li>
<li>75+ different contributors</li>
<li>4 releases (3 major ones)</li>
</ul>
<div class="imginline">
<p><a href="https://www.openhub.net/p/libcloud" target="_blank"><img src="/images/posts/2017-12-30-libcloud-year-in-review-2017-released/Screenshot from 2017-12-29 19-07-48.png" class="img-responsive inline" /></a></p>
<p class="img-caption">Statistics from Open Hub.</p>
</div>
<p>You can also dig into the numbers yourself on <a href="https://github.com/apache/libcloud/pulse">Github</a>, <a href="https://www.openhub.net/p/libcloud">Open Hub</a> and
<a href="https://projects.apache.org/project.html?libcloud">Apache Project Information</a>.</p>
<h2 id="releases">Releases</h2>
<p>This year we had 4 releases (2.0.0, 2.1.0, 2.2.0, 2.2.1). Out of that, three
major ones.</p>
<p>Libcloud 2.0.0 which was released in April represented a big milestone. We
finally moved away from our home grown HTTP abstraction layer built on top
of Python’s httplib library to the popular requests library.</p>
<p>Back in the day when the project started, requests library didn’t exist yet so
we needed to build a lot of the functionality which is now provided by requests
ourselves. Move to requests means that we now have a lot less code to maintain
and we can focus our efforts on the actual drivers which is core to Libcloud and
where the project provides value.</p>
<p>To give you an idea how much effort it took - the ground work for that change
started back in 2016 (<a href="https://libcloud.apache.org/blog/2016/04/06/requests-support.html">https://libcloud.apache.org/blog/2016/04/06/requests-support.html</a>,
<a href="https://github.com/apache/libcloud/pull/728">https://github.com/apache/libcloud/pull/728</a>), but it took a lot more testing
and work to get it stable enough so we were finally able to include it as part
of the stable 2.0.0 release (and before that, we also released a couple of release
candidates so users could test and verify that their Libcloud related code
still works as expected without any regressions).</p>
<p>Special thanks to <a href="https://twitter.com/anthonypjshaw?lang=en">Anthony Shaw</a> for leading this effort and not giving up (the
change itself involved touching a lot of code and updating test cases for most
of the drivers which resulted in a lot of not so pleasant work and merge
conflicts).</p>
<h2 id="community">Community</h2>
<p>The community continued to grow and we have received contributions from more
than 75 different contributors. Keep in mind that this number only includes
people who contributed a code change which has been merged into trunk. The
actual number is quite a bit higher (code who didn’t get merged, people who
reported a bug or didn’t include a code change, etc).</p>
<p>We have also added one new committer - Quentin Pradet.</p>
<h2 id="ecosystem">Ecosystem</h2>
<p>In addition to various proprietary and private code bases, Libcloud continues
to be used as an important part by various open-source <a href="https://pypi.python.org/pypi?%3Aaction=search&amp;term=libcloud&amp;submit=search">projects and
libraries</a>.</p>
<p>Most notable ones include <a href="https://saltstack.com/">SaltStack</a>, <a href="https://stackstorm.com/">StackStorm</a> and <a href="https://www.google.si/search?ei=bqVGWvyGMYOXkwWlgI7gCw&amp;q=ansible&amp;oq=ansible&amp;gs_l=psy-ab.3..0i67k1j0l9.2982.2982.0.3130.1.1.0.0.0.0.99.99.1.1.0....0...1c.1.64.psy-ab..0.1.99....0.4KRxU06xPjw">Ansible</a>.</p>
<h2 id="conclusion">Conclusion</h2>
<p>I would like to take this opportunity to thank everyone who has contributed
to the project in one form or another. No matter how small or involved, your
contribution helped project grow and push through another successful year.</p>
<p>Again, thank you, happy and successful 2018 and see you soon.</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/year-in-review.html" rel="tag">year in review</a></p>
</div>
</div>
</div>
<div class="post">
<h2 class="post-title"><a href="/blog/2017/09/21/libcloud-2-2-1-released.html">Libcloud 2.2.1 released</a></h2>
<span class="post-date-author">By Tomaz Muraus on Sep 21, 2017</span>
<div class="post-content">
<p>We are pleased to announce the release of Libcloud 2.2.1!</p>
<p>This is a first patch release in the 2.2.x series and as such, it
includes some bug fixes and improvements.</p>
<p>The most important one of them fixes an installation of Libcloud 2.2.0
failing on some operating-system and file-system combinations (e.g.
ecryptfs layered on top of ext3/4) which don’t support file names longer
than 143 characters.</p>
<p>In addition to that, it also includes performance improvement for the
deploy functionality available to the compute drivers. Now the deploy
scripts which produce a lot of output should finish a lot faster.</p>
<p>Full change log can be found at
<a href="http://libcloud.readthedocs.io/en/latest/changelog.html#changes-in-apache-libcloud-2-2-1">http://libcloud.readthedocs.io/en/latest/changelog.html#changes-in-apache-libcloud-2-2-1</a>.</p>
<h3 id="download">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==2.2.1
</pre>
<h3 id="upgrading">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==2.2.1
</pre>
<h3 id="upgrade-notes">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 id="documentation">Documentation</h3>
<p>Regular and API documentation is available at <a href="https://libcloud.readthedocs.org/en/v2.2.1/">https://libcloud.readthedocs.org/en/v2.2.1/</a></p>
<h3 id="bugs--issues">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 id="thanks">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/v2.2.1/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-announcement.html" rel="tag">release announcement</a></p>
</div>
</div>
</div>
<div class="post">
<h2 class="post-title"><a href="/blog/2017/09/03/libcloud-2-2-0-released.html">Libcloud 2.2.0 released</a></h2>
<span class="post-date-author">By Anthony Shaw on Sep 03, 2017</span>
<div class="post-content">
<p>We are pleased to announce the release of Libcloud 2.2.0!</p>
<p>The release includes a new improvements to Azure ARM support, fixes for
Route 53 users, and support for TLS authenticated Docker drivers.</p>
<p>Full change log can be found at
<a href="http://libcloud.readthedocs.io/en/latest/changelog.html#changes-in-apache-libcloud-2.2.0">http://libcloud.readthedocs.io/en/latest/changelog.html#changes-in-apache-libcloud-2.2.0</a>.</p>
<p>All of our community for their ongoing support and contributions…</p>
<h3 id="download">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==2.2.0
</pre>
<h3 id="upgrading">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==2.2.0
</pre>
<h3 id="upgrade-notes">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 id="documentation">Documentation</h3>
<p>Regular and API documentation is available at <a href="https://libcloud.readthedocs.org/en/v2.2.0/">https://libcloud.readthedocs.org/en/v2.2.0/</a></p>
<h3 id="bugs--issues">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 id="thanks">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/v2.2.0/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-announcement.html" rel="tag">release announcement</a></p>
</div>
</div>
</div>
<div class="post">
<h2 class="post-title"><a href="/blog/2017/07/17/libcloud-2-1-0-released.html">Libcloud 2.1.0 released</a></h2>
<span class="post-date-author">By Anthony Shaw on Jul 17, 2017</span>
<div class="post-content">
<p>We are pleased to announce the release of Libcloud 2.1.0!</p>
<p>The release includes a new driver for Google Container Engine (GKE),
upgrades to the OpenStack driver to support keystone v3 and Nova v2.x</p>
<p>Full change log can be found at
<a href="http://libcloud.readthedocs.io/en/latest/changelog.html#changes-in-apache-libcloud-2-1-0">http://libcloud.readthedocs.io/en/latest/changelog.html#changes-in-apache-libcloud-2-1-0</a>.</p>
<p>All of our community for their ongoing support and contributions…</p>
<h3 id="download">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==2.1.0
</pre>
<h3 id="upgrading">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==2.1.0
</pre>
<h3 id="upgrade-notes">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 id="documentation">Documentation</h3>
<p>Regular and API documentation is available at <a href="https://libcloud.readthedocs.org/en/v2.1.0/">https://libcloud.readthedocs.org/en/v2.1.0/</a></p>
<h3 id="bugs--issues">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 id="thanks">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/v2.1.0/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-announcement.html" rel="tag">release announcement</a></p>
</div>
</div>
</div>
<div class="post">
<h2 class="post-title"><a href="/blog/2017/04/25/libcloud-2-0-0-released.html">Libcloud 2.0.0 released</a></h2>
<span class="post-date-author">By Anthony Shaw on Apr 25, 2017</span>
<div class="post-content">
<p>We are pleased to announce the release of Libcloud 2.0.0.</p>
<p>This major release brings many new features, improvements, bug-fixes, and drivers.</p>
<h2 id="release-highlights">Release highlights</h2>
<ul>
<li>Apache Libcloud 2.0 series replaces the use of Python httplib with a hard dependency on the <code class="language-plaintext highlighter-rouge">requests</code> package. Users no longer
have to specific Certificate Authority bundles when using Apache Libcloud</li>
<li>10% performance improvement through the use of HTTP sessions</li>
<li>Support for buffered IO streams for storage drivers</li>
<li>Support for Python 3.6, deprecation of Python 3.2</li>
<li>3 new drivers - <a href="http://libcloud.readthedocs.io/en/latest/compute/drivers/onapp.html">OnApp Compute</a>, <a href="http://libcloud.readthedocs.io/en/latest/dns/drivers/onapp.html">OnApp DNS</a>, <a href="http://libcloud.readthedocs.io/en/latest/compute/drivers/oneandone.html">1&amp;1 Compute</a></li>
<li>Lots of improvements to our Azure ARM support</li>
<li>Continuing udates to the Amazon drivers</li>
</ul>
<p>A detailed description of the 2.0 HTTP API is documented <a href="http://libcloud.readthedocs.io/en/latest/other/changes_in_2_0.html">here</a></p>
<h3 id="compute-api-changes">Compute API Changes</h3>
<ul>
<li>Outscale SAS doc improvements and logo update</li>
</ul>
<h4 id="onapp-changes">OnApp Changes</h4>
<ul>
<li>Add list images support for OnApp driver</li>
<li>Add keypair management to OnApp driver</li>
</ul>
<h4 id="amazon-ec2-changes">Amazon EC2 Changes</h4>
<ul>
<li>Add r4 instance types for AWS</li>
<li>Add support for AWS eu-west-2 and ca-central-1 regions</li>
<li>Add P2 GPU instance types</li>
<li>Add method to modify snapshot attribute for EC2</li>
<li>Add ENA support for EC2 compute images</li>
<li>Add support for forcing detachment of EBS volumes to EC2 driver</li>
<li>Add support for ModifyVolume and DescribeVolumesModifications</li>
<li>Added Import Snapshot and Describe Import Snapshot to EC2 compute driver</li>
<li>Add missing regions in AWS storage and compute drivers</li>
<li>Add SR-IOV net support to images in EC2 compute driver</li>
<li>Fix - update t2.small image size from 11 CPU to 1</li>
<li>Added Billing Product for image in EC2 compute driver</li>
</ul>
<h4 id="linode-changes">Linode changes</h4>
<ul>
<li>Add start, stop instance methods and fix incorrect state TERMINATED to STOPPED</li>
</ul>
<h4 id="azure-arm-changes">Azure ARM changes</h4>
<ul>
<li>Fix typeerror on ex_list_nics</li>
<li>Add support for Azure Cloud Environments as well as Locations</li>
<li>Fix string representation of the VhdImage type and fix listing of Public IP addresses</li>
<li>Add network security groups to azure ARM</li>
<li>Add the ability to list resource groups</li>
<li>Fix Azure ARM driver condition for ex_list_publishers where location is specified</li>
</ul>
<h4 id="google-cloud-changes">Google Cloud changes</h4>
<ul>
<li>Allow delete instances from managed group</li>
<li>Allow preemptible instances to be created</li>
<li>Remove validation checks for guestOsFeatures</li>
</ul>
<h4 id="alibaba-aliyun-changes">Alibaba Aliyun changes</h4>
<ul>
<li>Add aliyun ecs instance join leave security group</li>
<li>Fix Aliyun ECS, Load balancer and storage adapters when using unicode UTF-8 characters in the names of resources</li>
</ul>
<h4 id="digitalocean-changes">DigitalOcean changes</h4>
<ul>
<li>Add price_monthly extra param to digitalocean sizes</li>
</ul>
<h4 id="vmware-vsphere-changes">VMWare vSphere changes</h4>
<ul>
<li>Fix issue with authentication methods crashing</li>
</ul>
<h3 id="storage">Storage</h3>
<ul>
<li>Reintroduce S3 multipart upload support with signature v4</li>
</ul>
<h3 id="dns">DNS</h3>
<ul>
<li>Add <a href="http://libcloud.readthedocs.io/en/latest/dns/drivers/onapp.html">OnApp driver</a></li>
</ul>
<h2 id="minor-changes">Minor changes</h2>
<h3 id="common">Common</h3>
<ul>
<li>Added an integration test API and a test suite for validating functionality
without mocking any libcloud subsystems</li>
<li>Change Cloudscale to cloudscale.ch.</li>
</ul>
<h2 id="bug-fixes">Bug Fixes</h2>
<h3 id="compute">Compute</h3>
<h4 id="200">2.0.0</h4>
<ul>
<li>
<p>Fix OpenStack drivers not correctly setting URLs when used with identity API, would default to 127.0.0.1 and service
catalog URLs were not adhered to.</p>
</li>
<li>
<p>Fix Aliyun ECS, Load balancer and storage adapters when using unicode UTF-8 characters in the names of resources
in 2.0.0rc2 &lt; it would fail as a MalformedResponseError, Python 2.7 element tree was raising a unicode error</p>
</li>
<li>
<p>Refactor the test classes to use the full libcloud.http and libcloud.common.base modules, with Connection,
Response all used with requests_mock. This increases our test coverages and catches bugs in drivers’ custom
parse_body and auth modules</p>
</li>
<li>
<p>Rename libcloud.httplib_ssl to libcloud.http now that we don’t use httplib</p>
</li>
</ul>
<h4 id="200rc2">2.0.0rc2</h4>
<ul>
<li>Fix Public IP not assigned when creating NIC on Azure ARM</li>
<li>Fix a bug in profitbricks driver where listing snapshots would request a malformed URL</li>
<li>Fix LIBCLOUD-806 bug where vsphere driver cannot be instantiated</li>
<li>[google compute] Improve performance of list nodes by caching volume information.</li>
</ul>
<p>Full change log can be found at <a href="https://libcloud.readthedocs.org/en/latest/changelog.html">here</a>.</p>
<h3 id="special-thank-you">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>
<ul>
<li>Tinu Cleatus for the OnApp driver</li>
<li>Alex Misstear for the EC2 improvements</li>
<li>Jie Ren for the Aliyun improvements</li>
<li>Francisco Ros for the DigitalOcean improvements</li>
<li>Peter Amstutz and Joseph Hall for the Azure ARM API updates</li>
<li>All of our community for their ongoing support and contributions…</li>
</ul>
<h3 id="download">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==2.0.0
</pre>
<h3 id="upgrading">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==2.0.0
</pre>
<h3 id="upgrade-notes">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 id="documentation">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 id="bugs--issues">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 id="thanks">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-announcement.html" rel="tag">release announcement</a></p>
</div>
</div>
</div>
</div>
<p class="navigation">
<span class="alignleft"><a href="/blog/page/8/">« Previous Page</a></span>
<span class="pull-right"><a href="/blog/page/6/">Next Page »</a></span>
</p>
</div>
<div class="col-lg-3 col-lg-offset-1">
<h2>Archive</h1>
<ul>
<li> <a href="/blog/archives/2023/08/"> August 2023</a> &nbsp;(1)</li><li> <a href="/blog/archives/2023/01/"> January 2023</a> &nbsp;(1)</li><li> <a href="/blog/archives/2022/10/"> October 2022</a> &nbsp;(1)</li><li> <a href="/blog/archives/2022/05/"> May 2022</a> &nbsp;(1)</li><li> <a href="/blog/archives/2022/03/"> March 2022</a> &nbsp;(3)</li><li> <a href="/blog/archives/2021/11/"> November 2021</a> &nbsp;(2)</li><li> <a href="/blog/archives/2021/06/"> June 2021</a> &nbsp;(1)</li><li> <a href="/blog/archives/2021/01/"> January 2021</a> &nbsp;(2)</li><li> <a href="/blog/archives/2020/09/"> September 2020</a> &nbsp;(1)</li><li> <a href="/blog/archives/2020/08/"> August 2020</a> &nbsp;(2)</li><li> <a href="/blog/archives/2020/06/"> June 2020</a> &nbsp;(2)</li><li> <a href="/blog/archives/2020/04/"> April 2020</a> &nbsp;(2)</li><li> <a href="/blog/archives/2020/03/"> March 2020</a> &nbsp;(1)</li><li> <a href="/blog/archives/2020/01/"> January 2020</a> &nbsp;(2)</li><li> <a href="/blog/archives/2019/12/"> December 2019</a> &nbsp;(1)</li><li> <a href="/blog/archives/2019/11/"> November 2019</a> &nbsp;(1)</li><li> <a href="/blog/archives/2019/08/"> August 2019</a> &nbsp;(2)</li><li> <a href="/blog/archives/2019/05/"> May 2019</a> &nbsp;(1)</li><li> <a href="/blog/archives/2018/11/"> November 2018</a> &nbsp;(1)</li><li> <a href="/blog/archives/2018/06/"> June 2018</a> &nbsp;(1)</li><li> <a href="/blog/archives/2018/03/"> March 2018</a> &nbsp;(1)</li><li> <a href="/blog/archives/2017/12/"> December 2017</a> &nbsp;(1)</li><li> <a href="/blog/archives/2017/09/"> September 2017</a> &nbsp;(2)</li><li> <a href="/blog/archives/2017/07/"> July 2017</a> &nbsp;(1)</li><li> <a href="/blog/archives/2017/04/"> April 2017</a> &nbsp;(3)</li><li> <a href="/blog/archives/2016/12/"> December 2016</a> &nbsp;(1)</li><li> <a href="/blog/archives/2016/11/"> November 2016</a> &nbsp;(1)</li><li> <a href="/blog/archives/2016/10/"> October 2016</a> &nbsp;(1)</li><li> <a href="/blog/archives/2016/09/"> September 2016</a> &nbsp;(1)</li><li> <a href="/blog/archives/2016/07/"> July 2016</a> &nbsp;(1)</li><li> <a href="/blog/archives/2016/06/"> June 2016</a> &nbsp;(1)</li><li> <a href="/blog/archives/2016/04/"> April 2016</a> &nbsp;(2)</li><li> <a href="/blog/archives/2016/02/"> February 2016</a> &nbsp;(2)</li><li> <a href="/blog/archives/2016/01/"> January 2016</a> &nbsp;(4)</li><li> <a href="/blog/archives/2015/12/"> December 2015</a> &nbsp;(1)</li><li> <a href="/blog/archives/2015/11/"> November 2015</a> &nbsp;(1)</li><li> <a href="/blog/archives/2015/10/"> October 2015</a> &nbsp;(2)</li><li> <a href="/blog/archives/2015/08/"> August 2015</a> &nbsp;(1)</li><li> <a href="/blog/archives/2015/03/"> March 2015</a> &nbsp;(1)</li><li> <a href="/blog/archives/2015/02/"> February 2015</a> &nbsp;(1)</li><li> <a href="/blog/archives/2014/12/"> December 2014</a> &nbsp;(1)</li><li> <a href="/blog/archives/2014/11/"> November 2014</a> &nbsp;(1)</li><li> <a href="/blog/archives/2014/07/"> July 2014</a> &nbsp;(2)</li><li> <a href="/blog/archives/2014/06/"> June 2014</a> &nbsp;(1)</li><li> <a href="/blog/archives/2014/05/"> May 2014</a> &nbsp;(1)</li><li> <a href="/blog/archives/2014/04/"> April 2014</a> &nbsp;(1)</li><li> <a href="/blog/archives/2014/02/"> February 2014</a> &nbsp;(8)</li><li> <a href="/blog/archives/2014/01/"> January 2014</a> &nbsp;(4)</li><li> <a href="/blog/archives/2013/12/"> December 2013</a> &nbsp;(3)</li><li> <a href="/blog/archives/2013/11/"> November 2013</a> &nbsp;(2)</li><li> <a href="/blog/archives/2013/09/"> September 2013</a> &nbsp;(1)</li><li> <a href="/blog/archives/2013/08/"> August 2013</a> &nbsp;(1)</li><li> <a href="/blog/archives/2013/07/"> July 2013</a> &nbsp;(1)</li><li> <a href="/blog/archives/2013/03/"> March 2013</a> &nbsp;(1)</li><li> <a href="/blog/archives/2013/02/"> February 2013</a> &nbsp;(1)</li><li> <a href="/blog/archives/2012/12/"> December 2012</a> &nbsp;(2)</li><li> <a href="/blog/archives/2012/11/"> November 2012</a> &nbsp;(2)</li><li> <a href="/blog/archives/2012/09/"> September 2012</a> &nbsp;(1)</li><li> <a href="/blog/archives/2012/08/"> August 2012</a> &nbsp;(1)</li><li> <a href="/blog/archives/2012/07/"> July 2012</a> &nbsp;(1)</li><li> <a href="/blog/archives/2012/05/"> May 2012</a> &nbsp;(2)</li><li> <a href="/blog/archives/2012/04/"> April 2012</a> &nbsp;(1)</li><li> <a href="/blog/archives/2012/02/"> February 2012</a> &nbsp;(1)</li><li> <a href="/blog/archives/2011/12/"> December 2011</a> &nbsp;(2)</li><li> <a href="/blog/archives/2011/11/"> November 2011</a> &nbsp;(3)</li><li> <a href="/blog/archives/2011/10/"> October 2011</a> &nbsp;(1)</li><li> <a href="/blog/archives/2011/09/"> September 2011</a> &nbsp;(1)</li><li> <a href="/blog/archives/2011/07/"> July 2011</a> &nbsp;(1)</li><li> <a href="/blog/archives/2011/06/"> June 2011</a> &nbsp;(1)</li><li> <a href="/blog/archives/2011/05/"> May 2011</a> &nbsp;(1)</li><li> <a href="/blog/archives/2011/02/"> February 2011</a> &nbsp;(1)</li><li> <a href="/blog/archives/2011/01/"> January 2011</a> &nbsp;(1)</li><li> <a href="/blog/archives/2010/10/"> October 2010</a> &nbsp;(1)</li><li> <a href="/blog/archives/2010/05/"> May 2010</a> &nbsp;(1)</li><li> <a href="/blog/archives/2010/02/"> February 2010</a> &nbsp;(1)</li>
</ul>
</div>
</div>
<hr />
<footer>
<div class="row">
<div class="col-lg-12 text-center">
<div class="footer-links">
<p><a href="http://www.apache.org/licenses/">License</a> | <a
href="/security.html">Security</a> | <a
href="http://www.apache.org/foundation/sponsorship.html">Sponsorship</a> |
<a href="http://www.apache.org/foundation/thanks.html">Thanks</a> |
<a href="https://www.apache.org/events/">Events</a> |
<a href="/credits.html">Credits</a> | <a href="/media.html">Media</a>
</div>
<div class="footer-text">
<p><a class="acevent" data-format="wide"></a></p>
<p class="">Copyright &copy; 2009-2023 <a href="https://www.apache.org/" target="_blank">The Apache Software Foundation</a></p>
<p class="">Apache Libcloud, Libcloud, Apache, the Apache feather, and the Apache Libcloud project logo are trademarks of the Apache Software Foundation. All other marks mentioned may be trademarks or registered trademarks of their respective owners.</p>
<p class="">Site last updated on 2023-09-09 21:33:21 +0000</p>
</div>
</div>
</div>
</footer>
</div><!-- /.container -->
<!-- JavaScript -->
<script src='/assets/global-20157a00c0e17a775f45ed99ccdf79d7.js' type='text/javascript'></script>
<script type="text/javascript">
var _paq = window._paq = window._paq || [];
/* tracker methods like "setCustomDimension" should be called before
"trackPageView" */
/* We explicitly disable cookie tracking to avoid privacy issues */
_paq.push(['disableCookies']);
_paq.push(['trackPageView']);
_paq.push(['enableLinkTracking']);
(function() {
var u="https://analytics.apache.org/";
_paq.push(['setTrackerUrl', u+'matomo.php']);
_paq.push(['setSiteId', '7']);
var d=document, g=d.createElement('script'),
s=d.getElementsByTagName('script')[0];
g.async=true; g.src=u+'matomo.js'; s.parentNode.insertBefore(g,s);
})();
</script>
<script src="https://www.apachecon.com/event-images/snippet.js"></script>
</body>
</html>