Tag: news

Libcloud 2.0.0 released

We are pleased to announce the release of Libcloud 2.0.0.

This major release brings many new features, improvements, bug-fixes, and drivers.

Release highlights

  • Apache Libcloud 2.0 series replaces the use of Python httplib with a hard dependency on the requests package. Users no longer have to specific Certificate Authority bundles when using Apache Libcloud
  • 10% performance improvement through the use of HTTP sessions
  • Support for buffered IO streams for storage drivers
  • Support for Python 3.6, deprecation of Python 3.2
  • 3 new drivers - OnApp Compute, OnApp DNS, 1&1 Compute
  • Lots of improvements to our Azure ARM support
  • Continuing udates to the Amazon drivers

A detailed description of the 2.0 HTTP API is documented here

Compute API Changes

  • Outscale SAS doc improvements and logo update

OnApp Changes

  • Add list images support for OnApp driver
  • Add keypair management to OnApp driver

Amazon EC2 Changes

  • Add r4 instance types for AWS
  • Add support for AWS eu-west-2 and ca-central-1 regions
  • Add P2 GPU instance types
  • Add method to modify snapshot attribute for EC2
  • Add ENA support for EC2 compute images
  • Add support for forcing detachment of EBS volumes to EC2 driver
  • Add support for ModifyVolume and DescribeVolumesModifications
  • Added Import Snapshot and Describe Import Snapshot to EC2 compute driver
  • Add missing regions in AWS storage and compute drivers
  • Add SR-IOV net support to images in EC2 compute driver
  • Fix - update t2.small image size from 11 CPU to 1
  • Added Billing Product for image in EC2 compute driver

Linode changes

  • Add start, stop instance methods and fix incorrect state TERMINATED to STOPPED

Azure ARM changes

  • Fix typeerror on exlistnics
  • Add support for Azure Cloud Environments as well as Locations
  • Fix string representation of the VhdImage type and fix listing of Public IP addresses
  • Add network security groups to azure ARM
  • Add the ability to list resource groups
  • Fix Azure ARM driver condition for exlistpublishers where location is specified

Google Cloud changes

  • Allow delete instances from managed group
  • Allow preemptible instances to be created
  • Remove validation checks for guestOsFeatures

Alibaba Aliyun changes

  • Add aliyun ecs instance join leave security group
  • Fix Aliyun ECS, Load balancer and storage adapters when using unicode UTF-8 characters in the names of resources

DigitalOcean changes

  • Add price_monthly extra param to digitalocean sizes

VMWare vSphere changes

  • Fix issue with authentication methods crashing

Storage

  • Reintroduce S3 multipart upload support with signature v4

DNS

Minor changes

Common

  • Added an integration test API and a test suite for validating functionality without mocking any libcloud subsystems
  • Change Cloudscale to cloudscale.ch.

Bug Fixes

Compute

2.0.0

  • Fix OpenStack drivers not correctly setting URLs when used with identity API, would default to 127.0.0.1 and service catalog URLs were not adhered to.

  • Fix Aliyun ECS, Load balancer and storage adapters when using unicode UTF-8 characters in the names of resources in 2.0.0rc2 < it would fail as a MalformedResponseError, Python 2.7 element tree was raising a unicode error

  • Refactor the test classes to use the full libcloud.http and libcloud.common.base modules, with Connection, Response all used with requestsmock. This increases our test coverages and catches bugs in drivers' custom parsebody and auth modules

  • Rename libcloud.httplib_ssl to libcloud.http now that we don't use httplib

2.0.0rc2

  • Fix Public IP not assigned when creating NIC on Azure ARM
  • Fix a bug in profitbricks driver where listing snapshots would request a malformed URL
  • Fix LIBCLOUD-806 bug where vsphere driver cannot be instantiated
  • [google compute] Improve performance of list nodes by caching volume information.

Full change log can be found at here.

Special thank you

I would like to wish a special thank you to all of our community contributors for their ongoing support to the project.

  • Tinu Cleatus for the OnApp driver
  • Alex Misstear for the EC2 improvements
  • Jie Ren for the Aliyun improvements
  • Francisco Ros for the DigitalOcean improvements
  • Peter Amstutz and Joseph Hall for the Azure ARM API updates
  • All of our community for their ongoing support and contributions...

Download

The release can can be downloaded from https://libcloud.apache.org/downloads.html or installed using pip:

pip install apache-libcloud==2.0.0

Upgrading

If you have installed Libcloud using pip you can also use it to upgrade it:

pip install --upgrade apache-libcloud==2.0.0

Upgrade notes

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

Documentation

Regular and API documentation is available at https://libcloud.readthedocs.org/en/latest/

Bugs / Issues

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

Thanks

Thanks to everyone who contributed and made this release possible! Full list of people who contributed to this release can be found in the CHANGES file.

Have your say - async support in Apache Libcloud

One of the big requests whilst we were replacing httplib with the requests package in 2.0 was why didn't we use a HTTP library that supports asynchronous API calls.

The intention for 2.0 and replacing the HTTP backend classes was to improve the usability of the project, by making SSL certificates easier to manage, improving the maintainability of our source code by using an active 3rd party package and also improving performance and stability.

Apache Libcloud already has documentation on threaded libraries like gevent and callback-based libraries like Twisted, see using libcloud in multithreaded environments for examples.

PEP 492, implemented in Python 3.5 provides a new coroutine protocol using methods, __await__ for classes, a coroutine method wrapper, or a method that returns a coroutine object. Also async iterators and context managers have been introduced.

We would like to take advantage of the new language features by offering APIs in Apache Libcloud without breaking backward compatibility and compatibility for users of <Python 3.5.

Use cases for this would be:

  • Being able to fetch Node or StorageObjects from multiple geographies or drivers simultaneously.
  • Being able to quickly upload or download storage objects by parallelizing operations on the StorageDriver.
  • Being able to call a long-running API method (e.g. generate report), whilst running other code.

Design 1 - async context managers PR 1016

This design would allow drivers to operate in 2 modes, the first is for synchronous method calls, they return list or object data as per usual. The second mode, API methods like NodeDriver.list_nodes would return a coroutine object and could be awaited or gathered using an event loop.

import asyncio

from integration.driver.test import TestNodeDriver
from libcloud.async_util import AsyncSession

driver = TestNodeDriver('apache', 'libcloud')

async def run():
    # regular API call
    nodes = driver.list_nodes()

    async with AsyncSession(driver) as async_instance:
        nodes = await async_instance.list_nodes()

    assert len(nodes) == 2

loop = asyncio.get_event_loop()
loop.run_until_complete(run())
loop.close()

Design 2 - Additional methods in each driver for coroutines PR 1027

This is the second design concept for async support in Libcloud.

The concept here is to have Asynchronous Mixins, LibcloudConnection uses requests and LibcloudAsyncConnection uses aiohttp for async transport see

The LibcloudAsyncConnection is an implementation detail of AsyncConnection, which is the API for the drivers to consume see

The drivers then use this mixin for their custom connection classes, e.g.

class GoogleStorageConnection(ConnectionUserAndKey, AsyncConnection):
    ...

They then inherit from libcloud.storage.base.StorageAsyncDriver, which uses a new set of base methods, e.g. iterate_containers_async and can be implemented like this:

        async def iterate_containers_async(self):
            response = await self.connection.request_async('/')
            if response.status == httplib.OK:
                containers = self._to_containers(obj=response.object,
                                                 xpath='Buckets/Bucket')
                return containers

            raise LibcloudError('Unexpected status code: %s' % (response.status),
                                driver=self)

Now the consumer can more or less do this:

from libcloud.storage.providers import get_driver
from libcloud.storage.types import Provider

import asyncio

GoogleStorageDriver = get_driver(Provider.GOOGLE_STORAGE)
driver = GoogleStorageDriver(key=KEY, secret=SECRET)

def do_stuff_with_object(obj):
    print(obj)

async def run():
    tasks = []
    async for container in driver.iterate_containers_async():
        async for obj in driver.iterate_container_objects_async(container):
            tasks.append(asyncio.ensure_future(do_stuff_with_object(obj)))
    await asyncio.gather(*tasks)

loop = asyncio.get_event_loop()
loop.run_until_complete(run())
loop.close()

Design 3 - Initializer with "async" mode

This option is similar to 2, except that if a driver is instantiated with "async=True", then all driver class methods would return coroutine objects. Internally, it would patch the Connection class with the AsyncConnection class.

The downside of this is that all method calls to a driver would need to be awaited or used by an event loop.

from libcloud.storage.providers import get_driver
from libcloud.storage.types import Provider

import asyncio

GoogleStorageDriver = get_driver(Provider.GOOGLE_STORAGE)
driver = GoogleStorageDriver(key=KEY, secret=SECRET, async=True)

def do_stuff_with_object(obj):
    print(obj)

async def run():
    tasks = []
    async for container in driver.iterate_containers():
        async for obj in driver.iterate_container_objects(container):
            tasks.append(asyncio.ensure_future(do_stuff_with_object(obj)))
    await asyncio.gather(*tasks)

loop = asyncio.get_event_loop()
loop.run_until_complete(run())
loop.close()

Give us feedback

Got a better idea? Have an API or design, the question we're asking is "if you wanted to use Libcloud for an async application, what would the code look like?" This helps us design the API and the implementation details can follow.

Feel free to comment on the mailing list or on the pull requests, or raise your own pull-request with an API design.

Libcloud 2.0.0rc2 released

We are pleased to announce the release of Libcloud 2.0.0rc2.

This release brings many new features, improvements, bug-fixes, and drivers.

Release highlights

  • Apache Libcloud 2.0 series replaces the use of Python httplib with a hard dependency on the requests package. Users' no longer have to specific Certificate Authority bundles when using Apache Libcloud
  • 10% performance improvement through the use of HTTP sessions
  • Support for buffered IO streams for storage drivers
  • Support for Python 3.6, deprecation of Python 3.2

A detailed description of the 2.0 changes is documented here

Note that 2.0.0rc1 was not released to PyPi as 4 breaking issues were discovered by users. The changelog for both 2.0.0rc2 and rc1 is below.

Release highlights for 2.0.0rc2

Compute

  • Fix a bug in profitbricks driver where listing snapshots would request a malformed URL
  • Fix LIBCLOUD-806 bug where vsphere driver cannot be instantiated
  • [google compute] Improve performance of list nodes by caching volume information.

Common

  • Fix LIBCLOUD_DEBUG trying to decompress already decompressed responses
  • Added an integration test API and a test suite for validating functionality without mocking any libcloud subsystems
  • Fix for Linode classes since 2.0x
  • Fix CertificateConnection not correctly signing requests in 2.0rc1, impacted Azure classic driver, OpenStack and Docker driver
  • Change Cloudscale to cloudscale.ch.
  • Explicitly check if response is None in RawResponse class

Compute

  • Outscale SAS doc improvements and logo update
  • [GCE] Allow preemptible instances to be created
  • Add support for forcing detachment of EBS volumes to EC2 driver
  • Fix Public IP not assigned when creating NIC on Azure ARM
  • [ONAPP] Add list images support for OnApp driver
  • [EC2] Add r4 instance types for AWS
  • [EC2] support for AWS eu-west-2 and ca-central-1 regions
  • [EC2] Add P2 GPU instance types
  • [EC2] Add method to modify snapshot attribute for EC2
  • [Linode] Add start, stop instance methods and fix incorrect state TERMINATED to STOPPED
  • [EC2] Add ENA support for EC2 compute images
  • [Azure ARM] fix typeerror on exlistnics
  • [GCE] allow delete instances from managed group

Storage

  • Reintroduce S3 multipart upload support with signature v4

Changes Apache Libcloud 2.0.0rc1

Common

  • Fix DEBUG mode, also add support for using io.StringIO as the file handle when calling libcloud.enable_debug
  • Introduction of the requests package as the mechanism for making HTTP requests for all drivers
  • Fix bug where custom port and secure flag would not get propagated to connection class
  • Fix bug where custom port would not get propagated to connection
  • Fix bug where instantiating a connection from URL and then requesting an action with a leading / would lead to a malformed URL

Compute

  • Fix a bug in profitbricks driver where listing snapshots would request a malformed URL
  • Fix LIBCLOUD-806 bug where vsphere driver cannot be instantiated
  • [google compute] Improve performance of list nodes by caching volume information.

Full change log can be found at here.

Special thank you

I would like to wish a special thank you to all of our community contributors for their ongoing support to the project.

Download

The release can can be downloaded from https://libcloud.apache.org/downloads.html or installed using pip:

pip install apache-libcloud==2.0.0rc2

Upgrading

If you have installed Libcloud using pip you can also use it to upgrade it:

pip install --upgrade apache-libcloud==2.0.0rc2

Upgrade notes

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

Documentation

Regular and API documentation is available at https://libcloud.readthedocs.org/en/latest/

Bugs / Issues

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

Thanks

Thanks to everyone who contributed and made this release possible! Full list of people who contributed to this release can be found in the CHANGES file.

Libcloud 1.5.0 released

We are pleased to announce the release of Libcloud 1.5.0.

This release brings many new features, improvements, bug-fixes, and drivers.

Release highlights

  • [azure] New method for accessing rate cards.
  • [openstack] Add new Connection class to support VOMS proxys to keystone servers.
  • [ec2] Added m4 instances to us-gov and brazil, added m4.16xlarge to all.
  • Add new CloudScale.ch driver
  • [dimensiondata] Added support for 2.4 API, added support for image import, cloning. Add feature for changing NIC VLANs, add feature for changing NIC order for a server.

Full change log can be found at here.

Special thank you

I would like to wish a special thank you to all of our community contributors for their ongoing support to the project.

Download

The release can can be downloaded from https://libcloud.apache.org/downloads.html or installed using pip:

