1
0
Fork 0
mirror of https://github.com/ansible-collections/hetzner.hcloud.git synced 2026-02-04 08:01:49 +00:00

feat: warn when experimental features are used (#669)

##### SUMMARY

- Document how users can learn about experimental features.
- Document how developers can release experimental features.
- Log a warning when experimental features are being used.

##### ISSUE TYPE

- Feature Pull Request
This commit is contained in:
Jonas L. 2025-07-21 11:03:31 +02:00 committed by GitHub
parent e0e3dc9562
commit 36053c7ee8
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
2 changed files with 61 additions and 0 deletions

View file

@ -75,3 +75,33 @@ ansible-test integration --color --local -vvv hetzner.hcloud.server // Executed
## Releasing a new version
If there are releasable changes, `release-please` will open a PR on GitHub with the proposed version. When this PR is merged, `release-please` will tag the release.
## Releasing experimental features
To publish experimental features as part of regular releases:
- an announcement, including a link to a changelog entry, must be added to the release notes.
- an `Experimental` notice, including a link to a changelog entry, must be added to the experimental plugins documentation:
```py
DOCUMENTATION = """
---
module: product
description:
- Create, update and manage Product on the Hetzner Cloud.
- B(Experimental:) Product is experimental, breaking changes may occur within minor releases. See https://docs.hetzner.cloud/changelog#new-product for more details.
"""
```
- a `Experimental` warning, including a link to a changelog entry, must be logged when experimental plugins are being used:
```py
product_experimental_warning = experimental_warning_function("Product", "https://docs.hetzner.cloud/changelog#new-product")
class AnsibleProduct(AnsibleHCloud):
def __init__(self, module: AnsibleModule):
product_experimental_warning(module)
super().__init__(module)
```

View file

@ -0,0 +1,31 @@
# Copyright: (c) 2025, Hetzner Cloud GmbH <info@hetzner-cloud.de>
from __future__ import annotations
from .hcloud import AnsibleModule
def experimental_warning_function(product: str, url: str):
"""
Create a reusable experimental warning function.
Usage:
product_experimental_warning = experimental_warning_function(
"Product", "https://docs.hetzner.cloud/changelog#new-product"
)
class AnsibleProduct(AnsibleHCloud):
def __init__(self, module: AnsibleModule):
product_experimental_warning(module)
super().__init__(module)
:param product: Name of the experimental product.
:param url: Changelog URL announcing the experimental product.
"""
message = f"Experimental: {product} is experimental, breaking changes may occur within minor releases. See {url} for more details."
def fn(module: AnsibleModule):
module.warn(message)
return fn