--------------------------------
Common
~~~~~~
- Fix a bug which would cause some prepared requests with empty bodies to be
chunked which would cause some of the provider APIs such as OpenStack to
return HTTP 400 errors.
(1487, 1488)
[Michael Spagon - mspagon]
- Optimize various code imports (remove unnecessary imports, make some lazy,
etc.), so now importing most of the modules is around ~20-40% faster (~70
vs ~140 ms) and in some cases such as EC2 driver even more.
Now majority of the import time is spent in importing ``requests`` library.
(1519)
[Tomaz Muraus]
- ``libcloud.pricing.get_size_price()`` function has been updated so it only
caches pricing data in memory for the requested drivers.
This way we avoid caching data in memory for drivers which may never be
used.
If you want to revert to old behavior (cache pricing data for all the
drivers in memory), you can do that by passing ``cache_all=True`` argument
to that function or set ``libcloud.pricing.CACHE_ALL_PRICING_DATA`` module
level variable to ``True``.
Passing ``cache_all=True`` might come handy in situations where you know the
application will work with a lot of different drivers - this way you can
avoid multiple disk reads when requesting pricing data for different drivers.
(1519)
[Tomaz Muraus]
- Advertise Python 3.9 support in setup.py.
Compute
~~~~~~~
- [GCE] Fix ``ex_set_image_labels`` method using incorrect API path.
(1485)
[Poul Petersen - petersen-poul]
- [OpenStack] Fix error setting ``ex_force_XXX_url`` without setting
``ex_force_base_url``.
(1492)
[Miguel Caballer - micafer]
- [EC2] Update supported EC2 regions and instance sizes and add support
for eu-north-1 region.
(1486)
[Arturo Noha - r2ronoha]
- [Ovh] Add support for multiple regions to the driver. User can select
a region (location) by passing ``location`` argument to the driver
constructor (e.g. ``location=ca``).
(1494)
[Dan Hunsaker - danhunsaker]
- [GCE] Add support for creating nodes without a service account associated
with them. Now when an empty list is passed for ``ex_service_accounts``
argument, VM will be created without service account attached.
For backward compatibility reasons, default value of ``None`` still means to
use a default service account.
(1497, 1495)
[David Tomaschik - Matir]
- [VSphere] Add new VMware VSphere driver which utilizes ``pyvmomi`` library
and works under Python 3.
If you want to use this driver, you need to install ``pyvmomi`` dependency -
``pip install pyvmomi``
(1481)
[Eis D. Zaster - Eis-D-Z]
- [OpenStack] Enable to get Quota Set detail.
(1495)
[Miguel Caballer - micafer]
- [OpenStack] Add ex_get_size_extra_specs function to OpenStack driver.
(1517)
[Miguel Caballer - micafer]
- [OpenStack] Enable to get Neutron Quota details in OpenStack driver.
(1514)
[Miguel Caballer - micafer]
- [DigitalOcean] ``_node_node`` method now ensures ``image`` and ``size``
attributes are also set correctly and populated on the ``Node`` object.
(1507, 1508)
[sergerdn]
- [Vultr] Make sure ``private_ips`` attribute on the ``Node`` object is
correctly populated when listing nodes. Also add additional values to the
``node.extra`` dictionary.
(1506)
[sergerdn]
- [EC2] Optimize EC2 driver imports and move all the large constant files to
separate modules in ``libcloud/compute/constants/ec2_*.py`` files.
Previously all the constants were contained in
``libcloud/compute/constants.py`` file. That file was imported when importing
EC2 driver which would add unnecessary import time and memory overhead in case
this data was not actually used.
Now most of the large imports are lazy and only happen when that data is
needed (aka when ``list_sizes()`` method is called).
``libcloud/compute/constants.py`` file has also been removed.
(1519)
[Tomaz Muraus - Kami]
- [Packet / Equinix Metal] Packet driver has been renamed to Equinix Metal. If
your code uses Packet.net driver, you need to update it as per example in
Upgrade Notes documentation section.
(1511)
[Dimitris Galanis - dimgal1]
- [OutScale] Add various extension methods to the driver. For information on
available extenion methods, please refer to the driver documentation.
(1499)
[tgn-outscale]
- [Linode] Add support for Linode's API v4.
(1504)
[Dimitris Galanis - dimgal1]
Storage
~~~~~~~
- Deprecated ``lockfile`` library which is used by the Local Storage driver has
been replaced with ``fasteners`` library.
[Tomaz Muraus - Kami]
- [S3] Add support for ``us-gov-east-1`` region.
(1509, 1510)
[Andy Spohn - spohnan]
- [DigitalOcean Spaces] Add support for sfo2 regon.
(1525)
[Cristian Rasch - cristianrasch]
- [MinIO] Add new driver for MinIO object storage (https://min.io).
(1528, 1454)
[Tomaz Muraus - Kami]
- [S3] Update S3 and other drivers which are based on the S3 one (Google
Storage, RGW, MinIO) to correctly throw ``ContainerAlreadyExistsError`` if
container creation fails because container with this name already exists.
Previously in such scenario, ``InvalidContainerNameError`` exception which
does not comply with the Libcloud standard API was thrown.
(1528)
[Tomaz Muraus - Kami]
- Add new ``libcloud.common.base.ALLOW_PATH_DOUBLE_SLASHES`` module level
variable.
When this value is set to ``True`` (defaults to ``False`` for backward
compatibility reasons), Libcloud won't try to sanitize the URL path and
remove any double slashes.
In most cases, this won't matter and sanitzing double slashes is a safer
default, but in some cases such as S3, where double slashes can be a valid
path (e.g. ``/my-bucket//path1/file.txt``), this option may come handy.
When this variable is set to ``True``, behavior is also consistent with
Libcloud versions prior to v2.0.0.
Reported by Jonathan Hanson - triplepoint.
(1529)
[Tomaz Muraus - Kami]
DNS
~~~
- [Common] Fix a bug with the header value returned by the
``export_zone_to_bind_format`` method containing an invalid timestamp (value
for the minute part of the timestamp was wrong and contained month number
instead of the minutes value).
Reported by Kurt Schwehr - schwehr.
(1500)
[Tomaz Muraus - Kami]
- [CloudFlare DNS] Add support for creating ``SSHFP`` records.
(1512, 1513)
[Will Hughes - insertjokehere]
- [DigitalOcean] Update driver and make sure request data is sent as part of
HTTP request body on POST and PUT operations (previously it was sent as
part of query params).
(1505)
[Andrew Starr-Bochicchio - andrewsomething]
- [AuroraDNS] Throw correct exception on 403 authorization failed API error.
(1521, 1522)
[Freek Dijkstra - macfreek]
- [Linode] Add support for Linode's API v4.
(1504)
[Dimitris Galanis - dimgal1]
- [CloudFlare] Update driver so it correctly throws
``RecordAlreadyExists`` error on various error responses which represent
this error.
[Tomaz Muraus - Kami]