pip install apache-libcloud==1.5.0

Upgrading

If you have installed Libcloud using pip you can also use it to upgrade it:

pip install --upgrade apache-libcloud==1.5.0

Upgrade notes

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

Documentation

Regular and API documentation is available at https://libcloud.readthedocs.org/en/latest/

Bugs / Issues

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

Thanks

Thanks to everyone who contributed and made this release possible! Full list of people who contributed to this release can be found in the CHANGES file.

Libcloud 1.4.0 released

We are pleased to announce the release of Libcloud 1.4.0.

This release brings many new features, improvements, bug-fixes, and drivers.

Release highlights

The release includes a new Azure ARM driver and an Amazon Application Load Balancer (ALB) driver.

Full change log can be found at here.

Special thank you

I would like to wish a special thank you to all of our community contributors for their ongoing support to the project.

Download

The release can can be downloaded from https://libcloud.apache.org/downloads.html or installed using pip:

pip install apache-libcloud==1.4.0

Upgrading

If you have installed Libcloud using pip you can also use it to upgrade it:

pip install --upgrade apache-libcloud==1.4.0

Upgrade notes

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

Documentation

Regular and API documentation is available at https://libcloud.readthedocs.org/en/latest/

Bugs / Issues

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

Thanks

Thanks to everyone who contributed and made this release possible! Full list of people who contributed to this release can be found in the CHANGES file.

Libcloud 1.3.0 released

We are pleased to announce the release of Libcloud 1.3.0.

This release brings many new features, improvements, bug-fixes, and drivers.

Important changes

  • RunAbove driver is now the OVH cloud driver because of changes in the platform. Users will get a deprecated error message and pointed to the website for more information.
  • Fixed support for SLES/OpenSUSE 12, now checks the default certificate path (does not impact users using certifi).
  • DigitalOcean v1 API has been deprecated in favour of the new 2.0 API.

Release highlights

Rancher Driver

Mario Loria contributed a full Rancher driver for our container abstraction interface. Documentation is available with examples of usage, you can use the driver to deploy containers, services, stacks or operate and maintain existing deployments! Thanks Mario.

from libcloud.container.types import Provider
from libcloud.container.providers import get_driver
from libcloud.container.base import ContainerImage

driver = get_driver(Provider.RANCHER)

connection = driver("MYRANCHERACCESSKEY", "MYRANCHERSECRETKEY",
                    host="17.23.66.4", port=443)

image = ContainerImage("hastebin", "hastebin", "rlister/hastebin", "latest",
                       driver=None)

new_service = connection.ex_deploy_service(name="excitingservice", image=image,
                                           environmentid="1e2",
                                           environment={
                                               "STORAGE_TYPE": "file"
                                           })

New API

As well as the direct get_driver API, there is now a short-hand API for users to choose.

import libcloud

cls = libcloud.get_driver(libcloud.DriverType.COMPUTE, libcloud.DriverType.COMPUTE.RACKSPACE)

Full change log can be found at here.

Special thank you

I would like to wish a special thank you to all of our community contributors for their ongoing support to the project.

Download

The release can can be downloaded from https://libcloud.apache.org/downloads.html or installed using pip:

pip install apache-libcloud==1.3.0

Upgrading

If you have installed Libcloud using pip you can also use it to upgrade it:

pip install --upgrade apache-libcloud==1.3.0

Upgrade notes

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

Documentation

Regular and API documentation is available at https://libcloud.readthedocs.org/en/latest/

Bugs / Issues

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

Thanks

Thanks to everyone who contributed and made this release possible! Full list of people who contributed to this release can be found in the CHANGES file.

Libcloud 1.2.1 released

We are pleased to announce the release of Libcloud 1.2.1.

This release brings many new features, improvements, bug-fixes, and drivers.

Release highlights

Changes in Apache Libcloud 1.2.1

  • Fix issue enabling backups on Dimension Data driver

Changes in Apache Libcloud 1.2.0

General

  • Fix caching of auth tokens in the Google Compute Engine drivers. Now we make sure that the file is truncated before writing a new token. Not truncating the file would cause issues if the new token is shorted then the existing one which is cached in the file.

Compute

  • Fix image undeprecation in GCE
  • Added Managed Instance Groups in GCE
  • Allow undeprecation of an image in GCE
  • BUGFIX Values with wildcards failed signature validation in cloudstack
  • Added StorageState-Migrating to the cloudstack driver.
  • Update copy image logic to match create image in GCE driver.
  • Removed HD attribute from the Abiquo compute driver to support the 3.4 API
  • Add image and size details to list_nodes response in Dimension Data driver
  • Add support for changing VM admin password in VMware driver
  • Add Barcelona (Spain) region to the Aurora Compute driver.
  • Various improvements in the libvirt driver.

Load balancer

  • Add support for temporary IAM role credentials (token) to the AWS ELB driver.

DNS

  • Updated the 'extra' parameter in update_record() to be optional in aurora driver
  • Support for iterating over records and zones in the Aurora DNS driver
  • Add support for DS, PTR, SSFHFP and TLSA record type to the Aurora DNS driver.

Container

  • Add network mode and labels when creating containers within docker driver

Storage

  • Fix authentication issue in S3/China region, disabled multipart uploads as not supported by region.

Full change log can be found at here.

Special thank you

I would like to wish a special thank you to all of our community contributors for their ongoing support to the project.

Download

The release can can be downloaded from https://libcloud.apache.org/downloads.html or installed using pip:

pip install apache-libcloud==1.2.1

Upgrading

If you have installed Libcloud using pip you can also use it to upgrade it:

pip install --upgrade apache-libcloud==1.2.1

Upgrade notes

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

Documentation

Regular and API documentation is available at https://libcloud.readthedocs.org/en/latest/

Bugs / Issues

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

Thanks

Thanks to everyone who contributed and made this release possible! Full list of people who contributed to this release can be found in the CHANGES file.

Libcloud 1.1.0 released

We are pleased to announce the release of Libcloud 1.1.0.

This is a first release after v1.0.0. It includes various improvements and bug-fixes.

Release highlights

  • Support for automatic SNI (SSL extension) using the hostname supplied to connect to.
  • Various improvements in the libvirt driver
  • Various improvements in the DimensionData driver
  • Various improvements in the Aliyun driver

Full change log can be found at here.

Download

The release can can be downloaded from https://libcloud.apache.org/downloads.html or installed using pip:

pip install apache-libcloud==1.1.0

Upgrading

If you have installed Libcloud using pip you can also use it to upgrade it:

pip install --upgrade apache-libcloud==1.1.0

Upgrade notes

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

Documentation

Regular and API documentation is available at https://libcloud.readthedocs.org/en/v1.1.0/

Bugs / Issues

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

Thanks

Thanks to everyone who contributed and made this release possible! Full list of people who contributed to this release can be found in the CHANGES file.

Libcloud 1.0.0 released

We are pleased to announce the release of Libcloud 1.0.0.

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.

Release highlights

This includes:

  • New backup-as-a-service and container-as-a-service driver types
  • Deprecated drivers that were no longer available such as Ninefold, IBM SCE more details
  • Add support for authenticating against Keystone and OpenStack based clouds using OpenID Connect tokens.
  • GCE nodes can be launched in a subnetwork and support for subnetworks
  • Add Image Family support for GCE
  • Add new Perth, Australia and Manila, Philippines region to the CloudSigma v2 driver.
  • Add new S3 RGW storage driver.
  • The Amazon EC2 driver has been changed to use region codes instead of separate drivers for each region.
  • Introduce new list_regions class method on the base driver class
  • Support for Dimension Data backup
  • Added NSOne, LuaDNS, NearlyFreeSpeech.NET, BuddyNS, DNSPod DNS drivers
  • Added Aliyun compute, load balancer and storage drivers
  • Added Outscale storage driver

Full change log can be found at here.

Special thank you

I would like to wish a special thank you to all of our community contributors for their ongoing support to the project.

Tomaz Muraus, Paul Querna, Jerry Chen, Jeff Dunham, Eric Johnson, Jed Smith, Rick Wright, Roman Bogorodskiy, Mathew Baldwin, David Crossland, Alex Gaynor, Allard Hoeve, Sebastien Goasguen, Franck Cuny, Ken Dreyer, Javier Castillo II, Wido den Hollander, Michael Bennett, Anthony Monthe, Lior Goikhburg, Geunwoo Shin, Juan Font, "schaubl", Misha Brukman, Oltjano Terpollari, Peter Schmidt, Ming Sheng, Gertjan Oude Lohuis, Markos Gogoulos, Bernard Paques, Evgeny Egorochkin, Oleg, Atsushi Sasaki, Miguel Caballer, Kumar, Gavin McDonald, Roeland Kuipers, Brian Curtin, Ivan Kusalic, Vanč Levstik, None, Anže Pečar, "MrBasset", None, Javier M. Mellid, Greg Hill, None, Stefan Friesel, Mark Maglana, Alejandro Gabriel Pereira, Kyle Long, Teemu Vesala, Filipe Silva, Jay, Bernard Kerckenaere, John Obelenus, Jon Chen, Larry Lui,

Important breaking change- Amazon EC2 driver changes

The Amazon EC2 API was updated to consolidate the regional-based drivers into a single driver with a region argument in the constructor.

Amazon Instances should now be instantiated using the following syntax:

from libcloud.compute.types import Provider
from libcloud.compute.providers import get_driver

cls = get_driver(Provider.EC2)
driver = cls('access key', 'secret key', region='us-east-1')

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

Bug fixes

General

  • 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]

  • Increase default chunk size from 1024 to 4096 bytes in the paramiko SSH client. This results in smaller number of receive calls on the average. [Tomaz Muraus]

  • Fix to Dimension Data API address for Middle-East and Africa (GITHUB-700) [Anthony Shaw]

  • Throw a more user-friendly exception on "No address associated with hostname". (GITHUB-711, GITHUB-714, LIBCLOUD-803) [Tomaz Muraus, Scott Crunkleton]

  • Remove deprecated provider constants with the region in the name and related driver classes (e.g. EC2_US_EAST, etc.).

    Those drivers have moved to single provider constant + region constructor argument model. [Tomaz Muraus]

New or deprecated drivers

Compute

  • Deprecated IBM SCE, HP Helion, OpSource, Ninefold and CloudFrames drivers, removed driver code and tests. (GITHUB-701, LIBCLOUD-801) [Anthony Shaw]

  • Introduced error messages (libcloud.compute.deprecated) for deprecated drivers (GITHUB-701, LIBCLOUD-801) [Anthony Shaw]

  • New Compute drivers- BSNL, Indosat, Med-1, NTT-America, Internet Solutions (GITHUB-700) [Anthony Shaw]

  • New driver for Aliyun Elastic Compute Service. (LIBCLOUD-802, GITHUB-712) [Sam Song]

Storage

  • Added Outscale storage driver (GITHUB-730) [Javier M. Mellid]

  • New driver for Aliyun OSS Storage Service. (LIBCLOUD-802, GITHUB-712) [Sam Song]

Loadbalancer

  • New driver for Aliyun SLB Loadbalancer Service. (LIBCLOUD-802, GITHUB-712) [Sam Song]

DNS

  • Added NearlyFreeSpeech.net (NSFN) driver [Ken Drayer]

  • Added Lua DNS driver [Oltjano Terpollari]

  • Added NSOne driver [Oltjano Terpollari]

Bug fixes

  • Fix a bug in the GoDaddy driver - make sure host attribute on the connection class is correctly set to the hostname. [Tomaz Muraus]

  • Fix handling of MX records in the Gandi driver. (GITHUB-718) [Ryan Lee]

Improvements

Compute

  • Introduce new list_regions class method on the base driver class. This method is to be used with provider drivers which support multiple regions and region constructor argument. It allows users to enumerate available / supported regions. [Tomaz Muraus]

  • [dimension data] added support for VMWare tools VM information inside list_nodes responses (GITHUB-734) [Jeff Dunham]

  • [ec2] added exencrypted and exkmskeyid optional parameters to the create volume method (GITHUB-729) [Viktor Ognev]

  • [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]

  • Addition of Dimension Data Australia federal government region to dimension data drivers. (GITHUB-700) [Anthony Shaw]

  • [openstack] when creating floating IPs, added pool_id as an optional argument (GITHUB-725) [marko-p]

  • [google compute] Added setMachineType method to allow for changing sizes of instances (GITHUB-721) [Eric Johnson]

  • [google compute] allow bypassing image search in standard project list (GITHUB-713) [Max Illfelder]

  • Add support for requesting a MKS token for accessing the remote console in VMware vCloud driver (GITHUB-706) [Juan Font Alonso]

  • Add support in VMware vCloud driver for v5.5 API, with snapshot support (GITHUB-658) [Juan Font Alonso]

  • Added support for adding a family to an image on Google Compute Driver (GITHUB-704) [Max Illfelder]

  • Fix to set default signature version for AWS Seoul region to v4, removed non-supported size (hs1.xlarge) (GITHUB-684) [Geunwoo Shin]

  • Support filtering by location in list_nodes for dimension data compute driver fix lack of paging support (GITHUB-691) [Jeff Dunham]

  • Support for filtering by IPv4, IPv6, network, network domain, VLAN in Dimension data driver. (GITHUB-694) [Jeff Dunham]

  • Added Node.created_at which, on supported drivers, contains the datetime the node was first started. (GITHUB-698) [Allard Hoeve] [Rick van de Loo]

Storage

  • Improvements to Google Auth for Storage and Compute and MIME bug fix (LIBCLOUD-800, GITHUB-689) [Scott Crunkleton]

  • Implement get_container, get_object and upload_object_via_stream methods in the Backblaze B2 storage driver.

    Note: Backblaze API doesn't upload streaming uploads so when using upload_object_via_stream whole file is read and buffered in memory. (GITHUB-696) [Jay jshridha]

