mirror of
https://github.com/ansible-collections/hetzner.hcloud.git
synced 2026-02-03 23:51:48 +00:00
This PR contains the following updates: | Package | Change | Age | Confidence | |---|---|---|---| | [hcloud](https://redirect.github.com/hetznercloud/hcloud-python) ([changelog](https://redirect.github.com/hetznercloud/hcloud-python/blob/main/CHANGELOG.md)) | `2.10.0` -> `2.11.0` | [](https://docs.renovatebot.com/merge-confidence/) | [](https://docs.renovatebot.com/merge-confidence/) | --- ### Release Notes <details> <summary>hetznercloud/hcloud-python (hcloud)</summary> ### [`v2.11.0`](https://redirect.github.com/hetznercloud/hcloud-python/blob/HEAD/CHANGELOG.md#v2110) [Compare Source](https://redirect.github.com/hetznercloud/hcloud-python/compare/v2.10.0...v2.11.0) ##### DNS API is now generally available The DNS API is now generally available, as well as support for features in this project that are related to the DNS API. To migrate existing zones to the new DNS API, see the [DNS migration guide](https://docs.hetzner.com/networking/dns/migration-to-hetzner-console/process). See the [changelog](https://docs.hetzner.cloud/changelog#2025-11-10-dns-ga) for more details. ##### Features - DNS support is now generally available ([#​581](https://redirect.github.com/hetznercloud/hcloud-python/issues/581)) </details> --- ### Configuration 📅 **Schedule**: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined). 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. ♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. 🔕 **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check this box --- This PR was generated by [Mend Renovate](https://mend.io/renovate/). View the [repository job log](https://developer.mend.io/github/ansible-collections/hetzner.hcloud). <!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0MS4xNTkuNCIsInVwZGF0ZWRJblZlciI6IjQxLjE1OS40IiwidGFyZ2V0QnJhbmNoIjoibWFpbiIsImxhYmVscyI6W119--> --------- Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> Co-authored-by: jo <ljonas@riseup.net>
103 lines
2.9 KiB
Python
Executable file
103 lines
2.9 KiB
Python
Executable file
#!/usr/bin/env python3
|
|
|
|
"""
|
|
Fetch and bundles the hcloud package inside the collection.
|
|
|
|
Fetch the desired version `HCLOUD_VERSION` from https://github.com/hetznercloud/hcloud-python
|
|
`HCLOUD_SOURCE_URL` using git, apply some code modifications to comply with ansible,
|
|
move the modified files at the vendor location `HCLOUD_VENDOR_PATH`.
|
|
"""
|
|
|
|
from __future__ import annotations
|
|
|
|
import logging
|
|
import re
|
|
from argparse import ArgumentParser
|
|
from pathlib import Path
|
|
from shutil import move, rmtree
|
|
from subprocess import check_call
|
|
from tempfile import TemporaryDirectory
|
|
from textwrap import dedent
|
|
|
|
logger = logging.getLogger("vendor")
|
|
|
|
HCLOUD_SOURCE_URL = "https://github.com/hetznercloud/hcloud-python"
|
|
HCLOUD_VERSION = "v2.11.0"
|
|
HCLOUD_VENDOR_PATH = "plugins/module_utils/vendor/hcloud"
|
|
|
|
|
|
def apply_code_modifications(source_path: Path):
|
|
for file in source_path.rglob("*.py"):
|
|
content = file.read_text()
|
|
content_orig = content
|
|
|
|
# Wrap requests imports
|
|
content = re.sub(
|
|
r"import requests",
|
|
dedent(
|
|
r"""
|
|
try:
|
|
import requests
|
|
except ImportError:
|
|
requests = None
|
|
"""
|
|
).strip(),
|
|
content,
|
|
)
|
|
|
|
# Wrap dateutil imports
|
|
content = re.sub(
|
|
r"from dateutil.parser import isoparse",
|
|
dedent(
|
|
r"""
|
|
try:
|
|
from dateutil.parser import isoparse
|
|
except ImportError:
|
|
isoparse = None
|
|
"""
|
|
).strip(),
|
|
content,
|
|
)
|
|
|
|
# Remove requests.Response typings
|
|
content = re.sub(
|
|
r": requests\.Response",
|
|
r"",
|
|
content,
|
|
)
|
|
|
|
if content != content_orig:
|
|
logger.info("Applied code modifications on %s", file)
|
|
|
|
file.write_text(content)
|
|
|
|
|
|
def main(check: bool = False) -> int:
|
|
with TemporaryDirectory() as tmp_dir:
|
|
tmp_dir_path = Path(tmp_dir)
|
|
logger.info("Created temporary directory %s", tmp_dir_path)
|
|
|
|
check_call(["git", "clone", "--depth=1", "--branch", HCLOUD_VERSION, HCLOUD_SOURCE_URL, tmp_dir_path])
|
|
logger.info("Cloned the source files in %s", tmp_dir_path)
|
|
|
|
apply_code_modifications(tmp_dir_path / "hcloud")
|
|
logger.info("Applied code modifications on the source files")
|
|
|
|
rmtree(HCLOUD_VENDOR_PATH)
|
|
move(tmp_dir_path / "hcloud", HCLOUD_VENDOR_PATH)
|
|
logger.info("Bundled the modified sources files in the collection")
|
|
|
|
if check:
|
|
check_call(["git", "diff", "--exit-code", "--", HCLOUD_VENDOR_PATH])
|
|
|
|
return 0
|
|
|
|
|
|
if __name__ == "__main__":
|
|
logging.basicConfig(level=logging.INFO, format="%(levelname)-8s: %(message)s")
|
|
|
|
parser = ArgumentParser()
|
|
parser.add_argument("--check", action="store_true", default=False)
|
|
args = parser.parse_args()
|
|
|
|
raise SystemExit(main(check=args.check))
|