Author: tomaz
Date: Sat Dec 30 09:56:32 2017
New Revision: 1819584
URL: http://svn.apache.org/viewvc?rev=1819584&view=rev
Log:
Add new blog post.
Added:
libcloud/site/trunk/generated/blog/2017/12/
libcloud/site/trunk/generated/blog/2017/12/30/
libcloud/site/trunk/generated/blog/2017/12/30/libcloud-year-in-review-2017-released.html
libcloud/site/trunk/generated/blog/archives/2017/12/
libcloud/site/trunk/generated/blog/archives/2017/12/index.html
libcloud/site/trunk/generated/blog/tags/year in review.html
libcloud/site/trunk/generated/images/posts/2017-12-30-libcloud-year-in-review-2017-released/
libcloud/site/trunk/generated/images/posts/2017-12-30-libcloud-year-in-review-2017-released/Screenshot
from 2017-12-29 19-07-48.png (with props)
libcloud/site/trunk/generated/images/posts/2017-12-30-libcloud-year-in-review-2017-released/Screenshot
from 2017-12-30 10-48-58.png (with props)
libcloud/site/trunk/source/_posts/2017-12-30-libcloud-year-in-review-2017-released.md
libcloud/site/trunk/source/images/posts/2017-12-30-libcloud-year-in-review-2017-released/
libcloud/site/trunk/source/images/posts/2017-12-30-libcloud-year-in-review-2017-released/Screenshot
from 2017-12-29 19-07-48.png (with props)
libcloud/site/trunk/source/images/posts/2017-12-30-libcloud-year-in-review-2017-released/Screenshot
from 2017-12-30 10-48-58.png (with props)
Modified:
libcloud/site/trunk/generated/blog/atom.xml
libcloud/site/trunk/generated/blog/index.html
libcloud/site/trunk/generated/blog/page/10/index.html
libcloud/site/trunk/generated/blog/page/11/index.html
libcloud/site/trunk/generated/blog/page/12/index.html
libcloud/site/trunk/generated/blog/page/13/index.html
libcloud/site/trunk/generated/blog/page/14/index.html
libcloud/site/trunk/generated/blog/page/15/index.html
libcloud/site/trunk/generated/blog/page/16/index.html
libcloud/site/trunk/generated/blog/page/17/index.html
libcloud/site/trunk/generated/blog/page/2/index.html
libcloud/site/trunk/generated/blog/page/3/index.html
libcloud/site/trunk/generated/blog/page/4/index.html
libcloud/site/trunk/generated/blog/page/5/index.html
libcloud/site/trunk/generated/blog/page/6/index.html
libcloud/site/trunk/generated/blog/page/7/index.html
libcloud/site/trunk/generated/blog/page/8/index.html
libcloud/site/trunk/generated/blog/page/9/index.html
libcloud/site/trunk/generated/blog/tags/news.html
libcloud/site/trunk/generated/index.html
libcloud/site/trunk/generated/sitemap.xml
Added:
libcloud/site/trunk/generated/blog/2017/12/30/libcloud-year-in-review-2017-released.html
URL:
http://svn.apache.org/viewvc/libcloud/site/trunk/generated/blog/2017/12/30/libcloud-year-in-review-2017-released.html?rev=1819584&view=auto
==============================================================================
---
libcloud/site/trunk/generated/blog/2017/12/30/libcloud-year-in-review-2017-released.html
(added)
+++
libcloud/site/trunk/generated/blog/2017/12/30/libcloud-year-in-review-2017-released.html
Sat Dec 30 09:56:32 2017
@@ -0,0 +1,246 @@
+<!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="news,year in review" />
+
+
+
+ <title>Libcloud Year in Review 2017 | Apache Libcloud</title>
+
+
+ <!-- fav icons -->
+ <link rel="shortcut icon" href="/images/favicon.png" />
+ <link rel="apple-touch-icon" href="/images/apple-touch-icon.png" />
+ <link rel="apple-touch-icon-precomposed"
href="/images/apple-touch-icon.png" />
+
+ <link href="/blog/atom.xml" type="application/atom+xml" rel="alternate"
title="Apache Libcloud Blog Feed" />
+
+ <link
href='https://fonts.googleapis.com/css?family=Open+Sans:400,400italic'
rel='stylesheet' type='text/css'>
+ <link href='https://fonts.googleapis.com/css?family=Inconsolata'
rel='stylesheet' type='text/css'>
+
+ <!-- Facebook OpenGraph tags -->
+ <meta content="Apache Libcloud" property="og:site_name">
+
+ <meta content="Libcloud Year in Review 2017" property="og:title">
+
+
+
+
+
+
+
+ <meta content="article" property="og:type">
+
+
+
+ <meta
content="https://libcloud.apache.org/blog/2017/12/30/libcloud-year-in-review-2017-released.html"
property="og:url">
+
+
+ <meta content="2017-12-30T00:00:00+01:00"
property="article:published_time">
+ <meta content="https://libcloud.apache.org/about.html"
property="article:author">
+
+
+
+
+ <meta content="news" property="article:tag">
+
+ <meta content="year in review" property="article:tag">
+
+
+
+ <link href='/assets/global-57b0092d353d0369071e1021782bb38d.css'
rel='stylesheet' type='text/css' />
+
+ </head>
+
+ <body data-spy="scroll" data-target=".sidebar-nav" data-offset="80">
+ <nav class="navbar navbar-fixed-top navbar-inverse" role="navigation">
+ <div class="container">
+ <div class="navbar-header">
+ <button type="button" class="navbar-toggle" data-toggle="collapse"
data-target=".navbar-ex1-collapse">
+ <span class="sr-only">Toggle navigation</span>
+ <span class="icon-bar"></span>
+ <span class="icon-bar"></span>
+ <span class="icon-bar"></span>
+ </button>
+ <a class="navbar-brand" href="/index.html"><img
src="/images/libcloud_logo.png" class="navbar-logo" /> Apache Libcloud</a>
+ </div>
+ <div class="collapse navbar-collapse navbar-ex1-collapse">
+ <ul class="nav navbar-nav">
+
+
+ <li ><a href="/" >Home</a></li>
+
+ <li ><a href="/about.html" >About</a></li>
+
+ <li ><a href="/getting-started.html" >Quick Start</a></li>
+
+ <li ><a href="https://libcloud.readthedocs.org/en/latest/"
target="_blank">Documentation</a></li>
+
+ <li ><a href="/downloads.html" >Downloads</a></li>
+
+ <li ><a href="/community.html" >Community</a></li>
+
+ <li ><a href="/blog/" >Blog</a></li>
+
+ </ul>
+ </div><!-- /.navbar-collapse -->
+ </div><!-- /.container -->
+ </nav>
+
+ <div class="container main-container">
+ <div class="row section page-content">
+ <div class="col-lg-8 col-lg-offset-2">
+
+<div class="post">
+
+ <h2>Libcloud Year in Review 2017</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
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>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">
+ <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 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>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
(https://libcloud.apache.org/blog/2016/04/06/requests-support.html,
+https://github.com/apache/libcloud/pull/728), 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>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>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&term=libcloud&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&q=ansible&oq=ansible&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>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>
+
+ </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%20in%20review.html" rel="tag">year in review</a></p>
+ </div>
+ </div>
+</div>
+
+Share : <a href="https://twitter.com/share"
class="twitter-share-button"{count} data-via="libcloud" data-size="large"
data-hashtags="cloud">Tweet</a>
+<script>!function(d,s,id){var
js,fjs=d.getElementsByTagName(s)[0],p=/^http:/.test(d.location)?'http':'https';if(!d.getElementById(id)){js=d.createElement(s);js.id=id;js.src=p+'://platform.twitter.com/widgets.js';fjs.parentNode.insertBefore(js,fjs);}}(document,
'script', 'twitter-wjs');</script>
+
+ </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="/credits.html">Credits</a> | <a href="/media.html">Media</a>
+</div>
+
+<div class="footer-text">
+ <p class="">Copyright © 2009-2017 <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>
+</div>
+
+ </div>
+ </div>
+ </footer>
+
+ </div><!-- /.container -->
+
+ <!-- JavaScript -->
+ <script src='/assets/global-14c8e0124e6d563413005cb909342e2a.js'
type='text/javascript'></script>
+
+
+
+
+ <script type="text/javascript">
+ var _gaq = _gaq || [];
+ _gaq.push(['_setAccount', 'UA-23580482-1']);
+ _gaq.push(['_trackPageview']);
+
+ (function() {
+ var ga = document.createElement('script'); ga.type = 'text/javascript';
ga.async = true;
+ ga.src = ('https:' == document.location.protocol ? 'https://ssl' :
'http://www') + '.google-analytics.com/ga.js';
+ var s = document.getElementsByTagName('script')[0];
s.parentNode.insertBefore(ga, s);
+ })();
+</script>
+
+ </body>
+</html>
Added: libcloud/site/trunk/generated/blog/archives/2017/12/index.html
URL:
http://svn.apache.org/viewvc/libcloud/site/trunk/generated/blog/archives/2017/12/index.html?rev=1819584&view=auto
==============================================================================
--- libcloud/site/trunk/generated/blog/archives/2017/12/index.html (added)
+++ libcloud/site/trunk/generated/blog/archives/2017/12/index.html Sat Dec 30
09:56:32 2017
@@ -0,0 +1,243 @@
+<!DOCTYPE html>
+<html lang="en">
+ <head>
+ <meta charset="utf-8">
+ <meta name="viewport" content="width=device-width, initial-scale=1.0">
+
+
+ <meta name="description" content="Archive: 2017 12">
+
+
+ <meta name="author" content="The Apache Software Foundation">
+
+
+ <meta name="keywords" content="python,libcloud,cloud,cloud
computing,rackspace,amazon ec2,cloudfiles,openstack,cloudstack" />
+
+
+
+ <title>Archive: 2017 » December | Apache Libcloud</title>
+
+
+ <!-- fav icons -->
+ <link rel="shortcut icon" href="/images/favicon.png" />
+ <link rel="apple-touch-icon" href="/images/apple-touch-icon.png" />
+ <link rel="apple-touch-icon-precomposed"
href="/images/apple-touch-icon.png" />
+
+ <link href="/blog/atom.xml" type="application/atom+xml" rel="alternate"
title="Apache Libcloud Blog Feed" />
+
+ <link
href='https://fonts.googleapis.com/css?family=Open+Sans:400,400italic'
rel='stylesheet' type='text/css'>
+ <link href='https://fonts.googleapis.com/css?family=Inconsolata'
rel='stylesheet' type='text/css'>
+
+ <!-- Facebook OpenGraph tags -->
+ <meta content="Apache Libcloud" property="og:site_name">
+
+ <meta content="Archive: 2017 » December" property="og:title">
+
+
+
+
+
+ <meta content="Archive: 2017 12" property="og:description">
+
+
+
+ <meta content="website" property="og:type">
+
+
+
+ <meta
content="https://libcloud.apache.org/blog/archives/2017/12/index.html"
property="og:url">
+
+
+
+
+
+ <link href='/assets/global-57b0092d353d0369071e1021782bb38d.css'
rel='stylesheet' type='text/css' />
+
+ </head>
+
+ <body data-spy="scroll" data-target=".sidebar-nav" data-offset="80">
+ <nav class="navbar navbar-fixed-top navbar-inverse" role="navigation">
+ <div class="container">
+ <div class="navbar-header">
+ <button type="button" class="navbar-toggle" data-toggle="collapse"
data-target=".navbar-ex1-collapse">
+ <span class="sr-only">Toggle navigation</span>
+ <span class="icon-bar"></span>
+ <span class="icon-bar"></span>
+ <span class="icon-bar"></span>
+ </button>
+ <a class="navbar-brand" href="/index.html"><img
src="/images/libcloud_logo.png" class="navbar-logo" /> Apache Libcloud</a>
+ </div>
+ <div class="collapse navbar-collapse navbar-ex1-collapse">
+ <ul class="nav navbar-nav">
+
+
+ <li ><a href="/" >Home</a></li>
+
+ <li ><a href="/about.html" >About</a></li>
+
+ <li ><a href="/getting-started.html" >Quick Start</a></li>
+
+ <li ><a href="https://libcloud.readthedocs.org/en/latest/"
target="_blank">Documentation</a></li>
+
+ <li ><a href="/downloads.html" >Downloads</a></li>
+
+ <li ><a href="/community.html" >Community</a></li>
+
+ <li ><a href="/blog/" >Blog</a></li>
+
+ </ul>
+ </div><!-- /.navbar-collapse -->
+ </div><!-- /.container -->
+ </nav>
+
+ <div class="container main-container">
+
+
+ <div class="post">
+
+ <h2><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 <span
style="display:none">(<a
href="https://plus.google.com/+TomazMuraus?rel=author">Google+</a>)</span>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>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">
+ <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 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>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
(https://libcloud.apache.org/blog/2016/04/06/requests-support.html,
+https://github.com/apache/libcloud/pull/728), 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>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>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&term=libcloud&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&q=ansible&oq=ansible&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>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>
+
+ </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%20in%20review.html" rel="tag">year in review</a></p>
+ </div>
+ </div>
+</div>
+
+
+
+<p class="navigation">
+
+
+
+</p>
+
+
+
+ <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="/credits.html">Credits</a> | <a href="/media.html">Media</a>
+</div>
+
+<div class="footer-text">
+ <p class="">Copyright © 2009-2017 <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>
+</div>
+
+ </div>
+ </div>
+ </footer>
+
+ </div><!-- /.container -->
+
+ <!-- JavaScript -->
+ <script src='/assets/global-14c8e0124e6d563413005cb909342e2a.js'
type='text/javascript'></script>
+
+
+
+
+ <script type="text/javascript">
+ var _gaq = _gaq || [];
+ _gaq.push(['_setAccount', 'UA-23580482-1']);
+ _gaq.push(['_trackPageview']);
+
+ (function() {
+ var ga = document.createElement('script'); ga.type = 'text/javascript';
ga.async = true;
+ ga.src = ('https:' == document.location.protocol ? 'https://ssl' :
'http://www') + '.google-analytics.com/ga.js';
+ var s = document.getElementsByTagName('script')[0];
s.parentNode.insertBefore(ga, s);
+ })();
+</script>
+
+ </body>
+</html>
Modified: libcloud/site/trunk/generated/blog/atom.xml
URL:
http://svn.apache.org/viewvc/libcloud/site/trunk/generated/blog/atom.xml?rev=1819584&r1=1819583&r2=1819584&view=diff
==============================================================================
--- libcloud/site/trunk/generated/blog/atom.xml (original)
+++ libcloud/site/trunk/generated/blog/atom.xml Sat Dec 30 09:56:32 2017
@@ -5,13 +5,97 @@
<link href="https://libcloud.apache.org" rel="self" />
<link href="https://libcloud.apache.org" />
<id>https://libcloud.apache.org</id>
- <updated>2017-09-24T15:33:11+02:00</updated>
+ <updated>2017-12-30T10:54:16+01:00</updated>
<author>
<name>The Apache Software Foundation</name>
</author>
<entry>
+ <title>Libcloud Year in Review 2017</title>
+ <link
href="https://libcloud.apache.org/blog/2017/12/30/libcloud-year-in-review-2017-released.html"
/>
+
<id>https://libcloud.apache.org/blog/2017/12/30/libcloud-year-in-review-2017-released.html</id>
+ <updated>2017-12-30T00:00:00+01:00</updated>
+ <author>
+ <name>Tomaz Muraus</name>
+ </author>
+ <content type="html"><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>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">
+ <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 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>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&#39;s httplib library to the popular requests library.</p>
+
+<p>Back in the day when the project started, requests library
didn&#39;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
(https://libcloud.apache.org/blog/2016/04/06/requests-support.html,
+https://github.com/apache/libcloud/pull/728), 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>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&#39;t get merged,
people who
+reported a bug or didn&#39;t include a code change, etc).</p>
+
+<p>We have also added one new committer - Quentin Pradet.</p>
+
+<h2>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>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>
+</content>
+ </entry>
+
+ <entry>
<title>Libcloud 2.2.1 released</title>
<link
href="https://libcloud.apache.org/blog/2017/09/21/libcloud-2-2-1-released.html"
/>
<id>https://libcloud.apache.org/blog/2017/09/21/libcloud-2-2-1-released.html</id>
@@ -922,129 +1006,6 @@ pip install --upgrade apache-libcloud==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&#39;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>
-</content>
- </entry>
-
- <entry>
- <title>Libcloud 1.2.1 released</title>
- <link
href="https://libcloud.apache.org/blog/2016/09/23/libcloud-1-2-1-released.html"
/>
-
<id>https://libcloud.apache.org/blog/2016/09/23/libcloud-1-2-1-released.html</id>
- <updated>2016-09-23T00:00:00+02:00</updated>
- <author>
- <name>Anthony Shaw</name>
- </author>
- <content type="html"><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 &#39;extra&#39; 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
Modified: libcloud/site/trunk/generated/blog/index.html
URL:
http://svn.apache.org/viewvc/libcloud/site/trunk/generated/blog/index.html?rev=1819584&r1=1819583&r2=1819584&view=diff
==============================================================================
--- libcloud/site/trunk/generated/blog/index.html (original)
+++ libcloud/site/trunk/generated/blog/index.html Sat Dec 30 09:56:32 2017
@@ -97,6 +97,103 @@
<div class="post">
+ <h2><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 <span
style="display:none">(<a
href="https://plus.google.com/+TomazMuraus?rel=author">Google+</a>)</span>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>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">
+ <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 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>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
(https://libcloud.apache.org/blog/2016/04/06/requests-support.html,
+https://github.com/apache/libcloud/pull/728), 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>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>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&term=libcloud&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&q=ansible&oq=ansible&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>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>
+
+ </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%20in%20review.html" rel="tag">year in review</a></p>
+ </div>
+ </div>
+</div>
+
+
+
+
+ <div class="post">
+
<h2><a href="/blog/2017/09/21/libcloud-2-2-1-released.html">Libcloud 2.2.1
released</a></h2>
@@ -542,175 +639,6 @@ list of people who contributed to this r
-
- <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>
<p class="navigation">
@@ -729,7 +657,7 @@ the API and the implementation details c
<div class="col-lg-3 col-lg-offset-1">
<h2>Archive</h1>
<ul>
- <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
href="/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/archives/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/arc
hives/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/05/"> 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/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
href="/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/archives/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/arc
hives/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/05/"> 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>
Modified: libcloud/site/trunk/generated/blog/page/10/index.html
URL:
http://svn.apache.org/viewvc/libcloud/site/trunk/generated/blog/page/10/index.html?rev=1819584&r1=1819583&r2=1819584&view=diff
==============================================================================
--- libcloud/site/trunk/generated/blog/page/10/index.html (original)
+++ libcloud/site/trunk/generated/blog/page/10/index.html Sat Dec 30 09:56:32
2017
@@ -97,6 +97,99 @@
<div class="post">
+ <h2><a href="/blog/2014/01/22/libcloud-0-14-0-released.html">Libcloud
0.14.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
Jan 22, 2014</span>
+
+ <div class="post-content">
+ <p>We are pleased to announce a long awaited Libcloud 0.14.0 release.</p>
+
+<p>This is a first release in the 0.14 series which means it brings many
+(and I mean many!) new features, changes and improvements.</p>
+
+<h3>Release highlights</h3>
+
+<ul>
+<li>To make working with providers which support multiple regions easier and
+more user-friendly, some of the drivers have moved away from the "one
+class per region" to a single class plus "region" argument
model. Those
+drivers include: EC2, Rackspace, ElasticHosts, Joyent, CloudFiles.</li>
+<li>Addition of a programmatic way of updating the pricing file and ability
+to use a custom pricing file. For more information, please see
+https://libcloud.readthedocs.org/en/latest/compute/pricing.html#using-a-custom-pricing-file</li>
+<li>Addition of block storage management methods to the following drivers:
+OpenNebula, OpenStack, EC2</li>
+<li>Unification of the extension arguments for handling security groups in
+the EC2 and OpenStack driver</li>
+<li>New standard compute API for SSH key-pair management</li>
+<li>Many new features and improvements in the CloudStack driver</li>
+<li>New compute and load balancer driver for Google Compute Engine (GCE)</li>
+<li>Ability to export Libcloud's DNS zone to BIND zone format</li>
+<li>and much more!</li>
+</ul>
+
+<p>Full change log can be found <a
href="https://libcloud.readthedocs.org/en/latest/changelog.html#changes-with-apache-libcloud-0-14-0-beta3">here</a>
and <a
href="https://libcloud.readthedocs.org/en/latest/changelog.html#changes-with-apache-libcloud-0-14-0">here</a>
(keep in mind that this
+release also includes all the changes from 0.14.0-beta3).</p>
+
+<h3>Note about backward compatibility</h3>
+
+<p>Some of the changes noted above are backward incompatible. For more
+information on what has changed and how to update your code to work with
+a new release, please visit the <a
href="https://libcloud.readthedocs.org/en/latest/upgrade_notes.html#libcloud-0-14-0">Upgrade
Notes page</a>.</p>
+
+<h3>Download</h3>
+
+<p>Libcloud 0.14.0 can be downloaded from
+<a
href="https://libcloud.apache.org/downloads.html">https://libcloud.apache.org/downloads.html</a></p>
+
+<p>or installed using pip:</p>
+
+<div class="highlight"><pre><code class="bash">pip install
apache-libcloud<span class="o">==</span>0.14.0
+</code></pre></div>
+
+<h3>Upgrading</h3>
+
+<p>If you have installed Libcloud using pip you can also use it to upgrade
it:</p>
+
+<div class="highlight"><pre><code class="bash">pip install --upgrade
apache-libcloud<span class="o">==</span>0.14.0
+</code></pre></div>
+
+<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!</p>
+
+<p>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-14-0">Changelog</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/2014/01/01/quick-update-about-0-13-3-release-and-digitalocean-vulnerability.html">Quick
update about 0.13.3 release and DigitalOcean vulnerability</a></h2>
@@ -349,38 +442,6 @@ and more successful :)</p>
-
- <div class="post">
-
- <h2><a
href="/blog/2013/11/25/new-committers-brian-curtin-joins-our-team.html">New
committer Brian Curtin joins our team</a></h2>
-
-
-
-
-
- <span class="post-date-author">By Tomaz Muraus <span
style="display:none">(<a
href="https://plus.google.com/+TomazMuraus?rel=author">Google+</a>)</span>on
Nov 25, 2013</span>
-
- <div class="post-content">
- <p>The Project Management Committee (PMC) for Apache Libcloud has asked
Brian
-Curtin to become a committer and we are pleased to announce that they have
-accepted.</p>
-
-<p>We are glad to have him as a committer. Everyone, please help us welcome him
-to the team :)</p>
-
-<p>Source: <a
href="http://mail-archives.apache.org/mod_mbox/libcloud-dev/201311.mbox/%3CCAJMHEmJZO0%3DPLpLXe9W9wPXTLwh2iQ3x2xXy%2BWhqjdFBv2%2BHbw%40mail.gmail.com%3E">mailing
list</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/new%20committer.html" rel="tag">new committer</a></p>
- </div>
- </div>
-</div>
-
-
-
</div>
<p class="navigation">
@@ -405,7 +466,7 @@ to the team :)</p>
<div class="col-lg-3 col-lg-offset-1">
<h2>Archive</h1>
<ul>
- <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
href="/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/archives/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/arc
hives/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/05/"> 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/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
href="/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/archives/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/arc
hives/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/05/"> 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>
Modified: libcloud/site/trunk/generated/blog/page/11/index.html
URL:
http://svn.apache.org/viewvc/libcloud/site/trunk/generated/blog/page/11/index.html?rev=1819584&r1=1819583&r2=1819584&view=diff
==============================================================================
--- libcloud/site/trunk/generated/blog/page/11/index.html (original)
+++ libcloud/site/trunk/generated/blog/page/11/index.html Sat Dec 30 09:56:32
2017
@@ -97,6 +97,38 @@
<div class="post">
+ <h2><a
href="/blog/2013/11/25/new-committers-brian-curtin-joins-our-team.html">New
committer Brian Curtin joins our team</a></h2>
+
+
+
+
+
+ <span class="post-date-author">By Tomaz Muraus <span
style="display:none">(<a
href="https://plus.google.com/+TomazMuraus?rel=author">Google+</a>)</span>on
Nov 25, 2013</span>
+
+ <div class="post-content">
+ <p>The Project Management Committee (PMC) for Apache Libcloud has asked
Brian
+Curtin to become a committer and we are pleased to announce that they have
+accepted.</p>
+
+<p>We are glad to have him as a committer. Everyone, please help us welcome him
+to the team :)</p>
+
+<p>Source: <a
href="http://mail-archives.apache.org/mod_mbox/libcloud-dev/201311.mbox/%3CCAJMHEmJZO0%3DPLpLXe9W9wPXTLwh2iQ3x2xXy%2BWhqjdFBv2%2BHbw%40mail.gmail.com%3E">mailing
list</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/new%20committer.html" rel="tag">new committer</a></p>
+ </div>
+ </div>
+</div>
+
+
+
+
+ <div class="post">
+
<h2><a
href="/blog/2013/11/21/libcloud-0-14-0-beta3-released.html">Libcloud
0.14.0-beta3 released</a></h2>
@@ -405,85 +437,6 @@ people who contributed to this release c
-
- <div class="post">
-
- <h2><a href="/blog/2013/03/21/libcloud-0-12-3-released.html">Libcloud
0.12.3 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
Mar 21, 2013</span>
-
- <div class="post-content">
- <p>We are pleased to announce the release of Libcloud 0.12.3!</p>
-
-<p>This release is primarily a bug fix release and fixes Python 3.3,
-deployment and some other issues.</p>
-
-<p>Full change log can be found at
-https://svn.apache.org/repos/asf/libcloud/tags/0.12.3/CHANGES</p>
-
-<h3>Download</h3>
-
-<p>Libcloud 0.12.3 can be downloaded from
-http://libcloud.apache.org/downloads.html
-or installed using pip:</p>
-
-<div class="highlight"><pre><code class="bash">pip install apache-libcloud
-</code></pre></div>
-
-<p>It is possible that the file hasn't been synced to all the mirrors yet.
If
-this
-is the case, please use the main Apache mirror -
-http://www.apache.org/dist/libcloud.</p>
-
-<h3>Upgrading</h3>
-
-<p>If you have installed Libcloud using pip you can also use it to upgrade
it:</p>
-
-<div class="highlight"><pre><code class="bash">pip install --upgrade
apache-libcloud
-</code></pre></div>
-
-<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 http://libcloud.apache.org/upgrade-notes.html.</p>
-
-<h3>Documentation</h3>
-
-<p>API documentation can be found at http://libcloud.apache.org/apidocs/0.12.3/
-.</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 CHANGES file
-<a
href="https://svn.apache.org/repos/asf/libcloud/tags/0.12.3/CHANGES">https://svn.apache.org/repos/asf/libcloud/tags/0.12.3/CHANGES</a>.</p>
-
-<p>Source: <a
href="https://mail-archives.apache.org/mod_mbox/libcloud-dev/201303.mbox/%3CCAJMHEmJDKsYOn%3DaVDyChdQCgHbKc1r2n0Wy4_UxGmdd-aXf-WQ%40mail.gmail.com%3E">release
announcement</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">
@@ -508,7 +461,7 @@ people who contributed to this release c
<div class="col-lg-3 col-lg-offset-1">
<h2>Archive</h1>
<ul>
- <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
href="/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/archives/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/arc
hives/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/05/"> 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/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
href="/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/archives/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/arc
hives/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/05/"> 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>