blob: a01c40d17e0aa33b39400ef2f25bde8d59155755 [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/" 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 class="active"><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/2023/08/10/libcloud-3-8-0-released.html">Libcloud 3.8.0 Released</a></h2>
<span class="post-date-author">By Tomaz Muraus on Aug 10, 2023</span>
<div class="post-content">
<p>We are happy to announce Libcloud v3.8.0.</p>
<p>This release includes new features, improvements, and bug fixes.</p>
<p>Highlights include:</p>
<ul>
<li>Performance improvements in the storage drivers</li>
<li>Removal of 18 drivers for providers that are no longer active (they went
out of business, have been acquired, or similar).</li>
</ul>
<p>A list of all the changes can be found at
<a href="https://libcloud.readthedocs.io/en/latest/changelog.html#changes-in-apache-libcloud-3.8.0">https://libcloud.readthedocs.io/en/latest/changelog.html#changes-in-apache-libcloud-3.8.0</a>.</p>
<h3 id="development-related-changes-developers-only">Development-Related Changes (developers only)</h3>
<p>In addition to the end-user visible changes, we have made various changes to our
development process and practices to better follow and align with modern
Python development and packaging best practices.</p>
<ul>
<li>Tooling (pylint, mypy, bandit, isort, black, etc.) config options have been
migrated into pyproject.yaml file.</li>
<li>Package setup and build-related metadata have been migrated from setup.py
and setup.cfg to pyproject.toml.</li>
<li>The unsafe “setup.py test” wrapper command has been removed in favor of
invoking pytest directly.</li>
<li>The “build” PyPi package is now used for creating release artifacts (sdist, wheel)
in an isolated virtual environment.</li>
</ul>
<h3 id="download">Download</h3>
<p>The release 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==3.8.0"
</pre>
<h3 id="upgrading">Upgrading</h3>
<p>If you have installed Libcloud using pip, you can also use it to upgrade:</p>
<pre>
pip install --upgrade "apache-libcloud==3.8.0"
</pre>
<h3 id="upgrade-notes">Upgrade notes</h3>
<p>A page that 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/v3.8.0/">https://libcloud.readthedocs.org/en/v3.8.0/</a></p>
<h3 id="bugsissues">Bugs/Issues</h3>
<p>If you find any bug or issue, please report it on our issue tracker
<a href="https://github.com/apache/libcloud/issues">https://github.com/apache/libcloud/issues</a>.</p>
<p>Don’t forget to attach an example and/or test that reproduces your
problem.</p>
<h3 id="thanks">Thanks</h3>
<p>Thanks to everyone who contributed and made this release possible! The full
list of people who contributed to this release can be found in the
<a href="https://libcloud.readthedocs.org/en/v3.8.0/changelog.html">CHANGES file</a>.</p>
<p>Special thanks to Anthony Monthe - @ZuluPro for contributing driver removal /
clean up change.</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/2023/01/08/libcloud-3-7-0-released.html">Libcloud 3.7.0 released</a></h2>
<span class="post-date-author">By Tomaz Muraus on Jan 08, 2023</span>
<div class="post-content">
<p>We are happy to announce Libcloud v3.7.0.</p>
<p>This release includes new features, improvements and bug fixes.</p>
<p>Highlights include:</p>
<ul>
<li>Improvements in the CloudSigma compute driver</li>
<li>Support for <code class="language-plaintext highlighter-rouge">af-south-1</code> region in the Amazon S3 storage driver</li>
<li>Bug fix for OAuth2 desktop client authentication in the Google Cloud
Platform compute driver</li>
<li>Support for Python 3.6 has been dropped</li>
</ul>
<p>A list of all the changes can be found at
<a href="https://libcloud.readthedocs.io/en/latest/changelog.html#changes-in-apache-libcloud-3.7.0">https://libcloud.readthedocs.io/en/latest/changelog.html#changes-in-apache-libcloud-3.7.0</a>.</p>
<h3 id="note-on-python-36-support">Note on Python 3.6 support</h3>
<p>Python 3.6 support has been dropped in Libcloud v3.7.0.</p>
<p>Python 3.6 has been EOL and non-supported for more than a year now
(<a href="https://endoflife.date/python">https://endoflife.date/python</a>) and a lot of libraries (including some we
depend on) have already dropped support for it.</p>
<p>Last release which still supports Python 3.6 is Libcloud v3.6.1.</p>
<h3 id="note-on-code-style-change-developers-only">Note on code style change (developers only)</h3>
<p>To make formatting and styling in our code base more consistent, we have
re-formatted all the code with black (<a href="https://github.com/psf/black">https://github.com/psf/black</a>) and
pyupgrade Python 3.5+ (<a href="https://github.com/asottile/pyupgrade">https://github.com/asottile/pyupgrade</a>) and we will
automatically enforce black code style (<a href="https://black.readthedocs.io/en/stable/">https://black.readthedocs.io/en/stable/</a>)
and pyupgrade checks for all the new code going forward.</p>
<p>This should make it easier to contribute and read the code since all the code
will be using the same style.</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==3.7.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==3.7.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/v3.7.0/">https://libcloud.readthedocs.org/en/v3.7.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://github.com/apache/libcloud/issues">https://github.com/apache/libcloud/issues</a>.</p>
<p>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/v3.7.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/2022/10/10/libcloud-3-6-1-released.html">Libcloud 3.6.1 released</a></h2>
<span class="post-date-author">By Tomaz Muraus on Oct 10, 2022</span>
<div class="post-content">
<p>We are happy to announce Libcloud v3.6.1.</p>
<p>This release includes new features, improvements and bug fixes.</p>
<p>Highlights include:</p>
<ul>
<li>Improvements in the EC2 price scraping script and updated pricing</li>
<li>Improvements in the Azure ARM compute driver</li>
<li>Improvements in the GCE compute driver</li>
<li>Various bug fixes in the EC2 compute, OpenStack compute, Azure storage and
other drivers</li>
</ul>
<p>A list of all the changes can be found at
<a href="https://libcloud.readthedocs.io/en/latest/changelog.html#changes-in-apache-libcloud-3.6.1">https://libcloud.readthedocs.io/en/latest/changelog.html#changes-in-apache-libcloud-3.6.1</a>.</p>
<h3 id="note-on-python-35-support">Note on Python 3.5 support</h3>
<p>Python 3.5 support has been dropped in Libcloud v3.5.0.</p>
<p>Python 3.5 has been EOL and non-supported for more than a year now
(<a href="https://endoflife.date/python">https://endoflife.date/python</a>) and a lot of libraries (including some we
depend on) have already dropped support for it.</p>
<p>Last release which still supports Python 3.5 is Libcloud v3.4.1.</p>
<h3 id="note-on-code-style-change-developers-only">Note on code style change (developers only)</h3>
<p>To make formatting and styling in our code base more consistent, we have
re-formatted all the code with black (<a href="https://github.com/psf/black">https://github.com/psf/black</a>) and
pyupgrade Python 3.5+ (<a href="https://github.com/asottile/pyupgrade">https://github.com/asottile/pyupgrade</a>) and we will
automatically enforce black code style (<a href="https://black.readthedocs.io/en/stable/">https://black.readthedocs.io/en/stable/</a>)
and pyupgrade checks for all the new code going forward.</p>
<p>This should make it easier to contribute and read the code since all the code
will be using the same style.</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==3.6.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==3.6.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/v3.6.1/">https://libcloud.readthedocs.org/en/v3.6.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://github.com/apache/libcloud/issues">https://github.com/apache/libcloud/issues</a>.</p>
<p>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/v3.6.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/2022/05/26/libcloud-3-6-0-released.html">Libcloud 3.6.0 released</a></h2>
<span class="post-date-author">By Tomaz Muraus on May 26, 2022</span>
<div class="post-content">
<p>We are happy to announce Libcloud v3.6.0.</p>
<p>This release includes new features, improvements and bug fixes.</p>
<p>Highlights include:</p>
<ul>
<li>Improvements in the Kuberneter container driver</li>
<li>Improvements in the OpenStack compute driver (support for micro versions,
etc.)</li>
<li>Compatibility / support for paramiko &gt;= 2.9.0 including backward
compatibility layer for backward incompatible changes in paramiko related
to old OpenSSH versions. More information on that available in the Upgrade
Notes -
<a href="https://libcloud.readthedocs.io/en/latest/upgrade_notes.html#libcloud-3-6-0">https://libcloud.readthedocs.io/en/latest/upgrade_notes.html#libcloud-3-6-0</a></li>
<li>Support for authenticating using Azure AD credentials in the Azure Blobs
storage driver</li>
</ul>
<p>A list of all the changes can be found at
<a href="https://libcloud.readthedocs.io/en/latest/changelog.html#changes-in-apache-libcloud-3.6.0">https://libcloud.readthedocs.io/en/latest/changelog.html#changes-in-apache-libcloud-3.6.0</a>.</p>
<h3 id="note-on-python-35-support">Note on Python 3.5 support</h3>
<p>Python 3.5 support has been dropped in Libcloud v3.5.0.</p>
<p>Python 3.5 has been EOL and non-supported for more than a year now
(<a href="https://endoflife.date/python">https://endoflife.date/python</a>) and a lot of libraries (including some we
depend on) have already dropped support for it.</p>
<p>Last release which still supports Python 3.5 is Libcloud v3.4.1.</p>
<h3 id="note-on-code-style-change-developers-only">Note on code style change (developers only)</h3>
<p>To make formating and styling in our code base more consistent, we have
re-formatted all the code with black (<a href="https://github.com/psf/black">https://github.com/psf/black</a>) and we will
automatically enforce black code style (<a href="https://black.readthedocs.io/en/stable/">https://black.readthedocs.io/en/stable/</a>)
for all the new code going forward.</p>
<p>This should make it easier to contribute and read the code since all the code
will be using the same style.</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==3.6.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==3.6.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/v3.6.0/">https://libcloud.readthedocs.org/en/v3.6.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://github.com/apache/libcloud/issues">https://github.com/apache/libcloud/issues</a>.</p>
<p>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/v3.6.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/2022/03/30/website-updates.html">Website Updates</a></h2>
<span class="post-date-author">By Tomaz Muraus on Mar 30, 2022</span>
<div class="post-content">
<p>Today we are happy to announce various website updates. Here is a short
summary of those updates.</p>
<ul>
<li>Move from svn to git for storing the website source code and the
generated static content (<a href="https://github.com/apache/libcloud-site">https://github.com/apache/libcloud-site</a>)</li>
<li>New Docker image to make it easier to build and contribute to the website</li>
<li>Upgrades to the various software and libraries used to build and serve
the website (Jekyll, Ruby, Ruby Gems, jQuery, Bootstrap, etc.).</li>
<li>Dark mode / theme for the website</li>
<li>Removal of Google tracking code (Google Analytics, Google Fonts)</li>
<li>Removal of various Ruby gems which are not needed to build the website</li>
<li>Other minor styling improvements</li>
</ul>
<div class="imginline">
<p><img src="/images/posts/tbd/dark_theme.png" class="img-responsive inline" /></p>
<p class="img-caption">Website using dark mode.</p>
</div>
<p>More on that below.</p>
<h2 id="background-context">Background, Context</h2>
<p>It has been over 8 years since the new static <a href="https://libcloud.apache.org/blog/2014/01/23/welcome-to-the-new-website.html">Jekyll powered website has
been launched</a>.</p>
<p>8 years is a long time and since then a lot has changed. Especially in the web
world, but the website stayed more or less the same.</p>
<p>Since the website is purely static and doesn’t contain any dynamic server side
components this means that not updating the software which is used to build the
website has no negative security implications for the end users (that’s a nice
thing about all the static website generators). This is vastly different if you
run a server side CMS such as Wordpress or similar where you need to make sure
it’s always up to date with the latest security patches.</p>
<p>Main problem with using old software (Ruby, Jekyll) was that it was very hard
to reproduce local development environment which made it almost impossible for
others to contribute - even I had issues with reproducing the environment in
the past year.</p>
<p>We used Ruby 1.9 and Jekyll 1.5 which were both almost 8 years old and
officially deprecated and non-supported for many years already.</p>
<p>At first, I only wanted to create a Docker image with this old software which
would make it easier for other people to contribute and build the website
locally.</p>
<p>It turned out that even that is very hard now because of the various old
versions of the software and libraries that software depends on. After
many hours, I did <a href="https://libcloud.apache.org/blog/2014/01/23/welcome-to-the-new-website.html">get it to work</a>, but I decide to try to go a step
further and see if I can actually update Ruby and Jekyll.</p>
<p>And surely, it turned out that’s not an easy task either. Over the years,
Jekyll had many releases with breaking changes and to make things worse, we
also utilize some custom Jekyll plugins which needed to be updated (I was
actually already somewhat aware I’m opening a can of worms because I
already tried to do that a couple of times in the past, but each time I
decided to abandon those efforts since it required too much work / time).</p>
<p>In the end, after addressing all of those various issues and breaking changes,
I got everything to work.</p>
<p>To make contributing even easier and faster, we also provide a pre-built Docker
image with the development environment which should save some time and CPU
cycles since the image doesn’t need to be built locally (sadly the image is on
the larger side because a lot of tooling is needed to build the website - I do
hope to reduce that a bit in a future when I get a chance by using a multi
stage build).</p>
<p>Since I was already working on the website I also decided to make a bunch of
other changes, my favorite one being dark mode / theme. I personally already
use <a href="https://addons.mozilla.org/sl/firefox/addon/darkreader/">Dark Reader extension for Firefox</a> which automatically provides dark
mode for most websites on the fly, but I know now everyone is using something
like that and a native dark mode / theme is usually better.</p>
<p>The source code and everything else for the new website is available at
<a href="https://github.com/apache/libcloud-site">https://github.com/apache/libcloud-site</a>.</p>
<h2 id="conclusion">Conclusion</h2>
<p>We hope you will enjoy those new changes and most importantly, we hope
those changes will decrease the barrier to entry and make contributing to
the website easier and faster.</p>
<p>P.S. If you find any bugs or issues with those changes (especially the dark
theme), please feel free to report them or, if possible, contribute the fix
directly - that would be much appreciated.</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/infrastructure.html" rel="tag">infrastructure</a>, <a href="/blog/tags/website.html" rel="tag">website</a>, <a href="/blog/tags/git.html" rel="tag">git</a></p>
</div>
</div>
</div>
</div>
<p class="navigation">
<span class="alignleft"><a href="/blog/page/2/">« Previous 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>