1
0
Fork 0
mirror of https://github.com/ansible-collections/community.general.git synced 2024-09-14 20:13:21 +02:00
Commit graph

383 commits

Author SHA1 Message Date
patchback[bot]
dcb38bece0
[PR #7461/d05932fb backport][stable-8] Add option to proxmox dynamic inventory to exclude nodes (#7606)
Add option to proxmox dynamic inventory to exclude nodes (#7461)

* Create option to exclude proxmox nodes

* improve node exclusion by only remove the top level group

* add fragment

* Update changelogs/fragments/7437-proxmox-inventory-add-exclude-nodes.yaml

Co-authored-by: Felix Fontein <felix@fontein.de>

* Update plugins/inventory/proxmox.py

Co-authored-by: Felix Fontein <felix@fontein.de>

* Rework node exclusion

* Update fragement PR number

* include release version in option

Co-authored-by: Felix Fontein <felix@fontein.de>

* Clarify description

* Update unit test

* Fix typos in unit test

* Fix additonal typos in test

* Fix CI

* Fixing yet another whitespace pep error

---------

Co-authored-by: Felix Fontein <felix@fontein.de>
(cherry picked from commit d05932fb2c)

Co-authored-by: IamLunchbox <56757745+IamLunchbox@users.noreply.github.com>
2023-11-26 17:35:57 +01:00
patchback[bot]
c82c375aef
[PR #7538/938aec49 backport][stable-8] [keycloak_user_federation]: Adding option krbPrincipalAttribute (#7605)
[keycloak_user_federation]: Adding option krbPrincipalAttribute (#7538)

* keycloak_user_federation: Adding support for krbPrincipalAttribute

Signed-off-by: boolman <boolman@gmail.com>

* pr/7538 adding changelogs/fragment file

Signed-off-by: boolman <boolman@gmail.com>

* Update changelogs/fragments/7538-add-krbprincipalattribute-option.yml

Co-authored-by: Felix Fontein <felix@fontein.de>

* Update plugins/modules/keycloak_user_federation.py

Co-authored-by: Felix Fontein <felix@fontein.de>

* Update plugins/modules/keycloak_user_federation.py

Co-authored-by: Felix Fontein <felix@fontein.de>

---------

Signed-off-by: boolman <boolman@gmail.com>
Co-authored-by: Felix Fontein <felix@fontein.de>
(cherry picked from commit 938aec492e)

Co-authored-by: Boolman <boolman@gmail.com>
2023-11-26 17:35:45 +01:00
patchback[bot]
76d011ed4b
[PR #7515/5147c494 backport][stable-8] Add support for loopback type in nmcli module (#7566)
Add support for loopback type in nmcli module (#7515)

* add support for loopback devices

* add support for loopback devices

* fix yamllint issue in changelog fragment

* Fix yamlint warning and add note about new connectin type in docs

* change order of lines in documentation so they are sorted

(cherry picked from commit 5147c49498)

Co-authored-by: Alex Groshev <38885591+haddystuff@users.noreply.github.com>
2023-11-22 09:26:04 +01:00
patchback[bot]
8eb3003894
[PR #7560/9b163926 backport][stable-8] test helper: Helper.from_module() injects test function into test module (#7562)
test helper: Helper.from_module() injects test function into test module (#7560)

(cherry picked from commit 9b16392648)

Co-authored-by: Alexei Znamensky <103110+russoz@users.noreply.github.com>
2023-11-22 09:11:12 +01:00
patchback[bot]
a76537b24f
[PR #7116/f8652571 backport][stable-8] Support 1Password Connect (#5588) (#7536)
Support 1Password Connect (#5588) (#7116)

* Support 1Password Connect (#5588)

- Support 1Password Connect with the opv2 client

* Follow pep8, be less explicit

* Update changelog to include PR

* 1Password Connect host and token are now also parameters

* Get argument values from the environment or lookup arguments

* Move imports

* Force using Connect token and host at the same time

* Update unit tests

* Update documentation

* Additional tests

(cherry picked from commit f8652571f7)

Co-authored-by: Xeryus Stokkel <XeryusTC@users.noreply.github.com>
2023-11-16 21:02:54 +01:00
patchback[bot]
bf284a01cb
[PR #7499/d0870a02 backport][stable-8] infiniband and bond interfaces can receive MTU settings too (#7527)
infiniband and bond interfaces can receive MTU settings too (#7499)

* infiniband and bond interfaces can receive MTU settings too

* adding test for default mtu setting

* the mtu parameter for infiniband is different than for ethernet

* adding changelog fragment

* Update changelogs/fragments/7499-allow-mtu-setting-on-bond-and-infiniband-interfaces.yml

Co-authored-by: Felix Fontein <felix@fontein.de>

---------

Co-authored-by: Felix Fontein <felix@fontein.de>
(cherry picked from commit d0870a022e)

Co-authored-by: mark-tomich <tomichms@nih.gov>
2023-11-15 22:13:22 +01:00
Felix Fontein
2b62826082
Fix more typos (#7439)
* Fix more typos in plugins/.

* Fix typos in tests/unit/.

* Fix typos in tests/integration/.

* Fix more typos.

Co-authored-by: Sebastian Gumprich <rndmh3ro@users.noreply.github.com>

---------

Co-authored-by: Sebastian Gumprich <rndmh3ro@users.noreply.github.com>
2023-10-29 18:04:44 +01:00
Alexei Znamensky
3b87f58070
Test helper more (#7421)
* facter: add option to return facts instead of output variables

* Update plugins/modules/facter.py

Co-authored-by: Felix Fontein <felix@fontein.de>

* add output doc

* add changelog frag

* reversed facter.py, created facter_facts.py

* remove chglog fragment for new module

* test helper: add Helper.from_module()

* change case in variable name

---------

Co-authored-by: Felix Fontein <felix@fontein.de>
2023-10-23 23:04:18 +02:00
Alexei Znamensky
bb59962061
facter_facts: new module (#7356)
* facter: add option to return facts instead of output variables

* Update plugins/modules/facter.py

Co-authored-by: Felix Fontein <felix@fontein.de>

* add output doc

* add changelog frag

* reversed facter.py, created facter_facts.py

* remove chglog fragment for new module

* add BOTMETA entry

* adjust facters code to facters_fact, add unit test

* Update plugins/modules/facter_facts.py

Co-authored-by: Felix Fontein <felix@fontein.de>

* Update plugins/modules/facter_facts.py

Co-authored-by: Felix Fontein <felix@fontein.de>

* Update plugins/modules/facter_facts.py

Co-authored-by: Felix Fontein <felix@fontein.de>

---------

Co-authored-by: Felix Fontein <felix@fontein.de>
2023-10-22 18:11:00 +02:00
Corubba
3ae19aa28f
Handle remote_addr change in lxc connection plugin (#7373)
* Stopped container error test

* Handle remote_addr change

Detect if the remote_addr option changed, and properly "reconnect" aka
update the internal state of the plugin instance.

* Add changelog fragment

* Apply suggestions from code review

Co-authored-by: Felix Fontein <felix@fontein.de>

---------

Co-authored-by: Felix Fontein <felix@fontein.de>
2023-10-18 20:54:24 +02:00
Felix Fontein
40809ed953
Bump version of main to 8.0.0; remove deprecations, deprecate some leftovers (#7358)
* Remove disable_facts from xfconf module.

* Remove deprecated module_helper CmdMixin and users.

* Deprecate ArgFormat as well, which wasn't explicitly deprecated yet.

* Remove state=get from gconftool2.

* Remove default of access_level in gitlab_runner.

* Remove state=list from manageiq_polices.

* Remove state=list from manageiq_tags.

* Consul: when state=absent, certain options can no longer be specified.

* Remove support for Ansible 2.9 and ansible-base 2.10 from ansible_galaxy_install.

* Bump community.general version to 8.0.0.

* Fix gconftool2 tests.

* Remove mh.mixins.cmd module_utils completely.

* Re-add removed anchor on its first non-removed usage.

* remove references in return doc, refactor method _setup210plus

* remove no longer needed check in function parse_check

* improve expression

* Fix YAML.

* Lint.

---------

Co-authored-by: Alexei Znamensky <russoz@gmail.com>
2023-10-09 13:31:27 +02:00
Corubba
1bf5a44a77
Fix lxc plugin options (#7369)
* Fixture for liblxc

Add a fixture to allow testing the lxc connection plugin both with and
without liblxc being present.

Also change the test from unittest to pytest.

* Update liblxc error message

The error is not specific to python2, so remove the version. Also add
a test for it.

* Migrate to options

Because the lxc plugin was only using PlayContext properties, using host
vars like `ansible_lxc_host` didn't work. This is fixed by instead using
the `get_option` method inherited from `AnsiblePlugin`.
The options are not yet available in the `__init__` function, so the
determination of the container name is moved to the `_connect` method,
which is the first time it is actually needed.
The default for the `remote_addr` option is removed, because the string
`inventory_hostname` is not very useful. At all. This seams to have been
spread with copy&paste and a bit of cargo culting. The variable priority
already takes care of setting the value.

* Add changelog fragment

* Fix for Py2.7

`TypeError: super() takes at least 1 argument (0 given)`

* Add plugin type to changelog fragment.

* Restore untemplated default

This partially reverts commit 429d8c8cfb.

---------

Co-authored-by: Felix Fontein <felix@fontein.de>
2023-10-09 09:11:11 +02:00
Alexei Znamensky
323a1dcff8
snap: detect change by checking final state (#7340)
* snap: detect change by checking final state

* detect change in snap_status variable

* add changelog frag
2023-10-08 12:03:31 +02:00
Felix Fontein
6c9713b36c
Fix Python 3.12 unit tests (#7348)
* Re-enable Python 3.12 unit tests.

* Stop using deprecated alias.

* Stop using long deprecated subset comparison function.

* Avoid another alias.

* Fix name, add Python 2 compatibility.

* Properly make backwards compatible.
2023-10-04 23:23:11 +02:00
Val V
8dc5a60294
Support for simpleinit-msb init system (#6618)
* Support for simpleinit-msb init system

* Drop unused imports

* Correct regex

* Fix documentation

* Address BOTMETA

* PEP8 compliance

* Drop irrelevant snippet

* Add missing option type in docs

* PEP8 compliance

* Update plugins/modules/simpleinit_msb.py

Co-authored-by: Felix Fontein <felix@fontein.de>

* Update plugins/modules/simpleinit_msb.py

Co-authored-by: Felix Fontein <felix@fontein.de>

* Update plugins/modules/simpleinit_msb.py

Co-authored-by: Felix Fontein <felix@fontein.de>

* Daemonize commands in service control to handle telinit broken behavior

* Update plugins/modules/simpleinit_msb.py

Co-authored-by: Felix Fontein <felix@fontein.de>

* Update plugins/modules/simpleinit_msb.py

Co-authored-by: Felix Fontein <felix@fontein.de>

* Update plugins/modules/simpleinit_msb.py

Co-authored-by: Felix Fontein <felix@fontein.de>

* Update plugins/modules/simpleinit_msb.py

Co-authored-by: Felix Fontein <felix@fontein.de>

* Unify examples section

* Add unit tests for service state detection

* Drop unused import

* Add service enable/disable tests

* Test get_service_tools()

* Do not shadow fail_json()

* Reuse module init

* Implement service_enabled() and associated tests

* Update plugins/modules/simpleinit_msb.py

Co-authored-by: Felix Fontein <felix@fontein.de>

* Indent

* Bump version_added

* Bump requirements

* Reword and move to notes

---------

Co-authored-by: Felix Fontein <felix@fontein.de>
2023-10-03 06:37:46 +02:00
Grégoire Martini
43396efa2c
feat(redis_info): use module_utils redis to support TLS (#7267)
feat(redis_info): use redis module_utils to support TLS
2023-09-28 21:04:58 +02:00
Alexei Znamensky
9489a1ea1c
New Module: gio_mime (#7271)
* gio_mime: new module

* multiple changes

- fixed gio_mime module utils handler detection
- add message to test helper assertion
- add unit test

* gio mime output uses unicode smart quotes

* test helper: do not use skip/xfail reason messages - break in old pytest

* Update plugins/modules/gio_mime.py

Co-authored-by: Felix Fontein <felix@fontein.de>

* change exist variables to meet standards

---------

Co-authored-by: Felix Fontein <felix@fontein.de>
2023-09-20 19:29:05 +02:00
Jonathan Kamens
8a9b98273d
Add ignore_spaces option to ini_file to ignore spacing changes (#7273)
* Add `ignore_spaces` option to `ini_file` to ignore spacing changes

Add a new `ignore_spaces` option to the `ini_file` module which, if
true, prevents the module from changing a line in a file if the only
thing that would change by doing so is whitespace before or after the
`=`.

Also add test cases for this new functionality. There were previously
no tests for `ini_file` at all, and this doesn't attempt to fix that,
but it does add tests to ensure that the new behavior implemented here
as well as the old behavior in the affected code are correct.

Fixes #7202.

* Add changelog fragment

* pep8 / pylint

* remove unused import

* fix typo in comment in integration test file

* Add symlink tests to main.yml

It appears that #6546 added symlink tests but neglected to add them to
main.yml so they weren't being executed.

* ini_file symlink tests; create output files in correct location

* Add integration tests for ini_file ignore_spaces

* PR feedback
2023-09-17 13:22:22 +02:00
Alexei Znamensky
e7ff0acdac
refactor test helper context class (#7266) 2023-09-15 21:36:59 +12:00
Wouter Klein Heerenbrink
1beb38ceff
Use get(..) instead of [..] for safe lookup of value (Fixes #7240) (#7241)
A OnePassword field item might not have a value (property) when the user has omitted it (on purpose).
2023-09-13 07:48:36 +02:00
Alexei Znamensky
17c7687283
DRY: using YAML anchors and aliases (#7248) 2023-09-13 00:49:23 +12:00
Alexei Znamensky
6e3a56ffce
encapsulate test function in the helper class (#7247) 2023-09-13 00:24:10 +12:00
Alexei Znamensky
bdf8852e8d
test helper: create static methods .from_file() and .from_list() (#7239)
create static methods .from_file() and .from_list()
2023-09-12 06:42:33 +02:00
Juan Manuel Casanova González
afeeb89af6
Improvements to the jenkins_build module and new jenkins_build_info module (#7204)
* Add detach option so the task doesn't wait until the Jenkins job is finished

* Add new time_between_checks to be able to configure the sleep time between requests

* New jenkins_build_info to get information about a specific build

* Add version_added to the new module

* Add changelog fragment for jenkins_build changes

* Fix tests that required the python-jenkins module

* Remove tests that failed

Doesn't really make sense to test that with a mock

* Fix pep8 error

* Update maintainers for the jenkins_build and jenkins_build_info modules

* Improve format and add link to PR

* Move version_added documentation to the right file

* Fix incorrect examples

* Improve text format

* Fix incorrect code style

* Fix incorrect YAML for documentation

* Add version_added documentation to the new options
2023-09-10 21:28:55 +02:00
Alexei Znamensky
517e2d48eb
cpanm: using yaml-specified unit tests (#7231)
* cpanm: using yaml-specified unit tests

* add quote around URLs to appease pyaml@py26

* add changelog frag
2023-09-10 21:24:59 +02:00
xshen1
6012d2623e
feat: pagerduty_alert: Adds in use of v2 api provided (#7183)
* feat: pagerduty_alert: Adds in use of v2 api provided

* doc: Adds xishen1 to maintainer

* Pagerduty_alert: documentation change

* pagerduty_alert: update documentation

* pagerduty_alert: update periods

* pagerduty_alert: update documentation
2023-09-10 07:41:55 +02:00
Alexei Znamensky
40cad3e7a9
gconftool2: using yaml-specified unit tests (#7196)
* gconftool2: using yaml-specified unit tests

* gconftool2_info: using yaml-specified unit tests

* adjust code for skip and xfail
2023-09-02 23:30:15 +12:00
Alexei Znamensky
41bd07e372
puppet: using yaml-specified unit tests (#7193) 2023-09-02 17:41:21 +12:00
Alexei Znamensky
14bc13ba3c
further improvements (#7192)
* further improvements

* some renaming
2023-09-02 14:26:39 +12:00
Alexei Znamensky
c2d3302fc4
snap: using yaml-specified unit tests (#7191)
* snap: using yaml-specified unit tests

* remove extraneous code
2023-09-02 10:44:58 +12:00
Alexei Znamensky
ce6b2bc362
remove extraneous unused constant (#7185) 2023-09-01 06:32:31 +02:00
Alexei Znamensky
d6ebba1aea
cmd tests improvement (#7181)
* cmd tests improvement

* fix sanity

* remove commented line

* fixed class init code
2023-09-01 06:32:11 +02:00
Alexei Znamensky
6303096648
xfconf*: using yaml-specified unit tests (#7170) 2023-08-29 21:06:38 +02:00
Alexei Znamensky
8652fd9528
Refactored unit tests for modules based on CmdRunner (#7154)
* refactored unit tests for modules based on CmdRunner

* improved/fixed test helper

* fixed sanity

* refactored yaml spec out of the python file

* small adjustments
2023-08-29 22:13:52 +12:00
Alexei Znamensky
5988b9acea
npm: changed to cmdrunner (#6989)
* npm: refactor to use CmdRunner

- initial commit, not working

* better handling of parameter "production"

* add changelog frag

* fixed command call and tests

* removed extraneous commented debug code
2023-08-12 09:57:49 +02:00
Felix Fontein
a8809401ee
Avoid direct type comparisons (#7085)
Avoid direct type comparisons.
2023-08-11 09:00:54 +02:00
Sergei Antipov
2089769ccc
[proxmox_vm_info] Return empty list when requested VM doesn't exist (#7049)
* [proxmox_vm_info] Return empty list when requested VM doesn't exist

* Update documentation

* Add changelog fragment

* Address review comments

* Allow to filter by empty name

* Update plugins/modules/proxmox_vm_info.py

Co-authored-by: Felix Fontein <felix@fontein.de>

---------

Co-authored-by: Felix Fontein <felix@fontein.de>
2023-08-09 16:12:31 +02:00
Sergei Antipov
d7c1a814ea
[proxmox_vm_info] Re-use cluster resources API to use module without requiring node param (#6976)
* [proxmox_vm_info] Re-use cluster resources API to use module without requiring node param

* More consife if

* Fix use case when requesting all vms from specific node

* Add changelog fragment
2023-07-23 21:32:34 +02:00
Sergei Antipov
f9448574bd
[proxmox_kvm] Don't create VM if name is used without vmid (#6981)
* [proxmox_kvm] Don't create VM if name is used without vmid

* Add changelog and unit tests
2023-07-23 21:31:57 +02:00
Alexei Znamensky
ea6fb9da8f
snap: add param "dangerous" (#6908)
* snap: add param "dangerous"

* adjusted run_command out for simple test case

* add changelog frag
2023-07-15 12:54:39 +02:00
Chih-Hsuan Yen
cc8e2d676a
Added support in nmcli for ipv4.dns-options (#6902)
* Added support for ipv4.dns_options in nmcli module

* added support for dns6-options

* Added version added

Co-authored-by: Felix Fontein <felix@fontein.de>

* added version_added: 4.6.0 for dns6 options

* added changelog fragment

* Rename 4308-added-support-in-nmcli-for-ipvx-dns-options to 4308-added-support-in-nmcli-for-ipvx-dns-options.yml

* Update changelogs/fragments/4308-added-support-in-nmcli-for-ipvx-dns-options.yml

Co-authored-by: Felix Fontein <felix@fontein.de>

* Fix and add tests

* Update PR number and version_added

---------

Co-authored-by: Matteo Caruso <m.caruso425@gmail.com>
Co-authored-by: Felix Fontein <felix@fontein.de>
2023-07-13 22:26:42 +02:00
Sergei Antipov
7adb99855a
[proxmox_vm_info] New module to retrieve virtual machines information from Proxmox VE API (#6852)
* [proxmox_vm_info] New module to retrieve virtual machines information from Proxmox VE API

* Address review comments

* Fix seealso fragment

* Update plugins/modules/proxmox_vm_info.py

Co-authored-by: Felix Fontein <felix@fontein.de>

---------

Co-authored-by: Felix Fontein <felix@fontein.de>
2023-07-08 10:15:04 +02:00
jantari
5365647ee7
New lookup plug-in: Bitwarden Secrets Manager (#6389)
* add Bitwarden Secrets Manager lookup

* fix pep8 and yamllint complaints

* fix version_added, add maintainer and copyright notice

* document BWS_ACCESS_TOKEN env var and declare as required

* avoid returning nested list

* update 'value of a secret' example after f6c4492c

* update copyright notice in bitwarden_secrets_manager plugin

thx felixfontein

Co-authored-by: Felix Fontein <felix@fontein.de>

* rename classes to distinguish from existing bw plugin

* use AnsibleLookupError, formatting

* bump version_added to 7.0.0

Co-authored-by: Felix Fontein <felix@fontein.de>

* ci fix: python style guide calls for excessive blank lines

https://peps.python.org/pep-0008/#blank-lines

* first attempt at unit tests for bws lookup

* ci fix: remove trailing newline

* attempt to fix tests object not callable error

* address formatting, tests and pyright suggestions

* reduce scope of mocked code for more real test coverage

only the actual bws CLI call is mocked now, this should enable the
exception thrown test to succeed if I didn't add new problems

* fix undefined variable 'expected_rc'

* fix mocked _run method to return correct data types

* keep list of one element for test case comparison

* bump version_added to 7.2.0

Co-authored-by: Felix Fontein <felix@fontein.de>

---------

Co-authored-by: jantari <jantari@github.com>
Co-authored-by: Felix Fontein <felix@fontein.de>
2023-07-08 10:11:02 +02:00
genofire
9d8bec14c0
nmcli: fix empty list to replace / remove values (#6769) 2023-07-06 21:06:24 +02:00
Sergei Antipov
2d6e369d81
[proxmox_template] Fix error while uploading big ISO to Proxmox VE cluster (#6757)
* [proxmox_template] Fix error while uploading big ISO to Proxmox VE cluster

* Fix pep8 test

* Add changelog fragment

* Add notes about requests_toolbelt

* Check versions and file size

* Fix typo in notes

* Add unit test. Move try inside of each function.

* Fix sanity tests

* Add proxmoxer in requirements file

* Update integration tests

* Add proxmoxer into constraints.txt

* Address review comments

* Don't run tests on 2.6 python

* Disable Python 2.6 tests for other proxmox modules
2023-07-02 21:48:26 +02:00
Pino Toscano
867704dd75
rhsm_repository: refactor handling of subscription-manager (#6783)
Create a small helper class Rhsm, so all the logic related to the
interaction with subscription-manager is grouped there:
- create the Rhsm object in main(), once the initial checks are done
- search subscription-manager as required (so there is no need to
  manually check it), and store its path for reuse
- store the common arguments for running subscription-manager
- move run_subscription_manager() to Rhsm as run_repos()
- get rid of the different list parameters: we list only all the
  repositories, so the other cases are not needed (and can be added
  easily, if needed)
- move get_repository_list() to Rhsm as list_repositories()

The execution of subscription-manager is improved as well:
- pass the arguments to run_command() directly as list, rather than
  joining the arguments to string, which run_command() will need to
  split again
- move the "repos" parameter directly in run_repos()
- explicitly disable the shell, already off by default
- disable the expansions of variables, as there are none

Adapt the unit test to the different way run_command() is called.

There should be no behaviour changes.
2023-07-02 21:44:53 +02:00
Alexei Znamensky
eb734d03c0
snap: fix bug when processing output (#6826)
* snap: fix bug when processing output

* add changelog frag
2023-07-02 21:27:50 +02:00
Pino Toscano
08fa05f05f
rhsm_repository: add an initial unit test (#6758)
So far there are no tests for the rhsm_repository module, which makes it
difficult to do even basic changes. Hence, add an initial version of
unit tests, heavily based on the approach of the redhat_subscription
unit tests.
2023-06-24 12:32:54 +02:00
Skrekulko
cd48e818ae
Keycloak: Authentication required actions management (#6732)
* feat: keycloak required actions

* Update plugins/modules/keycloak_authentication_required_actions.py

Co-authored-by: Felix Fontein <felix@fontein.de>

* Update plugins/modules/keycloak_authentication_required_actions.py

Co-authored-by: Felix Fontein <felix@fontein.de>

* fix: dedent

* fix: unnecessary defaults

* fix: sanity checks

* Update plugins/modules/keycloak_authentication_required_actions.py

Co-authored-by: Felix Fontein <felix@fontein.de>

* fix: ident

---------

Co-authored-by: Skrekulko <Skrekulko@users.noreply.github.com>
Co-authored-by: Felix Fontein <felix@fontein.de>
2023-06-20 19:18:26 +02:00
Laszlo Szomor
4871140696
lvg_rename: New module to support VG renaming (#6721)
* lvg_rename: New module to support VG renaming

* Remove vg option aliases

Fix YAML boolean case-formatting

Co-authored-by: Felix Fontein <felix@fontein.de>

---------

Co-authored-by: Felix Fontein <felix@fontein.de>
2023-06-19 13:11:03 +02:00