<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">

    

    <meta name="author" content="The Apache Software Foundation">

    
      <meta name="keywords" content="news,release announcement" />
    

    
      <title>Libcloud 1.0.0-rc2 released | Apache Libcloud</title>
    

    <!-- fav icons -->
    <link rel="shortcut icon" href="/images/favicon.png" />
    <link rel="apple-touch-icon" href="/images/apple-touch-icon.png" />
    <link rel="apple-touch-icon-precomposed" href="/images/apple-touch-icon.png" />

    <link href="/blog/atom.xml" type="application/atom+xml" rel="alternate" title="Apache Libcloud Blog Feed" />

    <!-- Facebook OpenGraph tags -->
    <meta content="Apache Libcloud" property="og:site_name">
    
      <meta content="Libcloud 1.0.0-rc2 released" property="og:title">
    

    

    

    
      <meta content="article" property="og:type">
    

    
      <meta content="https://libcloud.apache.org/blog/2016/04/11/libcloud-1-0-0-rc2-released.html" property="og:url">
    
    
      <meta content="2016-04-11T00:00:00+00:00" property="article:published_time">
      <meta content="https://libcloud.apache.org/about.html" property="article:author">
    

    
      
      <meta content="news" property="article:tag">
      
      <meta content="release announcement" property="article:tag">
      
    

    <link href='/assets/global-0faf439f2f098e60d3f1e591316155fc.css' rel='stylesheet' type='text/css' />
  </head>

  <body data-spy="scroll" data-target=".sidebar-nav" data-offset="80">
    <nav class="navbar navbar-fixed-top navbar-inverse" role="navigation">
      <div class="container">
        <div class="navbar-header">
          <button type="button" class="navbar-toggle" data-toggle="collapse" data-target=".navbar-ex1-collapse">
            <span class="sr-only">Toggle navigation</span>
            <span class="icon-bar"></span>
            <span class="icon-bar"></span>
            <span class="icon-bar"></span>
          </button>
          <a class="navbar-brand" href="/"><img src="/images/libcloud_logo.png" class="navbar-logo" /> Apache Libcloud</a>
        </div>
        <div class="collapse navbar-collapse navbar-ex1-collapse">
          <ul class="nav navbar-nav">
            
            
              
              <li ><a href="/" >Home</a></li>
            
              
              <li ><a href="/about.html" >About</a></li>
            
              
              <li ><a href="/getting-started.html" >Quick Start</a></li>
            
              
              <li ><a href="https://libcloud.readthedocs.org/en/stable/" target="_blank">Documentation</a></li>
            
              
              <li ><a href="/downloads.html" >Downloads</a></li>
            
              
              <li ><a href="/community.html" >Community</a></li>
            
              
              <li ><a href="/blog/" >Blog</a></li>
            
          </ul>

          <div class="material-switch pull-right">
              <input id="theme-switch" name="theme-switch" type="checkbox" onclick="modeSwitcher()"/>
              <label for="theme-switch" class="label-default"></label>
              <span id="theme-toggle" class="theme-switch">Dark mode</span>
          </div>

        </div><!-- /.navbar-collapse -->
      </div><!-- /.container -->
    </nav>

    <div class="container main-container">
      <div class="row section page-content">
  <div class="col-lg-8 col-lg-offset-2">
    
<div class="post">
  
    <h2 class="post-title">Libcloud 1.0.0-rc2 released</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 id="release-highlights">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 class="language-plaintext highlighter-rouge">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 id="important-breaking-change---amazon-ec2-driver-changes">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="language-python highlighter-rouge">
  <div class="highlight">
    <pre class="highlight"><code><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="p">.</span><span class="n">EC2</span><span class="p">,</span> <span class="n">region</span><span class="o">=</span><span class="s">'us-east-i1'</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">'access key'</span><span class="p">,</span> <span class="s">'secret key'</span><span class="p">)</span>
</code></pre>
  </div>
</div>

<p>This brings the Amazon API inline with the other drivers, makes it easier to maintain and switch between regions.</p>

<h3 id="bug-fixes">Bug fixes</h3>

<h4 id="general">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 class="language-plaintext highlighter-rouge">1024</code> to <code class="language-plaintext highlighter-rouge">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 “No address associated with hostname”.
(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 class="language-plaintext highlighter-rouge">EC2_US_EAST</code>, etc.).</p>

    <p>Those drivers have moved to single provider constant + <code class="language-plaintext highlighter-rouge">region</code> constructor
argument model.
[Tomaz Muraus]</p>
  </li>
</ul>

<h3 id="new-or-deprecated-drivers">New or deprecated drivers</h3>

<h4 id="compute">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 class="language-plaintext highlighter-rouge">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 id="storage">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 id="loadbalancer">Loadbalancer</h4>

<ul>
  <li>New driver for Aliyun SLB Loadbalancer Service.
(LIBCLOUD-802, GITHUB-712)
[Sam Song]</li>
</ul>

<h4 id="dns">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 id="bug-fixes-1">Bug fixes</h2>

<ul>
  <li>
    <p>Fix a bug in the GoDaddy driver - make sure <code class="language-plaintext highlighter-rouge">host</code> attribute on the
