Added: libcloud/site/trunk/source/_site/blog/archives/2016/02/index.html
URL: 
http://svn.apache.org/viewvc/libcloud/site/trunk/source/_site/blog/archives/2016/02/index.html?rev=1749451&view=auto
==============================================================================
--- libcloud/site/trunk/source/_site/blog/archives/2016/02/index.html (added)
+++ libcloud/site/trunk/source/_site/blog/archives/2016/02/index.html Tue Jun 
21 06:39:51 2016
@@ -0,0 +1,385 @@
+<!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: 2016 02">
+    
+
+    <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: 2016 &raquo; February | 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: 2016 &raquo; February" property="og:title">
+    
+
+    
+
+    
+      <meta content="Archive: 2016 02" property="og:description">
+    
+
+    
+      <meta content="website" property="og:type">
+    
+
+    
+      <meta 
content="https://libcloud.apache.org/blog/archives/2016/02/index.html"; 
property="og:url">
+    
+    
+
+    
+
+    <link href='/assets/global-ace798c7a9ed56532fb1a044cb094574.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/2016/02/16/new-drivers-deprecated-drivers.html">New 
compute drivers and deprecated drivers in 1.0</a></h2>
+  
+
+  
+    
+  
+  <span class="post-date-author">By Anthony Shaw on Feb 16, 2016</span>
+
+  <div class="post-content">
+    <p>With Libcloud 1.0.0 around the corner, it&#39;s time to have a spring 
clean of the compute drivers. Granted, it&#39;s not spring everywhere -actually
+I&#39;m writing from Sydney, Australia where it&#39;s definitely summer.</p>
+
+<p>Looking at the 52 providers in the 0.21.0 release, I have identified 5 
providers that are no longer available or open.</p>
+
+<ul>
+<li>CloudFrames
+
+<ul>
+<li>Looks dead - website doesn&#39;t work, can&#39;t see any references to 
this online.</li>
+<li><code>libcloud.compute.drivers.cloudframes</code></li>
+</ul></li>
+<li>HP Public Cloud (Helion)
+
+<ul>
+<li><a href="https://tahoe-lafs.org/trac/tahoe-lafs/ticket/2566";>Shut down on 
31st of January 2016</a></li>
+<li><code>libcloud.compute.drivers.hpcloud</code></li>
+</ul></li>
+<li>IBM SmartCloud Enterprise
+
+<ul>
+<li><a 
href="http://www.theregister.co.uk/2013/10/31/ibm_to_shutter_smartcloud_enterprise_moves_customers_to_softlayer/";>Shut
 down 2014, customers instructed to move to SoftLayer</a></li>
+<li><code>libcloud.compute.drivers.ibm_sce</code></li>
+</ul></li>
+<li>Ninefold
+
+<ul>
+<li><a 
href="http://www.itnews.com.au/news/ninefold-to-shut-down-411312";>Ninefold shut 
down in January 2016</a></li>
+<li><code>libcloud.compute.drivers.ninefold</code></li>
+</ul></li>
+<li>Opsource
+
+<ul>
+<li>Dimension Data acquired OpSource in 2012, the Opsource driver is succeeded 
by the Dimension Data driver.</li>
+<li><code>libcloud.compute.drivers.opsource</code></li>
+</ul></li>
+</ul>
+
+<h3>Handling deprecated drivers</h3>
+
+<p>For 1.0.0, we need a clean and user-friendly way of handling deprecated 
drivers as well as keeping the repository clean from legacy code.</p>
+
+<p>The most obvious implementation is that calls to 
<code>get_driver(Provider.NINEFOLD)</code> as an example will return a user 
error message saying
+this provider is no longer supported with a link to a new article and an 
alternative solution.</p>
+
+<p>Currently, users trying to instantiate a HPE public cloud driver for 
example will get a connection error, which is not user friendly.</p>
+
+<h3>New compute drivers in 1.0.0-pre2</h3>
+
+<p>The upcoming release, so currently available in trunk contains some new 
compute drivers.</p>
+
+<ul>
+<li><a 
href="http://libcloud.readthedocs.org/en/latest/compute/drivers/ntta.html";>NTT 
America Public Cloud</a></li>
+<li><a 
href="http://libcloud.readthedocs.org/en/latest/compute/drivers/internetsolutions.html";>Internet
 Solutions Public Cloud</a></li>
+<li><a 
href="http://libcloud.readthedocs.org/en/latest/compute/drivers/medone.html";>Med-1
 Public Cloud</a></li>
+<li><a 
href="http://libcloud.readthedocs.org/en/latest/compute/drivers/indosat.html";>Indosat
 Cloud</a></li>
