apache-libcloud v2.8.1 Release Notes

Release Date: 2020-03-03 // about 4 years ago
  • Common

    
    - Fix ``LIBCLOUD_DEBUG_PRETTY_PRINT_RESPONSE`` functionality and make sure it
      works correctly under Python 3 when ``response.read()`` function returns
      unicode and not bytes.
    
      (GITHUB-1430)
      [Tomaz Muraus]
    
    Compute
    
    • [GCE] Fix list_nodes() method so it correctly handles pagination and returns all the nodes if there are more than 500 nodes available in total.

    Previously, only first 500 nodes were returned.

    Reported by @TheSushiChef. (GITHUB-1409, GITHUB-1360) [Tomaz Muraus]

    • ๐Ÿ›  Fix some incorrect type annotations in the base compute API.

    Reported by @dpeschman. (GITHUB-1413) [Tomaz Muraus]

    • [OpenStack] Fix error with getting node id in _to_floating_ip method when region is not called nova. (GITHUB-1411, GITHUB-1412) [Miguel Caballer - @micafer]

    • ๐Ÿ‘‰ [EC2] Fix ex_userdata keyword argument in the create_node() method being ignored / not working correctly.

    NOTE: This regression has been inadvertently introduced in v2.8.0. (GITHUB-1426) [Dan Chaffelson - @Chaffelson]

    • โšก๏ธ [EC2] Update create_volume method to automatically select first available availability zone if one is not explicitly provided via location argument. [Tomaz Muraus]

    Storage

    
    - [AWS S3] Fix upload object code so uploaded data MD5 checksum check is not
      performed at the end of the upload when AWS KMS server side encryption is
      used.
    
      If AWS KMS server side object encryption is used, ETag header value in the
      response doesn't contain data MD5 digest so we can't perform a checksum
      check.
    
      Reported by Jonathan Harden - @jfharden.
      (GITHUB-1401, GITHUB-1406)
      [Tomaz Muraus - @Kami]
    
    - [Google Storage] Fix a bug when uploading an object would fail and result
      in 401 "invalid signature" error when object mime type contained mixed
      casing and when S3 Interoperability authentication method was used.
    
      Reported by Will Abson - wabson.
      (GITHUB-1417, GITHUB-1418)
      [Tomaz Muraus]
    
    - Fix ``upload_object_via_stream`` method so "Illegal seek" errors which
      can arise when calculating iterator content hash are ignored. Those errors
      likely indicate that the underlying file handle / iterator is a pipe which
      doesn't support seek and that the error is not fatal and we should still
      proceed.
    
      Reported by Per Buer - @perbu.
    
      (GITHUB-1424, GITHUB-1427)
      [Tomaz Muraus]
    
    DNS
    ~~~
    
    - โšก๏ธ [Gandi Live] Update the driver and make sure it matches the latest service /
      API updates.
      (GITHUB-1416)
      [Ryan Lee - @zepheiryan]
    
    - [CloudFlare] Fix ``export_zone_to_bind_format`` method.
    
      Previously it threw an exception, because ``record.extra`` dictionary
      didn't contain ``priority`` key.
    
      Reported by James Montgomery - @gh-jamesmontgomery.
      (GITHUB-1428, GITHUB-1429)
      [Tomaz Muraus]
    
    ๐Ÿ”„ Changes in Apache Libcloud 3.0.0-rc1
    ------------------------------------
    
    General
    
    • ๐Ÿš€ This release drops support for Python versions older than 3.5.0.

    If you still need to use Libcloud with Python 2.7 or Python 3.4 you can do that by using the latest release which still supported those Python versions (Libcloud v2.8.0). (GITHUB-1377) [Tomaz Muraus]

    • ๐Ÿ Make sure unit tests now also pass on Windows. (GITHUB-1396) [Tomaz Muraus]

    Compute

    
    - [VMware vSphere] vSphere driver relies on ``pysphere`` Python library which
      doesn't support Python 3 so it has been removed.
    
      There is an unofficial ``pysphere`` fork which adds Python 3 support, but
      it's out of date and not maintained (https://github.com/machalekj/pysphere/tree/2to3).
      (GITHUB-1377)
      [Tomaz Muraus]
    
    - [GCE] Fix ``ex_list_instancegroups`` method so it doesn't throw if ``zone``
      attribute is not present in the response.
    
      Reported by Kartik Subbarao (@kartiksubbarao)
      (GITHUB-1346)
      [Tomaz Muraus]
    
    - ๐Ÿ‘ [AWS EC2] Add support for creating spot instances by utilizing new ``ex_spot``
      and optionally also ``ex_spot_max_price`` keyword argument in the
      ``create_node`` method.
      (GITHUB-1398)
      [Peter Yu - @yukw777]
    
    - ๐Ÿ›  Fix some incorrect type annotations in the base compute API.
    
      Reported by @dpeschman.
      (GITHUB-1413, GITHUB-1414)
      [Tomaz Muraus]
    
    - [OpenStack] Fix error with getting node id in ``_to_floating_ip`` method
      when region is not called ``nova``.
      (GITHUB-1411, GITHUB-1412)
      [Miguel Caballer - @micafer]
    
    - ๐Ÿ‘ [KubeVirt] New KubeVirt driver with initial support for the k8s/KubeVirt
      add-on.
      (GITHUB-1394)
      [Eis D. Zaster - @Eis-D-Z]
    
    Storage
    
    • [AWS S3] Fix upload object code so uploaded data MD5 checksum check is not performed at the end of the upload when AWS KMS server side encryption is used.

    If AWS KMS server side object encryption is used, ETag header value in the response doesn't contain data MD5 digest so we can't perform a checksum check.

    Reported by Jonathan Harden - @jfharden. (GITHUB-1401, GITHUB-1406) [Tomaz Muraus - @Kami]

    • [Azure Blobs] Implement chunked upload in the Azure Storage driver.

    Previously, the maximum object size that could be uploaded with the Azure Storage driver was capped at 100 MB: the maximum size that could be uploaded in a single request to Azure. Chunked upload removes this limitation and now enables uploading objects up to Azure's maximum block blob size (~5 TB). The size of the chunks uploaded by the driver can be configured via the LIBCLOUD_AZURE_UPLOAD_CHUNK_SIZE_MB environment variable and defaults to 4 MB per chunk. Increasing this number trades-off higher memory usage for a lower number of http requests executed by the driver.

    Reported by @rvolykh. (GITHUB-1399, GITHUB-1400) [Clemens Wolff - @c-w]

    • ๐Ÿ‘ [Azure Blobs] Drop support for uploading PageBlob objects via the Azure Storage driver.

    Previously, both PageBlob and BlockBlob objects could be uploaded via the upload_object and upload_object_via_stream methods by specifying the ex_blob_type and ex_page_blob_size arguments. To simplify the API, these options were removed and all uploaded objects are now of BlockBlob type. Passing ex_blob_type or ex_page_blob_size will now raise a ValueError.

    (GITHUB-1400) [Clemens Wolff - @c-w]

    • [Common] Add prefix argument to iterate_container_objects and list_container_objects to support object-list filtering in all StorageDriver implementations.

    A lot of the existing storage drivers already implemented the filtering functionality via the ex_prefix extension argument so it was decided to promote the argument to be part of the standard Libcloud storage API. For any storage driver that doesn't natively implement filtering the results list, a fall-back was implemented which filters the full object stream on the client side.

    For backward compatibility reasons, the ex_prefix argument will still be respected until a next major release. (GITHUB-1397) [Clemens Wolff - @c-w]

    • [Azure Blobs] Implement get_object_cdn_url for the Azure Storage driver.

    Leveraging Azure storage service shared access signatures, the Azure Storage driver can now be used to generate temporary URLs that grant clients read access to objects. The URLs expire after a certain period of time, either configured via the ex_expiry argument or the LIBCLOUD_AZURE_STORAGE_CDN_URL_EXPIRY_HOURS environment variable (default: 24 hours).

    Reported by @rvolykh. (GITHUB-1403, GITHUB-1408) [Clemens Wolff - @c-w]

    • [Azure Blobs, Aliyun, Local, Ninefold, S3] Ensure upload headers are respected.

    All storage drivers now pass the optional headers argument of upload_object and upload_object_via_stream to the backend object storage systems (previously the argument was silently ignored).

    (GITHUB-1410) [Clemens Wolff - @c-w]

    • [AWS S3] Implement get_object_cdn_url for the AWS storage driver.

    The AWS storage driver can now be used to generate temporary URLs that grant clients read access to objects. The URLs expire after a certain period of time, either configured via the ex_expiry argument or the LIBCLOUD_S3_STORAGE_CDN_URL_EXPIRY_HOURS environment variable (default: 24 hours).

    Reported by @rvolykh. (GITHUB-1403) [Aaron Virshup - @avirshup]

    DNS

    
    - โšก๏ธ [Gandi Live] Update the driver and make sure it matches the latest service /
      API updates.
      (GITHUB-1416)
      [Ryan Lee - @zepheiryan]
    
    Container
    
    • [LXD] Add new LXD driver. (GITHUB-1395) [Alexandros Giavaras - @pockerman]