<!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: 2014 01">
    

    <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: 2014 &raquo; January | 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: 2014 &raquo; January" property="og:title">
    

    

    
      <meta content="Archive: 2014 01" property="og:description">
    

    
      <meta content="website" property="og:type">
    

    
      <meta content="https://libcloud.apache.org/blog/archives/2014/01/" property="og:url">
    
    

    

    <link href='/assets/global-fba222d7b312b9e480173d85ea10a926.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="post">
  
    <h2><a href="/blog/2014/01/27/libcloud-0-14-and-the-new-exoscale-driver.html">Libcloud 0.14 and the new Exoscale driver</a></h2>
  

  
  <span class="post-date-author">By Tomaz Muraus <span style="display:none">(<a href="https://plus.google.com/+TomazMuraus?rel=author">Google+</a>)</span>on Jan 27, 2014</span>

  <div class="post-content">
    <p>Libcloud 0.14 which has been <a href="/blog/2014/01/22/libcloud-0-14-0-released.html">released recently</a> includes many new features
and improvements. One of those new features is also a driver for the
<a href="https://www.exoscale.ch/open-cloud/compute/">Exoscale public cloud</a>.</p>

<p>Exoscale is a public cloud service provider based in Switzerland. Their cloud
is powered by an open-source cloud computing platform <a href="https://cloudstack.apache.org/">Apache CloudStack</a>.
As such, the new Exoscale driver heavily relies on the existing
<a href="https://libcloud.readthedocs.org/en/latest/compute/drivers/cloudstack.html">CloudStack driver</a>.</p>

<div class="imginline">
  <p><a href="https://www.exoscale.ch" target="_blank">
  <img src="/images/posts/2014-01-27-libcloud-0-14-and-the-new-exoscale-driver/exoscale.png" class="img-responsive inline" />
  </a></p>
</div>

<p>If you want to learn more about how to get started with the new Exoscale
driver, you should read <a href="https://www.exoscale.ch/syslog/2014/01/27/licloud-guest-post/">Libcloud 0.14 and Exoscale</a> blog post which has
been written by one of our developers and posted on the Exoscale blog.</p>


  </div>

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


  <div class="post">
  
    <h2><a href="/blog/2014/01/23/welcome-to-the-new-website.html">Welcome to the new website</a></h2>
  

  
  <span class="post-date-author">By Tomaz Muraus <span style="display:none">(<a href="https://plus.google.com/+TomazMuraus?rel=author">Google+</a>)</span>on Jan 23, 2014</span>

  <div class="post-content">
    <p>Today we are pleased to announce a new, improved and more user friendly version
of our website.</p>

<h3 id="background-and-history">Background and History</h3>

<p>Original website was developed and published back in 2009 when the project was
first announced.</p>

<p>A lot has changed since 2009 and during that time the web has been evolving at
a rapid pace. Now we have terms such as <a href="http://getbootstrap.com/">responsive web design</a>, great
front-end frameworks for building responsive websites such as <a href="http://getbootstrap.com/">Bootstrap</a>
and <a href="http://foundation.zurb.com/">Zurb</a> and many other new things which didn’t exist or weren’t widely
used back when we first launched.</p>

<p>During this time we focused most of our efforts on improving the code and
making the library better. This meant the website didn’t receive a lot of
needed love and attention so design-wise, it was mostly stuck in the 2009 era.</p>

<p>Over the years it has become apparent that presentation and documentation is
also equally or even more important then the code itself, so we have decided
to fix some of the “mistakes” we have made in the past.</p>

<p>A couple of months back we launched a <a href="https://libcloud.readthedocs.org/en/latest/">new documentation</a> and today, we are
happy to present you a new and much improved website which was built with
modern tools and principles in mind.</p>

<h3 id="improvements-and-new-features">Improvements and New Features</h3>

<div class="imginline">
  <p><img src="/images/posts/tbd/preview.png" class="img-responsive inline" /></p>
  <p class="img-caption">Responsive design makes a site pleasure to use on a
  variety of devices and screen sizes. Image by placeit.net.</p>