+<li><a 
href="http://libcloud.readthedocs.org/en/latest/compute/drivers/bsnl.html";>BSNL 
IDC Cloud</a></li>
+</ul>
+
+<p>Full change log can be found at <a 
href="https://github.com/apache/libcloud/blob/trunk/CHANGES.rst";>here</a>.</p>
+
+  </div>
+
+  <div class="row section post-meta">
+    <div class="col-md-12 post-tags">
+      <p>Tags: <a href="/blog/tags/news.html" rel="tag">news</a>, <a 
href="/blog/tags/announcement.html" rel="tag">announcement</a></p>
+    </div>
+  </div>
+</div>
+
+
+  <div class="post">
+  
+    <h2><a href="/blog/2016/02/05/libcloud-containers-example.html">Using the 
container abstraction API in 1.0.0-pre1</a></h2>
+  
+
+  
+    
+  
+  <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&#39;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&#39;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&#39;s install the new packages, you probably want to do this 
within a virtualenv if you&#39;re using Apache Libcloud for other projects. </p>
+
+<p>So run these commands at a Linux Shell to create a virtualenv called 
&#39;containers&#39; 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&#39;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">&#39;https://198.61.239.128&#39;</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">&#39;key.pem&#39;</span><span class="p">,</span> <span 
class="n">cert_file</span><span class="o">=</span><span 
class="s">&#39;cert.pem&#39;</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">&#39;tomcat:8.0&#39;</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">&quot;22/tcp&quot;</span><span 
class="p">:</span> <span class="p">[{</span> <span 
class="s">&quot;HostPort&quot;</span><span class="p">:</span> <span 
class="s">&quot;11022&quot;</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">&#39;my_tomcat_container&#39;</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 &quot;pull&quot; the image before we 
deployed it. Kubernetes and Amazon ECS don&#39;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">&#39;tomcat&#39;</span><span class="p">,</span> <span 
class="s">&#39;8.0&#39;</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&#39;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">&#39;SDHFISJDIFJSIDFJ&#39;</span><span class="p">,</span>
+               <span class="n">secret</span><span class="o">=</span><span 
class="s">&#39;THIS_IS)+_MY_SECRET_KEY+I6TVkv68o4H&#39;</span><span 
class="p">,</span>
+               <span class="n">region</span><span class="o">=</span><span 
class="s">&#39;ap-southeast-2&#39;</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">&#39;default&#39;</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">&#39;hello-world&#39;</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 &#39;main&#39; 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&#39;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">&#39;my_username&#39;</span><span 
class="p">,</span>
+                   <span class="n">secret</span><span class="o">=</span><span 
class="s">&#39;THIS_IS)+_MY_SECRET_KEY+I6TVkv68o4H&#39;</span><span 
class="p">,</span>
+                   <span class="n">host</span><span class="o">=</span><span 
class="s">&#39;126.32.21.4&#39;</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">&#39;default&#39;</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">&#39;hello-world&#39;</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&#39;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&#39;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">&quot;</span><span class="si">%s</span><span class="s"> : 
</span><span class="si">%s</span><span class="s">&quot;</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>
+
+
+
+<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 &copy; 2009-2016 <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-8ce1819c01481f29e425443534266bee.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/source/_site/blog/archives/2016/04/index.html
URL: 
http://svn.apache.org/viewvc/libcloud/site/trunk/source/_site/blog/archives/2016/04/index.html?rev=1749451&view=auto
==============================================================================
--- libcloud/site/trunk/source/_site/blog/archives/2016/04/index.html (added)
+++ libcloud/site/trunk/source/_site/blog/archives/2016/04/index.html Tue Jun 
21 06:39:51 2016
@@ -0,0 +1,525 @@
+<!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: 2016 04">
+    
+
+    <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: 2016 &raquo; April | 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: 2016 &raquo; April" property="og:title">
+    
+
+    
+
+    
+      <meta content="Archive: 2016 04" property="og:description">
+    
+
+    
+      <meta content="website" property="og:type">
+    
+
+    
+      <meta 
content="https://libcloud.apache.org/blog/archives/2016/04/index.html"; 
property="og:url">
+    
+    
+
+    
+
+    <link href='/assets/global-ace798c7a9ed56532fb1a044cb094574.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/2016/04/11/libcloud-1-0-0-rc2-released.html">Libcloud 
1.0.0-rc2 released</a></h2>
+  
+
+  
+    
+  
+  <span class="post-date-author">By Anthony Shaw on Apr 11, 2016</span>
+
+  <div class="post-content">
+    <p>We are pleased to announce the release of Libcloud 1.0.0-rc2.</p>
+
+<p>This the second pre-release in the 1.0.0 series which means it brings many 
new
+features, improvements, bug-fixes, and DNS drivers.</p>
+
+<h3>Release highlights</h3>
+
+<p>This includes:</p>
+
+<ul>
+<li>Deprecated drivers that were no longer available such as Ninefold, IBM SCE 
<a 
href="http://libcloud.apache.org/blog/2016/02/16/new-drivers-deprecated-drivers.html";>more
 details</a></li>
+<li>The Amazon EC2 driver has been changed to use region codes instead of 
separate drivers for each region.</li>
+<li>Introduce new <code>list_regions</code> class method on the base driver 
class</li>
+<li>Support for Dimension Data backup</li>
+<li>Added NSOne, LuaDNS, NearlyFreeSpeech.NET DNS drivers</li>
+<li>Added Aliyun compute, load balancer and storage drivers</li>
+<li>Added Outscale storage driver</li>
+</ul>
+
+<p>Full change log can be found at <a 
href="https://libcloud.readthedocs.org/en/latest/changelog.html";>here</a>.</p>
+
+<h3>Important breaking change-  Amazon EC2 driver changes</h3>
+
+<p>The Amazon EC2 API was updated to consolidate the regional-based drivers 
into a single driver with a region argument in the constructor.</p>
+
+<p>Amazon Instances should now be instantiated using the following syntax:</p>
+<div class="highlight"><pre><code class="python language-python" 
data-lang="python"><span class="kn">from</span> <span 
class="nn">libcloud.compute.types</span> <span class="kn">import</span> <span 
class="n">Provider</span>
+<span class="kn">from</span> <span 
class="nn">libcloud.compute.providers</span> <span class="kn">import</span> 
<span class="n">get_driver</span>
+
+<span class="n">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">EC2</span><span class="p">,</span> <span class="n">region</span><span 
class="o">=</span><span class="s">&#39;us-east-i1&#39;</span><span 
class="p">)</span>
+<span class="n">driver</span> <span class="o">=</span> <span 
class="n">cls</span><span class="p">(</span><span class="s">&#39;access 
key&#39;</span><span class="p">,</span> <span class="s">&#39;secret 
key&#39;</span><span class="p">)</span>
+</code></pre></div>
+<p>This brings the Amazon API inline with the other drivers, makes it easier 
to maintain and switch between regions.</p>
+
+<h3>Bug fixes</h3>
+
+<h4>General</h4>
+
+<ul>
+<li><p>Fix a bug with consuming stdout and stderr in the paramiko SSH client 
which
+would manifest itself under very rare condition when a consumed chunk only
+contained a single byte or part of a multi byte UTF-8 character.
+[Lakshmi Kannan, Tomaz Muraus]</p></li>
+<li><p>Increase default chunk size from <code>1024</code> to <code>4096</code> 
bytes in the paramiko
+SSH client. This results in smaller number of receive calls on the average.
+[Tomaz Muraus]</p></li>
+<li><p>Fix to Dimension Data API address for Middle-East and Africa
+(GITHUB-700)
+[Anthony Shaw]</p></li>
+<li><p>Throw a more user-friendly exception on &quot;No address associated 
with hostname&quot;.
+(GITHUB-711, GITHUB-714, LIBCLOUD-803)
+[Tomaz Muraus, Scott Crunkleton]</p></li>
+<li><p>Remove deprecated provider constants with the region in the name and 
related
+driver classes (e.g. <code>EC2_US_EAST</code>, etc.).</p>
+
+<p>Those drivers have moved to single provider constant + <code>region</code> 
constructor
+argument model.
+[Tomaz Muraus]</p></li>
+</ul>
+
+<h3>New or deprecated drivers</h3>
+
+<h4>Compute</h4>
+
+<ul>
+<li><p>Deprecated IBM SCE, HP Helion, OpSource, Ninefold and CloudFrames 
drivers, removed
+driver code and tests.
+(GITHUB-701, LIBCLOUD-801)
+[Anthony Shaw]</p></li>
+<li><p>Introduced error messages (<code>libcloud.compute.deprecated</code>) 
for deprecated drivers
+(GITHUB-701, LIBCLOUD-801)
+[Anthony Shaw]</p></li>
+<li><p>New Compute drivers- BSNL, Indosat, Med-1, NTT-America, Internet 
Solutions
+(GITHUB-700)
+[Anthony Shaw]</p></li>
+<li><p>New driver for Aliyun Elastic Compute Service.
+(LIBCLOUD-802, GITHUB-712)
+[Sam Song]</p></li>
+</ul>
+
+<h4>Storage</h4>
+
+<ul>
+<li><p>Added Outscale storage driver
+(GITHUB-730)
+[Javier M. Mellid]</p></li>
+<li><p>New driver for Aliyun OSS Storage Service.
+(LIBCLOUD-802, GITHUB-712)
+[Sam Song]</p></li>
+</ul>
+
+<h4>Loadbalancer</h4>
+
+<ul>
+<li>New driver for Aliyun SLB Loadbalancer Service.
+(LIBCLOUD-802, GITHUB-712)
+[Sam Song]</li>
+</ul>
+
+<h4>DNS</h4>
+
+<ul>
+<li><p>Added NearlyFreeSpeech.net (NSFN) driver
+[Ken Drayer]</p></li>
+<li><p>Added Lua DNS driver
+[Oltjano Terpollari]</p></li>
+<li><p>Added NSOne driver
+[Oltjano Terpollari]</p></li>
+</ul>
+
+<h2>Bug fixes</h2>
+
+<ul>
+<li><p>Fix a bug in the GoDaddy driver - make sure <code>host</code> attribute 
on the
+connection class is correctly set to the hostname.
+[Tomaz Muraus]</p></li>
+<li><p>Fix handling of <code>MX</code> records in the Gandi driver.
+(GITHUB-718)
+[Ryan Lee]</p></li>
+</ul>
+
+<h2>Improvements</h2>
+
+<h3>Compute</h3>
+
+<ul>
+<li><p>Introduce new <code>list_regions</code> class method on the base driver 
class. This
+method is to be used with provider drivers which support multiple regions and
+<code>region</code> constructor argument. It allows users to enumerate 
available /
+supported regions.
+[Tomaz Muraus]</p></li>
+<li><p>[dimension data] added support for VMWare tools VM information inside 
list_nodes responses
+(GITHUB-734)
+[Jeff Dunham]</p></li>
+<li><p>[ec2] added ex<em>encrypted and ex</em>kms<em>key</em>id optional 
parameters to the create volume method
+(GITHUB-729)
+[Viktor Ognev]</p></li>
+<li><p>[dimension data] added support for managing host anti-affinity rules, 
added paging support to
+all supported calls and added support for requesting priority ordering when 
creating ACL rules
+(GITHUB-726)
+[Jeff Dunham]</p></li>
+<li><p>Addition of Dimension Data Australia federal government region to 
dimension data
+drivers.
+(GITHUB-700)
+[Anthony Shaw]</p></li>
+<li><p>[openstack] when creating floating IPs, added pool_id as an optional 
argument
+(GITHUB-725)
+[marko-p]</p></li>
+<li><p>[google compute] Added setMachineType method to allow for changing 
sizes of instances
+(GITHUB-721)
+[Eric Johnson]</p></li>
+<li><p>[google compute] allow bypassing image search in standard project list
+(GITHUB-713)
+[Max Illfelder]</p></li>
+<li><p>Add support for requesting a MKS token for accessing the remote console 
in VMware
+vCloud driver
+(GITHUB-706)
+[Juan Font Alonso]</p></li>
+<li><p>Add support in VMware vCloud driver for v5.5 API, with snapshot support
+(GITHUB-658)
+[Juan Font Alonso]</p></li>
+<li><p>Added support for adding a family to an image on Google Compute Driver
+(GITHUB-704)
+[Max Illfelder]</p></li>
+<li><p>Fix to set default signature version for AWS Seoul region to v4, removed
+non-supported size (hs1.xlarge)
+(GITHUB-684)
+[Geunwoo Shin]</p></li>
+<li><p>Support filtering by location in list_nodes for dimension data compute 
driver
+fix lack of paging support
+(GITHUB-691)
+[Jeff Dunham]</p></li>
+<li><p>Support for filtering by IPv4, IPv6, network, network domain, VLAN in 
Dimension
+data driver.
+(GITHUB-694)
+[Jeff Dunham]</p></li>
+<li><p>Added <code>Node.created_at</code> which, on supported drivers, 
contains the datetime the
+node was first started.
+(GITHUB-698)
+[Allard Hoeve] [Rick van de Loo]</p></li>
+</ul>
+
+<h3>Storage</h3>
+
+<ul>
+<li><p>Improvements to Google Auth for Storage and Compute and MIME bug fix
+(LIBCLOUD-800, GITHUB-689)
+[Scott Crunkleton]</p></li>
+<li><p>Implement <code>get_container</code>, <code>get_object</code> and 
<code>upload_object_via_stream</code>
+methods in the Backblaze B2 storage driver.</p>
+
+<p>Note: Backblaze API doesn&#39;t upload streaming uploads so when using
+<code>upload_object_via_stream</code> whole file is read and buffered in 
memory.
+(GITHUB-696)
+[Jay jshridha]</p></li>
+</ul>
+
+<h3>Backup</h3>
+
+<ul>
+<li>Dimension Data - added additional testing, fixed bug on client response 
naming,
+added support for adding backup clients to a backup enabled node.
+(GITHUB-692, GITHUB-693, GITHUB-695)
+[Jeff Dunham]</li>
+</ul>
+
+<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.0.0-rc2
+</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.0.0-rc2
+</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>
+
+<p>We would like to thank the following community members for their 
contribution to this release:</p>
+
+<ul>
+<li>Jeff Dunham</li>
+<li>Max Illfelder</li>
+<li>Ken Dreyer</li>
+<li>Sam Song</li>
+<li>Oltjano Terpollari</li>
+<li>Javier M. Mellid</li>
+</ul>
+
+  </div>
+
+  <div class="row section post-meta">
+    <div class="col-md-12 post-tags">
+      <p>Tags: <a href="/blog/tags/news.html" rel="tag">news</a>, <a 
href="/blog/tags/release%20announcement.html" rel="tag">release 
announcement</a></p>
+    </div>
+  </div>
+</div>
+
+
+  <div class="post">
+  
+    <h2><a href="/blog/2016/04/06/requests-support.html">Experimental support 
for the requests package</a></h2>
+  
+
+  
+    
+  
+  <span class="post-date-author">By Anthony Shaw on Apr 06, 2016</span>
+
+  <div class="post-content">
+    <h2>Background</h2>
+
+<p>I&#39;ve just pushed a branch of the latest version of libcloud using the 
popular <code>requests</code> package by Kenneth Reitz instead of our 
home-rolled HTTP client library.</p>
+
+<p>This article is for both users and developers of libcloud. If you want to 
give feedback, please join the developer mailing list.</p>
+
+<h2>Why?</h2>
+
+<ul>
+<li>requests is the defacto standard - it would be in the standard library but 
agreed against to allow it to develop faster 
https://github.com/kennethreitz/requests/issues/2424</li>
+<li>it works with python 2.6-&gt;3.5</li>
+<li>Our SSL experience has a lot to be desired for Windows users, having to 
download the CA cert package and setting environment variables just to get SSL 
working</li>
+<li>Developers can use requests_mock for deeper integration testing</li>
+<li>less code to maintain</li>
+<li>the role of libcloud is for cloud abstraction, we provide no value in 
writing and maintaining our own HTTP client library</li>
+</ul>
+
+<h2>Benefits of requests</h2>
+
+<p>There are a number of benefits to having a requests package</p>
+
+<ul>
+<li>The client library code is smaller, leaner and simpler.</li>
+<li>Requests has built in decompression support, we no longer need to support 
this</li>
+<li>Requests has built in RAW download, upload support, helping with our 
storage drivers</li>
+</ul>
+
+<h2>Implications of the change</h2>
+
+<ul>
+<li>There are no longer 2 classes (<code>LibcloudHTTPSConnection</code> and 
<code>LibcloudHTTPConnection</code>) to be provided to each driver, they are 
now 1 class - <code>LibcloudConnection</code>. You probably won&#39;t notice 
this because it is a property of the <code>Connection</code> class, but
+if you are developing or extending functionality then it is implicated.</li>
+<li>Unit tests will look slightly different (see below)</li>
+<li>This change broke 4200 unit tests (out of 6340)! I&#39;ve since fixed them 
all since they were coupled to the original implementation, but now I don&#39;t 
know if all of tests are valid.</li>
+</ul>
+
+<h2>Testing with requests</h2>
+
+<p>Unit tests that were written like this:</p>
+<div class="highlight"><pre><code class="python language-python" 
data-lang="python"><span class="k">class</span> <span 
class="nc">DigitalOceanTests</span><span class="p">(</span><span 
class="n">LibcloudTestCase</span><span class="p">):</span>
+
+      <span class="k">def</span> <span class="nf">setUp</span><span 
class="p">(</span><span class="bp">self</span><span class="p">):</span>
+          <span class="n">DigitalOceanBaseDriver</span><span 
class="o">.</span><span class="n">connectionCls</span><span 
class="o">.</span><span class="n">conn_classes</span> <span class="o">=</span> 
\ 
+           <span class="p">(</span><span class="bp">None</span><span 
class="p">,</span> <span class="n">DigitalOceanMockHttp</span><span 
class="p">)</span>
+          <span class="n">DigitalOceanMockHttp</span><span 
class="o">.</span><span class="n">type</span> <span class="o">=</span> <span 
class="bp">None</span>
+          <span class="bp">self</span><span class="o">.</span><span 
class="n">driver</span> <span class="o">=</span> <span 
class="n">DigitalOceanBaseDriver</span><span class="p">(</span><span 
class="o">*</span><span class="n">DIGITALOCEAN_v1_PARAMS</span><span 
class="p">)</span>
+</code></pre></div>
+<p>Because of the change have been modified to (I updated all of them - so 
this is just for future reference)</p>
+<div class="highlight"><pre><code class="python language-python" 
data-lang="python"><span class="k">class</span> <span 
class="nc">DigitalOceanTests</span><span class="p">(</span><span 
class="n">LibcloudTestCase</span><span class="p">):</span>
+
+      <span class="k">def</span> <span class="nf">setUp</span><span 
class="p">(</span><span class="bp">self</span><span class="p">):</span>
+          <span class="n">DigitalOceanBaseDriver</span><span 
class="o">.</span><span class="n">connectionCls</span><span 
class="o">.</span><span class="n">conn_class</span> <span class="o">=</span> 
<span class="n">DigitalOceanMockHttp</span>
+          <span class="n">DigitalOceanMockHttp</span><span 
class="o">.</span><span class="n">type</span> <span class="o">=</span> <span 
class="bp">None</span>
+          <span class="bp">self</span><span class="o">.</span><span 
class="n">driver</span> <span class="o">=</span> <span 
class="n">DigitalOceanBaseDriver</span><span class="p">(</span><span 
class="o">*</span><span class="n">DIGITALOCEAN_v1_PARAMS</span><span 
class="p">)</span>
+</code></pre></div>
+<h1>Check it out!</h1>
+
+<p>The package is on my personal apache site, you can download it and install 
it in a virtualenv for testing.</p>
+
+<p><code>pip install -e 
http://people.apache.org/~anthonyshaw/libcloud/1.0.0-rc2-requests/apache-libcloud-1.0.0-rc2-requests.zip@feature#egg=apache-libcloud</code></p>
+
+<p>The hashes are my <a 
href="http://people.apache.org/%7Eanthonyshaw/libcloud/1.0.0-rc2-requests/";>apache
 space</a></p>
+
+<p>Have a look at the <a 
href="https://github.com/apache/libcloud/pull/728/files";>PR and the change 
set</a> for a list of changes</p>
+
+<h1>What might break?</h1>
+
+<p>What I&#39;m really looking for is for users of Libcloud to take 15 
minutes, an existing (working) libcloud script, install this package in a 
virtualenv and just validate
+that there are no regression bugs with this change.</p>
+
+<p>I&#39;m particularly sceptical about the storage drivers.</p>
+
+<p>Once we have enough community feedback, we will propose a vote to merge 
this into trunk for future release.</p>
+
+<h2>Credit</h2>
+
+<p>Credit to dz0ny on IRC for contributing some of the requests patch.</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/API.html" rel="tag">API</a>, <a 
href="/blog/tags/tutorial.html" rel="tag">tutorial</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 &copy; 2009-2016 <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-8ce1819c01481f29e425443534266bee.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/source/_site/blog/archives/2016/06/index.html
URL: 
http://svn.apache.org/viewvc/libcloud/site/trunk/source/_site/blog/archives/2016/06/index.html?rev=1749451&view=auto
==============================================================================
--- libcloud/site/trunk/source/_site/blog/archives/2016/06/index.html (added)
+++ libcloud/site/trunk/source/_site/blog/archives/2016/06/index.html Tue Jun 
21 06:39:51 2016
@@ -0,0 +1,449 @@
+<!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: 2016 06">
+    
+
+    <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: 2016 &raquo; June | 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: 2016 &raquo; June" property="og:title">
+    
+
+    
+
+    
+      <meta content="Archive: 2016 06" property="og:description">
+    
+
+    
+      <meta content="website" property="og:type">
+    
+
+    
+      <meta 
content="https://libcloud.apache.org/blog/archives/2016/06/index.html"; 
property="og:url">
+    
+    
+
+    
+
+    <link href='/assets/global-ace798c7a9ed56532fb1a044cb094574.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/2016/06/22/libcloud-1-0-0-released.html">Libcloud 1.0.0 
released</a></h2>
+  
+
+  
+    
+  
+  <span class="post-date-author">By Anthony Shaw on Jun 22, 2016</span>
+
+  <div class="post-content">
+    <p>We are pleased to announce the release of Libcloud 1.0.0.</p>
+
+<p>This first release in the 1.0 series which means it brings many new
+features, improvements, bug-fixes, and drivers. The 1.0 series includes 2 new 
driver types, container-as-a-service and backup-as-a-service.</p>
+
+<h3>Release highlights</h3>
+
+<p>This includes:</p>
+
+<ul>
+<li>New backup-as-a-service and container-as-a-service driver types</li>
+<li>Deprecated drivers that were no longer available such as Ninefold, IBM SCE 
<a 
href="http://libcloud.apache.org/blog/2016/02/16/new-drivers-deprecated-drivers.html";>more
 details</a></li>
+<li>Add support for authenticating against Keystone and OpenStack based clouds
+using OpenID Connect tokens.</li>
+<li>GCE nodes can be launched in a subnetwork and support for subnetworks</li>
+<li>Add Image Family support for GCE</li>
+<li>Add new <code>Perth, Australia</code> and <code>Manila, Philippines</code> 
region to the CloudSigma
+v2 driver.</li>
+<li>Add new S3 RGW storage driver.</li>
+<li>The Amazon EC2 driver has been changed to use region codes instead of 
separate drivers for each region.</li>
+<li>Introduce new <code>list_regions</code> class method on the base driver 
class</li>
+<li>Support for Dimension Data backup</li>
+<li>Added NSOne, LuaDNS, NearlyFreeSpeech.NET, BuddyNS, DNSPod DNS drivers</li>
+<li>Added Aliyun compute, load balancer and storage drivers</li>
+<li>Added Outscale storage driver</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>
+
+<p><a href="https://github.com/Kami";>Tomaz Muraus</a>, <a 
href="https://github.com/pquerna";>Paul Querna</a>, 
+<a href="https://github.com/jcsalterego";>Jerry Chen</a>, <a 
href="https://github.com/jadunham1";>Jeff Dunham</a>, <a 
href="https://github.com/erjohnso";>Eric Johnson</a>,
+<a href="https://github.com/jedsmith";>Jed Smith</a>, <a 
href="https://github.com/wrigri";>Rick Wright</a>, <a 
href="https://github.com/novel";>Roman Bogorodskiy</a>,
+<a href="https://github.com/baldwinmathew";>Mathew Baldwin</a>, <a 
href="https://github.com/davidcrossland";>David Crossland</a>, <a 
href="https://github.com/alex";>Alex Gaynor</a>,
+<a href="https://github.com/allardhoeve";>Allard Hoeve</a>, <a 
href="https://github.com/runseb";>Sebastien Goasguen</a>, <a 
href="https://github.com/franckcuny";>Franck Cuny</a>,
+<a href="https://github.com/ktdreyer";>Ken Dreyer</a>, <a 
href="https://github.com/jcastillo2nd";>Javier Castillo II</a>, <a 
href="https://github.com/wido";>Wido den Hollander</a>,
+<a href="https://github.com/bennettaur";>Michael Bennett</a>, <a 
href="https://github.com/ZuluPro";>Anthony Monthe</a>, <a 
href="https://github.com/zerthimon";>Lior Goikhburg</a>,
+<a href="https://github.com/encyphered";>Geunwoo Shin</a>, <a 
href="https://github.com/juanfont";>Juan Font</a>, <a 
href="https://github.com/schaubl";>&quot;schaubl&quot;</a>,
+<a href="https://github.com/mbrukman";>Misha Brukman</a>, <a 
href="https://github.com/jetbird";>Oltjano Terpollari</a>, <a 
href="https://github.com/pzrq";>Peter Schmidt</a>,
+<a href="https://github.com/mingsheng36";>Ming Sheng</a>, <a 
href="https://github.com/gertjanol";>Gertjan Oude Lohuis</a>,
+<a href="https://github.com/mgogoulos";>Markos Gogoulos</a>, <a 
href="https://github.com/bernard357";>Bernard Paques</a>,
+<a href="https://github.com/Phreedom";>Evgeny Egorochkin</a>, <a 
href="https://github.com/gigimon";>Oleg</a>, <a 
href="https://github.com/atsaki";>Atsushi Sasaki</a>,
+<a href="https://github.com/micafer";>Miguel Caballer</a>, <a 
href="https://github.com/kumarappanc";>Kumar</a>, <a 
href="https://github.com/gmcdonald";>Gavin McDonald</a>,
+<a href="https://github.com/boul";>Roeland Kuipers</a>, <a 
href="https://github.com/briancurtin";>Brian Curtin</a>, <a 
href="https://github.com/ikusalic";>Ivan Kusalic</a>,
+<a href="https://github.com/ferewuz";>Vanč Levstik</a>, <a 
href="https://github.com/davidwilson2038";>None</a>, <a 
href="https://github.com/Smotko";>Anže Pečar</a>,
+<a href="https://github.com/MrBasset";>&quot;MrBasset&quot;</a>, <a 
href="https://github.com/crunkleton";>None</a>, <a 
href="https://github.com/jmunhoz";>Javier M. Mellid</a>,
+<a href="https://github.com/jimbobhickville";>Greg Hill</a>, <a 
href="https://github.com/Jc2k";>None</a>, <a 
href="https://github.com/sfriesel";>Stefan Friesel</a>,
+<a href="https://github.com/relaxdiego";>Mark Maglana</a>, <a 
href="https://github.com/aleGpereira";>Alejandro Gabriel Pereira</a>,
+<a href="https://github.com/kyle-long";>Kyle Long</a>, <a 
href="https://github.com/teemuvesala";>Teemu Vesala</a>, <a 
href="https://github.com/LordShion";>Filipe Silva</a>,
+<a href="https://github.com/jshridha";>Jay</a>, <a 
href="https://github.com/bernieke";>Bernard Kerckenaere</a>, <a 
href="https://github.com/jobelenus";>John Obelenus</a>,
+<a href="https://github.com/bsdlp";>Jon Chen</a>, <a 
href="https://github.com/lawrencellui-dd";>Larry Lui</a>,</p>
+
+<h3>Important breaking change-  Amazon EC2 driver changes</h3>
+
+<p>The Amazon EC2 API was updated to consolidate the regional-based drivers 
into a single driver with a region argument in the constructor.</p>
+
+<p>Amazon Instances should now be instantiated using the following syntax:</p>
+<div class="highlight"><pre><code class="python language-python" 
data-lang="python"><span class="kn">from</span> <span 
class="nn">libcloud.compute.types</span> <span class="kn">import</span> <span 
class="n">Provider</span>
+<span class="kn">from</span> <span 
class="nn">libcloud.compute.providers</span> <span class="kn">import</span> 
<span class="n">get_driver</span>
+
+<span class="n">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">EC2</span><span class="p">,</span> <span class="n">region</span><span 
class="o">=</span><span class="s">&#39;us-east-i1&#39;</span><span 
class="p">)</span>
+<span class="n">driver</span> <span class="o">=</span> <span 
class="n">cls</span><span class="p">(</span><span class="s">&#39;access 
key&#39;</span><span class="p">,</span> <span class="s">&#39;secret 
key&#39;</span><span class="p">)</span>
+</code></pre></div>
+<p>This brings the Amazon API inline with the other drivers, makes it easier 
to maintain and switch between regions.</p>
+
+<h3>Bug fixes</h3>
+
+<h4>General</h4>
+
+<ul>
+<li><p>Fix a bug with consuming stdout and stderr in the paramiko SSH client 
which
+would manifest itself under very rare condition when a consumed chunk only
+contained a single byte or part of a multi byte UTF-8 character.
+[Lakshmi Kannan, Tomaz Muraus]</p></li>
+<li><p>Increase default chunk size from <code>1024</code> to <code>4096</code> 
bytes in the paramiko
+SSH client. This results in smaller number of receive calls on the average.
+[Tomaz Muraus]</p></li>
+<li><p>Fix to Dimension Data API address for Middle-East and Africa
+(GITHUB-700)
+[Anthony Shaw]</p></li>
+<li><p>Throw a more user-friendly exception on &quot;No address associated 
with hostname&quot;.
+(GITHUB-711, GITHUB-714, LIBCLOUD-803)
+[Tomaz Muraus, Scott Crunkleton]</p></li>
+<li><p>Remove deprecated provider constants with the region in the name and 
related
+driver classes (e.g. <code>EC2_US_EAST</code>, etc.).</p>
+
+<p>Those drivers have moved to single provider constant + <code>region</code> 
constructor
+argument model.
+[Tomaz Muraus]</p></li>
+</ul>
+
+<h3>New or deprecated drivers</h3>
+
+<h4>Compute</h4>
+
+<ul>
+<li><p>Deprecated IBM SCE, HP Helion, OpSource, Ninefold and CloudFrames 
drivers, removed
+driver code and tests.
+(GITHUB-701, LIBCLOUD-801)
+[Anthony Shaw]</p></li>
+<li><p>Introduced error messages (<code>libcloud.compute.deprecated</code>) 
for deprecated drivers
+(GITHUB-701, LIBCLOUD-801)
+[Anthony Shaw]</p></li>
+<li><p>New Compute drivers- BSNL, Indosat, Med-1, NTT-America, Internet 
Solutions
+(GITHUB-700)
+[Anthony Shaw]</p></li>
+<li><p>New driver for Aliyun Elastic Compute Service.
+(LIBCLOUD-802, GITHUB-712)
+[Sam Song]</p></li>
+</ul>
+
+<h4>Storage</h4>
+
+<ul>
+<li><p>Added Outscale storage driver
+(GITHUB-730)
+[Javier M. Mellid]</p></li>
+<li><p>New driver for Aliyun OSS Storage Service.
+(LIBCLOUD-802, GITHUB-712)
+[Sam Song]</p></li>
+</ul>
+
+<h4>Loadbalancer</h4>
+
+<ul>
+<li>New driver for Aliyun SLB Loadbalancer Service.
+(LIBCLOUD-802, GITHUB-712)
+[Sam Song]</li>
+</ul>
+
+<h4>DNS</h4>
+
+<ul>
+<li><p>Added NearlyFreeSpeech.net (NSFN) driver
+[Ken Drayer]</p></li>
+<li><p>Added Lua DNS driver
+[Oltjano Terpollari]</p></li>
+<li><p>Added NSOne driver
+[Oltjano Terpollari]</p></li>
+</ul>
+
+<h2>Bug fixes</h2>
+
+<ul>
+<li><p>Fix a bug in the GoDaddy driver - make sure <code>host</code> attribute 
on the
+connection class is correctly set to the hostname.
+[Tomaz Muraus]</p></li>
+<li><p>Fix handling of <code>MX</code> records in the Gandi driver.
+(GITHUB-718)
+[Ryan Lee]</p></li>
+</ul>
+
+<h2>Improvements</h2>
+
+<h3>Compute</h3>
+
+<ul>
+<li><p>Introduce new <code>list_regions</code> class method on the base driver 
class. This
+method is to be used with provider drivers which support multiple regions and
+<code>region</code> constructor argument. It allows users to enumerate 
available /
+supported regions.
+[Tomaz Muraus]</p></li>
+<li><p>[dimension data] added support for VMWare tools VM information inside 
list_nodes responses
+(GITHUB-734)
+[Jeff Dunham]</p></li>
+<li><p>[ec2] added ex<em>encrypted and ex</em>kms<em>key</em>id optional 
parameters to the create volume method
+(GITHUB-729)
+[Viktor Ognev]</p></li>
+<li><p>[dimension data] added support for managing host anti-affinity rules, 
added paging support to
+all supported calls and added support for requesting priority ordering when 
creating ACL rules
+(GITHUB-726)
+[Jeff Dunham]</p></li>
+<li><p>Addition of Dimension Data Australia federal government region to 
dimension data
+drivers.
+(GITHUB-700)
+[Anthony Shaw]</p></li>
+<li><p>[openstack] when creating floating IPs, added pool_id as an optional 
argument
+(GITHUB-725)
+[marko-p]</p></li>
+<li><p>[google compute] Added setMachineType method to allow for changing 
sizes of instances
+(GITHUB-721)
+[Eric Johnson]</p></li>
+<li><p>[google compute] allow bypassing image search in standard project list
+(GITHUB-713)
+[Max Illfelder]</p></li>
+<li><p>Add support for requesting a MKS token for accessing the remote console 
in VMware
+vCloud driver
+(GITHUB-706)
+[Juan Font Alonso]</p></li>
+<li><p>Add support in VMware vCloud driver for v5.5 API, with snapshot support
+(GITHUB-658)
+[Juan Font Alonso]</p></li>
+<li><p>Added support for adding a family to an image on Google Compute Driver
+(GITHUB-704)
+[Max Illfelder]</p></li>
+<li><p>Fix to set default signature version for AWS Seoul region to v4, removed
+non-supported size (hs1.xlarge)
+(GITHUB-684)
+[Geunwoo Shin]</p></li>
+<li><p>Support filtering by location in list_nodes for dimension data compute 
driver
+fix lack of paging support
+(GITHUB-691)
+[Jeff Dunham]</p></li>
+<li><p>Support for filtering by IPv4, IPv6, network, network domain, VLAN in 
Dimension
+data driver.
+(GITHUB-694)
+[Jeff Dunham]</p></li>
+<li><p>Added <code>Node.created_at</code> which, on supported drivers, 
contains the datetime the
+node was first started.
+(GITHUB-698)
+[Allard Hoeve] [Rick van de Loo]</p></li>
+</ul>
+
+<h3>Storage</h3>
+
+<ul>
+<li><p>Improvements to Google Auth for Storage and Compute and MIME bug fix
+(LIBCLOUD-800, GITHUB-689)
+[Scott Crunkleton]</p></li>
+<li><p>Implement <code>get_container</code>, <code>get_object</code> and 
<code>upload_object_via_stream</code>
+methods in the Backblaze B2 storage driver.</p>
+
+<p>Note: Backblaze API doesn&#39;t upload streaming uploads so when using
+<code>upload_object_via_stream</code> whole file is read and buffered in 
memory.
+(GITHUB-696)
+[Jay jshridha]</p></li>
+</ul>
+
+<h3>Backup</h3>
+
+<ul>
+<li>Dimension Data - added additional testing, fixed bug on client response 
naming,
+added support for adding backup clients to a backup enabled node.
+(GITHUB-692, GITHUB-693, GITHUB-695)
+[Jeff Dunham]</li>
+</ul>
+
+<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.0.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==1.0.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&#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>
+
+  </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>
+
+
+
+<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 &copy; 2009-2016 <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-8ce1819c01481f29e425443534266bee.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>


Reply via email to