apache-libcloud v2.8.1 Release Notes

Release Date: 2020-03-03 // over 2 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]