</div>

<p>New website includes many improvements and new features. Some of the more
important ones are listed bellow.</p>

<h4 id="more-modern-and-user-friendly-design">More modern and user-friendly design</h4>

<p>New website now features a more modern and user-friendly design. This includes
bigger fonts, better typography and so on.</p>

<p>On top of that, the new design is fully responsive which means you can now
better enjoy the content on smaller devices such as mobile phones and tablets.</p>

<h4 id="improved-and-re-designed-landing-page">Improved and re-designed landing page</h4>

<p>We know that landing pages are very important so we have decided to totally
re-design and re-organise ours.</p>

<p>New landing page now displays all the important information (project features,
code examples, showcases some companies and projects using Libcloud) and also
features a more clear call to action.</p>

<h4 id="blog-section">Blog section</h4>

<p>New website now features a fully-fledged blog.</p>

<p>We will use the blog to post important project news, keep you up to date with
what is currently going on and post case studies and stories from projects and
companies which are using Libcloud.</p>

<p>If you are using an RSS reader to stay up to date, we also offer an
<a href="/blog/atom.xml">ATOM feed</a>.</p>

<h4 id="updated-credits-page">Updated Credits Page</h4>

<p><a href="/credits.html">Credits</a> page now features an up to date list of people who have
contributed code and documentation.</p>

<p>As noted on that page, the list is automatically generated from the CHANGES
file so it might not be 100% accurate.</p>

<h4 id="search-engine-optimizations">Search Engine Optimizations</h4>

<p>We have made some changes which will make our website a bit more friendly to
the web crawlers and search engines. We hope this will make it easier for you
to more quickly find the content you are looking for.</p>

<p>The changes we have made include improvements to the underlying HTML markup,
addition of the <a href="http://ogp.me/">OpenGraph</a> tags and an addition of a sitemap.</p>

<h3 id="under-the-hood">Under the Hood</h3>

<p>Old website was powered by <a href="http://www.apache.org/dev/cms.html">Apache CMS</a>. It mostly worked good enough for
simple use cases, but a small user base means it lacks a large ecosystem around
it which is pretty standard for many other popular content management systems.</p>

<p>Because of that, we have decided to switch to <a href="http://jekyllrb.com/">Jekyll</a>, a Ruby based static
website and blog engine.</p>

<p>On top of that, the new website is fully responsive and built using
<a href="http://getbootstrap.com/">Bootstrap 3</a> front-end framework.</p>

<p>Similar to the old website, source code is still stored in an SVN repository
so all the benefits we get from version control are preserved.</p>

<p>Source code of the new website can be found in the <a href="https://svn.apache.org/repos/asf/libcloud/site/trunk/">SVN repository</a>.</p>

<h3 id="conclusion">Conclusion</h3>

<p>We hope you will like and enjoy the new website.</p>

<p>We also hope the new website now better reflects the underlying evolution of
the library and the direction we are heading.</p>

<p>If you have any suggestions on how we can make the website even better, don’t
hesitate and share it with us. You can send your feedback to the
<a href="/community.html#mailing-lists">mailing list</a>, or you can <a href="/community.html#website-repository">checkout the website repository</a> and make
the changes yourself.</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/website.html" rel="tag">website</a></p>
    </div>
  </div>
</div>


  <div class="post">
  
    <h2><a href="/blog/2014/01/22/libcloud-0-14-0-released.html">Libcloud 0.14.0 released</a></h2>
  

  
  <span class="post-date-author">By Tomaz Muraus <span style="display:none">(<a href="https://plus.google.com/+TomazMuraus?rel=author">Google+</a>)</span>on Jan 22, 2014</span>

  <div class="post-content">
    <p>We are pleased to announce a long awaited Libcloud 0.14.0 release.</p>

<p>This is a first release in the 0.14 series which means it brings many
(and I mean many!) new features, changes and improvements.</p>

