diff --git a/docs/changes.md b/docs/changes.md new file mode 100644 index 0000000..ef2bdf2 --- /dev/null +++ b/docs/changes.md @@ -0,0 +1,195 @@ +# Changelog + +## 0.16.0 (2025-11-27) + +**BREAKING CHANGES** + +* Partner API: Update to ISO 20022 structured billing addresses. Organization + creation now requires `display-name` and nested `billing-address` object + instead of flat address fields. See [PR](https://github.com/exoscale/python-exoscale/pull/76) for migration guide. + +## 0.15.0 (2025-10-28) + +* Add Partner API client for distributor operations +* Partner API client follows same patterns as V2 API +* Automatic hourly updates of Partner API OpenAPI spec + +## 0.14.0 (2025-08-28) + +* Handle multiple response codes per OpenAPI operation. + +## 0.13.0 (2025-08-11) + +* Support hr-zag-1 zone +* Remove DBaaS service Redis (replaced by Valkey) + +## 0.12.0 (2025-06-04) + +* Internals: abstract client generation logic into a separate + `exoscale.api.generator` namespace. +* API changes and additions: + + * SKS: Rotate CCM credentials + * Instance: TMP and Secure Boot support + * DBaaS: + + * Kafka: cluster networking options + * New zone option: `hr-zag-1` + +## 0.11.0 (2025-04-24) + +* Bump python version requirement to 3.8 due to the use of the walrus + operator. +* Add `Client.wait(operation_id)` to poll for the result of an asynchronous + API operation. + +## 0.10.0 (2024-05-29) + +* Introduce exception classes that gets raised when the API responds with 4xx + or 5xx HTTP statuses. + +## 0.9.1 (2024-04-29) + +`exoscale.api.v2.Client` improvements: + +* Client initialization accepts two signatures: `Client(key, secret, zone)` for + typical use and `Client(key, secret, url)` when needing to target another + endpoint than the public endpoint template. +* Drop support for Python 3.7, add Python 3.12 to the testing matrix. +* Fix operations with multiple path parameters ([@thomas-chauvet](https://github.com/exoscale/python-exoscale/pull/57)) +* API changes and additions: + + * DBaaS: + + * integrations settings + * Split secrets over to separate endpoints + * Add zone to service details + * DNS record types cleanup + * Instance password reset operation + * Provide `at-vie-2` in the zones choices + * Block Storage operations and CSI addon + * Audit-trail format adjustments + * Add MAC address to private network attachments + +## 0.8.0 (2023-05-11) + +* Add `exoscale.api.v2.Client`: a low-level API client targeting the Exoscale + V2 API. + +## 0.7.1 (2021-10-18) + +**Fixes** + +* compute: fix `instance_private_networks` arg check in `create_instance_pool()` method + +## 0.7.0 (2021-05-11) + +**Features** + +* compute: add support for Deploy Targets resources +* compute: Instance Pools now support Elastic IP attachment, Instance Prefix and + Deploy Targets +* compute: the `InstancePool.update()` method now supports updating Anti-Affinity + Groups, IPv6 enabling, Security Groups, Private Networks and SSH Key. +* compute: new `InstancePool.evict()` method + +**Changes** + +* compute: the `get_instance_pool()` method now accepts either of `name`/`id` + parameters +* compute: the `InstancePool.delete()` method `wait`/`max_poll` parameters have + been removed + +## 0.6.0 (2021-04-21) + +**Features** + +* compute: the `SecurityGroup.update()` now updates the Compute instance Security + Groups membership live without requiring to stop the instance +* compute: add `Instance.user_data` property +* compute: add `InstanceTemplate.boot_mode` attribute +* dns: `create_dns_record()` now returns the created record + +**Fixes** + +* compute: don't crash when an Instance Template doesn't have details metadata + +## 0.5.2 (2021-04-13) + +**Fixes** + +* compute: add missing `bootmode` parameter to `register_instance_template()` (#32) + +## 0.5.1 (2021-03-16) + +**Fixes** + +* Exclude tests from Python packaging + +## 0.5.0 (2021-03-15) + +**Features** + +* compute: add Anti-Affinity Groups support to Instance Pools (#27) + +**Fixes** + +* Rely on pathlib for home lookup (#29) +* compute: don't crash when listing instances generated from templates (#28) + +## 0.4.0 (2020-12-07) + +**Features** + +* compute: add support for Network Load Balancers +* compute: add support for Elastic IP HTTPS health checking +* compute: add support for snapshot exporting + +**Changes** + +* compute: `get_instance_pool()` arguments order + +## 0.3.0 (2020-01-22) + +**New** + +* Add support for IAM (`iam` submodule) + +**Features** + +* Allow HTTP session retry policy to be user configurable +* compute: add support for Instance Pools +* compute: add support for Elastic IP descriptions +* compute: add Instance `creation_date` attribute + +**Fixes** + +* storage: fix failing integration tests +* storage: honor global client settings + +## 0.2.0 (2019-10-09) + +**Features** + +* storage: add Bucket/BucketFile `url` attribute + +**Fixes** + +* compute: fix unhandled exception in `get_*` functions + +**Changes** + +* compute: `create_instance()` function *root_disk_size* parameter has been renamed + to *volume_size* +* compute: `get_elastic_ip()` function now requires a *zone* parameter +* compute: `get_instance_template()` function now requires a *zone* parameter +* compute: `get_instance()` function now requires a *zone* parameter +* compute: `get_private_network()` function now requires a *zone* parameter +* compute: `list_elastic_ips()` function now requires a *zone* parameter +* compute: `list_instance_templates()` function now requires a *zone* parameter +* compute: `list_instances()` function now requires a *zone* parameter +* compute: `list_private_networks()` function now requires a *zone* parameter + +## 0.1.1 (2019-09-12) + +* Initial release diff --git a/docs/changes.rst b/docs/changes.rst deleted file mode 100644 index 61dccb7..0000000 --- a/docs/changes.rst +++ /dev/null @@ -1,241 +0,0 @@ -Changelog ---------- - -0.16.0 (2025-11-27) -------------------- - -**BREAKING CHANGES** - -* Partner API: Update to ISO 20022 structured billing addresses. Organization - creation now requires ``display-name`` and nested ``billing-address`` object - instead of flat address fields. See `PR `_ for migration guide. - -0.15.0 (2025-10-28) -------------------- - -* Add Partner API client for distributor operations -* Partner API client follows same patterns as V2 API -* Automatic hourly updates of Partner API OpenAPI spec - -0.14.0 (2025-08-28) -------------------- - -* Handle multiple response codes per OpenAPI operation. - -0.13.0 (2025-08-11) -------------------- - -* Support hr-zag-1 zone -* Remove DBaaS service Redis (replaced by Valkey) - -0.12.0 (2025-06-04) -~~~~~~~~~~~~~~~~~~~ - -* Internals: abstract client generation logic into a separate - ``exoscale.api.generator`` namespace. -* API changes and additions: - - * SKS: Rotate CCM credentials - * Instance: TMP and Secure Boot support - * DBaaS: - - * Kafka: cluster networking options - * New zone option: ``hr-zag-1`` - -0.11.0 (2025-04-24) -~~~~~~~~~~~~~~~~~~~ - -* Bump python version requirement to 3.8 due to the use of the walrus - operator. -* Add ``Client.wait(operation_id)`` to poll for the result of an asynchronous - API operation. - -0.10.0 (2024-05-29) -~~~~~~~~~~~~~~~~~~~ - -* Introduce exception classes that gets raised when the API responds with 4xx - or 5xx HTTP statuses. - -0.9.1 (2024-04-29) -~~~~~~~~~~~~~~~~~~ - -``exoscale.api.v2.Client`` improvements: - -* Client initialization accepts two signatures: ``Client(key, secret, zone)`` for - typical use and ``Client(key, secret, url)`` when needing to target another - endpoint than the public endpoint template. -* Drop support for Python 3.7, add Python 3.12 to the testing matrix. -* Fix operations with multiple path parameters (`@thomas-chauvet https://github.com/exoscale/python-exoscale/pull/57`) -* API changes and additions: - - * DBaaS: - - * integrations settings - * Split secrets over to separate endpoints - * Add zone to service details - * DNS record types cleanup - * Instance password reset operation - * Provide ``at-vie-2`` in the zones choices - * Block Storage operations and CSI addon - * Audit-trail format adjustments - * Add MAC address to private network attachments - -0.8.0 (2023-05-11) -~~~~~~~~~~~~~~~~~~ - -- Add ``exoscale.api.v2.Client``: a low-level API client targeting the Exoscale - V2 API. - -0.7.1 (2021-10-18) -~~~~~~~~~~~~~~~~~~ - -Fixes -***** - -- compute: fix `instance_private_networks` arg check in `create_instance_pool()` method - - -0.7.0 (2021-05-11) -~~~~~~~~~~~~~~~~~~ - -Features -******** - -- compute: add support for Deploy Targets resources -- compute: Instance Pools now support Elastic IP attachment, Instance Prefix and -- Deploy Targets -- compute: the ``InstancePool.update()`` method now supports updating Anti-Affinity - Groups, IPv6 enabling, Security Groups, Private Networks and SSH Key. -- compute: new ``InstancePool.evict()`` method - -Changes -******* - -- compute: the ``get_instance_pool()`` method now accepts either of ``name``/``id`` - parameters -- compute: the ``InstancePool.delete()`` method ``wait``/``max_poll`` parameters have - been removed - - -0.6.0 (2021-04-21) -~~~~~~~~~~~~~~~~~~ - -Features -******** - -- compute: the ``SecurityGroup.update()`` now updates the Compute instance Security - Groups membership live without requiring to stop the instance -- compute: add ``Instance.user_data`` property -- compute: add ``InstanceTemplate.boot_mode`` attribute -- dns: ``create_dns_record()`` now returns the created record - -Fixes -***** - -- compute: don't crash when an Instance Template doesn't have details metadata - - -0.5.2 (2021-04-13) -~~~~~~~~~~~~~~~~~~ - -Fixes -***** - -- compute: add missing `bootmode` parameter to `register_instance_template()` (#32) - - -0.5.1 (2021-03-16) -~~~~~~~~~~~~~~~~~~ - -Fixes -***** - -- Exclude tests from Python packaging - - -0.5.0 (2021-03-15) -~~~~~~~~~~~~~~~~~~ - -Features -******** - -- compute: add Anti-Affinity Groups support to Instance Pools (#27) - -Fixes -***** - -- Rely on pathlib for home lookup (#29) -- compute: don't crash when listing instances generated from templates (#28) - - -0.4.0 (2020-12-07) -~~~~~~~~~~~~~~~~~~ - -Features -******** - -- compute: add support for Network Load Balancers -- compute: add support for Elastic IP HTTPS health checking -- compute: add support for snapshot exporting - -Changes -******* - -- compute: `get_instance_pool()` arguments order - - -0.3.0 (2020-01-22) -~~~~~~~~~~~~~~~~~~ - -New -*** - -- Add support for IAM (``iam`` submodule) - -Features -******** - -- Allow HTTP session retry policy to be user configurable -- compute: add support for Instance Pools -- compute: add support for Elastic IP descriptions -- compute: add Instance ``creation_date`` attribute - -Fixes -***** - -- storage: fix failing integration tests -- storage: honor global client settings - - -0.2.0 (2019-10-09) -~~~~~~~~~~~~~~~~~~ - -Features -******** - -- storage: add Bucket/BucketFile ``url`` attribute - -Fixes -***** - -- compute: fix unhandled exception in ``get_*`` functions - -Changes -******* - -- compute: ``create_instance()`` function *root_disk_size* parameter has been renamed - to *volume_size* -- compute: ``get_elastic_ip()`` function now requires a *zone* parameter -- compute: ``get_instance_template()`` function now requires a *zone* parameter -- compute: ``get_instance()`` function now requires a *zone* parameter -- compute: ``get_private_network()`` function now requires a *zone* parameter -- compute: ``list_elastic_ips()`` function now requires a *zone* parameter -- compute: ``list_instance_templates()`` function now requires a *zone* parameter -- compute: ``list_instances()`` function now requires a *zone* parameter -- compute: ``list_private_networks()`` function now requires a *zone* parameter - - -0.1.1 (2019-09-12) -~~~~~~~~~~~~~~~~~~ - -- Initial release diff --git a/docs/conf.py b/docs/conf.py index 5a114ba..fdb76ce 100644 --- a/docs/conf.py +++ b/docs/conf.py @@ -13,7 +13,6 @@ # import os import sys from datetime import datetime -from sphinx_markdown_parser.parser import MarkdownParser # noqa sys.path.insert(0, "exoscale") @@ -32,7 +31,7 @@ # Add any Sphinx extension module names here, as strings. They can be # extensions coming with Sphinx (named 'sphinx.ext.*') or your custom # ones. -extensions = ["sphinx.ext.autodoc", "sphinx.ext.napoleon", "recommonmark"] +extensions = ["sphinx.ext.autodoc", "sphinx.ext.napoleon", "myst_parser"] # Add any paths that contain templates here, relative to this directory. templates_path = ["_templates"] @@ -44,6 +43,12 @@ source_suffix = {".rst": "restructuredtext", ".md": "markdown"} +# MyST-Parser configuration +myst_enable_extensions = [ + "colon_fence", # ::: directive syntax + "deflist", # Definition lists +] + napoleon_google_docstring = True napoleon_include_init_with_doc = False napoleon_include_private_with_doc = False diff --git a/docs/index.md b/docs/index.md new file mode 100644 index 0000000..48b63b2 --- /dev/null +++ b/docs/index.md @@ -0,0 +1,25 @@ +# python-exoscale library documentation + +This provides Python bindings for the [Exoscale](https://www.exoscale.com/) cloud platform API. + +```{note} +This library maintains compatibility with actively supported Python +versions: Python 3.9+. Older Python versions may be compatible but such +compatibility is not guaranteed. +``` + +## Installation + +Install the package using pip: + +```bash +pip install exoscale +``` + +```{toctree} +:maxdepth: 2 + +v2 +partner +changes +``` diff --git a/docs/index.rst b/docs/index.rst deleted file mode 100644 index 9d45984..0000000 --- a/docs/index.rst +++ /dev/null @@ -1,25 +0,0 @@ -python-exoscale library documentation -===================================== - -This provides Python bindings for the `Exoscale`_ cloud platform API. - -.. _Exoscale: https://www.exoscale.com/ - -.. note:: - This library maintains compatibility with actively supported Python - versions: Python 3.9+. Older Python versions may be compatible but such - compatibility is not guaranteed. - -Installation ------------- - -Install the package using pip:: - - pip install exoscale - -.. toctree:: - :maxdepth: 2 - - v2 - partner - changes diff --git a/pyproject.toml b/pyproject.toml index 2a77822..c3fb1e3 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -51,8 +51,7 @@ line-length = 79 dev-dependencies = [ "requests-mock>=1.12.1", "pytest>=5.0.0", - "recommonmark>=0.5.0", - "sphinx-markdown-parser>=0.1.1", + "myst-parser>=2.0.0", "sphinx-rtd-theme>=0.4.3", "sphinx>=2.1.2", ]