You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@libcloud.apache.org by to...@apache.org on 2022/03/12 23:17:57 UTC
svn commit: r1898884 [6/6] - in /libcloud/site/trunk: generated/ generated/blog/ generated/blog/2021/11/11/ generated/blog/2022/ generated/blog/2022/03/ generated/blog/2022/03/12/ generated/blog/archives/2021/11/ generated/blog/archives/2022/ generated...
Modified: libcloud/site/trunk/generated/blog/page/9/index.html
URL: http://svn.apache.org/viewvc/libcloud/site/trunk/generated/blog/page/9/index.html?rev=1898884&r1=1898883&r2=1898884&view=diff
==============================================================================
--- libcloud/site/trunk/generated/blog/page/9/index.html (original)
+++ libcloud/site/trunk/generated/blog/page/9/index.html Sat Mar 12 23:17:57 2022
@@ -97,6 +97,189 @@
<div class="post">
+ <h2><a href="/blog/2016/02/05/libcloud-containers-example.html">Using the container abstraction API in 1.0.0-pre1</a></h2>
+
+
+
+
+
+ <span class="post-date-author">By Anthony Shaw on Feb 05, 2016</span>
+
+ <div class="post-content">
+ <h2>Background</h2>
+
+<p>Containers are the talk of the town, you can't escape an event or meetup without someone talking about containers. The lessons we
+learnt with compute abstraction are applying widely with containers in 2016. APIs are not consistent between clouds, designs are not
+standardised and yet, users are trying to consume multiple services.</p>
+
+<p>We introduced Container-as-a-Service support in <a href="http://libcloud.apache.org/blog/2016/01/26/libcloud-1-0-0-pre1-released.html">1.0.0-pre1</a>, a community pre-release with the intention of sparking feedback from
+the open-source community about the design and the implementation of 4 example drivers : </p>
+
+<ul>
+<li>Docker</li>
+<li>Joyent Triton</li>
+<li>Amazon EC2 Container Service</li>
+<li>Google Kubernetes</li>
+</ul>
+
+<p>In this tutorial we're going to explore how to do this:</p>
+
+<div class="imginline">
+ <img src="/images/posts/2016-02-05-containers/container_cloud_example.png" class="img-responsive inline" />
+ <p class="img-caption">Deploying containers across platforms.</p>
+</div>
+
+<p>Pulling images from the Docker hub, deploying to Docker, Kubernetes and Amazon ECS then auditing them with a single query.</p>
+
+<h2>Getting Started with 1.0.0-pre1</h2>
+
+<p>First off, let's install the new packages, you probably want to do this within a virtualenv if you're using Apache Libcloud for other projects. </p>
+
+<p>So run these commands at a Linux Shell to create a virtualenv called 'containers' and install the pre-release packages into that environment.</p>
+
+<div class="highlight"><pre><code class="bash language-bash" data-lang="bash"> virtualenv containers
+ <span class="nb">cd </span>containers
+ <span class="nb">source </span>bin/activate
+ pip install apache-libcloud<span class="o">==</span>1.0.0-pre1
+</code></pre></div>
+
+<p>Now you can start using this package with a test script, let's create one called containers.py</p>
+
+<div class="highlight"><pre><code class="bash language-bash" data-lang="bash"> touch containers.py
+</code></pre></div>
+
+<p>Using your favourite text editor, update that file to import the 1.0.0-pre1 libraries and the factory methods for instantiating containers.</p>
+
+<div class="highlight"><pre><code class="python language-python" data-lang="python"> <span class="kn">from</span> <span class="nn">libcloud.container.providers</span> <span class="kn">import</span> <span class="n">get_driver</span>
+ <span class="kn">from</span> <span class="nn">libcloud.container.types</span> <span class="kn">import</span> <span class="n">Provider</span>
+</code></pre></div>
+
+<p><code>get_driver</code> is a factory method as with all libcloud APIs, you call this method with the <code>Provider</code> that you want to instantiate. Our options are:</p>
+
+<ul>
+<li><code>Provider.DOCKER</code> - Standalone Docker API</li>
+<li><code>Provider.KUBERNETES</code> - Kubernetes Cluster endpoint</li>
+<li><code>Provider.JOYENT</code> - Joyent Triton Public API</li>
+<li><code>Provider.ECS</code> - Amazon EC2 Container Service</li>
+</ul>
+
+<p>Calling <code>get_driver</code> will return a reference to the driver class that you requested. You can then instantiate that class into an object using the
+contructor. This is always a set of parameters for setting the host or region, the authentication and any other options.</p>
+
+<div class="highlight"><pre><code class="python language-python" data-lang="python"> <span class="n">driver</span> <span class="o">=</span> <span class="n">get_driver</span><span class="p">(</span><span class="n">Provider</span><span class="o">.</span><span class="n">DOCKER</span><span class="p">)</span>
+</code></pre></div>
+
+<p>Now we can call our driver and get an instance of it called <code>docker_driver</code> and use that to deploy a container. For Docker you need the pem files on the server,
+the host (IP or FQDN) and the port.</p>
+
+<div class="highlight"><pre><code class="python language-python" data-lang="python"> <span class="n">docker_driver</span> <span class="o">=</span> <span class="n">driver</span><span class="p">(</span><span class="n">host</span><span class="o">=</span><span class="s">'https://198.61.239.128'</span><span class="p">,</span> <span class="n">port</span><span class="o">=</span><span class="mi">4243</span><span class="p">,</span>
+ <span class="n">key_file</span><span class="o">=</span><span class="s">'key.pem'</span><span class="p">,</span> <span class="n">cert_file</span><span class="o">=</span><span class="s">'cert.pem'</span><span class="p">)</span>
+</code></pre></div>
+
+<p>Docker requires that images are available in the image database before they can be deployed as containers. With Kubernetes and Amazon ECS this step is not required
+as when you deploy a container it carries out that download for you. </p>
+
+<div class="highlight"><pre><code class="python language-python" data-lang="python"> <span class="n">image</span> <span class="o">=</span> <span class="n">driver</span><span class="o">.</span><span class="n">install_image</span><span class="p">(</span><span class="s">'tomcat:8.0'</span><span class="p">)</span>
+</code></pre></div>
+
+<p>Now that Docker has the version 8.0 image of Apache Tomcat, you can deploy this as a container called <code>my_tomcat_container</code>. Tomcat runs on TCP/8080 by default so we
+want to bind that port for our container using an optional parameter <code>port_bindings</code></p>
+
+<div class="highlight"><pre><code class="python language-python" data-lang="python"> <span class="n">bindings</span> <span class="o">=</span> <span class="p">{</span> <span class="s">"22/tcp"</span><span class="p">:</span> <span class="p">[{</span> <span class="s">"HostPort"</span><span class="p">:</span> <span class="s">"11022"</span> <span class="p">}]</span> <span class="p">}</span>
+ <span class="n">container</span> <span class="o">=</span> <span class="n">driver</span><span class="o">.</span><span class="n">deploy_container</span><span class="p">(</span><span class="s">'my_tomcat_container'</span><span class="p">,</span> <span class="n">image</span><span class="p">,</span> <span class="n">port_bindings</span><span class="o">=</span><span class="n">bindings</span><span class="p">)</span>
+</code></pre></div>
+
+<p>This will have deployed the container and started it up for you, you can disable the automatic startup by using <code>start=False</code> as a keyword argument. You can now call upon this container and
+run methods, <code>restart</code>, <code>start</code>, <code>stop</code> and <code>destroy</code>.</p>
+
+<p>For example, to blow away that test container: </p>
+
+<div class="highlight"><pre><code class="python language-python" data-lang="python"> <span class="n">container</span><span class="o">.</span><span class="n">destroy</span><span class="p">()</span>
+</code></pre></div>
+
+<h2>Crossing the streams; calling Kubernetes and Amazon EC2 Container Service</h2>
+
+<p>With Docker we saw that we needed to "pull" the image before we deployed it. Kubernetes and Amazon ECS don't have that requirement, but as a safeguard you can query the Docker Hub API using a
+utility class provided</p>
+
+<div class="highlight"><pre><code class="python language-python" data-lang="python"> <span class="kn">from</span> <span class="nn">libcloud.container.utils.docker</span> <span class="kn">import</span> <span class="n">HubClient</span>
+ <span class="n">hub</span> <span class="o">=</span> <span class="n">HubClient</span><span class="p">()</span>
+ <span class="n">image</span> <span class="o">=</span> <span class="n">hub</span><span class="o">.</span><span class="n">get_image</span><span class="p">(</span><span class="s">'tomcat'</span><span class="p">,</span> <span class="s">'8.0'</span><span class="p">)</span>
+</code></pre></div>
+
+<p>Now <code>image</code> can be used to deploy to any driver instance that you create. Let's try that against Kubernetes and ECS.</p>
+
+<h3>Amazon ECS</h3>
+
+<p>Before you run this example, you will need an API key and the permissions for that key to have the <code>AmazonEC2ContainerServiceFullAccess</code> role. <code>ap-southeast-2</code> is my nearest region, but you can
+swap this out for any of the Amazon public regions that have the ECS service available. </p>
+
+<div class="highlight"><pre><code class="python language-python" data-lang="python"> <span class="n">e_cls</span> <span class="o">=</span> <span class="n">get_driver</span><span class="p">(</span><span class="n">Provider</span><span class="o">.</span><span class="n">ECS</span><span class="p">)</span>
+ <span class="n">ecs</span> <span class="o">=</span> <span class="n">e_cls</span><span class="p">(</span><span class="n">access_id</span><span class="o">=</span><span class="s">'SDHFISJDIFJSIDFJ'</span><span class="p">,</span>
+ <span class="n">secret</span><span class="o">=</span><span class="s">'THIS_IS)+_MY_SECRET_KEY+I6TVkv68o4H'</span><span class="p">,</span>
+ <span class="n">region</span><span class="o">=</span><span class="s">'ap-southeast-2'</span><span class="p">)</span>
+</code></pre></div>
+
+<p>ECS and Kubernetes both support some form of grouping or clustering for your containers. This is available as <code>create_cluster</code>, <code>list_cluster</code>.</p>
+
+<div class="highlight"><pre><code class="python language-python" data-lang="python"> <span class="n">cluster</span> <span class="o">=</span> <span class="n">ecs</span><span class="o">.</span><span class="n">create_cluster</span><span class="p">(</span><span class="s">'default'</span><span class="p">)</span>
+ <span class="n">container</span> <span class="o">=</span> <span class="n">ecs</span><span class="o">.</span><span class="n">deploy_container</span><span class="p">(</span>
+ <span class="n">cluster</span><span class="o">=</span><span class="n">cluster</span><span class="p">,</span>
+ <span class="n">name</span><span class="o">=</span><span class="s">'hello-world'</span><span class="p">,</span>
+ <span class="n">image</span><span class="o">=</span><span class="n">image</span><span class="p">,</span>
+ <span class="n">start</span><span class="o">=</span><span class="bp">False</span><span class="p">,</span>
+ <span class="n">ex_container_port</span><span class="o">=</span><span class="mi">8080</span><span class="p">,</span> <span class="n">ex_host_port</span><span class="o">=</span><span class="mi">8080</span><span class="p">)</span>
+</code></pre></div>
+
+<p>This will have deployed a task definition in Amazon ECS with a single container inside, with a cluster called 'main' and deployed the tomcat:8.0 image from the Docker hub to that region. </p>
+
+<p>Check out the <a href="http://libcloud.readthedocs.org/en/latest/container/drivers/ecs.html">ECS Documentation</a> for more details.</p>
+
+<h3>Kubernetes</h3>
+
+<p>Kubernetes authentication is currently only implemented for None (off) and Basic HTTP authentication. Let's use the <a href="http://kubernetes.io/v1.1/docs/admin/authentication.html">basic HTTP authentication method</a> to connect.</p>
+
+<div class="highlight"><pre><code class="python language-python" data-lang="python"><span class="n">k_cls</span> <span class="o">=</span> <span class="n">get_driver</span><span class="p">(</span><span class="n">Provider</span><span class="o">.</span><span class="n">KUBERNETES</span><span class="p">)</span>
+
+<span class="n">kubernetes</span> <span class="o">=</span> <span class="n">k_cls</span><span class="p">(</span><span class="n">key</span><span class="o">=</span><span class="s">'my_username'</span><span class="p">,</span>
+ <span class="n">secret</span><span class="o">=</span><span class="s">'THIS_IS)+_MY_SECRET_KEY+I6TVkv68o4H'</span><span class="p">,</span>
+ <span class="n">host</span><span class="o">=</span><span class="s">'126.32.21.4'</span><span class="p">)</span>
+<span class="n">cluster2</span> <span class="o">=</span> <span class="n">kubernetes</span><span class="o">.</span><span class="n">create_cluster</span><span class="p">(</span><span class="s">'default'</span><span class="p">)</span>
+<span class="n">container2</span> <span class="o">=</span> <span class="n">kubernetes</span><span class="o">.</span><span class="n">deploy_container</span><span class="p">(</span>
+ <span class="n">cluster</span><span class="o">=</span><span class="n">cluster</span><span class="p">,</span>
+ <span class="n">name</span><span class="o">=</span><span class="s">'hello-world'</span><span class="p">,</span>
+ <span class="n">image</span><span class="o">=</span><span class="n">image</span><span class="p">,</span>
+ <span class="n">start</span><span class="o">=</span><span class="bp">False</span><span class="p">)</span>
+</code></pre></div>
+
+<h2>Wrapping it up</h2>
+
+<p>Now, let's wrap that all up by doing a list comprehension across the 3 drivers to get a list of all containers and print their ID's and Names. Then delete them.</p>
+
+<div class="highlight"><pre><code class="python language-python" data-lang="python"><span class="n">containers</span> <span class="o">=</span> <span class="p">[</span><span class="n">conn</span><span class="o">.</span><span class="n">list_containers</span><span class="p">()</span> <span class="k">for</span> <span class="n">conn</span> <span class="ow">in</span> <span class="p">[</span><span class="n">docker</span><span class="p">,</span> <span class="n">ecs</span><span class="p">,</span> <span class="n">kubernetes</span><span class="p">]]</span>
+<span class="k">for</span> <span class="n">container</span> <span class="ow">in</span> <span class="n">containers</span><span class="p">:</span>
+ <span class="k">print</span><span class="p">(</span><span class="s">"</span><span class="si">%s</span><span class="s"> : </span><span class="si">%s</span><span class="s">"</span> <span class="o">%</span> <span class="p">(</span><span class="n">container</span><span class="o">.</span><span class="n">id</span><span class="p">,</span> <span class="n">container</span><span class="o">.</span><span class="n">name</span><span class="p">))</span>
+ <span class="n">container</span><span class="o">.</span><span class="n">destroy</span><span class="p">()</span>
+</code></pre></div>
+
+<h3>About the Author</h3>
+
+<p>Anthony Shaw is on the PMC for Apache Libcloud, you can follow Anthony on Twitter at <a href="https://twitter.com/anthonypjshaw">@anthonypjshaw</a>.</p>
+
+ </div>
+
+ <div class="row section post-meta">
+ <div class="col-md-12 post-tags">
+ <p>Tags: <a href="/blog/tags/news.html" rel="tag">news</a>, <a href="/blog/tags/containers.html" rel="tag">containers</a>, <a href="/blog/tags/tutorial.html" rel="tag">tutorial</a></p>
+ </div>
+ </div>
+</div>
+
+
+
+
+ <div class="post">
+
<h2><a href="/blog/2016/01/26/libcloud-1-0-0-pre1-released.html">Libcloud 1.0.0-pre1 released</a></h2>
@@ -547,92 +730,6 @@ and compatibility reasons. SSL v3.0 is c
-
- <div class="post">
-
- <h2><a href="/blog/2015/12/15/libcloud-0-20-0-released.html">Libcloud 0.20.0 released</a></h2>
-
-
-
-
-
- <span class="post-date-author">By Anthony Shaw on Dec 15, 2015</span>
-
- <div class="post-content">
- <p>We are pleased to announce the release of Libcloud 0.20.0.</p>
-
-<p>This is a first release in the 0.20 series which means it brings many new
-features, improvements, bug-fixes, and DNS drivers.</p>
-
-<h3>Release highlights</h3>
-
-<ul>
-<li>New DNS driver for <a href="http://libcloud.readthedocs.org/en/latest/dns/drivers/godaddy.html">GoDaddy</a></li>
-<li>New DNS driver for <a href="https://www.cloudflare.com/dns/">CloudFlare DNS</a></li>
-<li>Many more improvements and API v2.1 support for the <a href="http://cloud.dimensiondata.com/am/en/">Dimension Data compute driver</a></li>
-<li>Support for adding and configuring PTR (reverse DNS) record in RackSpace DNS driver</li>
-<li>Support for preemptable instances in Google Compute driver</li>
-<li>Add new eu-west-2 & us-east-2 regions to the OUTSCALE<em>INC & OUTSCALE</em>SAS drivers</li>
-<li>Added C4, M4 instance types in Amazon EC2 driver</li>
-<li>Add support for multiple regions in Aurora compute driver</li>
-<li>GoogleStorageDriver can now use either our S3 authentication or other Google Cloud Platform OAuth2 authentication methods.</li>
-<li>Removed DreamHosts Compute Driver, DreamHosts users will now use the OpenStack Node driver since DreamHosts are OpenStack API compliant</li>
-<li>and much more!</li>
-</ul>
-
-<p>Full change log can be found at <a href="https://libcloud.readthedocs.org/en/latest/changelog.html#changes-with-apache-libcloud-0-20-0">here</a>.</p>
-
-<h3>Download</h3>
-
-<p>The release can can be downloaded from
-<a href="https://libcloud.apache.org/downloads.html">https://libcloud.apache.org/downloads.html</a> or installed using pip:</p>
-
-<pre>
-pip install apache-libcloud==0.20.0
-</pre>
-
-<h3>Upgrading</h3>
-
-<p>If you have installed Libcloud using pip you can also use it to upgrade it:</p>
-
-<pre>
-pip install --upgrade apache-libcloud==0.20.0
-</pre>
-
-<h3>Upgrade notes</h3>
-
-<p>A page which describes backward incompatible or semi-incompatible
-changes and how to preserve the old behavior when this is possible
-can be found at <a href="https://libcloud.readthedocs.org/en/latest/upgrade_notes.html">https://libcloud.readthedocs.org/en/latest/upgrade_notes.html</a></p>
-
-<h3>Documentation</h3>
-
-<p>Regular and API documentation is available at <a href="https://libcloud.readthedocs.org/en/latest/">https://libcloud.readthedocs.org/en/latest/</a></p>
-
-<h3>Bugs / Issues</h3>
-
-<p>If you find any bug or issue, please report it on our issue tracker
-<a href="https://issues.apache.org/jira/browse/LIBCLOUD">https://issues.apache.org/jira/browse/LIBCLOUD</a>.
-Don't forget to attach an example and / or test which reproduces your
-problem.</p>
-
-<h3>Thanks</h3>
-
-<p>Thanks to everyone who contributed and made this release possible! Full
-list of people who contributed to this release can be found in the
-<a href="https://libcloud.readthedocs.org/en/latest/changelog.html#changes-with-apache-libcloud-0-20-0">CHANGES file</a>.</p>
-
- </div>
-
- <div class="row section post-meta">
- <div class="col-md-12 post-tags">
- <p>Tags: <a href="/blog/tags/news.html" rel="tag">news</a>, <a href="/blog/tags/release%20announcement.html" rel="tag">release announcement</a></p>
- </div>
- </div>
-</div>
-
-
-
</div>
<p class="navigation">
@@ -657,7 +754,7 @@ list of people who contributed to this r
<div class="col-lg-3 col-lg-offset-1">
<h2>Archive</h1>
<ul>
- <li> <a href="/blog/archives/2021/11/"> November 2021</a> (2)</li><li> <a href="/blog/archives/2021/06/"> June 2021</a> (1)</li><li> <a href="/blog/archives/2021/01/"> January 2021</a> (2)</li><li> <a href="/blog/archives/2020/09/"> September 2020</a> (1)</li><li> <a href="/blog/archives/2020/08/"> August 2020</a> (2)</li><li> <a href="/blog/archives/2020/06/"> June 2020</a> (2)</li><li> <a href="/blog/archives/2020/04/"> April 2020</a> (2)</li><li> <a href="/blog/archives/2020/03/"> March 2020</a> (1)</li><li> <a href="/blog/archives/2020/01/"> January 2020</a> (2)</li><li> <a href="/blog/archives/2019/12/"> December 2019</a> (1)</li><li> <a href="/blog/archives/2019/11/"> November 2019</a> (1)</li><li> <a href="/blog/archives/2019/08/"> August 2019</a> (2)</li><li> <a href="/blog/archives/2019/05/"> May 2019</a> (1)</li><li> <a href="/blog/archives/2018/11/"> November 2018</a> (1)</li><li> <a
href="/blog/archives/2018/06/"> June 2018</a> (1)</li><li> <a href="/blog/archives/2018/03/"> March 2018</a> (1)</li><li> <a href="/blog/archives/2017/12/"> December 2017</a> (1)</li><li> <a href="/blog/archives/2017/09/"> September 2017</a> (2)</li><li> <a href="/blog/archives/2017/07/"> July 2017</a> (1)</li><li> <a href="/blog/archives/2017/04/"> April 2017</a> (3)</li><li> <a href="/blog/archives/2016/12/"> December 2016</a> (1)</li><li> <a href="/blog/archives/2016/11/"> November 2016</a> (1)</li><li> <a href="/blog/archives/2016/10/"> October 2016</a> (1)</li><li> <a href="/blog/archives/2016/09/"> September 2016</a> (1)</li><li> <a href="/blog/archives/2016/07/"> July 2016</a> (1)</li><li> <a href="/blog/archives/2016/06/"> June 2016</a> (1)</li><li> <a href="/blog/archives/2016/04/"> April 2016</a> (2)</li><li> <a href="/blog/archives/2016/02/"> February 2016</a> (2)</li><li> <a href="/blog/
archives/2016/01/"> January 2016</a> (4)</li><li> <a href="/blog/archives/2015/12/"> December 2015</a> (1)</li><li> <a href="/blog/archives/2015/11/"> November 2015</a> (1)</li><li> <a href="/blog/archives/2015/10/"> October 2015</a> (2)</li><li> <a href="/blog/archives/2015/08/"> August 2015</a> (1)</li><li> <a href="/blog/archives/2015/03/"> March 2015</a> (1)</li><li> <a href="/blog/archives/2015/02/"> February 2015</a> (1)</li><li> <a href="/blog/archives/2014/12/"> December 2014</a> (1)</li><li> <a 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/201
4/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/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>
+ <li> <a href="/blog/archives/2022/03/"> March 2022</a> (1)</li><li> <a href="/blog/archives/2021/11/"> November 2021</a> (2)</li><li> <a href="/blog/archives/2021/06/"> June 2021</a> (1)</li><li> <a href="/blog/archives/2021/01/"> January 2021</a> (2)</li><li> <a href="/blog/archives/2020/09/"> September 2020</a> (1)</li><li> <a href="/blog/archives/2020/08/"> August 2020</a> (2)</li><li> <a href="/blog/archives/2020/06/"> June 2020</a> (2)</li><li> <a href="/blog/archives/2020/04/"> April 2020</a> (2)</li><li> <a href="/blog/archives/2020/03/"> March 2020</a> (1)</li><li> <a href="/blog/archives/2020/01/"> January 2020</a> (2)</li><li> <a href="/blog/archives/2019/12/"> December 2019</a> (1)</li><li> <a href="/blog/archives/2019/11/"> November 2019</a> (1)</li><li> <a href="/blog/archives/2019/08/"> August 2019</a> (2)</li><li> <a href="/blog/archives/2019/05/"> May 2019</a> (1)</li><li> <a hr
ef="/blog/archives/2018/11/"> November 2018</a> (1)</li><li> <a href="/blog/archives/2018/06/"> June 2018</a> (1)</li><li> <a href="/blog/archives/2018/03/"> March 2018</a> (1)</li><li> <a href="/blog/archives/2017/12/"> December 2017</a> (1)</li><li> <a href="/blog/archives/2017/09/"> September 2017</a> (2)</li><li> <a href="/blog/archives/2017/07/"> July 2017</a> (1)</li><li> <a href="/blog/archives/2017/04/"> April 2017</a> (3)</li><li> <a href="/blog/archives/2016/12/"> December 2016</a> (1)</li><li> <a href="/blog/archives/2016/11/"> November 2016</a> (1)</li><li> <a href="/blog/archives/2016/10/"> October 2016</a> (1)</li><li> <a href="/blog/archives/2016/09/"> September 2016</a> (1)</li><li> <a href="/blog/archives/2016/07/"> July 2016</a> (1)</li><li> <a href="/blog/archives/2016/06/"> June 2016</a> (1)</li><li> <a href="/blog/archives/2016/04/"> April 2016</a> (2)</li><li> <a href="/blog/arc
hives/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/0
2/"> 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/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/tags/news.html
URL: http://svn.apache.org/viewvc/libcloud/site/trunk/generated/blog/tags/news.html?rev=1898884&r1=1898883&r2=1898884&view=diff
==============================================================================
--- libcloud/site/trunk/generated/blog/tags/news.html (original)
+++ libcloud/site/trunk/generated/blog/tags/news.html Sat Mar 12 23:17:57 2022
@@ -96,6 +96,105 @@
<div class="post">
+ <h2><a href="/blog/2022/03/12/libcloud-3-5-0-released.html">Libcloud 3.5.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 Mar 12, 2022</span>
+
+ <div class="post-content">
+ <p>We are happy to announce Libcloud v3.5.0.</p>
+
+<p>This release includes new features, improvements and bug fixes.</p>
+
+<p>Highlights include:</p>
+
+<ul>
+<li>Improvements to the OpenStack driver</li>
+<li>New storage driver for Scaleway Object Storage</li>
+<li>Improvements to the HTTP requests retrying code</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.5.0">https://libcloud.readthedocs.io/en/latest/changelog.html#changes-in-apache-libcloud-3.5.0</a>.</p>
+
+<h3>Note on Python 3.5 support</h3>
+
+<p>This release drops support for Python 3.5.</p>
+
+<p>Python 3.5 has been EOL and non-supported for more than a year
+(<a href="https://endoflife.date/python">https://endoflife.date/python</a>) now 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>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>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.5.0"
+</pre>
+
+<h3>Upgrading</h3>
+
+<p>If you have installed Libcloud using pip you can also use it to upgrade it:</p>
+
+<pre>
+pip install --upgrade "apache-libcloud==3.5.0"
+</pre>
+
+<h3>Upgrade notes</h3>
+
+<p>A page which describes backward incompatible or semi-incompatible
+changes and how to preserve the old behavior when this is possible
+can be found at <a href="https://libcloud.readthedocs.org/en/latest/upgrade_notes.html">https://libcloud.readthedocs.org/en/latest/upgrade_notes.html</a></p>
+
+<h3>Documentation</h3>
+
+<p>Regular and API documentation is available at <a href="https://libcloud.readthedocs.org/en/v3.5.0/">https://libcloud.readthedocs.org/en/v3.5.0/</a></p>
+
+<h3>Bugs / Issues</h3>
+
+<p>If you find any bug or issue, please report it on our issue tracker
+<a href="https://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>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.5.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%20announcement.html" rel="tag">release announcement</a></p>
+ </div>
+ </div>
+</div>
+
+
+
+
+ <div class="post">
+
<h2><a href="/blog/2021/11/15/libcloud-3-4-1-released.html">Libcloud 3.4.1 released</a></h2>
@@ -255,7 +354,7 @@ pip install "apache-libcloud==3.4.0"
<p>If you have installed Libcloud using pip you can also use it to upgrade it:</p>
<pre>
-pip install --upgrade "apache-libcloud==3.4.1"
+pip install --upgrade "apache-libcloud==3.4.0"
</pre>
<h3>Upgrade notes</h3>
Modified: libcloud/site/trunk/generated/blog/tags/release announcement.html
URL: http://svn.apache.org/viewvc/libcloud/site/trunk/generated/blog/tags/release%20announcement.html?rev=1898884&r1=1898883&r2=1898884&view=diff
==============================================================================
--- libcloud/site/trunk/generated/blog/tags/release announcement.html (original)
+++ libcloud/site/trunk/generated/blog/tags/release announcement.html Sat Mar 12 23:17:57 2022
@@ -96,6 +96,105 @@
<div class="post">
+ <h2><a href="/blog/2022/03/12/libcloud-3-5-0-released.html">Libcloud 3.5.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 Mar 12, 2022</span>
+
+ <div class="post-content">
+ <p>We are happy to announce Libcloud v3.5.0.</p>
+
+<p>This release includes new features, improvements and bug fixes.</p>
+
+<p>Highlights include:</p>
+
+<ul>
+<li>Improvements to the OpenStack driver</li>
+<li>New storage driver for Scaleway Object Storage</li>
+<li>Improvements to the HTTP requests retrying code</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.5.0">https://libcloud.readthedocs.io/en/latest/changelog.html#changes-in-apache-libcloud-3.5.0</a>.</p>
+
+<h3>Note on Python 3.5 support</h3>
+
+<p>This release drops support for Python 3.5.</p>
+
+<p>Python 3.5 has been EOL and non-supported for more than a year
+(<a href="https://endoflife.date/python">https://endoflife.date/python</a>) now 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>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>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.5.0"
+</pre>
+
+<h3>Upgrading</h3>
+
+<p>If you have installed Libcloud using pip you can also use it to upgrade it:</p>
+
+<pre>
+pip install --upgrade "apache-libcloud==3.5.0"
+</pre>
+
+<h3>Upgrade notes</h3>
+
+<p>A page which describes backward incompatible or semi-incompatible
+changes and how to preserve the old behavior when this is possible
+can be found at <a href="https://libcloud.readthedocs.org/en/latest/upgrade_notes.html">https://libcloud.readthedocs.org/en/latest/upgrade_notes.html</a></p>
+
+<h3>Documentation</h3>
+
+<p>Regular and API documentation is available at <a href="https://libcloud.readthedocs.org/en/v3.5.0/">https://libcloud.readthedocs.org/en/v3.5.0/</a></p>
+
+<h3>Bugs / Issues</h3>
+
+<p>If you find any bug or issue, please report it on our issue tracker
+<a href="https://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>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.5.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%20announcement.html" rel="tag">release announcement</a></p>
+ </div>
+ </div>
+</div>
+
+
+
+
+ <div class="post">
+
<h2><a href="/blog/2021/11/15/libcloud-3-4-1-released.html">Libcloud 3.4.1 released</a></h2>
@@ -255,7 +354,7 @@ pip install "apache-libcloud==3.4.0"
<p>If you have installed Libcloud using pip you can also use it to upgrade it:</p>
<pre>
-pip install --upgrade "apache-libcloud==3.4.1"
+pip install --upgrade "apache-libcloud==3.4.0"
</pre>
<h3>Upgrade notes</h3>
Modified: libcloud/site/trunk/generated/index.html
URL: http://svn.apache.org/viewvc/libcloud/site/trunk/generated/index.html?rev=1898884&r1=1898883&r2=1898884&view=diff
==============================================================================
--- libcloud/site/trunk/generated/index.html (original)
+++ libcloud/site/trunk/generated/index.html Sat Mar 12 23:17:57 2022
@@ -243,19 +243,19 @@
<h3>Latest Blog Posts</h3>
- <p><a href="/blog/2021/11/15/libcloud-3-4-1-released.html">Libcloud 3.4.1 released</a>
+ <p><a href="/blog/2022/03/12/libcloud-3-5-0-released.html">Libcloud 3.5.0 released</a>
- <p><a href="/blog/2021/11/11/libcloud-3-4-0-released.html">Libcloud 3.4.0 released</a>
+ <p><a href="/blog/2021/11/15/libcloud-3-4-1-released.html">Libcloud 3.4.1 released</a>
- <p><a href="/blog/2021/06/03/dimitris-moraitis-joins-our-team.html">Dimitris Moraitis (dmo) joins our team</a>
+ <p><a href="/blog/2021/11/11/libcloud-3-4-0-released.html">Libcloud 3.4.0 released</a>
- <p><a href="/blog/2021/01/25/libcloud-3-3-1-released.html">Libcloud 3.3.1 released</a>
+ <p><a href="/blog/2021/06/03/dimitris-moraitis-joins-our-team.html">Dimitris Moraitis (dmo) joins our team</a>
Modified: libcloud/site/trunk/generated/sitemap.xml
URL: http://svn.apache.org/viewvc/libcloud/site/trunk/generated/sitemap.xml?rev=1898884&r1=1898883&r2=1898884&view=diff
==============================================================================
--- libcloud/site/trunk/generated/sitemap.xml (original)
+++ libcloud/site/trunk/generated/sitemap.xml Sat Mar 12 23:17:57 2022
@@ -471,6 +471,10 @@
<lastmod>2021-11-15T00:00:00+01:00</lastmod>
</url>
<url>
+ <loc>https://libcloud.apache.org/blog/2022/03/12/libcloud-3-5-0-released.html</loc>
+ <lastmod>2022-03-12T00:00:00+01:00</lastmod>
+ </url>
+ <url>
<loc>https://libcloud.apache.org/community-resources.html</loc>
<lastmod>2019-09-09T18:11:27+02:00</lastmod>
</url>
@@ -500,7 +504,7 @@
</url>
<url>
<loc>https://libcloud.apache.org/blog/blog/</loc>
- <lastmod>2021-11-15T22:01:51+01:00</lastmod>
+ <lastmod>2022-03-13T00:16:31+01:00</lastmod>
</url>
<url>
<loc>https://libcloud.apache.org/gsoc.html</loc>
@@ -520,7 +524,7 @@
</url>
<url>
<loc>https://libcloud.apache.org/</loc>
- <lastmod>2022-03-11T21:47:26+01:00</lastmod>
+ <lastmod>2022-03-13T00:16:31+01:00</lastmod>
</url>
<url>
<loc>https://libcloud.apache.org/media.html</loc>
Modified: libcloud/site/trunk/source/_posts/2021-11-11-libcloud-3-4-0-released.md
URL: http://svn.apache.org/viewvc/libcloud/site/trunk/source/_posts/2021-11-11-libcloud-3-4-0-released.md?rev=1898884&r1=1898883&r2=1898884&view=diff
==============================================================================
--- libcloud/site/trunk/source/_posts/2021-11-11-libcloud-3-4-0-released.md (original)
+++ libcloud/site/trunk/source/_posts/2021-11-11-libcloud-3-4-0-released.md Sat Mar 12 23:17:57 2022
@@ -59,7 +59,7 @@ pip install "apache-libcloud==3.4.0"
If you have installed Libcloud using pip you can also use it to upgrade it:
<pre>
-pip install --upgrade "apache-libcloud==3.4.1"
+pip install --upgrade "apache-libcloud==3.4.0"
</pre>
### Upgrade notes
Added: libcloud/site/trunk/source/_posts/2022-03-12-libcloud-3-5-0-released.md
URL: http://svn.apache.org/viewvc/libcloud/site/trunk/source/_posts/2022-03-12-libcloud-3-5-0-released.md?rev=1898884&view=auto
==============================================================================
--- libcloud/site/trunk/source/_posts/2022-03-12-libcloud-3-5-0-released.md (added)
+++ libcloud/site/trunk/source/_posts/2022-03-12-libcloud-3-5-0-released.md Sat Mar 12 23:17:57 2022
@@ -0,0 +1,84 @@
+---
+layout: post
+title: Libcloud 3.5.0 released
+author: Tomaz Muraus
+tags:
+ - news
+ - release announcement
+---
+
+We are happy to announce Libcloud v3.5.0.
+
+This release includes new features, improvements and bug fixes.
+
+Highlights include:
+
+- Improvements to the OpenStack driver
+- New storage driver for Scaleway Object Storage
+- Improvements to the HTTP requests retrying code
+
+A list of all the changes can be found at
+<https://libcloud.readthedocs.io/en/latest/changelog.html#changes-in-apache-libcloud-3.5.0>.
+
+### Note on Python 3.5 support
+
+This release drops support for Python 3.5.
+
+Python 3.5 has been EOL and non-supported for more than a year
+(<https://endoflife.date/python>) now and a lot of libraries (including some we
+depend on) have already dropped support for it.
+
+Last release which still supports Python 3.5 is Libcloud v3.4.1.
+
+### Note on code style change (developers only)
+
+To make formating and styling in our code base more consistent, we have
+re-formatted all the code with black (<https://github.com/psf/black>) and we will
+automatically enforce black code style (<https://black.readthedocs.io/en/stable/>)
+for all the new code going forward.
+
+This should make it easier to contribute and read the code since all the code
+will be using the same style.
+
+### Download
+
+The release can can be downloaded from
+<https://libcloud.apache.org/downloads.html> or installed using pip:
+
+<pre>
+pip install "apache-libcloud==3.5.0"
+</pre>
+
+### Upgrading
+
+If you have installed Libcloud using pip you can also use it to upgrade it:
+
+<pre>
+pip install --upgrade "apache-libcloud==3.5.0"
+</pre>
+
+### Upgrade notes
+
+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 <https://libcloud.readthedocs.org/en/latest/upgrade_notes.html>
+
+### Documentation
+
+Regular and API documentation is available at <https://libcloud.readthedocs.org/en/v3.5.0/>
+
+### Bugs / Issues
+
+If you find any bug or issue, please report it on our issue tracker
+<https://github.com/apache/libcloud/issues>.
+
+Don't forget to attach an example and / or test which reproduces your
+problem.
+
+### Thanks
+
+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][1].
+
+[1]: https://libcloud.readthedocs.org/en/v3.5.0/changelog.html