Backup

  • 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]

Download

The release can can be downloaded from https://libcloud.apache.org/downloads.html or installed using pip:

pip install apache-libcloud==1.0.0

Upgrading

If you have installed Libcloud using pip you can also use it to upgrade it:

pip install --upgrade apache-libcloud==1.0.0

Upgrade notes

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

Documentation

Regular and API documentation is available at https://libcloud.readthedocs.org/en/latest/

Bugs / Issues

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

Thanks

Thanks to everyone who contributed and made this release possible! Full list of people who contributed to this release can be found in the CHANGES file.

Libcloud 1.0.0-rc2 released

We are pleased to announce the release of Libcloud 1.0.0-rc2.

This the second pre-release in the 1.0.0 series which means it brings many new features, improvements, bug-fixes, and DNS drivers.

Release highlights

This includes:

  • Deprecated drivers that were no longer available such as Ninefold, IBM SCE more details
  • The Amazon EC2 driver has been changed to use region codes instead of separate drivers for each region.
  • Introduce new list_regions class method on the base driver class
  • Support for Dimension Data backup
  • Added NSOne, LuaDNS, NearlyFreeSpeech.NET DNS drivers
  • Added Aliyun compute, load balancer and storage drivers
  • Added Outscale storage driver

Full change log can be found at here.

Important breaking change- Amazon EC2 driver changes

The Amazon EC2 API was updated to consolidate the regional-based drivers into a single driver with a region argument in the constructor.

Amazon Instances should now be instantiated using the following syntax:

from libcloud.compute.types import Provider
from libcloud.compute.providers import get_driver

cls = get_driver(Provider.EC2, region='us-east-i1')
driver = cls('access key', 'secret key')

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

Bug fixes

General

  • 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]

  • Increase default chunk size from 1024 to 4096 bytes in the paramiko SSH client. This results in smaller number of receive calls on the average. [Tomaz Muraus]

  • Fix to Dimension Data API address for Middle-East and Africa (GITHUB-700) [Anthony Shaw]

  • Throw a more user-friendly exception on "No address associated with hostname". (GITHUB-711, GITHUB-714, LIBCLOUD-803) [Tomaz Muraus, Scott Crunkleton]

  • Remove deprecated provider constants with the region in the name and related driver classes (e.g. EC2_US_EAST, etc.).

    Those drivers have moved to single provider constant + region constructor argument model. [Tomaz Muraus]

New or deprecated drivers

Compute

  • Deprecated IBM SCE, HP Helion, OpSource, Ninefold and CloudFrames drivers, removed driver code and tests. (GITHUB-701, LIBCLOUD-801) [Anthony Shaw]

  • Introduced error messages (libcloud.compute.deprecated) for deprecated drivers (GITHUB-701, LIBCLOUD-801) [Anthony Shaw]

  • New Compute drivers- BSNL, Indosat, Med-1, NTT-America, Internet Solutions (GITHUB-700) [Anthony Shaw]

  • New driver for Aliyun Elastic Compute Service. (LIBCLOUD-802, GITHUB-712) [Sam Song]

Storage

  • Added Outscale storage driver (GITHUB-730) [Javier M. Mellid]

  • New driver for Aliyun OSS Storage Service. (LIBCLOUD-802, GITHUB-712) [Sam Song]

Loadbalancer

  • New driver for Aliyun SLB Loadbalancer Service. (LIBCLOUD-802, GITHUB-712) [Sam Song]

DNS

  • Added NearlyFreeSpeech.net (NSFN) driver [Ken Drayer]

  • Added Lua DNS driver [Oltjano Terpollari]

  • Added NSOne driver [Oltjano Terpollari]

Bug fixes

  • Fix a bug in the GoDaddy driver - make sure host attribute on the connection class is correctly set to the hostname. [Tomaz Muraus]

  • Fix handling of MX records in the Gandi driver. (GITHUB-718) [Ryan Lee]

Improvements

Compute

  • Introduce new list_regions class method on the base driver class. This method is to be used with provider drivers which support multiple regions and region constructor argument. It allows users to enumerate available / supported regions. [Tomaz Muraus]

  • [dimension data] added support for VMWare tools VM information inside list_nodes responses (GITHUB-734) [Jeff Dunham]

  • [ec2] added exencrypted and exkmskeyid optional parameters to the create volume method (GITHUB-729) [Viktor Ognev]

  • [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]

  • Addition of Dimension Data Australia federal government region to dimension data drivers. (GITHUB-700) [Anthony Shaw]

  • [openstack] when creating floating IPs, added pool_id as an optional argument (GITHUB-725) [marko-p]

  • [google compute] Added setMachineType method to allow for changing sizes of instances (GITHUB-721) [Eric Johnson]

  • [google compute] allow bypassing image search in standard project list (GITHUB-713) [Max Illfelder]

  • Add support for requesting a MKS token for accessing the remote console in VMware vCloud driver (GITHUB-706) [Juan Font Alonso]

  • Add support in VMware vCloud driver for v5.5 API, with snapshot support (GITHUB-658) [Juan Font Alonso]

  • Added support for adding a family to an image on Google Compute Driver (GITHUB-704) [Max Illfelder]

  • Fix to set default signature version for AWS Seoul region to v4, removed non-supported size (hs1.xlarge) (GITHUB-684) [Geunwoo Shin]

  • Support filtering by location in list_nodes for dimension data compute driver fix lack of paging support (GITHUB-691) [Jeff Dunham]

  • Support for filtering by IPv4, IPv6, network, network domain, VLAN in Dimension data driver. (GITHUB-694) [Jeff Dunham]

  • Added Node.created_at which, on supported drivers, contains the datetime the node was first started. (GITHUB-698) [Allard Hoeve] [Rick van de Loo]

Storage

  • Improvements to Google Auth for Storage and Compute and MIME bug fix (LIBCLOUD-800, GITHUB-689) [Scott Crunkleton]

  • Implement get_container, get_object and upload_object_via_stream methods in the Backblaze B2 storage driver.

    Note: Backblaze API doesn't upload streaming uploads so when using upload_object_via_stream whole file is read and buffered in memory. (GITHUB-696) [Jay jshridha]

Backup

  • 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]

Download

The release can can be downloaded from https://libcloud.apache.org/downloads.html or installed using pip:

pip install apache-libcloud==1.0.0-rc2

Upgrading

If you have installed Libcloud using pip you can also use it to upgrade it:

pip install --upgrade apache-libcloud==1.0.0-rc2

Upgrade notes

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

Documentation

Regular and API documentation is available at https://libcloud.readthedocs.org/en/latest/

Bugs / Issues

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

Thanks

Thanks to everyone who contributed and made this release possible! Full list of people who contributed to this release can be found in the CHANGES file.

We would like to thank the following community members for their contribution to this release:

  • Jeff Dunham
  • Max Illfelder
  • Ken Dreyer
  • Sam Song
  • Oltjano Terpollari
  • Javier M. Mellid

Experimental support for the requests package

Background

I've just pushed a branch of the latest version of libcloud using the popular requests package by Kenneth Reitz instead of our home-rolled HTTP client library.

This article is for both users and developers of libcloud. If you want to give feedback, please join the developer mailing list.

Why?

  • 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
  • it works with python 2.6->3.5
  • 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
  • Developers can use requests_mock for deeper integration testing
  • less code to maintain
  • the role of libcloud is for cloud abstraction, we provide no value in writing and maintaining our own HTTP client library

Benefits of requests

There are a number of benefits to having a requests package

  • The client library code is smaller, leaner and simpler.
  • Requests has built in decompression support, we no longer need to support this
  • Requests has built in RAW download, upload support, helping with our storage drivers

Implications of the change

  • There are no longer 2 classes (LibcloudHTTPSConnection and LibcloudHTTPConnection) to be provided to each driver, they are now 1 class - LibcloudConnection. You probably won't notice this because it is a property of the Connection class, but if you are developing or extending functionality then it is implicated.
  • Unit tests will look slightly different (see below)
  • This change broke 4200 unit tests (out of 6340)! I've since fixed them all since they were coupled to the original implementation, but now I don't know if all of tests are valid.

Testing with requests

Unit tests that were written like this:

class DigitalOceanTests(LibcloudTestCase):

      def setUp(self):
          DigitalOceanBaseDriver.connectionCls.conn_classes = \ 
           (None, DigitalOceanMockHttp)
          DigitalOceanMockHttp.type = None
          self.driver = DigitalOceanBaseDriver(*DIGITALOCEAN_v1_PARAMS)

Because of the change have been modified to (I updated all of them - so this is just for future reference)

class DigitalOceanTests(LibcloudTestCase):

      def setUp(self):
          DigitalOceanBaseDriver.connectionCls.conn_class = DigitalOceanMockHttp
          DigitalOceanMockHttp.type = None
          self.driver = DigitalOceanBaseDriver(*DIGITALOCEAN_v1_PARAMS)

Check it out!

The package is on my personal apache site, you can download it and install it in a virtualenv for testing.

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

The hashes are my apache space

Have a look at the PR and the change set for a list of changes

What might break?

What I'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.

I'm particularly sceptical about the storage drivers.

Once we have enough community feedback, we will propose a vote to merge this into trunk for future release.

Credit

Credit to dz0ny on IRC for contributing some of the requests patch.

New compute drivers and deprecated drivers in 1.0

With Libcloud 1.0.0 around the corner, it's time to have a spring clean of the compute drivers. Granted, it's not spring everywhere -actually I'm writing from Sydney, Australia where it's definitely summer.

Looking at the 52 providers in the 0.21.0 release, I have identified 5 providers that are no longer available or open.

Handling deprecated drivers

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.

The most obvious implementation is that calls to get_driver(Provider.NINEFOLD) 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.

Currently, users trying to instantiate a HPE public cloud driver for example will get a connection error, which is not user friendly.

New compute drivers in 1.0.0-pre2

The upcoming release, so currently available in trunk contains some new compute drivers.

Full change log can be found at here.

Using the container abstraction API in 1.0.0-pre1

Background

Containers are the talk of the town, you can't escape an event or meetup without someone talking about containers. The lessons we learnt with compute abstraction are applying widely with containers in 2016. APIs are not consistent between clouds, designs are not standardised and yet, users are trying to consume multiple services.

We introduced Container-as-a-Service support in 1.0.0-pre1, 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 :

  • Docker
  • Joyent Triton
  • Amazon EC2 Container Service
  • Google Kubernetes

In this tutorial we're going to explore how to do this:

Deploying containers across platforms.

Pulling images from the Docker hub, deploying to Docker, Kubernetes and Amazon ECS then auditing them with a single query.

Getting Started with 1.0.0-pre1

First off, let's install the new packages, you probably want to do this within a virtualenv if you're using Apache Libcloud for other projects.

So run these commands at a Linux Shell to create a virtualenv called 'containers' and install the pre-release packages into that environment.

   virtualenv containers
   cd containers
   source bin/activate
   pip install apache-libcloud==1.0.0-pre1

Now you can start using this package with a test script, let's create one called containers.py

   touch containers.py

Using your favourite text editor, update that file to import the 1.0.0-pre1 libraries and the factory methods for instantiating containers.

   from libcloud.container.providers import get_driver
   from libcloud.container.types import Provider

get_driver is a factory method as with all libcloud APIs, you call this method with the Provider that you want to instantiate. Our options are:

  • Provider.DOCKER - Standalone Docker API
  • Provider.KUBERNETES - Kubernetes Cluster endpoint
  • Provider.JOYENT - Joyent Triton Public API
  • Provider.ECS - Amazon EC2 Container Service

Calling get_driver 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.

   driver = get_driver(Provider.DOCKER)

Now we can call our driver and get an instance of it called docker_driver 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.

   docker_driver = driver(host='https://198.61.239.128', port=4243,
             key_file='key.pem', cert_file='cert.pem')

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.

   image = driver.install_image('tomcat:8.0')

Now that Docker has the version 8.0 image of Apache Tomcat, you can deploy this as a container called my_tomcat_container. Tomcat runs on TCP/8080 by default so we want to bind that port for our container using an optional parameter port_bindings

   bindings = { "22/tcp": [{ "HostPort": "11022" }] }
   container = driver.deploy_container('my_tomcat_container', image, port_bindings=bindings)

This will have deployed the container and started it up for you, you can disable the automatic startup by using start=False as a keyword argument. You can now call upon this container and run methods, restart, start, stop and destroy.

For example, to blow away that test container:

   container.destroy()

Crossing the streams; calling Kubernetes and Amazon EC2 Container Service

With Docker we saw that we needed to "pull" the image before we deployed it. Kubernetes and Amazon ECS don't have that requirement, but as a safeguard you can query the Docker Hub API using a utility class provided

   from libcloud.container.utils.docker import HubClient
   hub = HubClient()
   image = hub.get_image('tomcat', '8.0')

Now image can be used to deploy to any driver instance that you create. Let's try that against Kubernetes and ECS.

Amazon ECS

Before you run this example, you will need an API key and the permissions for that key to have the AmazonEC2ContainerServiceFullAccess role. ap-southeast-2 is my nearest region, but you can swap this out for any of the Amazon public regions that have the ECS service available.

   e_cls = get_driver(Provider.ECS)
   ecs = e_cls(access_id='SDHFISJDIFJSIDFJ',
               secret='THIS_IS)+_MY_SECRET_KEY+I6TVkv68o4H',
               region='ap-southeast-2')

ECS and Kubernetes both support some form of grouping or clustering for your containers. This is available as create_cluster, list_cluster.

   cluster = ecs.create_cluster('default')
   container = ecs.deploy_container(
            cluster=cluster,
            name='hello-world',
            image=image,
            start=False,
            ex_container_port=8080, ex_host_port=8080)

