Blog

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)

Release notes

General

  • Introduced new base API for instantiating drivers (GITHUB-822) [Anthony Shaw]
  • Added certificate path for SLES12/OpenSUSE12 (GITHUB-884) [Michael Calmer]
  • Deprecate DigitalOcean v1 API support in favour of v2 API (GITHUB-889)(GITHUB-892) [Andrew Starr-Bochicchio]
  • Deprecate RunAbove cloud drivers in favour of new OVH cloud driver (GITHUB-891) [Anthony Monthe]

Compute

  • Fix reporting function for detailed admin logs in Dimension Data Driver (GITHUB-898) [Anthony Shaw]
  • Added edit firewall functionality to Dimension Data driver (GITHUB-893) [Samuel Chong]
  • Bugfix - Fixed listing nodes issue in Python 3 (LIBCLOUD-858, GITHUB-894) [Fahri Cihan Demirci]
  • Added FCU (Flexible Compute Unit) support to the Outscale driver. (GITHUB-890) [Javier M. Mellid]
  • [google compute] Add "WINDOWS" guestOsFeatures option. (GITHUB-861) [Max Illfelder]
  • When creating volumes on OpenStack with defaults for location or volume_type, newer OpenStack versions would throw errors. The OpenStack driver will now only post those arguments if non-NoneType. (GITHUB-857) [Allard Hoeve]
  • When fetching the node details of a non-existing node, OpenStack would raise a BaseHTTPError instead of returning None, as was intended. Fixed tests and code. (GITHUB-864)
  • Added ex_stop_node to the OpenStack driver. (GITHUB-865)
  • When creating volume snapshot, the arguments name and description are truly optional when working with newer OpenStack versions. The OpenStack driver will now only post thost arguments if they are non-NoneType. (GITHUB-866)
  • StorageVolumeSnapshot now has an attribute name that has the name of the snapshot if the provider supports it. This used to be .extra['name'], but that is inconsistent with Node and StorageVolume. The extra dict still holds name for backwards compatibility. (GITHUB-867) [Allard Hoeve]

Container

  • Introduced new Racher driver (GITHUB-876) [Mario Loria]
  • Fixed bug in Docker util library for fetching images from the docker hub API. API was returning 301 and redirects were not being followed. (GITHUB-862) [Anthony Shaw]

Load Balancer

  • Added fetch tags support in elb driver (GITHUB-848) [Anton Kozyrev]

Storage

  • Added storage permissions for Google Cloud Storage (GITHUB-860) [Scott Crunkleton]

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

This includes:

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.

What's new in Libcloud 1.0

AWS Region codes

In Libcloud 0.21.0 and below, there was a seperate AWS driver for each region, when we first put this together Amazon had 2 regions, now they are all over the world.

To support this, there is now a Provider.EC2 provider, which you can give an argument of region:

Containers

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