connection class is correctly set to the hostname.
[Tomaz Muraus]</p>
  </li>
  <li>
    <p>Fix handling of <code class="language-plaintext highlighter-rouge">MX</code> records in the Gandi driver.
(GITHUB-718)
[Ryan Lee]</p>
  </li>
</ul>

<h2 id="improvements">Improvements</h2>

<h3 id="compute-1">Compute</h3>

<ul>
  <li>
    <p>Introduce new <code class="language-plaintext highlighter-rouge">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 class="language-plaintext highlighter-rouge">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_encrypted and ex_kms_key_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 class="language-plaintext highlighter-rouge">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 id="storage-1">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 class="language-plaintext highlighter-rouge">get_container</code>, <code class="language-plaintext highlighter-rouge">get_object</code> and <code class="language-plaintext highlighter-rouge">upload_object_via_stream</code>
methods in the Backblaze B2 storage driver.</p>

    <p>Note: Backblaze API doesn’t upload streaming uploads so when using
<code class="language-plaintext highlighter-rouge">upload_object_via_stream</code> whole file is read and buffered in memory.
(GITHUB-696)
[Jay jshridha]</p>
  </li>
</ul>

<h3 id="backup">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 id="download">Download</h3>

<p>The release can can be downloaded from
<a href="https://libcloud.apache.org/downloads.html">https://libcloud.apache.org/downloads.html</a> or installed using pip:</p>

<pre>
pip install apache-libcloud==1.0.0-rc2
</pre>

<h3 id="upgrading">Upgrading</h3>

<p>If you have installed Libcloud using pip you can also use it to upgrade it:</p>

<pre>
pip install --upgrade apache-libcloud==1.0.0-rc2
</pre>

<h3 id="upgrade-notes">Upgrade notes</h3>

<p>A page which describes backward incompatible or semi-incompatible
changes and how to preserve the old behavior when this is possible
can be found at <a href="https://libcloud.readthedocs.org/en/latest/upgrade_notes.html">https://libcloud.readthedocs.org/en/latest/upgrade_notes.html</a></p>

<h3 id="documentation">Documentation</h3>

<p>Regular and API documentation is available at <a href="https://libcloud.readthedocs.org/en/latest/">https://libcloud.readthedocs.org/en/latest/</a></p>

<h3 id="bugs--issues">Bugs / Issues</h3>

<p>If you find any bug or issue, please report it on our issue tracker
<a href="https://issues.apache.org/jira/browse/LIBCLOUD">https://issues.apache.org/jira/browse/LIBCLOUD</a>.
Don’t forget to attach an example and / or test which reproduces your
problem.</p>

<h3 id="thanks">Thanks</h3>

<p>Thanks to everyone who contributed and made this release possible! Full
list of people who contributed to this release can be found in the
<a href="https://libcloud.readthedocs.org/en/latest/changelog.html">CHANGES file</a>.</p>

<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-announcement.html" rel="tag">release announcement</a></p>
    </div>
  </div>
</div>


  </div>
</div>


      <hr />

      <footer>
        <div class="row">
          <div class="col-lg-12 text-center">
            <div class="footer-links">
  <p><a href="http://www.apache.org/licenses/">License</a> | <a
  href="/security.html">Security</a> | <a
  href="http://www.apache.org/foundation/sponsorship.html">Sponsorship</a> |
  <a href="http://www.apache.org/foundation/thanks.html">Thanks</a> |
  <a href="https://www.apache.org/events/">Events</a> |
  <a href="/credits.html">Credits</a> | <a href="/media.html">Media</a>
</div>

<div class="footer-text">
  <p><a class="acevent" data-format="wide"></a></p>
  <p class="">Copyright &copy; 2009-2023 <a href="https://www.apache.org/" target="_blank">The Apache Software Foundation</a></p>
  <p class="">Apache Libcloud, Libcloud, Apache, the Apache feather, and the Apache Libcloud project logo are trademarks of the Apache Software Foundation. All other marks mentioned may be trademarks or registered trademarks of their respective owners.</p>
  <p class="">Site last updated on 2023-09-09 21:30:54 +0000</p>
</div>

          </div>
        </div>
      </footer>

    </div><!-- /.container -->

    <!-- JavaScript -->
    <script src='/assets/global-dac9eed9206cf02359a2dd1d7c03e401.js' type='text/javascript'></script>

    

    <script type="text/javascript">
  var _paq = window._paq = window._paq || [];
  /* tracker methods like "setCustomDimension" should be called before
"trackPageView" */
  /* We explicitly disable cookie tracking to avoid privacy issues */
  _paq.push(['disableCookies']);
  _paq.push(['trackPageView']);
  _paq.push(['enableLinkTracking']);
  (function() {
    var u="https://analytics.apache.org/";
    _paq.push(['setTrackerUrl', u+'matomo.php']);
    _paq.push(['setSiteId', '7']);
    var d=document, g=d.createElement('script'),
s=d.getElementsByTagName('script')[0];
    g.async=true; g.src=u+'matomo.js'; s.parentNode.insertBefore(g,s);
  })();
</script>

    <script src="https://www.apachecon.com/event-images/snippet.js"></script>

  </body>
</html>