This will have deployed a task definition in Amazon ECS with a single container inside, with a cluster called 'main' and deployed the tomcat:8.0 image from the Docker hub to that region.

Check out the ECS Documentation for more details.

Kubernetes

Kubernetes authentication is currently only implemented for None (off) and Basic HTTP authentication. Let's use the basic HTTP authentication method to connect.

k_cls = get_driver(Provider.KUBERNETES)

kubernetes = k_cls(key='my_username',
                   secret='THIS_IS)+_MY_SECRET_KEY+I6TVkv68o4H',
                   host='126.32.21.4')
cluster2 = kubernetes.create_cluster('default')
container2 = kubernetes.deploy_container(
            cluster=cluster,
            name='hello-world',
            image=image,
            start=False)

Wrapping it up

Now, let's wrap that all up by doing a list comprehension across the 3 drivers to get a list of all containers and print their ID's and Names. Then delete them.

containers = [conn.list_containers() for conn in [docker, ecs, kubernetes]]
for container in containers:
    print("%s : %s" % (container.id, container.name))
    container.destroy()

About the Author

Anthony Shaw is on the PMC for Apache Libcloud, you can follow Anthony on Twitter at @anthonypjshaw.

Libcloud 1.0.0-pre1 released

We are pleased to announce the release of Libcloud 1.0.0-pre1.

This is a first pre-release in the 1.0.0 series which means it brings many new features, improvements, bug-fixes, and DNS drivers.

Release highlights

A full blog post on the new features in 1.0.0 can be found here

This includes:

Full change log can be found at here.

Download

The release can can be downloaded from https://libcloud.apache.org/downloads.html or installed using pip:

pip install apache-libcloud==1.0.0-pre1

Upgrading

If you have installed Libcloud using pip you can also use it to upgrade it:

pip install --upgrade apache-libcloud==1.0.0-pre1

Upgrade notes

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

Documentation

Regular and API documentation is available at https://libcloud.readthedocs.org/en/latest/

Bugs / Issues

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

Thanks

Thanks to everyone who contributed and made this release possible! Full list of people who contributed to this release can be found in the CHANGES file.

Libcloud 1.0-pre1 open for feedback

We are pleased to announce that version 1.0-pre1 vote thread is open and the release is ready for community feedback.

1.0-pre1 marks the first pre-release of the 1.0 major release. Some years ago, Tomaz Muraus spoke on the podcast FLOSS weekly. Tomaz spoke about how much of a huge challenge porting the project to Python 3.x would be(!) as well as the 1.0 milestone.

It is worth listening to the podcast to see how far things have come, we now average 2 pull-requests a day and have 156 contributors.

As the project has matured over the last 5 years one of the most remarkable changes has been the adoption from the community and continued support from our contributors adding new drivers, patching strange API issues and keeping the project alive.

Anthony Shaw will be speaking on the FLOSS weekly podcast on February 2nd and discussing our community and the project, so please tune in.

The Cloud market as I'm sure you're all aware of is thriving, the purpose of Libcloud was originally:

  • To help prevent lock-in to a particular vendor
  • To abstract the complexity of vendor APIs
  • To give a simple way for deploying to and managing multiple cloud vendors

Since that we have had (at the last count) 2,118,539 downloads. The project continues to grow in popularity with each new release.

So with the 1.0 major release we would like to announce 2 new driver types, containers and backup.

History of our drivers

The compute (IaaS) API is what libcloud is best known for but there is a range of drivers available for many other capabilities.

There is a presentation on the value of using Libcloud to avoid lock in on SlideShare

This is a history of the different driver types in the libcloud project.

  • Compute (v0.1.0)
    • Support for nodes, node images, locations, states
    • 52 providers including every major cloud provider in the market. Plus local services like Vmware, OpenStack, libvirt
  • DNS (v0.6.0)
    • Support for zones, records, recordtypes
    • 19 providers including CloudFlare, DigitalOcean, DNSimple, GoDaddy, Google DNS, Linode, Rackspace, Amazon R53, Zerigo
  • Object Storage (v0.5.0)
    • Support for containers and objects
    • 11 providers including Amazon S3, Azure Blobs, Google storage, CloudFiles, OpenStack Swift
  • Load Balancer (v0.5.0)
    • Support for nodes, balancers, listeners and algorithms
    • 11 providers including CloudStack, Dimension Data, Amazon ELB, Google GCE LB, SoftLayer LB
  • Backup (v0.20.0)
    • Support for backup targets, recovery points and jobs
    • 3 providers, Dimension Data, Amazon EBS snaps, Google snaps

Introducing Backup Drivers

With 1.0-pre1 we have introduced a new driver type for backup, libcloud.backup

Backup API allows you to manage Backup as A Service and services such as EBS Snaps, GCE volume snap and dimension data backup.

Terminology

  • libcloud.backup.base.BackupTarget - Represents a backup target, like a Virtual Machine, a folder or a database.
  • libcloud.backup.base.BackupTargetRecoveryPoint - Represents a copy of the data in the target, a recovery point can be recovered to a backup target. An inplace restore is where you recover to the same target and an out-of-place restore is where you recover to another target.
  • libcloud.backup.base.BackupTargetJob - Represents a backup job running on backup target.

Introducing Container-as-a-Service Drivers

The API is for Container-as-a-Service providers, these new types of cloud services offer container management and hosting as a service. The new services are already providing proprietary APIs, giving the need for a tool like Libcloud if you want to provision to any cloud provider.

Google, Amazon and Joyent have all announced Container cloud services and Microsoft have launched a beta service also, so we are getting on the front foot with an abstraction API for people wishing to gain similar benefits to the compute, load balancer and storage APIs.

A presentation on this topic is available on SlideShare.

Isn't docker a standard? Well, yes and no.

Docker has been the main technology adopted by these providers as the host system for the containers and also as the specification of the containers themselves. But, Docker is not a provisioning system, it is a virtualization host. Also there are alternatives, like CoreOS Rkt.

Container API design

Container-as-a-Service providers will implement the ContainerDriver class to provide functionality for :

  • Listing deployed containers
  • Starting, stopping and restarting containers (where supported)
  • Destroying containers
  • Creating/deploying containers
  • Listing container images
  • Installing container images (pulling an image from a local copy or remote repository)

Simple Container Support

  • libcloud.container.base.ContainerImage - Represents an image that can be deployed, like an application or an operating system
  • libcloud.container.base.Container - Represents a deployed container image running on a container host

Cluster Suppport

Cluster support extends on the basic driver functions, but where drivers implement the class-level attribute supports_clusters as True clusters may be listed, created and destroyed. When containers are deployed, the target cluster can be specified.

  • libcloud.container.base.ContainerCluster - Represents a deployed container image running on a container host
  • libcloud.container.base.ClusterLocation - Represents a location for clusters to be deployed

Using the container drivers

The container drivers have been designed around similar principles to the compute driver. It is simple to use and a flat class design.

from libcloud.container.providers import get_driver
from libcloud.container.types import Provider

Cls = get_driver(Provider.DOCKER)
driver = Cls('user', 'api key')

image = driver.install_image('tomcat:8.0')
container = driver.deploy_container('tomcat', image)

container.restart()

Container Registries

The Docker Registry API is used by services like Amazon ECR, the Docker Hub website and by anyone hosting their own Docker registry. It doesn't belong to a particular driver, so is a utility class. Some providers, like Amazon ECR have a factory method to provide a registry client Images from docker registry can be sent to the deploy_container method for any driver.

from libcloud.container.utils.docker import HubClient 
hub = HubClient() 
image = hub.get_image('ubuntu', 'latest') 

When other container registry services are made available these can be provided in a similar context.

Prototype drivers in libcloud.container

Drivers have been provided to show example implementations of the API, these drivers are experimental and need to go through more thorough community testing before they are ready for a stable release.

The driver with the most contentious implementation is Kubernetes. We would like users of the Amazon ECS, Google Containers and Kubernetes project to provide feedback on how they would like to map clusters, pods, namespaces to the low level concepts in the driver.

Providing feedback

The voting thread is open, please use this as your opportunity to give feedback.

Thanks

Thanks to everyone who contributed and made this release possible! Full list of people who contributed to this release can be found in the CHANGES file.

Libcloud 0.20.1 released

We are pleased to announce the release of Libcloud 0.20.1.

This is a bug-fix release in the 0.20 series.

Release highlights

  • Allow for old and new style service accounts for GCE driver
  • Fix syntax error with DimensionDataStatus object
  • Fix bug in public IP addition command for DimensionData driver
  • Fix error with proxy_url with vCloud Compute driver.
  • Fix with hasattr for Rackspace DNS driver.

Full change log can be found at here.

Download

The release can can be downloaded from https://libcloud.apache.org/downloads.html or installed using pip:

pip install apache-libcloud==0.20.1

Upgrading

If you have installed Libcloud using pip you can also use it to upgrade it:

pip install --upgrade apache-libcloud==0.20.1

Upgrade notes

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

Documentation

Regular and API documentation is available at https://libcloud.readthedocs.org/en/latest/

Bugs / Issues

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

Thanks

Thanks to everyone who contributed and made this release possible! Full list of people who contributed to this release can be found in the CHANGES file.

Notice for Linode users

This is an announcement for users of the Linode driver for Libcloud who might have started experiencing issues recently.

Background

A couple of Libcloud users have reported that they have recently started experiencing issues when talking to the Linode API using Libcloud. They have received messages similar to the one shown below.

socket.error: [Errno 104] Connection reset by peer

It turns out that the issue is related to the used SSL / TLS version. For compatibility and security reasons (Libcloud also supports older Python versions), Libcloud uses TLS v1.0 by default.

Linode recently dropped support for TLS v1.0 and it now only support TLS >= v1.1. This means Libcloud won't work out of the box anymore.

Solution

If you are experiencing this issue, you should update your code to use TLS v1.2 or TLS v1.1 as shown below.

import ssl

import libcloud.security
libcloud.security.SSL_VERSION = ssl.PROTOCOL_TLSv1_1
# or even better if your system and Python version supports TLS v1.2
libcloud.security.SSL_VERSION = ssl.PROTOCOL_TLSv1_2

# Instantiate and work with the Linode driver here...

Keep in mind that for this to work you need to have a recent version of OpenSSL installed on your system and you need to use Python >= 3.4 or Python 2.7.9.

For more details please see recently updated documentation. If you are still experiencing issues or have any questions, please feel free to reach us via the mailing list or IRC.

Note: Even if you are not experiencing any issues, it's generally a good idea to use the highest version of TLS supported by your system and the provider you use.

Quick note on ssl.PROTOCOL_SSLv23

Python uses ssl.PROTOCOL_SSLv23 constant by default. When this constant is used, it will let client known to pick the highest protocol version which both the client and server support (it will be selecting between SSL v3.0, TLS v1.0, TLS v1.1 and TLS v1.2).

We use ssl.PROTOCOL_TLSv1 instead of ssl.PROTOCOL_SSLv23 for security and compatibility reasons. SSL v3.0 is considered broken and unsafe and using ssl.PROTOCOL_SSLv23 can result in an increased risk for a downgrade attack.

Thanks

Special thanks to Jacob Riley, Steve V, Heath Naylor and everyone from LIBCLOUD-791 who helped debug and track down the root cause of this issue.

Libcloud 0.20.0 released

We are pleased to announce the release of Libcloud 0.20.0.

This is a first release in the 0.20 series which means it brings many new features, improvements, bug-fixes, and DNS drivers.

Release highlights

  • New DNS driver for GoDaddy
  • New DNS driver for CloudFlare DNS
  • Many more improvements and API v2.1 support for the Dimension Data compute driver
  • Support for adding and configuring PTR (reverse DNS) record in RackSpace DNS driver
  • Support for preemptable instances in Google Compute driver
  • Add new eu-west-2 & us-east-2 regions to the OUTSCALEINC & OUTSCALESAS drivers
  • Added C4, M4 instance types in Amazon EC2 driver
  • Add support for multiple regions in Aurora compute driver
  • GoogleStorageDriver can now use either our S3 authentication or other Google Cloud Platform OAuth2 authentication methods.
  • Removed DreamHosts Compute Driver, DreamHosts users will now use the OpenStack Node driver since DreamHosts are OpenStack API compliant
  • and much more!

Full change log can be found at here.

Download

The release can can be downloaded from https://libcloud.apache.org/downloads.html or installed using pip:

pip install apache-libcloud==0.20.0

Upgrading

If you have installed Libcloud using pip you can also use it to upgrade it:

pip install --upgrade apache-libcloud==0.20.0

Upgrade notes

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

Documentation

Regular and API documentation is available at https://libcloud.readthedocs.org/en/latest/

Bugs / Issues

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

Thanks

Thanks to everyone who contributed and made this release possible! Full list of people who contributed to this release can be found in the CHANGES file.

Anthony Shaw (anthonyshaw) joins our team

Please help us extend a warm welcome to our newest team member Anthony Shaw!

The Project Management Committee (PMC) for Apache Libcloud has invited Anthony Shaw to join us as a committer and a PMC member and we are pleased to announce that he has accepted.

Anthony has joined the community fairly recently, but he has already made a lot of substantial contributions. Those contributions range from new Dimension Data drivers and various related improvements to a proposal for a new backup API for Backup as a Service products and projects.

While we are talking about the new backup API - we would like to encourage everyone who is either a service provider offering Backup as a Service product or a person interested in using this API to join us and participate in the discussion. The more feedback we get, the better and more widely applicable we can make this new API.

For anyone who would like to know more about Anthony here is his short bio:

Anthony Shaw works for the global system integrator Dimension Data as Head of Innovation. Anthony has been working in the hosting/service provider industry for the last 10 years for MSPs within Europe, North America and Australia in various Product Management and Product Development roles. Anthony is an open-source advocate and has been promoting the Libcloud project internally to Dimension Data for the last 9 months as well as maintaining its driver.