<h3 id="release-highlights">Release highlights</h3>

<ul>
  <li>To make working with providers which support multiple regions easier and
more user-friendly, some of the drivers have moved away from the “one
class per region” to a single class plus “region” argument model. Those
drivers include: EC2, Rackspace, ElasticHosts, Joyent, CloudFiles.</li>
  <li>Addition of a programmatic way of updating the pricing file and ability
to use a custom pricing file. For more information, please see
https://libcloud.readthedocs.org/en/latest/compute/pricing.html#using-a-custom-pricing-file</li>
  <li>Addition of block storage management methods to the following drivers:
OpenNebula, OpenStack, EC2</li>
  <li>Unification of the extension arguments for handling security groups in
the EC2 and OpenStack driver</li>
  <li>New standard compute API for SSH key-pair management</li>
  <li>Many new features and improvements in the CloudStack driver</li>
  <li>New compute and load balancer driver for Google Compute Engine (GCE)</li>
  <li>Ability to export Libcloud’s DNS zone to BIND zone format</li>
  <li>and much more!</li>
</ul>

<p>Full change log can be found <a href="https://libcloud.readthedocs.org/en/latest/changelog.html#changes-with-apache-libcloud-0-14-0-beta3">here</a> and <a href="https://libcloud.readthedocs.org/en/latest/changelog.html#changes-with-apache-libcloud-0-14-0">here</a> (keep in mind that this
release also includes all the changes from 0.14.0-beta3).</p>

<h3 id="note-about-backward-compatibility">Note about backward compatibility</h3>

<p>Some of the changes noted above are backward incompatible. For more
information on what has changed and how to update your code to work with
a new release, please visit the <a href="https://libcloud.readthedocs.org/en/latest/upgrade_notes.html#libcloud-0-14-0">Upgrade Notes page</a>.</p>

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

<p>Libcloud 0.14.0 can be downloaded from
<a href="https://libcloud.apache.org/downloads.html">https://libcloud.apache.org/downloads.html</a></p>

<p>or installed using pip:</p>

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

<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<span class="o">==</span>0.14.0</code></pre>
</figure>

<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!</p>

<p>Full list of people who contributed to this release can be found in the
<a href="https://libcloud.readthedocs.org/en/latest/changelog.html#changes-with-apache-libcloud-0-14-0">Changelog</a>.</p>


  </div>

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


  <div class="post">
  
    <h2><a href="/blog/2014/01/01/quick-update-about-0-13-3-release-and-digitalocean-vulnerability.html">Quick update about 0.13.3 release and DigitalOcean vulnerability</a></h2>
  

  
  <span class="post-date-author">By Tomaz Muraus <span style="display:none">(<a href="https://plus.google.com/+TomazMuraus?rel=author">Google+</a>)</span>on Jan 01, 2014</span>

  <div class="post-content">
    <p>This is a quick update about the recent 0.13.3 security release and the
DigitalOcean vulnerability.</p>

<p>DigitalOcean updated their blog post. The updated post says that
scrubbing is now enabled by default for all the newly issued destroy
requests:</p>

<blockquote>
  <p>All Destroys Default to Scrub</p>

  <p>We have updated the destroy method to scrub on all destroys, both for
web and API requests.</p>
</blockquote>

<p>This means that no action is required on the client side and upgrading
to 0.13.3 should not be necessary anymore.</p>

<p>References:</p>

<ul>
  <li><a href="https://twitter.com/digitalocean/status/418140046265294848">https://twitter.com/digitalocean/status/418140046265294848</a></li>
  <li><a href="https://digitalocean.com/blog_posts/transparency-regarding-data-security">https://digitalocean.com/blog_posts/transparency-regarding-data-security</a></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/security-release.html" rel="tag">security release</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-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 09:38:01 +0000</p>
</div>

          </div>
        </div>
      </footer>

    </div><!-- /.container -->

    <!-- JavaScript -->
    <script src='/assets/global-cda7136d9b37b9359b7069f5495d767d.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>
