1
0
Fork 0
mirror of https://github.com/ansible-collections/hetzner.hcloud.git synced 2026-02-03 23:51:48 +00:00
hetzner.hcloud/scripts/vendor.py
renovate[bot] 2e10017aa9
chore(deps): update dependency hcloud to v2.11.0 (#734)
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` |
[![age](https://developer.mend.io/api/mc/badges/age/pypi/hcloud/2.11.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![confidence](https://developer.mend.io/api/mc/badges/confidence/pypi/hcloud/2.10.0/2.11.0?slim=true)](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
([#&#8203;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>
2025-11-10 12:08:48 +01:00

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))