And in his own words:

I think we will continue to see consolidation in IaaS providers over the next 12 months, so likelihood is the number of drivers will reduce, but the importance of being cloud agnostic to people is becoming more apparent as some are already being burnt by integrations into APIs that companies like Dell and Ninefold have pulled the plug on. Libcloud is a key project for developers not wanting to lock themselves too heavily to a vendor. I would also like to see expansion of additional services like backup, load balancing and containers so that users can still take advantages of these features through our driver.

We are happy to have him in our team and we are looking forward to his future participation and contributions.

Libcloud 0.19.0 released

We are pleased to announce the release of Libcloud 0.19.0.

This is a first release in the 0.19 series which means it brings many new features, improvements, bug-fixes, and DNS drivers.

Release highlights

Full change log can be found at here.

Download

The release can can be downloaded from https://libcloud.apache.org/downloads.html or installed using pip:

pip install apache-libcloud==0.19.0

Upgrading

If you have installed Libcloud using pip you can also use it to upgrade it:

pip install --upgrade apache-libcloud==0.19.0

Upgrade notes

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

Documentation

Regular and API documentation is available at https://libcloud.readthedocs.org/en/v0.19.0/

Bugs / Issues

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

Thanks

Thanks to everyone who contributed and made this release possible! Full list of people who contributed to this release can be found in the CHANGES file.

Libcloud is participating in Hacktoberfest

Github and DigitalOcean are organizing Hacktoberfest again this year.

Hacktoberfest is a month-long celebration of open source software where people are encouraged to contribute to different open source projects. Each user who submits four pull requests to any Github hosted open source project of their choice will receive a free t-shirt.

Hacktoberfest 2015 t-shirt.

This year we are also happy to announce that we have been selected as one of the highlighted Python projects which users are invited to check, play with it and contribute to.

We think this is a great opportunity for both, long time users and contributors, but especially people who are new to open source to learn how open source works and participate.

Having said that, we would like to invite anyone who is interested to participate and contribute to our project. You can find more information on contributing to Libcloud in our contribution guide.

For more information about the Hacktoberfest project itself and information on how to sign up, please visit the official website and announcement blog post from Github and DigitalOcean.

Libcloud 0.18.0 released

We are pleased to announce the release of Libcloud 0.18.0.

This is a first release in the 0.18 series which means it brings many new features, improvements and bug-fixes.

Release highlights

Full change log can be found at here.

Download

The release can can be downloaded from https://libcloud.apache.org/downloads.html or installed using pip:

pip install apache-libcloud==0.18.0

Upgrading

If you have installed Libcloud using pip you can also use it to upgrade it:

pip install --upgrade apache-libcloud==0.18.0

Upgrade notes

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

Documentation

Regular and API documentation is available at https://libcloud.readthedocs.org/en/v0.18.0/

Bugs / Issues

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

Thanks

Thanks to everyone who contributed and made this release possible! Full list of people who contributed to this release can be found in the CHANGES file.

Allard Hoeve (allard) joins our team

Please help us extend a warm welcome to our newest team member Allard Hoeve!

The Project Management Committee (PMC) for Apache Libcloud has asked Allard Hoeve to join us as a committer and we are pleased to announce that he has accepted.

Allard has joined the community just recently, but he has already contributed some high quality changes and proposals.

We are happy to have him on our team and we are looking forward to his future contributions.

Libcloud 0.17.0 released

We are pleased to announce the release of Libcloud 0.17.0.

This is a first release in the 0.17 series which means it brings many new features, improvements and bug-fixes.

Release highlights

Full change log can be found at here.

Download

The release can can be downloaded from https://libcloud.apache.org/downloads.html or installed using pip:

pip install apache-libcloud==0.17.0

Upgrading

If you have installed Libcloud using pip you can also use it to upgrade it:

pip install --upgrade apache-libcloud==0.17.0

Upgrade notes

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

Documentation

Regular and API documentation is available at https://libcloud.readthedocs.org/en/v0.17.0/

Bugs / Issues

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

Thanks

Thanks to everyone who contributed and made this release possible! Full list of people who contributed to this release can be found in the CHANGES file.

Eric Johnson (erjohnso) joins our team

Please help us extend a warm welcome to our newest team member Eric Johnson!

The Project Management Committee (PMC) for Apache Libcloud has asked Eric Johnson to join us as a committer and a PMC member and we are pleased to announce that he has accepted.

Eric has been involved in the Libcloud community for a while now. He has made many substantial contributions to the Google Compute Engine drivers. On top of that, he also contributed to other projects which utilize Libcloud.

We are happy to have him on our team and we are looking forward to even better and more complete Google Compute Engine drivers.

Libcloud 0.16.0 released

We are pleased to announce the release of Libcloud 0.16.0!

This is a first release in the 0.16 series which means it brings many new features, improvements and bug-fixes.

Release highlights

Full change log can be found at here.

Download

The release can can be downloaded from https://libcloud.apache.org/downloads.html or installed using pip:

pip install apache-libcloud==0.16.0

Upgrading

If you have installed Libcloud using pip you can also use it to upgrade it:

pip install --upgrade apache-libcloud==0.16.0

Upgrade notes

A page which describes backward incompatible or semi-incompatible changes and how to preserve the old behavior when this is possible can be found at https://libcloud.readthedocs.org/en/latest/upgrade_notes.html#libcloud-0-16-0

Documentation

Regular and API documentation is available at https://libcloud.readthedocs.org/en/v0.16.0/

Bugs / Issues

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

Thanks

Thanks to everyone who contributed and made this release possible! Full list of people who contributed to this release can be found in the CHANGES file.

Libcloud 0.15.1 released

We are pleased to announce the release of Libcloud 0.15.1!

This release includes some bug-fixes and improvements.

Release highlights

  • Improvements in the EC2 driver
  • Improvements in the CloudStack driver
  • Improvements in the Openstack driver
  • Fixes a possible race condition in the deploy_node method

Full change log can be found at here.

Download

The release can can be downloaded from https://libcloud.apache.org/downloads.html or installed using pip:

pip install apache-libcloud==0.15.1

Upgrading

If you have installed Libcloud using pip you can also use it to upgrade it:

pip install --upgrade apache-libcloud==0.15.1

Upgrade notes

A page which describes backward incompatible or semi-incompatible changes and how to preserve the old behavior when this is possible can be found at https://libcloud.readthedocs.org/en/latest/upgrade_notes.html#libcloud-0-15-1

Documentation

Regular and API documentation is available at https://libcloud.readthedocs.org/en/v0.15.1/

Bugs / Issues

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

Thanks

Thanks to everyone who contributed and made this release possible! Full list of people who contributed to this release can be found in the CHANGES file.

Source: release announcement.

Libcloud's 5th birthday celebration during EuroPython week in Berlin

On July 23nd of this year it will be exactly 5 years from the initial project announcement on the Cloudkick blog.

We are going to celebrate this great milestone with a cake and drinks and we would like to invite you to join us. The celebration will take place in a nice bar during the EuroPython week in Berlin, Germany.

The cake is not a lie!

Celebration will be attended by Libcloud developers so this is also a great opportunity for you to meet and hang with us in real-life and ask any questions you might have about the project.

For more information visit the eventbrite page.

For more information, exact location and RSVP, please refer to the Eventbrite page. Keep in mind that RSVP is mandatory if you want to attend the celebration.

Libcloud 0.15.0 released

We are pleased to announce the release of Libcloud 0.15.0.

This is a first release in the 0.15 series which means it brings many new features, improvements and bug fixes.

Release highlights

Full change log can be found here.

Download

Libcloud 0.15.0 can be downloaded from https://libcloud.apache.org/downloads.html

or installed using pip:

pip install apache-libcloud==0.15.0

Upgrading

If you have installed Libcloud using pip you can also use it to upgrade it:

pip install --upgrade apache-libcloud==0.15.0

Documentation

Regular and API documentation is available at https://libcloud.readthedocs.org/en/v0.15.0/.

Bugs / Issues

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

Thanks

Thanks to everyone who contributed and made this release possible!

Full list of people who contributed to this release can be found in the Changelog.

Libcloud accepted into Google Summer of Code 2014

This is just a quick announcement that we have been granted one slot under the Apache Softare Foundation umbrella in Google Summer of Code 2014.

Student Rahul Ranjan will work on a CLI interface for Libcloud.

If you are interested in other projects, students and organization which have been accepted, please visit this page.

Sebastien Goasguen (sebgoa) joins our team

The Project Management Committee (PMC) for Apache Libcloud has asked Sebastien Goasguen (sebgoa) to join us as a committer and a PMC member. We are pleased to announce that he has accepted.

Sebastien is no stranger to the Libcloud project. He has been contributing and actively participating in the Libcloud community for quite a while now.

On top of that, he is also a PMC member at the Apache CloudStack project and our local "CloudStack guy".

We are happy to have him and some direct CloudStack expertise in our team.

Call for Participation in Google Summer of Code 2014

If you would like to participate in Google Summer of Code 2014 and work on Apache Libcloud, we invite you to read the following blog post for more information - Libcloud Google Summer of Code 2014 Call for Participation.

Libcloud 0.14.1 released

We are pleased to announce the release of Libcloud 0.14.1!

This release includes some bug-fixes, improvements and new features.

Release highlights

  • New driver for CloudSigma API 2.0
  • Improvements in the OpenStack driver
  • Support for records with multiple values in the Route53 DNS driver
  • Support for paging through zones and records in the Rackspace DNS driver

Full change log can be found at here.

Download

The release can can be downloaded from https://libcloud.apache.org/downloads.html or installed using pip:

pip install apache-libcloud==0.14.1

Upgrading

If you have installed Libcloud using pip you can also use it to upgrade it:

pip install --upgrade apache-libcloud==0.14.1

Upgrade notes

A page which describes backward incompatible or semi-incompatible changes and how to preserve the old behavior when this is possible can be found at https://libcloud.readthedocs.org/en/latest/upgrade_notes.html#libcloud-0-14-1

Documentation

Regular and API documentation is available at https://libcloud.readthedocs.org/en/v0.14.1/

Bugs / Issues

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

Thanks

Thanks to everyone who contributed and made this release possible! Full list of people who contributed to this release can be found in the CHANGES file.

Source: release announcement.

New committer Alex Gaynor joins our team

The Project Management Committee (PMC) for Apache Libcloud has asked Alex Gaynor to become a committer and we are pleased to announce that they have accepted.

We are glad to have him as a committer. Everyone, please help us welcome him to the team :)

Welcome to the new website

Today we are pleased to announce a new, improved and more user friendly version of our website.

Background and History

Original website was developed and published back in 2009 when the project was first announced.

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 responsive web design, great front-end frameworks for building responsive websites such as Bootstrap and Zurb and many other new things which didn't exist or weren't widely used back when we first launched.

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.

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.

A couple of months back we launched a new documentation and today, we are happy to present you a new and much improved website which was built with modern tools and principles in mind.

Improvements and New Features

Responsive design makes a site pleasure to use on a variety of devices and screen sizes. Image by placeit.net.

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

More modern and user-friendly design

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

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.

Improved and re-designed landing page

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

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.

Blog section

New website now features a fully-fledged blog.

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.

If you are using an RSS reader to stay up to date, we also offer an ATOM feed.

Updated Credits Page

Credits page now features an up to date list of people who have contributed code and documentation.

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

Search Engine Optimizations

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.

The changes we have made include improvements to the underlying HTML markup, addition of the OpenGraph tags and an addition of a sitemap.

Under the Hood

Old website was powered by Apache CMS. 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.

Because of that, we have decided to switch to Jekyll, a Ruby based static website and blog engine.

On top of that, the new website is fully responsive and built using Bootstrap 3 front-end framework.

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.

Source code of the new website can be found in the SVN repository.

Conclusion

We hope you will like and enjoy the new website.

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

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 mailing list, or you can checkout the website repository and make the changes yourself.

Libcloud 0.14.0 released

We are pleased to announce a long awaited Libcloud 0.14.0 release.

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

Release highlights

  • 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.
  • 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
  • Addition of block storage management methods to the following drivers: OpenNebula, OpenStack, EC2
  • Unification of the extension arguments for handling security groups in the EC2 and OpenStack driver
  • New standard compute API for SSH key-pair management
  • Many new features and improvements in the CloudStack driver
  • New compute and load balancer driver for Google Compute Engine (GCE)
  • Ability to export Libcloud's DNS zone to BIND zone format
  • and much more!

Full change log can be found here and here (keep in mind that this release also includes all the changes from 0.14.0-beta3).

Note about backward compatibility

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 Upgrade Notes page.

Download

Libcloud 0.14.0 can be downloaded from https://libcloud.apache.org/downloads.html

or installed using pip:

pip install apache-libcloud==0.14.0

Upgrading

If you have installed Libcloud using pip you can also use it to upgrade it:

pip install --upgrade apache-libcloud==0.14.0

Documentation

Regular and API documentation is available at https://libcloud.readthedocs.org/en/latest/.

Bugs / Issues

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

Thanks

Thanks to everyone who contributed and made this release possible!

Full list of people who contributed to this release can be found in the Changelog.

Quick update about 0.13.3 release and DigitalOcean vulnerability

This is a quick update about the recent 0.13.3 security release and the DigitalOcean vulnerability.

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

All Destroys Default to Scrub

We have updated the destroy method to scrub on all destroys, both for web and API requests.

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

References:

Libcloud 0.13.3 released

This release fixes a security issue with a potential leak of data contained on a destroyed DigitalOcean node. Only users who are using a DigitalOcean driver are affected.

Details about the vulnerability

DigitalOcean recently changed the default API behavior from scrub to non-scrub when destroying a VM without notifying the customers and API consumers.

