<!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 0.7.1 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" />

    <link href='https://fonts.googleapis.com/css?family=Open+Sans:400,400italic' rel='stylesheet' type='text/css'>
    <link href='https://fonts.googleapis.com/css?family=Inconsolata' rel='stylesheet' type='text/css'>

    <!-- Facebook OpenGraph tags -->
    <meta content="Apache Libcloud" property="og:site_name">
    
      <meta content="Libcloud 0.7.1 released" property="og:title">
    

    

    

    
      <meta content="article" property="og:type">
    

    
      <meta content="https://libcloud.apache.org/blog/2011/12/09/libcloud-0-7-1-released.html" property="og:url">
    
    
      <meta content="2011-12-09T00:00:00+01:00" property="article:published_time">
      <meta content="https://libcloud.apache.org/about.html" property="article:author">
    

    
      
      <meta content="news" property="article:tag">
      
      <meta content="release announcement" property="article:tag">
      
    

    <link href='/assets/global-9ad44ae0b8c243de34d83a0fd302c8ab.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/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><!-- /.navbar-collapse -->
      </div><!-- /.container -->
    </nav>

    <div class="container main-container">
      <div class="row section page-content">
  <div class="col-lg-8 col-lg-offset-2">
    
<div class="post">
  
    <h2>Libcloud 0.7.1 released</h2>
  
  <span class="post-date-author">By Tomaz Muraus on Dec 09, 2011</span>

  <div class="post-content">
    <p>Libcloud team is pleased to announce the release of Libcloud 0.7.1!</p>

<p>This release represents another big milestone for us and introduces a
support for Python 3!</p>

<p>Other notable changes:</p>

<ul>
  <li>New Las Vegas location for the CloudSigma provider</li>
  <li>Improvements to the OpenStack driver</li>
  <li>Improvements to the OpenNebula driver</li>
  <li>Support for Amazon EC2 new “Cluster Compute Eight Extra Large” instance
size</li>
</ul>

<p>This release also removes old, deprecated (pre-0.5) paths. If you still
haven’t updated your code you need to do it now otherwise it won’t work
with 0.7.1 and future releases.</p>

<p>Script which can help you with the migration from the old style paths to
the new ones can be found at
http://libcloud.apache.org/upgrade-notes-0-7.html.</p>

<p>For a full list of changes, please see the CHANGES file
<a href="https://svn.apache.org/viewvc/libcloud/tags/0.7.1/CHANGES?revision=1210679&amp;view=markup">https://svn.apache.org/viewvc/libcloud/tags/0.7.1/CHANGES?revision=1210679&amp;view=markup</a>.</p>

<h3 id="download">Download</h3>

<p>Libcloud 0.7.1 can be downloaded from
http://libcloud.apache.org/downloads.html or installed using pip:</p>

<figure class="highlight">
  <pre><code class="language-bash" data-lang="bash">pip <span class="nb">install </span>apache-libcloud</code></pre>
</figure>

<p>It is possible that the file hasn’t been synced to all the mirrors yet. If
this is the case, please use the main Apache mirror -
http://www.apache.org/dist/libcloud</p>

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

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

<figure class="highlight">
  <pre><code class="language-bash" data-lang="bash">pip <span class="nb">install</span> <span class="nt">--upgrade</span> apache-libcloud</code></pre>
</figure>

<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
http://libcloud.apache.org/upgrade-notes-0-7.html.</p>

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

<p>API documentation can be found at http://libcloud.apache.org/apidocs/0.7.1/.</p>

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

<p>If you find any bug or issue, please report it on our issue tracker &lt;
https://issues.apache.org/jira/browse/LIBCLOUD&gt;. 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 CHANGES
file <a href="https://svn.apache.org/viewvc/libcloud/tags/0.7.1/CHANGES?revision=1210679&amp;view=markup">https://svn.apache.org/viewvc/libcloud/tags/0.7.1/CHANGES?revision=1210679&amp;view=markup</a>.</p>

<p>Source: <a href="http://mail-archives.apache.org/mod_mbox/libcloud-users/201112.mbox/%3CCAJMHEm+qKuSarmvQZ4H1PVUkv6L3vssjQEHs+3MCtSJ9hfBwOw@mail.gmail.com%3E">release announcement</a>.</p>


  </div>

  <div class="row section post-meta">
    <div class="col-md-12 post-tags">
      <p>Tags: <a href="/blog/tags/news.html" rel="tag">news</a>, <a href="/blog/tags/release-announcement.html" rel="tag">release announcement</a></p>
    </div>
  </div>
</div>

Share : <a href="https://twitter.com/share" class="twitter-share-button"{count} data-via="libcloud" data-size="large" data-hashtags="cloud">Tweet</a>
<script>!function(d,s,id){var js,fjs=d.getElementsByTagName(s)[0],p=/^http:/.test(d.location)?'http':'https';if(!d.getElementById(id)){js=d.createElement(s);js.id=id;js.src=p+'://platform.twitter.com/widgets.js';fjs.parentNode.insertBefore(js,fjs);}}(document, 'script', 'twitter-wjs');</script>

  </div>
</div>


      <hr />

      <footer>
        <div class="row">
          <div class="col-lg-12 text-center">
            <div class="footer-theme-switch">
Theme: <a id="theme-toggle" onclick="modeSwitcher()"></a>
</div>

<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-2022 <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 2022-03-29 22:18:24 +0200</p>
</div>

          </div>
        </div>
      </footer>

    </div><!-- /.container -->

    <!-- JavaScript -->
    <script src='/assets/global-1f3baa3761ee0b5fc71e1fd192fe1c26.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>
