snap: fix case when snap list is empty (#7124)
* fix case when snap list is empty
* add changelog frag
(cherry picked from commit 33998a5b70)
Co-authored-by: Alexei Znamensky <103110+russoz@users.noreply.github.com>
Add support for Redfish PowerCycle reset type (#7113)
* Add support for Redfish PowerCycle reset type
* Add changelog frament
(cherry picked from commit 6a558734f7)
Co-authored-by: Scott Seekamp <sseekamp@coreweave.com>
freebsd: shutdown -p ... on freebsd to power off machine (#7102)
* freebsd: shutdown -p ... on freebsd to power off machine
* Use shutdown -p ... on FreeBSD such that the machine is halted and
powered off (-p) otherwise the machine is halted (-h) but remains on.
* Update changelogs/fragments/7102-freebsd-shutdown-p.yml
Co-authored-by: Felix Fontein <felix@fontein.de>
---------
Co-authored-by: Felix Fontein <felix@fontein.de>
(cherry picked from commit 55cfd27be9)
Co-authored-by: Derek Schrock <dereks@lifeofadishwasher.com>
lvol: Fix pct of origin (#7053)
* add support for percentage of origin size for creating snapshot volumes
* add changelog fragment
* add pull request link
Co-authored-by: Felix Fontein <felix@fontein.de>
* fix what's not idempotent
---------
Co-authored-by: Felix Fontein <felix@fontein.de>
(cherry picked from commit a0c67a8894)
Co-authored-by: Bob Mader <bmader@redhat.com>
sorcery: update only specified grimoires (#7091)
* sorcery: update only specified grimoires
* Update plugins/modules/sorcery.py
Co-authored-by: Felix Fontein <felix@fontein.de>
* Add a flag to omit listing new repositories before add/remove
* No need to append an empty string
---------
Co-authored-by: Felix Fontein <felix@fontein.de>
(cherry picked from commit f7176df480)
Co-authored-by: Vlad Glagolev <vaygr@users.noreply.github.com>
Follow DMTF redfish deprecation on StorageControllers (#7081)
* Get controller information from "Controllers" field instead of "StorageControllers" which is deprecated
* Add changelog fragment
* Changelog fragment writing guide formatting
* For consistency, get_disk_inventory and get_volume_inventory use Controllers key instead of StorageControllers to obtain controller name
---------
Co-authored-by: Pierre-yves FONTANIERE <pyf@cc.in2p3.fr>
(cherry picked from commit fe3eec0122)
Co-authored-by: Pierre-yves Fontaniere <pyfontan@cc.in2p3.fr>
Avoid direct type comparisons (#7085)
Avoid direct type comparisons.
(cherry picked from commit a8809401ee)
Co-authored-by: Felix Fontein <felix@fontein.de>
[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>
(cherry picked from commit 2089769ccc)
Co-authored-by: Sergei Antipov <greendayonfire@gmail.com>
Add grimoire management to sorcery module (#7012)
* Add grimoire management to sorcery module
* Add changelog fragment
* Bump copyright year
* Separate update_cache and latest state
* Apply suggestions from code review
Co-authored-by: Felix Fontein <felix@fontein.de>
* Add note on latest state and cache_update link
* Unblock execution of multiple stages
* Update plugins/modules/sorcery.py
Co-authored-by: Felix Fontein <felix@fontein.de>
* Update Codex logic to match Sorcery
---------
Co-authored-by: Felix Fontein <felix@fontein.de>
(cherry picked from commit d74425580b)
Co-authored-by: Vlad Glagolev <vaygr@users.noreply.github.com>
ejabberd_user: bug fixes + tests (#7033)
* ejabberd_user: bug fixes + tests
* fix changed property
* add license to handler file
* adjustments to test
* add needs/target/setup_epel to aliases
* further adjustments to integration tests
* add target to integration tests
* add some skips to test
* skip centos as it has no ejabberd
* skip fedora as it has no ejabberd
* discard unused epel setup
* add changelog frag
* remove ejabberd before tests
* fix typo
(cherry picked from commit c1f2f126cf)
Co-authored-by: Alexei Znamensky <103110+russoz@users.noreply.github.com>
Documentation to reflect newer Proxmox VE boot string format (#7036)
Co-authored-by: jonathan lung <lungj@heresjono.com>
(cherry picked from commit d08924d759)
Co-authored-by: Jonathan Lung <lungj@users.noreply.github.com>
snap: Only treat `---` as an info separator when it's preceded by newline (#7046)
* Only treat `---` as an info separator when it's preceded by newline
The code for splitting the output of `snap info` for multiple snaps
can't assume that `---` separates snaps any time it appears in the
output; it needs to treat that as the separator only when it's at the
start of a line. Otherwise it breaks if any snap uses `---` in its
description text, which, e.g., the `bw` snap does as of the date of
this commit.
Fixes#7045.
* Add changelog fragment
* Add a comment explaining why \n is necessary before ---
* Update changelogs/fragments/7046-snap-newline-before-separator.yml
Co-authored-by: Felix Fontein <felix@fontein.de>
---------
Co-authored-by: Jonathan Kamens <jik@jik5.kamens.us>
Co-authored-by: Alexei Znamensky <103110+russoz@users.noreply.github.com>
Co-authored-by: Felix Fontein <felix@fontein.de>
(cherry picked from commit c7fa11d576)
Co-authored-by: Jonathan Kamens <jik@kamens.us>
* Revert "[PR #7020/b46d5d81 backport][stable-7] redfish_utils: Add support for "nextLink" property tag pagination (#7026)"
This reverts commit 1dad95370e.
* Revert "[PR #6914/17b4219b backport][stable-7] proxmox_kvm: enable 'force' restart of vm (as documented) (#6997)"
This reverts commit 7d68af57af.
* Revert "[PR #6976/d7c1a814 backport][stable-7] [proxmox_vm_info] Re-use cluster resources API to use module without requiring node param (#6993)"
This reverts commit fb3768aada.
Rundeck - fix TypeError on 404 api response (#6983)
* fix TypeError on 404 api response
* add changelog fragment
* Update changelogs/fragments/6983-rundeck-fix-typerrror-on-404-api-response.yml
Co-authored-by: Felix Fontein <felix@fontein.de>
---------
Co-authored-by: Vincent CHARLES <vincent.charles@swatchgroup.com>
Co-authored-by: Felix Fontein <felix@fontein.de>
(cherry picked from commit a942545dd2)
Co-authored-by: Vincent CHARLES <124702855+MehuiSeklayr@users.noreply.github.com>
Add example for ECS Fargate/EFS Jenkins authentication (#6991)
* Add example for ECS Fargate/EFS Jenkins authentication
Since ECS Fargate is serverless, one cannot access its jenkins_home other than from a machine (EC2 for example) that actually mounts and owns its EFS storage.
That way we provide user/group of a defatul local user which has the same uid/gid 1000 as the default jenkins user inside the container and also can authenticate at Jenkins URL.
I feel this is not as straightforward from the docs and someone might benefit from such an example being present
* Added an empty line
* Float value now in single quotes
* Use UID/GID instead user/group name
(cherry picked from commit 00bfc3e131)
Co-authored-by: TeekWan <74403302+teekwan@users.noreply.github.com>
redfish_utils: Add support for "nextLink" property tag pagination (#7020)
* Add support for Redfish "nextLink" property tag pagination for
FirmwareInventory
* Add changelog fragment
* Fix indention
* Updated fragment per suggestion
Co-authored-by: Felix Fontein <felix@fontein.de>
---------
Co-authored-by: Felix Fontein <felix@fontein.de>
(cherry picked from commit b46d5d8197)
Co-authored-by: Scott Seekamp <sseekamp@coreweave.com>
proxmox_kvm: enable 'force' restart of vm (as documented) (#6914)
* enable 'force' restart of vm
* added changelog fragment
* Update changelogs/fragments/6914-proxmox_kvm-enable-force-restart.yml
Co-authored-by: Felix Fontein <felix@fontein.de>
---------
Co-authored-by: Felix Fontein <felix@fontein.de>
(cherry picked from commit 17b4219b8b)
Co-authored-by: Jeff Turner <jeff@torusoft.com>
[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
(cherry picked from commit d7c1a814ea)
Co-authored-by: Sergei Antipov <greendayonfire@gmail.com>
[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
(cherry picked from commit f9448574bd)
Co-authored-by: Sergei Antipov <greendayonfire@gmail.com>
[proxmox] Use proxmoxer_version instead of server API version (#6980)
* Use proxmoxer_version instead of server API version
* Add changelog fragment
(cherry picked from commit 796ad3565e)
Co-authored-by: Sergei Antipov <greendayonfire@gmail.com>
keycloak_authz_permission*: adjust to semantic markup (#6964)
Adjust to semantic markup.
(cherry picked from commit 3ce4fe8dd8)
Co-authored-by: Felix Fontein <felix@fontein.de>
Fix key error for reverse zone (#6905) (#6906)
* Fix key error for reverse zone (#6905)
* Add changelog fragment for #6905
* Fix changelog (6905)
Co-authored-by: Felix Fontein <felix@fontein.de>
---------
Co-authored-by: Felix Fontein <felix@fontein.de>
(cherry picked from commit b818afd464)
Co-authored-by: irozet12 <119814380+irozet12@users.noreply.github.com>
machinectl become plugin: mark as require_tty (#6935)
Mark machinectl become plugin as require_tty.
(cherry picked from commit 24feb1dd10)
Co-authored-by: Felix Fontein <felix@fontein.de>
rhsm_repository: refactor parsing of "subscription-manager repos" output (#6837)
Simplify a bit (and possibly speed it up a little) the parsing of the
output of `subscription-manager repos --list`:
- simplify skipping the lines that are not interesting: check the first
character only, as it is enough to determine whether it contains
repository data or not
- check the start of each line manually, rather than with regexp: a
simple slice + lstrip() gives the same result
(cherry picked from commit e0324cdc90)
Co-authored-by: Pino Toscano <ptoscano@redhat.com>
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>
(cherry picked from commit cc8e2d676a)
Co-authored-by: Chih-Hsuan Yen <1937689+yan12125@users.noreply.github.com>
feature(yum_versionlock): add support to pin specific package versions (#6861)
feature(yum_versionlock): add support to pin specific package versions instead of only the package itself
(cherry picked from commit 2bf85cca51)
Co-authored-by: Florian <4150400+gyptazy@users.noreply.github.com>
Redfish: Added support for displaying and setting account types (#6871)
* Redfish: Added support for displaying and setting account types
Signed-off-by: Mike Raineri <michael.raineri@dell.com>
* Update 6823-redfish-add-account-type-management.yml
* CI fixes
Signed-off-by: Mike Raineri <michael.raineri@dell.com>
---------
Signed-off-by: Mike Raineri <michael.raineri@dell.com>
(cherry picked from commit 9adc82d5d1)
Co-authored-by: Mike Raineri <michael.raineri@dell.com>
[datadog_downtime] - added 'type' to recurrence object when rrule param is present (#6811)
* added 'type' to recurrence object when rrule param is present
* formatting cleanup
(cherry picked from commit fc74f9a4f2)
Co-authored-by: Simon Keil <freezer_xx@gmx.de>
pacman: support yay as root (#6713)
* pacman: support yay as root
* make pylint happy
* minor adjustments
* rollback some test actions
* removal of user and pkgs in handlers
* add comment to note
* add changelog frag
* fix doc
* Update tests/integration/targets/pacman/tasks/yay-become.yml
Co-authored-by: Felix Fontein <felix@fontein.de>
* Update tests/integration/targets/pacman/tasks/yay-become.yml
Co-authored-by: Felix Fontein <felix@fontein.de>
* simplify pkg install in int. tests
---------
Co-authored-by: Felix Fontein <felix@fontein.de>
(cherry picked from commit f6ee2177a2)
Co-authored-by: Alexei Znamensky <103110+russoz@users.noreply.github.com>
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>
(cherry picked from commit 5365647ee7)
Co-authored-by: jantari <jantari@outlook.de>
snap: add track 'latest' if no track is specified (#6835)
* snap: add track 'latest' if no track is specified
See https://snapcraft.io/docs/channels for more details.
* snap: assume track latest if channel does not specify it
(cherry picked from commit dc0d00452f)
Co-authored-by: Alexei Znamensky <103110+russoz@users.noreply.github.com>
[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>
(cherry picked from commit 7adb99855a)
Co-authored-by: Sergei Antipov <greendayonfire@gmail.com>
chroot: added an example (#6824)
* chroot: added an example
Added a simple example of chroot connection plugin
Fixes: #6365
Signed-off-by: Abhijeet Kasurde <akasurde@redhat.com>
* Apply suggestions from code review
Co-authored-by: Felix Fontein <felix@fontein.de>
---------
Signed-off-by: Abhijeet Kasurde <akasurde@redhat.com>
Co-authored-by: Felix Fontein <felix@fontein.de>
(cherry picked from commit 59479b4abd)
Co-authored-by: Abhijeet Kasurde <akasurde@redhat.com>
proxmox: default value when checking for dict key (#6838)
* proxmox: default value when checking for dict key
* add changelog frag
(cherry picked from commit 49349fce5e)
Co-authored-by: Alexei Znamensky <103110+russoz@users.noreply.github.com>
Refactor consul_session to support authentication with tokens (#6755)
* Split into separate PR
* Refactor test, add author to inactive maintainers
* Add changelog fragment and correct requirements section on module documentation
* Add changelog fragment and correct requirements section on module documentation
* Update changelogs/fragments/6755-refactor-consul-session-to-use-requests-lib-instead-of-consul.yml
Co-authored-by: Felix Fontein <felix@fontein.de>
---------
Co-authored-by: Valerio Poggi <vrpoggigmail.com>
Co-authored-by: Felix Fontein <felix@fontein.de>
(cherry picked from commit 242258eb53)
Co-authored-by: Valerio Poggi <106782233+valeriopoggi@users.noreply.github.com>
proxmox_kvm: Add required timeout arg when force deleting (#6827)
* Add required timeout arg when force deleting
* Add changelog fragment
* Update changelogs/fragments/6827-proxmox_kvm-force-delete-bug-fix.yaml
Co-authored-by: Felix Fontein <felix@fontein.de>
---------
Co-authored-by: Felix Fontein <felix@fontein.de>
(cherry picked from commit 216962a98c)
Co-authored-by: Drew Brown <drew@drewburr.com>
Add example for github_key in a single task (#6854)
* Add example for github_key in a single task
* Update plugins/modules/github_key.py
Co-authored-by: Felix Fontein <felix@fontein.de>
---------
Co-authored-by: Felix Fontein <felix@fontein.de>
(cherry picked from commit 99a35b1664)
Co-authored-by: Seige <charliefjennings+git@gmail.com>
npm: replace test with required_if (#6848)
* npm: replace test with required_if
* add changelog frag
(cherry picked from commit 11406715f5)
Co-authored-by: Alexei Znamensky <103110+russoz@users.noreply.github.com>
proxmox module utils: better error msg when token fails with old proxmoxer (#6839)
* proxmox module utils: clear msg when token fails with old proxmoxer
* add changelog frag
* better way to determine version
(cherry picked from commit e5dc697887)
Co-authored-by: Alexei Znamensky <103110+russoz@users.noreply.github.com>
htpasswd: minor updates in the docs (#6840)
* htpasswd: minor updates in the docs
* remove double spaces
(cherry picked from commit b6883492c7)
Co-authored-by: Alexei Znamensky <103110+russoz@users.noreply.github.com>
Revert "proxmox_kvm: remove non-working example (#6498)" (#6832)
This reverts commit 61a0dc4370.
(cherry picked from commit 92ea63e20b)
Co-authored-by: Felix Fontein <felix@fontein.de>
[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
(cherry picked from commit 2d6e369d81)
Co-authored-by: Sergei Antipov <greendayonfire@gmail.com>
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.
(cherry picked from commit 867704dd75)
Co-authored-by: Pino Toscano <ptoscano@redhat.com>
locale_gen: works with C.UTF-8 (#6774)
* locale_gen: fix
* test working with C.UTF-8
* working with locale eo
* handle C.UTF-8 edge cases
* grammatic pedantism
* add changelog frag
* add doc about specific OS support
* update changelog frag
(cherry picked from commit 3fd4cdb119)
Co-authored-by: Alexei Znamensky <103110+russoz@users.noreply.github.com>
random_string docs to say it's cryptographically secure (#6691)
Modify random_string docs to state that randomness is cryptographically secure
(cherry picked from commit 89ad18d1a7)
Co-authored-by: Matthew Davis <7035647+mdavis-xyz@users.noreply.github.com>
Module `proxmox_kvm` `restarted` state bug fix (#6773)
* Change proxmox_kvm restart to use new method
Previously, the `restarted` state used both stop and start vm functions to restart a vm.
This change introduces the a new function that utilizes the proxmox reboot endpoint instead for a more reliable method of restarting a vm.
* Create 6773-proxmox_kvm-restarted-state-bug-fix.yaml
* Fix typo
* Add link to PR
* Chanel log fragment formatting changes
* Move try/catch to `restart_vm` function
* Update changelogs/fragments/6773-proxmox_kvm-restarted-state-bug-fix.yaml
Co-authored-by: Felix Fontein <felix@fontein.de>
---------
Co-authored-by: Felix Fontein <felix@fontein.de>
(cherry picked from commit 3571df837d)
Co-authored-by: Juan Estupinan <65736594+juan210012@users.noreply.github.com>
Fix multiple issues with the TSS lookup plugin when using fetch_attachments (#6720)
* Treat files as binary when downloading attachments
* Raise a warning when the attachment can't be read
* Set the 'itemValue' for files, even when they can't be read
* Always return the original secret content
* Add changelog
* Fix changelog
* Update changelog
Co-authored-by: Felix Fontein <felix@fontein.de>
* Revert "Always return the original secret content"
This reverts commit a9fb96e165.
---------
Co-authored-by: Felix Fontein <felix@fontein.de>
(cherry picked from commit 6bff57ee6e)
Co-authored-by: laszlojau <49835454+laszlojau@users.noreply.github.com>
rhsm_repository: update returned "repositories" when using "purge=true" (#6676)
In case the "purge" option was enabled, the "repositories" element in
the returned JSON was not updated with the repositories disabled by that
option.
(cherry picked from commit ffb9b6ff96)
Co-authored-by: Pino Toscano <ptoscano@redhat.com>
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>
(cherry picked from commit 4871140696)
Co-authored-by: Laszlo Szomor <laszomor@gmail.com>
filesystem: add UUID change feature (#6680)
* filesystem: add UUID change feature
* Add changelog fragment for 6680
* Do not test XFS filesystem UUID reset on FreeBSD
FreeBSD error: xfs_admin: only 'rewrite' supported on V5 fs
* Apply suggestions from code review #1
Co-authored-by: Felix Fontein <felix@fontein.de>
* Set filesystem UUID on FS creation
* Fix tests - switch to ansible.builtion.to_uuid
* Fix tests - Refactor to avoid FS remove tasks
* Fail if uuid option not yet supported for fstype
* Set resizefs and uuid options mutually exclusive
* Apply suggestions from code review no 2.
Co-authored-by: Felix Fontein <felix@fontein.de>
---------
Co-authored-by: Felix Fontein <felix@fontein.de>
(cherry picked from commit 5d9eb8be95)
Co-authored-by: Laszlo Szomor <laszomor@gmail.com>
lvg: add UUID reset and active state management feature (#6682)
* lvg: add UUID reset, rename, active switch feature
* Add changelog fragment for 6682
* Fix Sanity 2.15,devel tests
* Fix issue with LVM autoactivation
* Remove rename implementation
Add active/inactive states
Fix errors when a PV is missing
Apply suggestions from code review
Co-authored-by: Felix Fontein <felix@fontein.de>
* Update plugins/modules/lvg.py
Co-authored-by: Felix Fontein <felix@fontein.de>
---------
Co-authored-by: Felix Fontein <felix@fontein.de>
(cherry picked from commit 24aeedbc15)
Co-authored-by: Laszlo Szomor <laszomor@gmail.com>