Libcloud prior to this release doesn't explicitly send "scrub_data" query parameter when destroying a node. This means nodes which are destroyed using Libcloud are vulnerable to later customers stealing data contained on them.

This release fixes that by always sending "scrub_data" query parameter when destroying a DigitalOcean node.

If you are using a DigitalOcean driver, you are strongly encouraged to upgrade (or downgrade if you are using 0.14.0-beta3 beta release) to this release.

For more information, please see the Security page.

Download

Libcloud 0.13.3 can be downloaded from https://libcloud.apache.org/downloads.html

or installed using pip:

pip install apache-libcloud==0.13.3

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 - https://www.apache.org/dist/libcloud.

Upgrading

If you have installed Libcloud using pip you can also use it to upgrade it:

pip install --upgrade apache-libcloud==0.13.3

Documentation

Regular and API documentation is available at https://libcloud.readthedocs.org/en/latest/.

Bugs / Issues

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

Thanks

Thanks to everyone who contributed and made this release possible!

Full list of people who contributed to this release can be found in the CHANGES file.

New low volume "announce" mailing list

In addition to our existing users (users@libcloud.apache.org), developers (dev@libcloud.apache.org) and commits (commits@libcloud.apache.org) mailing list, we now also have a new very low volume announce mailing list - announce@libcloud.apache.org.

The mailing list is moderated and will only be used for distributing important project announcements such as information about new releases and other important project updates.

You can subscribe to it by sending an email to announce-subscribe@libcloud.apache.org.

2013 in retrospect and a Happy New Year from the Libcloud team

Dear Libcloud users, developers and team members,

2013 is slowly coming to an end, and we would like to wish everyone a happy and successful new year!

Now it's also the time to look back at the things which have been accomplished, important events which have happened and some statistics for 2013.

Important Events and Milestones

Statistics

  • 197 new JIRA issues have been opened (total of 472). Out of those 197 issues, 138 are now marked as 'resolved'.
  • Github mirror stars: 331 (+65 YTD)
  • Twitter followers: 449 (+149 YTD)
  • Google+ page +1's: 1591
  • We had a total of 5 releases (0.12.1, 0.12.3, 0.12.4, 0.13.0, 0.13.1, 0.13.2, 0.14.0-beta3)
  • Combination of SVN and Git repository has had a total of 963 commits.

Sources

Numbers listed above have been retrieved on 26th of December, 2013 from the sources listed bellow:

Those numbers and numbers for the past years are also available in a semi machine readable format in a Google Spreadsheet.

Old retrospect blog posts

Thanks again to everyone for their contributions and lets make 2014 even better and more successful :)

New committer Brian Curtin joins our team

The Project Management Committee (PMC) for Apache Libcloud has asked Brian Curtin to become a committer and we are pleased to announce that they have accepted.

We are glad to have him as a committer. Everyone, please help us welcome him to the team :)

Source: mailing list.

Libcloud 0.14.0-beta3 released

We are pleased to announce the release of Libcloud 0.14.0-beta3, a first (beta) release in the 0.14.0 series.

The reason this is a beta and not a final release is that it includes some pretty big changes (most notably the "region" argument change). I would like those changes to get some more real-life testing before doing a final release.

Being a first release in the 0.14.0 series means it brings many (and I mean many!) new features, changes and improvements.

Release highlights

  • 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.
  • Addition of a programmatic way of updating the pricing file and ability to use a custom pricing file. For more information, please see the documentation
  • Addition of block storage management methods to the following drivers: OpenNebula, OpenStack, EC2
  • Unification of the extension arguments for handling security groups in the EC2 and OpenStack driver
  • Many new features and improvements in the CloudStack driver
  • New compute and loadbalancer driver for Google Compute Engine (GCE)
  • Ability to export Libcloud's DNS zone to BIND zone format
  • and much more!

Some of the changes noted above are also backward incompatible. For more information on what has changed and how to update your code to work with a new release, please visit the Upgrade Notes section in our documentation.

Other non-code changes worth a mention

Full change log can be found here.

Download

Libcloud 0.14.0-beta3 can be downloaded from http://libcloud.apache.org/downloads.html or installed using pip:

pip install apache-libcloud==0.14.0-beta3

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.

Upgrading

If you have installed Libcloud using pip you can also use it to upgrade it:

pip install --upgrade apache-libcloud==0.14.0-beta3

Upgrade notes

A page which describes backward incompatible or semi-incompatible changes and how to preserve the old behavior when this is possible can be found at https://libcloud.readthedocs.org/en/latest/upgrade_notes.html#libcloud-0-14-0 .

Documentation

Regular and API documentation is available at https://libcloud.readthedocs.org/en/latest/.

Bugs / Issues

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

Thanks

Thanks to everyone who contributed and made this release possible!

Full list of people who contributed to this release can be found in the CHANGES file.

Source: release announcement.

Libcloud 0.13.1 released

We are pleased to announce the release of Libcloud 0.13.1!

This is a bug-fix only release. Among some smaller bugs it also fixes Content-Length regression which broke create and update operations in the Bluebox Compute and Azure Storage driver (LIBCLOUD-362, LIBCLOUD-3901).

Full change log can be found at here.

Download

Libcloud 0.13.0 can be downloaded from http://libcloud.apache.org/downloads.html or installed using pip:

pip install apache-libcloud

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.

Upgrading

If you have installed Libcloud using pip you can also use it to upgrade it:

pip install --upgrade apache-libcloud

Upgrade notes

A page which describes backward incompatible or semi-incompatible changes and how to preserve the old behavior when this is possible can be found at http://libcloud.apache.org/upgrade-notes.html.

Documentation

API documentation can be found at http://libcloud.apache.org/apidocs/0.13.1/ .

We also have a new Sphinx documentation which can be found at https://libcloud.apache.org/docs/. Keep in mind though, that this documentation reflects state in trunk which includes some backward incompatible changes which aren't present in 0.13.1. All the examples in the documentation which only work with trunk are clearly marked with a note.

Bugs / Issues

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

Thanks

Thanks to everyone who contributed and made this release possible! Full list of people who contributed to this release can be found in the CHANGES file.

Source: release announcement.

New committer John Carr joins our team

The Project Management Committee (PMC) for Apache Libcloud has asked John Carr to become a committer and we are pleased to announce that they have accepted.

We are glad to have him as a committer and a PMC member. Everyone, please help me welcome him to the team :)

Source: mailing list thread.

Libcloud 0.13.0 released

We are pleased to announce the release of Libcloud 0.13.0!

This release includes a lot of improvements and bug fixes.

Full change log can be found at here.

Download

Libcloud 0.13.0 can be downloaded from http://libcloud.apache.org/downloads.html or installed using pip:

pip install apache-libcloud

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.

Upgrading

If you have installed Libcloud using pip you can also use it to upgrade it:

pip install --upgrade apache-libcloud

Upgrade notes

A page which describes backward incompatible or semi-incompatible changes and how to preserve the old behavior when this is possible can be found at http://libcloud.apache.org/upgrade-notes.html.

Documentation

API documentation can be found at http://libcloud.apache.org/apidocs/0.13.0/.

Bugs / Issues

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

Thanks

Thanks to everyone who contributed and made this release possible! Full list of people who contributed to this release can be found in the CHANGES file.

Source: release announcement.

Libcloud 0.12.3 released

We are pleased to announce the release of Libcloud 0.12.3!

This release is primarily a bug fix release and fixes Python 3.3, deployment and some other issues.

Full change log can be found at https://svn.apache.org/repos/asf/libcloud/tags/0.12.3/CHANGES

Download

Libcloud 0.12.3 can be downloaded from http://libcloud.apache.org/downloads.html or installed using pip:

pip install apache-libcloud

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.

Upgrading

If you have installed Libcloud using pip you can also use it to upgrade it:

pip install --upgrade apache-libcloud

Upgrade notes

A page which describes backward incompatible or semi-incompatible changes and how to preserve the old behavior when this is possible can be found at http://libcloud.apache.org/upgrade-notes.html.

Documentation

API documentation can be found at http://libcloud.apache.org/apidocs/0.12.3/ .

Bugs / Issues

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

Thanks

Thanks to everyone who contributed and made this release possible! Full list of people who contributed to this release can be found in the CHANGES file https://svn.apache.org/repos/asf/libcloud/tags/0.12.3/CHANGES.

Source: release announcement.

Libcloud 0.12.1 released

We are pleased to announce the release of Libcloud 0.12.1!

This release includes many new features, improvements and bug-fixes.

Release highlights

  • New more efficient generator based approach for iterating over paginated collections.
  • New generator based method for iterating over containers (iterate_containers).
  • Old ENUM style provided constants have been replaced with a string version. This allows users to dynamically register new providers using new set_driver method.
  • Support for multipart uploads in the Amazon S3 storage driver.
  • New load balancer driver for Amazon Load Balancing (ELB) service.
  • New storage driver for Azure Blog storage
  • New "local storage" storage driver
  • Support for multipart uploads in the S3 driver
  • Allow user to specify which CA cert is used for verifying server SSL certificate by setting "SSLCERTFILE" environment variable
  • Drivers which use xmlrplic library now use Libcloud HTTP layer for making HTTP requests. This means those drivers now support LIBCLOUD_DEBUG and SSL cert validation functionality

Full change log can be found at https://svn.apache.org/repos/asf/libcloud/tags/0.12.1/CHANGES

Download

Libcloud 0.12.1 can be downloaded from http://libcloud.apache.org/downloads.html or installed using pip:

pip install apache-libcloud

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.

Upgrading

If you have installed Libcloud using pip you can also use it to upgrade it:

pip install --upgrade apache-libcloud

Upgrade notes

A page which describes backward incompatible or semi-incompatible changes and how to preserve the old behavior when this is possible can be found at http://libcloud.apache.org/upgrade-notes.html.

Documentation

API documentation can be found at http://libcloud.apache.org/apidocs/0.12.1/ .

Bugs / Issues

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

Thanks

Thanks to everyone who contributed and made this release possible! Full list of people who contributed to this release can be found in the CHANGES file https://svn.apache.org/repos/asf/libcloud/tags/0.12.1/CHANGES.

Source: release announcement.

New committer Mahendra Maheshwara joins our team

The Project Management Committee (PMC) for Apache Libcloud has asked Mahendra Maheshwara to become a committer and we are pleased to announce that they have accepted.

Mahendra Maheshwara has joined the Libcloud community fairly recently, but he has already contributed multiple great patches - https://issues.apache.org/jira/issues/?jql=project%20%3D%20LIBCLOUD%20AND%20reporter%20in%20(%22mahendra.m%22) .

Giving him commit access will allow him to more directly contribute to the project.

Everyone, please help me welcome him to the team :)

Source: mailing list thread.

2012 in retrospect and a Happy New Year from the Libcloud team

Dear users, developers and team members!

2012 is slowly coming to an end and Libcloud team wishes everyone a happy and successful new year 2013!

2012 has been another great year for us and we have surpassed 2011 in pretty much every aspect.

Here is a short list of things which have been accomplished and important events which have happened in 2012:

  • One new committer Ilgiz Islamgulov (ilgiz) has joined the team.
  • We have another new commiter joining our team soon (Mahendra M). Currently he is undergoing a process of submitting his ICLA.
  • 134 new JIRA issues have been opened (total of 271). Out of those 134 issues, 111 are now marked as 'resolved'.
  • SVN repository has had a total of 320 commit. More than 50% of those commits were patches from external contributors.
  • We had our first Google Summer of Code student which worked on a project named "Libcloud REST" (https://github.com/islamgulov/libcloud.rest). The goal of the project is to expose Libcloud functionality over HTTP.
  • Tomaz gave a talk titled "Avoiding Vendor Lock-In Using Apache Libcloud" at CloudOpen 2012 in San Diego
  • We now finally have some more user friendly documentation and examples on the website - http://libcloud.apache.org/docs/
  • We held a first in person meetup at the Rackspace San Francisco office in the beginning of the year (http://libcloudmeetup.eventbrite.com/)
  • We had a total of 7 releases (0.8.0, 0.9.1, 0.10.1, 0.11.0, 0.11.1, 0.11.3, 0.11.4) and over 70.000 downloads / installs on PyPi ( http://pypi.python.org/pypi/apache-libcloud/)
  • Github mirror has been starred by 266 users ( https://github.com/apache/libcloud)

Thanks again to everyone for their work and contributions and lets make 2013 even better :)

I will post those numbers in a more machine readable format (JSON) in the next couple of weeks. This way it will be easier for us to track those metrics on a year over year basis.

Numbers retrieved on: 2012-12-25. Sources for those numbers: JIRA, Libcloud website, PyPi, Ohloh.net, Google Analytics

Source: mailing list post.

Libcloud 0.11.4 released

We are pleased to announce the release of Libcloud 0.11.4!

This release is a bug fix release and contains no new features.

Next release which will contain new features and some backward incompatible changes will happen in the 0.12.x series in the next couple of weeks.

Bug fixes:

  • Fix some of tests failures which happened in Python 3.3 due to randomized dictionary ordering.
  • Fix a bug where a numeric instead of a string value was used for the content-length header in VCloud driver.
  • Don't ignore exforceservice_region argument in the CloudFiles driver.
  • Fix a bug which caused the connection to not be closed when using Python 2.6 and calling get_object on an object which doesn't exist in the S3 driver.
  • Update 'if type' checks in the update_record methods to behave correctly if users passes in RecordType.A with a value of 0 - if type is not None.

Full change log can be found at https://svn.apache.org/viewvc/libcloud/tags/0.11.4/CHANGES?revision=r1411030&view=markup.

Download

Libcloud 0.11.4 can be downloaded from http://libcloud.apache.org/downloads.html or installed using pip:

pip install apache-libcloud

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.

Upgrading

If you have installed Libcloud using pip you can also use it to upgrade it:

pip install --upgrade apache-libcloud

Upgrade notes

A page which describes backward incompatible or semi-incompatible changes and how to preserve the old behavior when this is possible can be found at http://libcloud.apache.org/upgrade-notes.html.

Documentation

API documentation can be found at http://libcloud.apache.org/apidocs/0.11.4/.

Bugs / Issues

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

Thanks

Thanks to everyone who contributed and made this release possible! Full list of people who contributed to this release can be found in the CHANGES file https://svn.apache.org/viewvc/libcloud/tags/0.11.3/CHANGES?revision=r1388947&view=markup.

Source: release announcement.

New committer Ilgiz Islamgulov joins our team

The Project Management Committee (PMC) for Apache Libcloud has asked Ilgiz Islamgulov to become a committer and we are pleased to announce that they have accepted.

Ilgiz worked on the Libcloud REST GSoC project (http://libcloud.apache.org/gsoc-2012.html) this summer and he has made a great progress on it.

Giving him commit access will allow him to more directly contribute to the project and work on integrating Libcloud REST into main line.

Everyone, please help me welcome him to the team :)

Source: mailing list.

Libcloud 0.11.3 released

We are pleased to announce the release of Libcloud 0.11.3!

Release highlights

Compute

  • Add new Rackspace Nova driver for Chicago (ORD) location
  • Add new methods for managing storage volumes and other extenstion methods to the IBM SCE driver.
  • Allow user to pass 'timeout' argument to the 'deploy_node' method

Bug fixes

  • Fix a bug with the Libcloud SSL verification code. Code was too strict and didn't allow "-" character in the sub-domain when using a wildcard certificate.

Full change log can be found at https://svn.apache.org/viewvc/libcloud/tags/0.11.3/CHANGES?revision=r1388947&view=markup.

Download

Libcloud 0.11.3 can be downloaded from http://libcloud.apache.org/downloads.html or installed using pip:

pip install apache-libcloud

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.

Upgrading

If you have installed Libcloud using pip you can also use it to upgrade it:

pip install --upgrade apache-libcloud

Upgrade notes

A page which describes backward incompatible or semi-incompatible changes and how to preserve the old behavior when this is possible can be found at http://libcloud.apache.org/upgrade-notes.html.

Documentation

API documentation can be found at http://libcloud.apache.org/apidocs/0.11.3/.

Bugs / Issues

If you find any bug or issue, please report it on our issue tracker https://issues.apache.org/jira/browse/LIBCLOUD. Don't forget to attach an example and / ortest which reproduces your problem.

Thanks

Thanks to everyone who contributed and made this release possible! Full list of people who contributed to this release can be found in the CHANGES file https://svn.apache.org/viewvc/libcloud/tags/0.11.3/CHANGES?revision=r1388947&view=markup.

Source: release announcement.

Libcloud 0.11.1 released

This release fixes a possible SSL man-in-the-middle vulnerability inside the code which performs the SSL certificate validation. For more information about the vulnerability, please see the "Security" page - http://libcloud.apache.org/security.html.

Everyone using an older version is strongly encouraged to upgrade to this release.

Download

Libcloud 0.11.1 can be downloaded from http://libcloud.apache.org/downloads.html or installed using pip:

pip install apache-libcloud

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.

Upgrading

If you have installed Libcloud using pip you can also use it to upgrade it:

pip install --upgrade apache-libcloud

Upgrade notes

A page which describes backward incompatible or semi-incompatible changes and how to preserve the old behavior when this is possible can be found at http://libcloud.apache.org/upgrade-notes.html.

Documentation

API documentation can be found at http://libcloud.apache.org/apidocs/0.11.1/.

Bugs / Issues

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

Thanks

Thanks to the researchers from the University of Texas at Austin (Martin Georgiev, Suman Jana and Vitaly Shmatikov) who discovered this vulnerability.

Source: release announcement.

Libcloud 0.11.0 released

The Apache Libcloud team is pleased to announce the release of Libcloud 0.11.0!

Libcloud is a Python library that abstracts away the differences among multiple cloud provider APIs. It allows users to manage cloud services (servers, storage, load balancers, DNS) offered by many different providers through a single, unified and easy to use API.

Release highlights

General

  • Install test files when installing the library. Tests module can now be imported by doing something like this: "from libcloud import test"

Compute

  • New standard API and methods for managing storage volumes. Base API consists of the following methods: createvolume, destroyvolume, attachvolume, detachvolume.
  • New driver for KT UCloud (http://home.ucloud.olleh.com/main.kt) based on the CloudStack driver.
  • New Gridspot driver with a basic list and destroy functionality.

Bug fixes

  • Plenty of them, please see the CHANGES file.

For a full list of changes, please see the CHANGES file https://svn.apache.org/viewvc/libcloud/tags/0.11.0/CHANGES?revision=r1364892&view=markup.

Download

Libcloud 0.10.1 can be downloaded from http://libcloud.apache.org/downloads.html or installed using pip:

pip install apache-libcloud

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.

Upgrading

If you have installed Libcloud using pip you can also use it to upgrade it:

pip install --upgrade apache-libcloud

Upgrade notes

A page which describes backward incompatible or semi-incompatible changes and how to preserve the old behavior when this is possible can be found at http://libcloud.apache.org/upgrade-notes.html.

Documentation

API documentation can be found at http://libcloud.apache.org/apidocs/0.11.1/

Bugs / Issues

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

Thanks

Thanks to everyone who contributed and made this release possible! Full list of people who contributed to this release can be found in the CHANGES file https://svn.apache.org/viewvc/libcloud/tags/0.11.0/CHANGES?revision=r1364892&view=markup.

Source: release announcement.

Libcloud 0.10.1 released

Libcloud team is pleased to announce the release of Libcloud 0.10.1!

Release highlights

General

  • Allow user to specify which IP to use when calling deploynode (defaults to 'publicips'). Previously it only worked with public IP, now user can pass 'private_ips' as an argument and SSH client will try to connect to the node first private IP address.

Compute

  • New driver for Joyent cloud (http://www.joyentcloud.com/)
  • New driver for VCL cloud ( http://www.educause.edu/blog/hes8/CloudComputingandtheVirtualCom/167931)
  • A lot of improvements and new features in the Brightbox driver
  • Support for Vmware vCloud version 1.5
  • Modify ParamikoSSHClient to connect to the SSH agent and automatically look for private keys in ~/.ssh if the 'auth' and 'sshkey' argument is not specified when calling deploynode.
  • Modify IBM driver so it works with IBM Smart Cloud Enterprise

Storage

  • Support for uploading large files in the CloudFiles driver
  • New driver for OpenStack Swift installations based on the CloudFiles driver

Bug fixes

  • Fix a bug in the CloudSigma Las Vegas compute driver

For a full list of changes, please see the CHANGES file https://svn.apache.org/viewvc/libcloud/tags/0.10.1/CHANGES?revision=r1340892&view=markup.

Download

Libcloud 0.10.1 can be downloaded from http://libcloud.apache.org/downloads.html or installed using pip:

pip install apache-libcloud

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

Upgrading

If you have installed Libcloud using pip you can also use it to upgrade it:

pip install --upgrade apache-libcloud

Upgrade notes

A page which describes backward incompatible or semi-incompatible changes and how to preserve the old behavior when this is possible can be found at http://libcloud.apache.org/upgrade-notes.html.

Documentation

API documentation can be found at http://libcloud.apache.org/apidocs/0.10.1/

Bugs / Issues

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

Thanks

Thanks to everyone who contributed and made this release possible! Full list of people who contributed to this release can be found in the CHANGES file https://svn.apache.org/viewvc/libcloud/tags/0.10.1/CHANGES?revision=r1340892&view=markup.

Source: release announcement.

SVN repositories moved, mailing lists addresses changed

Hello all,

Due to recent graduation (woho!), all the SVN repositories have been moved and the mailing list addresses have also been changed.

If you are already subscribed to one of the old mailing list addresses your subscription was automatically transfered to the new one so you don't need to do anything on your part.

New addresses can be found bellow.

SVN repositories

  • Main code repository: https://svn.apache.org/repos/asf/libcloud/
  • Website repository: https://svn.apache.org/repos/infra/websites/production/libcloud

Mailing lists addresses

  • dev@libcloud.apache.org (was libcloud@incubator.apache.org)
  • commits@libcloud.apache.org from (was libcloud-commits@incubator.apache.org)
  • private@libcloud.apache.org from (was libcloud-private@incubator.apache.org)

  • users@libcloud.apache.org - this is a new users mailing list for a general talk about Libcloud and other off-topic things

  • security@libcloud.apache.org - new private mailing list used for reporting security vulnerabilities

Note to the committers

CMS part of the website hasn't been fully migrated yet. In the mean time, please try to avoid editing raw HTML files, because this means we will need to manually edit markdown files again when the CMS stuff is migrated.

Source: mailing list thread.

Libcloud 0.9.1 released

Libcloud team is pleased to announce the release of Libcloud 0.9.1!

Release highlights:

  • A lot of improvements and additional functionality in the OpenStack driver. Now a generic OpenStack driver (Provider.OPENSTACK) also works with devstack.org and trystack.org installations
  • Improvements and better exception propagation in the deploy_node method
  • New driver for ElasticHosts Los Angeles and Toronto location
  • Support for new EC2 instance type - m1.medium

Bug fixes:

  • Don't lowercase special header names in the Amazon S3 storage driver. This fixes a bug with multi-objects delete calls.
  • Properly handle OpenStack providers which return public IP addresses under the 'internet' key in the 'addresses' dictionary
  • Make create_node in Linode driver return a Node instance instead of a listen of Node instances

For a full list of changes, please see the CHANGES file https://svn.apache.org/viewvc/libcloud/tags/0.9.1/CHANGES?revision=r1307716&view=markup.

Download

Libcloud 0.9.1 can be downloaded from http://libcloud.apache.org/downloads.html or installed using pip:

pip install apache-libcloud

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

Upgrading

If you have installed Libcloud using pip you can also use it to upgrade it:

pip install --upgrade apache-libcloud

Upgrade notes

A page which describes backward incompatible or semi-incompatible changes and how to preserve the old behavior when this is possible can be found at http://libcloud.apache.org/upgrade-notes.html.

Documentation

API documentation can be found at http://libcloud.apache.org/apidocs/0.9.1/.

Bugs / Issues

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

Thanks

Thanks to everyone who contributed and made this release possible! Full list of people who contributed to this release can be found in the CHANGES file https://svn.apache.org/viewvc/libcloud/tags/0.9.1/CHANGES?revision=r1307716&view=markup.

Source: release announcement.

Libcloud 0.8.0 released

Libcloud team is pleased to announce the release of Libcloud 0.8.0!

Release highlights:

  • Support for handling compressed (gzip, deflate) responses
  • Support for new Amazon EC2 location - South America (Sao Paulo)

Other notable changes:

  • Many improvements and additions of extension methods in the OpenStack compute driver
  • Many improvements and additions of extension methods in the Rackspace load-balancer driver
  • Improvements in the OpenNebula compute driver

For a full list of changes, please see the CHANGES file https://svn.apache.org/viewvc/libcloud/tags/0.8.0/CHANGES?revision=r1240459&view=markup.

Download

Libcloud 0.8.0 can be downloaded from http://libcloud.apache.org/downloads.html or installed using pip:

pip install apache-libcloud

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

Upgrading

If you have installed Libcloud using pip you can also use it to upgrade it:

pip install --upgrade apache-libcloud

Upgrade notes

A page which describes backward incompatible or semi-incompatible changes and how to preserve the old behavior when this is possible can be found at http://libcloud.apache.org/upgrade-notes-0-8.html.

Documentation

API documentation can be found at http://libcloud.apache.org/apidocs/0.8.0/.

Bugs / Issues

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

Thanks

Thanks to everyone who contributed and made this release possible! Full list of people who contributed to this release can be found in the CHANGES file https://svn.apache.org/viewvc/libcloud/tags/0.8.0/CHANGES?revision=r1240459&view=markup.

Source: release announcement.

2011 in retrospect and a Happy New Year from the Libcloud team

Dear users & developers,

First of all, Libcloud team wishes everyone a Happy New Year 2012!

2011 has been a great year for us and we have accomplished a lot of things:

  • Website has been ported to the Apache CMS and updated with a lot of new content, including documentation
  • In May we have graduated from the incubator to a top level project
  • Two new committers have joined the team (Tomaz Muraus, Hutson Betts)
  • We have grown from supporting a single API (cloud servers) to supporting four different APIs (cloud servers, load balancers, cloud storage, dns)
  • We have introduced support for Python 3
  • We have released a total of 7 new versions
  • We have received many patches by external contributors
  • We have held two development sprints (PyCon, EuroPython)
  • Code wise we have grown from ~4300 LOC to ~14300 LOC (excluding tests)

Lets try to make 2012 even better :)

Source: mailing list post.

Libcloud 0.7.1 released

Libcloud team is pleased to announce the release of Libcloud 0.7.1!

This release represents another big milestone for us and introduces a support for Python 3!

Other notable changes:

  • New Las Vegas location for the CloudSigma provider
  • Improvements to the OpenStack driver
  • Improvements to the OpenNebula driver
  • Support for Amazon EC2 new "Cluster Compute Eight Extra Large" instance size

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.

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.

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

Download

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

pip install apache-libcloud

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

Upgrading

If you have installed Libcloud using pip you can also use it to upgrade it:

pip install --upgrade apache-libcloud

Upgrade notes

A page which describes backward incompatible or semi-incompatible changes and how to preserve the old behavior when this is possible can be found at http://libcloud.apache.org/upgrade-notes-0-7.html.

Documentation

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

Bugs / Issues

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

Thanks

Thanks to everyone who contributed and made this release possible! Full list of people who contributed to this release can be found in the CHANGES file https://svn.apache.org/viewvc/libcloud/tags/0.7.1/CHANGES?revision=1210679&view=markup.

Source: release announcement.

New committer Hutson Betts joins our team

Hi all,

I just wanted to let everyone know that the Libcloud PMC has decided to invite a new committer - Hutson Betts (hbetts).

He has previously mostly contributed to the OpenNebula driver and the networking API.

We believe that granting him the committer status will allow him to more easily and directly contribute to the project.

Please help us welcome him!

Source: mailing list.

Libcloud 0.6.2 released

Libcloud team is pleased to announce the release of Libcloud 0.6.2!

This is primary a bug-fix release and includes the following bug-fixes:

  • Fix the PollingConnection class and actually use the poll_interval class variable (previously it was ignored). This bug-fix affects Rackspace Cloud DNS driver, CloudStack and Ninefold compute driver.
  • Fix a bug in the Rackspace Cloud DNS driver exception handling and throw an Exception if an unexpected status code is returned.

Besides the bug-fixes it also includes some new features:

  • Support for Amazon's new location (Oregon)
  • Expose CloudStack provider. This way it can be used with an arbitrary CloudStack installation and not just with the provider drivers which sub-class it (e.g. Ninefold.com driver).

For a full list of changes, please see the CHANGES file https://svn.apache.org/viewvc/libcloud/branches/0.6.x/CHANGES?revision=1202009&view=markup.

Download

Libcloud 0.6.2 can be downloaded from http://libcloud.apache.org/downloads.html or installed using pip:

pip install apache-libcloud

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

Upgrading

If you have installed Libcloud using pip you can also use it to upgrade it:

pip install --upgrade apache-libcloud

Upgrade notes

A page which describes backward incompatible or semi-incompatible changes and how to preserve the old behavior when this is possible can be found at http://libcloud.apache.org/upgrade-notes-0-6.html.

Documentation

API documentation can be found at http://libcloud.apache.org/apidocs/0.6.2/.

Bugs / Issues

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

Thanks

Thanks to everyone who contributed and made this release possible! Full list of people who contributed to this release can be found in the CHANGES file https://svn.apache.org/viewvc/libcloud/branches/0.6.x/CHANGES?revision=1202009&view=markup.

Source: release announcement.

Libcloud 0.6.1 released

Libcloud team is pleased to announce the release of Libcloud 0.6.1!

This release represents a big milestone for us and includes many improvements and new drivers, but the most important thing is a brand new DNS API.

DNS API allows users to manage DNS service provided by many different providers. This release includes a driver for Linode DNS ( http://www.linode.com/features.cfm), Zerigo DNS (http://www.zerigo.com/) and Rackspace Cloud DNS ( http://www.rackspace.com/cloud/cloudhostingproducts/dns/). In the future we also plan to expand it (hopefully with your help) and add new drivers for providers such as Amazon and others.

Other notable changes, bug-fixes and improvements:

Documentation

  • New documentation which is available at http://libcloud.apache.org/docs/

General

  • SSL certificate validation is now enabled by default. If no CA certificate files are found on startup, an exception is thrown.

Compute

  • New driver for Ninefold.com (also a first driver for public Australian cloud provider in Libcloud)
  • Support for OpenStack 1.1 API and many other improvements in the OpenStack driver
  • Linode driver now support a new Japan location
  • Support for deployment using an SSH key
  • Amazon EC2 driver now supports deploy functionality using an SSH key

Storage

  • New driver for Google storage (http://code.google.com/apis/storage/)
  • New driver for Ninefold.com storage (http://ninefold.com/cloud-storage/)

Load Balancer:

  • New driver for ninefold.com ( https://ninefold.com/support/display/SPT/Load+Balancing)
  • Rackspace driver now also supports UK location

Any many other improvements and bug fixes!

For a full list of changes, please see the CHANGES file https://svn.apache.org/viewvc/libcloud/trunk/CHANGES?revision=1198753&view=markup.

Download

Libcloud 0.6.1 can be downloaded from http://libcloud.apache.org/downloads.html or installed using pip:

pip install apache-libcloud

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

Upgrading

If you have installed Libcloud using pip you can also use it to upgrade it:

pip install --upgrade apache-libcloud

Upgrade notes

A page which describes backward incompatible or semi-incompatible changes and how to preserve the old behavior when this is possible can be found at http://libcloud.apache.org/upgrade-notes-0-6.html.

Documentation

API documentation can be found at http://libcloud.apache.org/apidocs/0.6.1/.

Bugs / Issues

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

Thanks

Thanks to everyone who contributed and made this release possible! Full list of people who contributed to this release can be found in the CHANGES file https://svn.apache.org/viewvc/libcloud/trunk/CHANGES?revision=1198753&view=markup.

Source: release announcement.

Libcloud 0.6.0-beta1 released

Libcloud team is pleased to announce the release of Libcloud 0.6.1!

This release represents a big milestone for us and includes many improvements and new drivers, but the most important thing is a brand new DNS API.

DNS API allows users to manage DNS service provided by many different providers. This release includes a driver for Linode DNS ( http://www.linode.com/features.cfm), Zerigo DNS (http://www.zerigo.com/) and Rackspace Cloud DNS ( http://www.rackspace.com/cloud/cloudhostingproducts/dns/). In the future we also plan to expand it (hopefully with your help) and add new drivers for providers such as Amazon and others.

Other notable changes, bug-fixes and improvements:

Documentation

  • New documentation which is available at http://libcloud.apache.org/docs/

General

  • SSL certificate validation is now enabled by default. If no CA certificate files are found on startup, an exception is thrown.

Compute

  • New driver for Ninefold.com (also a first driver for public Australian cloud provider in Libcloud)
  • Support for OpenStack 1.1 API and many other improvements in the OpenStack driver
  • Linode driver now support a new Japan location
  • Support for deployment using an SSH key
  • Amazon EC2 driver now supports deploy functionality using an SSH key

Storage

  • New driver for Google storage (http://code.google.com/apis/storage/)
  • New driver for Ninefold.com storage (http://ninefold.com/cloud-storage/)

Load Balancer

  • New driver for ninefold.com ( https://ninefold.com/support/display/SPT/Load+Balancing)
  • Rackspace driver now also supports UK location

Any many other improvements and bug fixes!

For a full list of changes, please see the CHANGES file https://svn.apache.org/viewvc/libcloud/trunk/CHANGES?revision=1198753&view=markup

Download

Libcloud 0.6.1 can be downloaded from http://libcloud.apache.org/downloads.html or installed using pip:

pip install apache-libcloud

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

Upgrading

If you have installed Libcloud using pip you can also use it to upgrade it:

pip install --upgrade apache-libcloud

Upgrade notes

A page which describes backward incompatible or semi-incompatible changes and how to preserve the old behavior when this is possible can be found at http://libcloud.apache.org/upgrade-notes-0-6.html.

Documentation

API documentation can be found at http://libcloud.apache.org/apidocs/0.6.1/.

Bugs / Issues

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

Thanks

Thanks to everyone who contributed and made this release possible! Full list of people who contributed to this release can be found in the CHANGES file https://svn.apache.org/viewvc/libcloud/trunk/CHANGES?revision=1198753&view=markup.

Source: release announcement.

Episode about Libcloud on FLOSS Weekly podcast

Tomaz Muraus has been guest on a FLOSS weekly podcast where he talked about Apache Libcloud.

For a recording and show notes, please see the official show page - FLOSS Weekly 181.

Libcloud 0.5.2 released

Hello all,

I would like to announce Libcloud 0.5.2. This release primary fixes two bugs which were introduced in Libcloud 0.5.0 and improves listing of the objects in the containers which contain more objects that fit into a single response.

Notable changes, bug-fixes and improvements

Compute

  • Fix a regression in the deploy_node() method and make it more robust
  • Fix a regression in the Nimbus driver create_node() method
  • Improved node name and tag handling in the Amazon EC2 driver
  • Improved pricing and response handling in the OpenStack driver
  • New driver for SkaliCloud (skalicloud.com)
  • New driver for ServerLove (serverlove.com)

Storage

  • Fix handling of the containers with a lot of objects. Now an iterator object is returned when user calls list_container_objects() method and this object transparently handles pagination.

For a full list of changes, please check the CHANGES file < https://github.com/apache/libcloud/blob/0.5.2/CHANGES>.

Download

Libcloud 0.5.2 can be downloaded from http://libcloud.apache.org/downloads.html or installed using pip - pip install apache-libcloud

It is possible that the file hasn't been synced to all the mirrors yet so if this is the case, please use the apache mirror - http://www.apache.org/dist/libcloud

Documentation*

API documentation can be found at https://libcloud.apache.org/apidocs/0.5.2/

Bugs / Issues

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

Source: release announcement.

Libcloud sprint will be held at EuroPython 2011

Libcloud sprint will be held at EuroPython 2011 in Florence, Italy. For more information, please refer to the mailing list thread.

Libcloud 0.5.0 released

Hello all,

I would like to announce Libcloud 0.5.0. This version represents a big milestone, because it includes many new features, drivers, improvement and two totally new API's - storage and load-balancers.

Major changes and features since the last release

New Storage API

Storage API which allows you to manage cloud storage has been added to the core. Currently two provider drivers are available (Rackspace Cloud Files and Amazon S3), but you can expect more drivers in the future releases.

New load-balancer API

Load-balancer API which allows you to manage load-balancers as a service (LBaaS) has been added to the core. Currently two provider drivers are available (Rackspace and GoGrid), but you can expect more drivers in the future releases.

New compute drivers

This release includes 5 new compute drivers. The compute API now supports a total of 24 different providers.

  • Bluebox (contributed by Christian Paredes)
  • Gandi.net (contributed by Aymeric Barantal)
  • Nimbus (contributed by David LaBissoniere)
  • OpenStack (contributed by Roman Bogorodskiy)
  • Opsource.net cloud (contributed by Joe Miller)

API changes

To support new services, core Libcloud API had to be refactored. The library now consists of three top-level modules:

  • libcloud.compute.* (everything related to the compute has been moved here)
  • libcloud.storage.* (new place for the storage API)
  • libcloud.loadbalancer.* (new place for the load-balancer API)

Importing stuff from the old location (e.g. from libcloud.providers import get_driver) should still work, but you will receive a deprecation warning.

You are encouraged to update your code to use the new module locations. The old paths will be fully deprecated and removed in version 0.6.0.

Other notable changes

All the pricing data has been moved to a separate JSON file. This should make updating pricing a lot easier.

For a full list of changes, please check the CHANGES file < https://github.com/apache/libcloud/blob/trunk/CHANGES>.

Download

Libcloud 0.5.0 can be downloaded from http://libcloud.apache.org/downloads.html or install it using pip - pip install apache-libcloud

Documentation

For the API documentation, please refer to https://libcloud.apache.org/apidocs/0.5.0/

For a real world example, check the example_{compute,storage,balancer}.py files which are located in the root directory.

We have been pretty busy with this release so we currently don't have any articles about the new APIs on the website yet, but we will try to add them this week.

Bugs / Issues

If you find any bug or issue, please report it on our issue tracker ( https://issues.apache.org/jira/browse/LIBCLOUD).

Attaching an example or test which reproduces it would be ideal

Source: release announcement.

Libcloud sprint will be held at PyCon 2011

Libcloud sprint will be held at PyCon 2011 in Atlanta. For more information, please refer to the mailing list thread.

Libcloud 0.4.2 released

The Apache Software Foundation and the Apache Libcloud Project are pleased to announce the release and immediate availability of version 0.4.2 of Apache Libcloud ("libcloud").

Apache Libcloud is a pure python client library for interacting with many of the popular cloud server providers. It was created to make it easy for developers to build products that work between any of the services that it supports.

Apache Libcloud is available for download from: http://incubator.apache.org/libcloud/downloads.html.

Major changes since the previous release:

  • New drivers for CloudSigma, Brightbox, Rackspace UK
  • Improvements to deployment capabilities
  • libcloud.security module for SSL certificate verification, see http://wiki.apache.org/incubator/LibcloudSSL

Libcloud 0.4.0 released

The Apache Software Foundation and the Apache Libcloud Project are pleased to announce the release and immediate availability of version 0.4.0 of Apache Libcloud ("libcloud").

Apache Libcloud is a pure python client library for interacting with many of the popular cloud server providers. It was created to make it easy for developers to build products that work between any of the services that it supports.

Apache Libcloud is available for download from: http://incubator.apache.org/libcloud/downloads.html.

Major changes since the previous release:

  • Removed dependency on Zope.Interface.
  • New driver for ElasticHosts.
  • Bug fixes and improvements for GoGrid, EC2, Linode, Slicehost, and RimuHosting.

See the CHANGES file for more details: https://svn.apache.org/repos/asf/incubator/libcloud/tags/0.4.0/CHANGES.

Source: release announcement.

Libcloud 0.3.1 released

The Apache Software Foundation and the Apache Libcloud Project are pleased to announce the release and immediate availability of version 0.3.1 of Apache Libcloud ("libcloud").

Apache Libcloud is a pure python client library for interacting with many of the popular cloud server providers. It was created to make it easy for developers to build products that work between any of the services that it supports.

Apache Libcloud is available for download from: http://incubator.apache.org/libcloud/downloads.html.

Major changes since the previous release:

  • New Drivers for Dreamhost, Eucalyptus, Enomaly ECP, IBM Developer Cloud and SoftLayer.
  • Added new deployment and bootstrap API.
  • Added support for Amazon EC2 Asia Pacific (Singapore) Region
  • Improved test coverage for all drivers.

Source: release announcement.

Libcloud 0.2.0 released

Libcloud 0.2.0 has been released.