diff --git a/CHANGELOG.md b/CHANGELOG.md
index 4093d7c5ef..8c97947bd8 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -2,55 +2,111 @@
**Topics**
-- v12\.3\.0
+- v12\.4\.0
- Release Summary
- Minor Changes
- Bugfixes
- New Plugins
- - Filter
-- v12\.2\.0
+ - Callback
+ - New Modules
+- v12\.3\.0
- Release Summary
- Minor Changes
- - Deprecated Features
- Bugfixes
- - New Modules
-- v12\.1\.0
+ - New Plugins
+ - Filter
+- v12\.2\.0
- Release Summary
- Minor Changes
- - Deprecated Features
+ - Deprecated Features
- Bugfixes
- New Modules
-- v12\.0\.1
+- v12\.1\.0
- Release Summary
- Minor Changes
+ - Deprecated Features
- Bugfixes
-- v12\.0\.0
+ - New Modules
+- v12\.0\.1
- Release Summary
- Minor Changes
+ - Bugfixes
+- v12\.0\.0
+ - Release Summary
+ - Minor Changes
- Breaking Changes / Porting Guide
- Deprecated Features
- Removed Features \(previously deprecated\)
- Security Fixes
- - Bugfixes
- - New Plugins
- - Callback
+ - Bugfixes
+ - New Plugins
+ - Callback
- Filter
- Inventory
- Lookup
- - New Modules
+ - New Modules
This changelog describes changes after version 11\.0\.0\.
-
-## v12\.3\.0
+
+## v12\.4\.0
### Release Summary
-Regular feature and bugfix release\.
+Regular bugfix and feature release\.
### Minor Changes
+* ModuleHelper module utils \- allow to ignore specific exceptions in module\_fails\_on\_exception decorator \([https\://github\.com/ansible\-collections/community\.general/pull/11488](https\://github\.com/ansible\-collections/community\.general/pull/11488)\)\.
+* from\_ini filter plugin \- add delimiters parameter to allow correctly parsing more INI documents \([https\://github\.com/ansible\-collections/community\.general/issues/11506](https\://github\.com/ansible\-collections/community\.general/issues/11506)\, [https\://github\.com/ansible\-collections/community\.general/pull/11512](https\://github\.com/ansible\-collections/community\.general/pull/11512)\)\.
+* keycloak\_client \- add valid\_post\_logout\_redirect\_uris option to configure post logout redirect URIs for a client\, and backchannel\_logout\_url option to configure the backchannel logout URL for a client \([https\://github\.com/ansible\-collections/community\.general/issues/6812](https\://github\.com/ansible\-collections/community\.general/issues/6812)\, [https\://github\.com/ansible\-collections/community\.general/issues/4892](https\://github\.com/ansible\-collections/community\.general/issues/4892)\, [https\://github\.com/ansible\-collections/community\.general/pull/11473](https\://github\.com/ansible\-collections/community\.general/pull/11473)\)\.
+* keycloak\_client\_rolemapping\, keycloak\_realm\_rolemapping\, keycloak\_group \- optimize retrieval of groups by name to use Keycloak search API with exact matching instead of fetching all groups \([https\://github\.com/ansible\-collections/community\.general/pull/11503](https\://github\.com/ansible\-collections/community\.general/pull/11503)\)\.
+* keycloak\_realm \- add support for localizationTexts option in Keycloak realms \([https\://github\.com/ansible\-collections/community\.general/pull/11513](https\://github\.com/ansible\-collections/community\.general/pull/11513)\)\.
+* keycloak\_realm\_key \- add support for auto\-generated key providers \(rsa\-generated\, rsa\-enc\-generated\, hmac\-generated\, aes\-generated\, ecdsa\-generated\, ecdh\-generated\, eddsa\-generated\)\, java\-keystore provider\, additional algorithms \(HMAC\, ECDSA\, ECDH\, EdDSA\, AES\)\, and new config options \(secret\_size\, key\_size\, elliptic\_curve\, keystore\, keystore\_password\, key\_alias\, key\_password\)\. Also makes config\.private\_key and config\.certificate optional as they are only required for imported key providers \([https\://github\.com/ansible\-collections/community\.general/pull/11468](https\://github\.com/ansible\-collections/community\.general/pull/11468)\)\.
+* redfish\_info \- add Redfish Root data to results of successful CheckAvailability command \([https\://github\.com/ansible\-collections/community\.general/pull/11504](https\://github\.com/ansible\-collections/community\.general/pull/11504)\)\.
+* seport \- adds support for DCCP and SCTP protocols \([https\://github\.com/ansible\-collections/community\.general/pull/11486](https\://github\.com/ansible\-collections/community\.general/pull/11486)\)\.
+
+
+### Bugfixes
+
+* keycloak module utils \- fix TypeError crash when managing users whose username or email contains special characters such as \+ \([https\://github\.com/ansible\-collections/community\.general/issues/10305](https\://github\.com/ansible\-collections/community\.general/issues/10305)\, [https\://github\.com/ansible\-collections/community\.general/pull/11472](https\://github\.com/ansible\-collections/community\.general/pull/11472)\)\.
+* keycloak module utils \- use proper URL encoding \(urllib\.parse\.quote\) for query parameters in authorization permission name searches\, replacing fragile manual space replacement \([https\://github\.com/ansible\-collections/community\.general/pull/11472](https\://github\.com/ansible\-collections/community\.general/pull/11472)\)\.
+* keycloak\_client \- fix idempotency bug caused by null flow overrides value differences for non\-existing flow overrides \([https\://github\.com/ansible\-collections/community\.general/issues/11430](https\://github\.com/ansible\-collections/community\.general/issues/11430)\, [https\://github\.com/ansible\-collections/community\.general/pull/11455](https\://github\.com/ansible\-collections/community\.general/pull/11455)\)\.
+* keycloak\_client \- remove IDs as change from diff result for protocol mappers \([https\://github\.com/ansible\-collections/community\.general/issues/11453](https\://github\.com/ansible\-collections/community\.general/issues/11453)\, [https\://github\.com/ansible\-collections/community\.general/pull/11454](https\://github\.com/ansible\-collections/community\.general/pull/11454)\)\.
+* keycloak\_realm\_key \- fix KeyError crash when managing realm keys where Keycloak does not return active\, enabled\, or algorithm fields in the config response \([https\://github\.com/ansible\-collections/community\.general/issues/11459](https\://github\.com/ansible\-collections/community\.general/issues/11459)\, [https\://github\.com/ansible\-collections/community\.general/pull/11470](https\://github\.com/ansible\-collections/community\.general/pull/11470)\)\.
+* keycloak\_user\_federation \- mapper config item can be an array \([https\://github\.com/ansible\-collections/community\.general/issues/11502](https\://github\.com/ansible\-collections/community\.general/issues/11502)\, [https\://github\.com/ansible\-collections/community\.general/pull/11515](https\://github\.com/ansible\-collections/community\.general/pull/11515)\)\.
+* keycloak\_user\_rolemapping \- fix TypeError crash when adding a client role to a user who has no existing roles for that client \([https\://github\.com/ansible\-collections/community\.general/issues/10960](https\://github\.com/ansible\-collections/community\.general/issues/10960)\, [https\://github\.com/ansible\-collections/community\.general/pull/11471](https\://github\.com/ansible\-collections/community\.general/pull/11471)\)\.
+* maven\_artifact \- fix SNAPSHOT version resolution to pick the newest matching \ entry by \ timestamp instead of the first\. Repositories like GitHub Packages keep all historical entries in \ \(oldest first\)\, causing the module to resolve to the oldest snapshot instead of the latest \([https\://github\.com/ansible\-collections/community\.general/issues/5117](https\://github\.com/ansible\-collections/community\.general/issues/5117)\, [https\://github\.com/ansible\-collections/community\.general/issues/11489](https\://github\.com/ansible\-collections/community\.general/issues/11489)\, [https\://github\.com/ansible\-collections/community\.general/pull/11501](https\://github\.com/ansible\-collections/community\.general/pull/11501)\)\.
+* nsupdate \- fix AttributeError when using the module without TSIG authentication \([https\://github\.com/ansible\-collections/community\.general/issues/11460](https\://github\.com/ansible\-collections/community\.general/issues/11460)\, [https\://github\.com/ansible\-collections/community\.general/pull/11461](https\://github\.com/ansible\-collections/community\.general/pull/11461)\)\.
+* python\_requirements\_info \- use importlib\.metadata if pkg\_resources from setuptools cannot be imported\. That module has been removed from setuptools 82\.0\.0 \([https\://github\.com/ansible\-collections/community\.general/issues/11491](https\://github\.com/ansible\-collections/community\.general/issues/11491)\, [https\://github\.com/ansible\-collections/community\.general/pull/11492](https\://github\.com/ansible\-collections/community\.general/pull/11492)\)\.
+* splunk callback plugin \- replace deprecated callback function \([https\://github\.com/ansible\-collections/community\.general/pull/11485](https\://github\.com/ansible\-collections/community\.general/pull/11485)\)\.
+
+
+### New Plugins
+
+
+#### Callback
+
+* community\.general\.loganalytics\_ingestion \- Posts task results to an Azure Log Analytics workspace using the new Logs Ingestion API\.
+
+
+### New Modules
+
+* community\.general\.icinga2\_downtime \- Manages Icinga 2 downtimes\.
+* community\.general\.keycloak\_realm\_localization \- Allows management of Keycloak realm localization overrides via the Keycloak API\.
+
+
+## v12\.3\.0
+
+
+### Release Summary
+
+Regular feature and bugfix release\.
+
+
+### Minor Changes
+
* alicloud\_ecs module utils \- update to Python 3\.7 idioms \([https\://github\.com/ansible\-collections/community\.general/pull/11341](https\://github\.com/ansible\-collections/community\.general/pull/11341)\)\.
* android\_sdk \- update to Python 3\.7 idioms \([https\://github\.com/ansible\-collections/community\.general/pull/11343](https\://github\.com/ansible\-collections/community\.general/pull/11343)\)\.
* archive \- update to Python 3\.7 idioms \([https\://github\.com/ansible\-collections/community\.general/pull/11343](https\://github\.com/ansible\-collections/community\.general/pull/11343)\)\.
@@ -148,7 +204,7 @@ Regular feature and bugfix release\.
* zypper \- update to Python 3\.7 idioms \([https\://github\.com/ansible\-collections/community\.general/pull/11344](https\://github\.com/ansible\-collections/community\.general/pull/11344)\)\.
* zypper\_repository \- update to Python 3\.7 idioms \([https\://github\.com/ansible\-collections/community\.general/pull/11344](https\://github\.com/ansible\-collections/community\.general/pull/11344)\)\.
-
+
### Bugfixes
* cloudflare\_dns \- also allow flag\=128 for CAA records \([https\://github\.com/ansible\-collections/community\.general/issues/11355](https\://github\.com/ansible\-collections/community\.general/issues/11355)\, [https\://github\.com/ansible\-collections/community\.general/pull/11377](https\://github\.com/ansible\-collections/community\.general/pull/11377)\)\.
@@ -158,7 +214,7 @@ Regular feature and bugfix release\.
* logstash\_plugin \- fix argument order when using version parameter\. The plugin name must come after options like \-\-version for the logstash\-plugin CLI to work correctly \([https\://github\.com/ansible\-collections/community\.general/issues/10745](https\://github\.com/ansible\-collections/community\.general/issues/10745)\, [https\://github\.com/ansible\-collections/community\.general/pull/11440](https\://github\.com/ansible\-collections/community\.general/pull/11440)\)\.
* pmem \- fix test for invalid data input \([https\://github\.com/ansible\-collections/community\.general/pull/11388](https\://github\.com/ansible\-collections/community\.general/pull/11388)\)\.
-
+
### New Plugins
@@ -169,12 +225,12 @@ Regular feature and bugfix release\.
## v12\.2\.0
-
+
### Release Summary
Feature and bugfix release\.
-
+
### Minor Changes
* btrfs module utils \- make execution of external commands safer by passing arguments as list \([https\://github\.com/ansible\-collections/community\.general/pull/11240](https\://github\.com/ansible\-collections/community\.general/pull/11240)\)\.
@@ -194,7 +250,7 @@ Feature and bugfix release\.
* All module utils\, plugin utils\, and doc fragments will be made private in community\.general 13\.0\.0\. This means that they will no longer be part of the public API of the collection\, and can have breaking changes even in bugfix releases\. If you depend on importing code from the module or plugin utils\, or use one of the doc fragments\, please [comment in the issue to discuss this](https\://github\.com/ansible\-collections/community\.general/issues/11312)\. Note that this does not affect any use of community\.general in task files\, roles\, or playbooks \([https\://github\.com/ansible\-collections/community\.general/issues/11312](https\://github\.com/ansible\-collections/community\.general/issues/11312)\, [https\://github\.com/ansible\-collections/community\.general/pull/11320](https\://github\.com/ansible\-collections/community\.general/pull/11320)\)\.
-
+
### Bugfixes
* apk \- fix packages return value for apk\-tools \>\= 3 \(Alpine 3\.23\) \([https\://github\.com/ansible\-collections/community\.general/issues/11264](https\://github\.com/ansible\-collections/community\.general/issues/11264)\)\.
@@ -205,7 +261,7 @@ Feature and bugfix release\.
* monit \- add delay of 0\.5 seconds after state change and check for status \([https\://github\.com/ansible\-collections/community\.general/pull/11255](https\://github\.com/ansible\-collections/community\.general/pull/11255)\)\.
* monit \- internal state was not reflecting when operation is \"pending\" in monit \([https\://github\.com/ansible\-collections/community\.general/pull/11245](https\://github\.com/ansible\-collections/community\.general/pull/11245)\)\.
-
+
### New Modules
* community\.general\.ip2location\_info \- Retrieve IP geolocation information of a host\'s IP address\.
@@ -214,12 +270,12 @@ Feature and bugfix release\.
## v12\.1\.0
-
+
### Release Summary
Regular bugfix and feature release\.
-
+
### Minor Changes
* The last code included in the collection that was licensed under the PSF 2\.0 license was removed form the collection\. This means that now all code is either GPLv3\+ licensed\, MIT licensed\, or BSD\-2\-clause licensed \([https\://github\.com/ansible\-collections/community\.general/pull/11232](https\://github\.com/ansible\-collections/community\.general/pull/11232)\)\.
@@ -570,7 +626,7 @@ Regular bugfix and feature release\.
* saslprep module utils \- this module utils is not used by community\.general and will thus be removed from community\.general 13\.0\.0\. If you are using it from another collection\, please copy it over \([https\://github\.com/ansible\-collections/community\.general/pull/11205](https\://github\.com/ansible\-collections/community\.general/pull/11205)\)\.
* spotinst\_aws\_elastigroup \- module relies on Python package supporting Python 2\.7 only\; the module will be removed from community\.general 13\.0\.0 \([https\://github\.com/ansible\-collections/community\.general/pull/11069](https\://github\.com/ansible\-collections/community\.general/pull/11069)\)\.
-
+
### Bugfixes
* \_filelock module utils \- add type hints\. Fix bug if set\_lock\(\) is called with lock\_timeout\=None \([https\://github\.com/ansible\-collections/community\.general/pull/11222](https\://github\.com/ansible\-collections/community\.general/pull/11222)\)\.
@@ -588,7 +644,7 @@ Regular bugfix and feature release\.
* xcc\_redfish\_command \- fix templating of dictionary keys as list \([https\://github\.com/ansible\-collections/community\.general/pull/11144](https\://github\.com/ansible\-collections/community\.general/pull/11144)\)\.
* zfs \- mark change correctly when updating properties whose current value differs\, even if they already have a non\-default value \([https\://github\.com/ansible\-collections/community\.general/issues/11019](https\://github\.com/ansible\-collections/community\.general/issues/11019)\, [https\://github\.com/ansible\-collections/community\.general/pull/11172](https\://github\.com/ansible\-collections/community\.general/pull/11172)\)\.
-
+
### New Modules
* community\.general\.file\_remove \- Remove files matching a pattern from a directory\.
@@ -598,12 +654,12 @@ Regular bugfix and feature release\.
## v12\.0\.1
-
+
### Release Summary
Bugfix release for inclusion in Ansible 13\.0\.0rc1\.
-
+
### Minor Changes
* datetime module utils \- remove code for unsupported Python version \([https\://github\.com/ansible\-collections/community\.general/pull/11048](https\://github\.com/ansible\-collections/community\.general/pull/11048)\)\.
@@ -618,7 +674,7 @@ Bugfix release for inclusion in Ansible 13\.0\.0rc1\.
* tss lookup plugin \- fixed AccessTokenAuthorizer initialization to include base\_url parameter for proper token authentication \([https\://github\.com/ansible\-collections/community\.general/pull/11031](https\://github\.com/ansible\-collections/community\.general/pull/11031)\)\.
* zfs\_facts \- use Ansible construct to check result of external command \([https\://github\.com/ansible\-collections/community\.general/pull/11054](https\://github\.com/ansible\-collections/community\.general/pull/11054)\)\.
-
+
### Bugfixes
* \_filelock module utils \- improve Python code \([https\://github\.com/ansible\-collections/community\.general/pull/11043](https\://github\.com/ansible\-collections/community\.general/pull/11043)\)\.
@@ -751,12 +807,12 @@ Bugfix release for inclusion in Ansible 13\.0\.0rc1\.
## v12\.0\.0
-
+
### Release Summary
This is release 12\.0\.0 of community\.general\, released on 2025\-11\-03\.
-
+
### Minor Changes
* Modernize code for Python 3\.7\+\. This includes code reformatting\, and adding new checks to CI\, including a type checker \(mypy\)\. Most of the code does not have type hints yet\, but now it is possible to add typing hints and have these validated \([https\://github\.com/ansible\-collections/community\.general/pull/10285](https\://github\.com/ansible\-collections/community\.general/pull/10285)\, [https\://github\.com/ansible\-collections/community\.general/pull/10886](https\://github\.com/ansible\-collections/community\.general/pull/10886)\, [https\://github\.com/ansible\-collections/community\.general/pull/10891](https\://github\.com/ansible\-collections/community\.general/pull/10891)\, [https\://github\.com/ansible\-collections/community\.general/pull/10892](https\://github\.com/ansible\-collections/community\.general/pull/10892)\, [https\://github\.com/ansible\-collections/community\.general/pull/10897](https\://github\.com/ansible\-collections/community\.general/pull/10897)\, [https\://github\.com/ansible\-collections/community\.general/pull/10899](https\://github\.com/ansible\-collections/community\.general/pull/10899)\, [https\://github\.com/ansible\-collections/community\.general/pull/10902](https\://github\.com/ansible\-collections/community\.general/pull/10902)\, [https\://github\.com/ansible\-collections/community\.general/pull/10903](https\://github\.com/ansible\-collections/community\.general/pull/10903)\, [https\://github\.com/ansible\-collections/community\.general/pull/10904](https\://github\.com/ansible\-collections/community\.general/pull/10904)\, [https\://github\.com/ansible\-collections/community\.general/pull/10907](https\://github\.com/ansible\-collections/community\.general/pull/10907)\, [https\://github\.com/ansible\-collections/community\.general/pull/10908](https\://github\.com/ansible\-collections/community\.general/pull/10908)\, [https\://github\.com/ansible\-collections/community\.general/pull/10909](https\://github\.com/ansible\-collections/community\.general/pull/10909)\, [https\://github\.com/ansible\-collections/community\.general/pull/10939](https\://github\.com/ansible\-collections/community\.general/pull/10939)\, [https\://github\.com/ansible\-collections/community\.general/pull/10940](https\://github\.com/ansible\-collections/community\.general/pull/10940)\, [https\://github\.com/ansible\-collections/community\.general/pull/10941](https\://github\.com/ansible\-collections/community\.general/pull/10941)\, [https\://github\.com/ansible\-collections/community\.general/pull/10942](https\://github\.com/ansible\-collections/community\.general/pull/10942)\, [https\://github\.com/ansible\-collections/community\.general/pull/10945](https\://github\.com/ansible\-collections/community\.general/pull/10945)\, [https\://github\.com/ansible\-collections/community\.general/pull/10947](https\://github\.com/ansible\-collections/community\.general/pull/10947)\, [https\://github\.com/ansible\-collections/community\.general/pull/10958](https\://github\.com/ansible\-collections/community\.general/pull/10958)\, [https\://github\.com/ansible\-collections/community\.general/pull/10959](https\://github\.com/ansible\-collections/community\.general/pull/10959)\, [https\://github\.com/ansible\-collections/community\.general/pull/10968](https\://github\.com/ansible\-collections/community\.general/pull/10968)\, [https\://github\.com/ansible\-collections/community\.general/pull/10969](https\://github\.com/ansible\-collections/community\.general/pull/10969)\, [https\://github\.com/ansible\-collections/community\.general/pull/10970](https\://github\.com/ansible\-collections/community\.general/pull/10970)\, [https\://github\.com/ansible\-collections/community\.general/pull/10971](https\://github\.com/ansible\-collections/community\.general/pull/10971)\, [https\://github\.com/ansible\-collections/community\.general/pull/10973](https\://github\.com/ansible\-collections/community\.general/pull/10973)\, [https\://github\.com/ansible\-collections/community\.general/pull/10974](https\://github\.com/ansible\-collections/community\.general/pull/10974)\, [https\://github\.com/ansible\-collections/community\.general/pull/10975](https\://github\.com/ansible\-collections/community\.general/pull/10975)\, [https\://github\.com/ansible\-collections/community\.general/pull/10976](https\://github\.com/ansible\-collections/community\.general/pull/10976)\, [https\://github\.com/ansible\-collections/community\.general/pull/10977](https\://github\.com/ansible\-collections/community\.general/pull/10977)\, [https\://github\.com/ansible\-collections/community\.general/pull/10978](https\://github\.com/ansible\-collections/community\.general/pull/10978)\, [https\://github\.com/ansible\-collections/community\.general/pull/10979](https\://github\.com/ansible\-collections/community\.general/pull/10979)\, [https\://github\.com/ansible\-collections/community\.general/pull/10980](https\://github\.com/ansible\-collections/community\.general/pull/10980)\, [https\://github\.com/ansible\-collections/community\.general/pull/10981](https\://github\.com/ansible\-collections/community\.general/pull/10981)\, [https\://github\.com/ansible\-collections/community\.general/pull/10992](https\://github\.com/ansible\-collections/community\.general/pull/10992)\, [https\://github\.com/ansible\-collections/community\.general/pull/10993](https\://github\.com/ansible\-collections/community\.general/pull/10993)\, [https\://github\.com/ansible\-collections/community\.general/pull/10997](https\://github\.com/ansible\-collections/community\.general/pull/10997)\, [https\://github\.com/ansible\-collections/community\.general/pull/10999](https\://github\.com/ansible\-collections/community\.general/pull/10999)\, [https\://github\.com/ansible\-collections/community\.general/pull/11015](https\://github\.com/ansible\-collections/community\.general/pull/11015)\, [https\://github\.com/ansible\-collections/community\.general/pull/11016](https\://github\.com/ansible\-collections/community\.general/pull/11016)\, [https\://github\.com/ansible\-collections/community\.general/pull/11017](https\://github\.com/ansible\-collections/community\.general/pull/11017)\)\.
@@ -1093,7 +1149,7 @@ This is release 12\.0\.0 of community\.general\, released on 2025\-
* keycloak\_user \- the parameter credentials\[\]\.value is now marked as no\_log\=true\. Before it was logged by Ansible\, unless the task was marked as no\_log\: true\. Since this parameter can be used for passwords\, this resulted in credential leaking \([https\://github\.com/ansible\-collections/community\.general/issues/11000](https\://github\.com/ansible\-collections/community\.general/issues/11000)\, [https\://github\.com/ansible\-collections/community\.general/pull/11005](https\://github\.com/ansible\-collections/community\.general/pull/11005)\)\.
-
+
### Bugfixes
* Avoid deprecated functionality in ansible\-core 2\.20 \([https\://github\.com/ansible\-collections/community\.general/pull/10687](https\://github\.com/ansible\-collections/community\.general/pull/10687)\)\.
@@ -1155,10 +1211,10 @@ This is release 12\.0\.0 of community\.general\, released on 2025\-
* yaml cache plugin \- make compatible with ansible\-core 2\.19 \([https\://github\.com/ansible\-collections/community\.general/issues/10849](https\://github\.com/ansible\-collections/community\.general/issues/10849)\, [https\://github\.com/ansible\-collections/community\.general/issues/10852](https\://github\.com/ansible\-collections/community\.general/issues/10852)\)\.
* zypper\_repository \- avoid ansible\-core 2\.19 deprecation \([https\://github\.com/ansible\-collections/community\.general/pull/10459](https\://github\.com/ansible\-collections/community\.general/pull/10459)\)\.
-
+
### New Plugins
-
+
#### Callback
* community\.general\.tasks\_only \- Only show tasks\.
@@ -1179,7 +1235,7 @@ This is release 12\.0\.0 of community\.general\, released on 2025\-
* community\.general\.binary\_file \- Read binary file and return it Base64 encoded\.
-
+
### New Modules
* community\.general\.django\_dumpdata \- Wrapper for django\-admin dumpdata\.
diff --git a/CHANGELOG.rst b/CHANGELOG.rst
index d812e006af..c72ea39719 100644
--- a/CHANGELOG.rst
+++ b/CHANGELOG.rst
@@ -6,6 +6,55 @@ Community General Release Notes
This changelog describes changes after version 11.0.0.
+v12.4.0
+=======
+
+Release Summary
+---------------
+
+Regular bugfix and feature release.
+
+Minor Changes
+-------------
+
+- ModuleHelper module utils - allow to ignore specific exceptions in ``module_fails_on_exception`` decorator (https://github.com/ansible-collections/community.general/pull/11488).
+- from_ini filter plugin - add ``delimiters`` parameter to allow correctly parsing more INI documents (https://github.com/ansible-collections/community.general/issues/11506, https://github.com/ansible-collections/community.general/pull/11512).
+- keycloak_client - add ``valid_post_logout_redirect_uris`` option to configure post logout redirect URIs for a client, and ``backchannel_logout_url`` option to configure the backchannel logout URL for a client (https://github.com/ansible-collections/community.general/issues/6812, https://github.com/ansible-collections/community.general/issues/4892, https://github.com/ansible-collections/community.general/pull/11473).
+- keycloak_client_rolemapping, keycloak_realm_rolemapping, keycloak_group - optimize retrieval of groups by name to use Keycloak search API with exact matching instead of fetching all groups (https://github.com/ansible-collections/community.general/pull/11503).
+- keycloak_realm - add support for ``localizationTexts`` option in Keycloak realms (https://github.com/ansible-collections/community.general/pull/11513).
+- keycloak_realm_key - add support for auto-generated key providers (``rsa-generated``, ``rsa-enc-generated``, ``hmac-generated``, ``aes-generated``, ``ecdsa-generated``, ``ecdh-generated``, ``eddsa-generated``), ``java-keystore`` provider, additional algorithms (HMAC, ECDSA, ECDH, EdDSA, AES), and new config options (``secret_size``, ``key_size``, ``elliptic_curve``, ``keystore``, ``keystore_password``, ``key_alias``, ``key_password``). Also makes ``config.private_key`` and ``config.certificate`` optional as they are only required for imported key providers (https://github.com/ansible-collections/community.general/pull/11468).
+- redfish_info - add Redfish Root data to results of successful ``CheckAvailability`` command (https://github.com/ansible-collections/community.general/pull/11504).
+- seport - adds support for DCCP and SCTP protocols (https://github.com/ansible-collections/community.general/pull/11486).
+
+Bugfixes
+--------
+
+- keycloak module utils - fix ``TypeError`` crash when managing users whose username or email contains special characters such as ``+`` (https://github.com/ansible-collections/community.general/issues/10305, https://github.com/ansible-collections/community.general/pull/11472).
+- keycloak module utils - use proper URL encoding (``urllib.parse.quote``) for query parameters in authorization permission name searches, replacing fragile manual space replacement (https://github.com/ansible-collections/community.general/pull/11472).
+- keycloak_client - fix idempotency bug caused by ``null`` flow overrides value differences for non-existing flow overrides (https://github.com/ansible-collections/community.general/issues/11430, https://github.com/ansible-collections/community.general/pull/11455).
+- keycloak_client - remove IDs as change from diff result for protocol mappers (https://github.com/ansible-collections/community.general/issues/11453, https://github.com/ansible-collections/community.general/pull/11454).
+- keycloak_realm_key - fix ``KeyError`` crash when managing realm keys where Keycloak does not return ``active``, ``enabled``, or ``algorithm`` fields in the config response (https://github.com/ansible-collections/community.general/issues/11459, https://github.com/ansible-collections/community.general/pull/11470).
+- keycloak_user_federation - mapper config item can be an array (https://github.com/ansible-collections/community.general/issues/11502, https://github.com/ansible-collections/community.general/pull/11515).
+- keycloak_user_rolemapping - fix ``TypeError`` crash when adding a client role to a user who has no existing roles for that client (https://github.com/ansible-collections/community.general/issues/10960, https://github.com/ansible-collections/community.general/pull/11471).
+- maven_artifact - fix SNAPSHOT version resolution to pick the newest matching ```` entry by ```` timestamp instead of the first. Repositories like GitHub Packages keep all historical entries in ```` (oldest first), causing the module to resolve to the oldest snapshot instead of the latest (https://github.com/ansible-collections/community.general/issues/5117, https://github.com/ansible-collections/community.general/issues/11489, https://github.com/ansible-collections/community.general/pull/11501).
+- nsupdate - fix ``AttributeError`` when using the module without TSIG authentication (https://github.com/ansible-collections/community.general/issues/11460, https://github.com/ansible-collections/community.general/pull/11461).
+- python_requirements_info - use ``importlib.metadata`` if ``pkg_resources`` from ``setuptools`` cannot be imported. That module has been removed from setuptools 82.0.0 (https://github.com/ansible-collections/community.general/issues/11491, https://github.com/ansible-collections/community.general/pull/11492).
+- splunk callback plugin - replace deprecated callback function (https://github.com/ansible-collections/community.general/pull/11485).
+
+New Plugins
+-----------
+
+Callback
+~~~~~~~~
+
+- community.general.loganalytics_ingestion - Posts task results to an Azure Log Analytics workspace using the new Logs Ingestion API.
+
+New Modules
+-----------
+
+- community.general.icinga2_downtime - Manages Icinga 2 downtimes.
+- community.general.keycloak_realm_localization - Allows management of Keycloak realm localization overrides via the Keycloak API.
+
v12.3.0
=======
diff --git a/changelogs/changelog.yaml b/changelogs/changelog.yaml
index c4e6636d71..2cd707da63 100644
--- a/changelogs/changelog.yaml
+++ b/changelogs/changelog.yaml
@@ -1787,3 +1787,102 @@ releases:
name: to_toml
namespace: null
release_date: '2026-01-26'
+ 12.4.0:
+ changes:
+ bugfixes:
+ - keycloak module utils - fix ``TypeError`` crash when managing users whose
+ username or email contains special characters such as ``+`` (https://github.com/ansible-collections/community.general/issues/10305,
+ https://github.com/ansible-collections/community.general/pull/11472).
+ - keycloak module utils - use proper URL encoding (``urllib.parse.quote``)
+ for query parameters in authorization permission name searches, replacing
+ fragile manual space replacement (https://github.com/ansible-collections/community.general/pull/11472).
+ - keycloak_client - fix idempotency bug caused by ``null`` flow overrides
+ value differences for non-existing flow overrides (https://github.com/ansible-collections/community.general/issues/11430,
+ https://github.com/ansible-collections/community.general/pull/11455).
+ - keycloak_client - remove IDs as change from diff result for protocol mappers
+ (https://github.com/ansible-collections/community.general/issues/11453,
+ https://github.com/ansible-collections/community.general/pull/11454).
+ - keycloak_realm_key - fix ``KeyError`` crash when managing realm keys where
+ Keycloak does not return ``active``, ``enabled``, or ``algorithm`` fields
+ in the config response (https://github.com/ansible-collections/community.general/issues/11459,
+ https://github.com/ansible-collections/community.general/pull/11470).
+ - keycloak_user_federation - mapper config item can be an array (https://github.com/ansible-collections/community.general/issues/11502,
+ https://github.com/ansible-collections/community.general/pull/11515).
+ - keycloak_user_rolemapping - fix ``TypeError`` crash when adding a client
+ role to a user who has no existing roles for that client (https://github.com/ansible-collections/community.general/issues/10960,
+ https://github.com/ansible-collections/community.general/pull/11471).
+ - maven_artifact - fix SNAPSHOT version resolution to pick the newest matching
+ ```` entry by ```` timestamp instead of the first.
+ Repositories like GitHub Packages keep all historical entries in ````
+ (oldest first), causing the module to resolve to the oldest snapshot instead
+ of the latest (https://github.com/ansible-collections/community.general/issues/5117,
+ https://github.com/ansible-collections/community.general/issues/11489, https://github.com/ansible-collections/community.general/pull/11501).
+ - nsupdate - fix ``AttributeError`` when using the module without TSIG authentication
+ (https://github.com/ansible-collections/community.general/issues/11460,
+ https://github.com/ansible-collections/community.general/pull/11461).
+ - python_requirements_info - use ``importlib.metadata`` if ``pkg_resources``
+ from ``setuptools`` cannot be imported. That module has been removed from
+ setuptools 82.0.0 (https://github.com/ansible-collections/community.general/issues/11491,
+ https://github.com/ansible-collections/community.general/pull/11492).
+ - splunk callback plugin - replace deprecated callback function (https://github.com/ansible-collections/community.general/pull/11485).
+ minor_changes:
+ - ModuleHelper module utils - allow to ignore specific exceptions in ``module_fails_on_exception``
+ decorator (https://github.com/ansible-collections/community.general/pull/11488).
+ - from_ini filter plugin - add ``delimiters`` parameter to allow correctly
+ parsing more INI documents (https://github.com/ansible-collections/community.general/issues/11506,
+ https://github.com/ansible-collections/community.general/pull/11512).
+ - keycloak_client - add ``valid_post_logout_redirect_uris`` option to configure
+ post logout redirect URIs for a client, and ``backchannel_logout_url`` option
+ to configure the backchannel logout URL for a client (https://github.com/ansible-collections/community.general/issues/6812,
+ https://github.com/ansible-collections/community.general/issues/4892, https://github.com/ansible-collections/community.general/pull/11473).
+ - keycloak_client_rolemapping, keycloak_realm_rolemapping, keycloak_group
+ - optimize retrieval of groups by name to use Keycloak search API with exact
+ matching instead of fetching all groups (https://github.com/ansible-collections/community.general/pull/11503).
+ - keycloak_realm - add support for ``localizationTexts`` option in Keycloak
+ realms (https://github.com/ansible-collections/community.general/pull/11513).
+ - keycloak_realm_key - add support for auto-generated key providers (``rsa-generated``,
+ ``rsa-enc-generated``, ``hmac-generated``, ``aes-generated``, ``ecdsa-generated``,
+ ``ecdh-generated``, ``eddsa-generated``), ``java-keystore`` provider, additional
+ algorithms (HMAC, ECDSA, ECDH, EdDSA, AES), and new config options (``secret_size``,
+ ``key_size``, ``elliptic_curve``, ``keystore``, ``keystore_password``, ``key_alias``,
+ ``key_password``). Also makes ``config.private_key`` and ``config.certificate``
+ optional as they are only required for imported key providers (https://github.com/ansible-collections/community.general/pull/11468).
+ - redfish_info - add Redfish Root data to results of successful ``CheckAvailability``
+ command (https://github.com/ansible-collections/community.general/pull/11504).
+ - seport - adds support for DCCP and SCTP protocols (https://github.com/ansible-collections/community.general/pull/11486).
+ release_summary: Regular bugfix and feature release.
+ fragments:
+ - 11430-fix-keycloak-client-diff-for-flow-overrides.yml
+ - 11453-keycloak-client-protocol-mapper-ids.yml
+ - 11485-avoid-deprected-callback.yml
+ - 11486-seport-dccp-sctp.yaml
+ - 11488-mh-ensure-compatibiliy-with-module-tests.yml
+ - 11492-python_requires_info.yml
+ - 11502-keycloak-config-mapper.yaml
+ - 11503-keycloak-group-search-optimization.yml
+ - 11504-redfish-info-add-results-to-return.yml
+ - 11512-from_ini-delimiters.yaml
+ - 11513-keycloak-realm-localizationTexts-support.yml
+ - 12.4.0.yml
+ - 5117-maven-artifact-snapshot-resolution.yml
+ - fix-nsupdate-keyring.yml
+ - keycloak-client-add-missing-fields.yml
+ - keycloak-realm-key-generated-providers.yml
+ - keycloak-realm-key-keyerror-bugfix.yml
+ - keycloak-url-encode-query-params.yml
+ - keycloak-user-rolemapping-client-none-check.yml
+ modules:
+ - description: Manages Icinga 2 downtimes.
+ name: icinga2_downtime
+ namespace: ''
+ - description: Allows management of Keycloak realm localization overrides via
+ the Keycloak API.
+ name: keycloak_realm_localization
+ namespace: ''
+ plugins:
+ callback:
+ - description: Posts task results to an Azure Log Analytics workspace using
+ the new Logs Ingestion API.
+ name: loganalytics_ingestion
+ namespace: null
+ release_date: '2026-02-23'
diff --git a/changelogs/fragments/11430-fix-keycloak-client-diff-for-flow-overrides.yml b/changelogs/fragments/11430-fix-keycloak-client-diff-for-flow-overrides.yml
deleted file mode 100644
index 53e4a1cb4e..0000000000
--- a/changelogs/fragments/11430-fix-keycloak-client-diff-for-flow-overrides.yml
+++ /dev/null
@@ -1,2 +0,0 @@
-bugfixes:
- - keycloak_client - fix idempotency bug caused by ``null`` flow overrides value differences for non-existing flow overrides (https://github.com/ansible-collections/community.general/issues/11430, https://github.com/ansible-collections/community.general/pull/11455).
\ No newline at end of file
diff --git a/changelogs/fragments/11453-keycloak-client-protocol-mapper-ids.yml b/changelogs/fragments/11453-keycloak-client-protocol-mapper-ids.yml
deleted file mode 100644
index 815213cd8e..0000000000
--- a/changelogs/fragments/11453-keycloak-client-protocol-mapper-ids.yml
+++ /dev/null
@@ -1,2 +0,0 @@
-bugfixes:
- - keycloak_client - remove IDs as change from diff result for protocol mappers (https://github.com/ansible-collections/community.general/issues/11453, https://github.com/ansible-collections/community.general/pull/11454).
\ No newline at end of file
diff --git a/changelogs/fragments/11485-avoid-deprected-callback.yml b/changelogs/fragments/11485-avoid-deprected-callback.yml
deleted file mode 100644
index 3495f524e7..0000000000
--- a/changelogs/fragments/11485-avoid-deprected-callback.yml
+++ /dev/null
@@ -1,2 +0,0 @@
-bugfixes:
- - splunk callback plugin - replace deprecated callback function (https://github.com/ansible-collections/community.general/pull/11485).
\ No newline at end of file
diff --git a/changelogs/fragments/11486-seport-dccp-sctp.yaml b/changelogs/fragments/11486-seport-dccp-sctp.yaml
deleted file mode 100644
index 2707a2327d..0000000000
--- a/changelogs/fragments/11486-seport-dccp-sctp.yaml
+++ /dev/null
@@ -1,2 +0,0 @@
-minor_changes:
- - seport - adds support for DCCP and SCTP protocols (https://github.com/ansible-collections/community.general/pull/11486).
diff --git a/changelogs/fragments/11488-mh-ensure-compatibiliy-with-module-tests.yml b/changelogs/fragments/11488-mh-ensure-compatibiliy-with-module-tests.yml
deleted file mode 100644
index 25312f77d5..0000000000
--- a/changelogs/fragments/11488-mh-ensure-compatibiliy-with-module-tests.yml
+++ /dev/null
@@ -1,2 +0,0 @@
-minor_changes:
- - ModuleHelper module utils - allow to ignore specific exceptions in ``module_fails_on_exception`` decorator (https://github.com/ansible-collections/community.general/pull/11488).
diff --git a/changelogs/fragments/11492-python_requires_info.yml b/changelogs/fragments/11492-python_requires_info.yml
deleted file mode 100644
index aa52ffca43..0000000000
--- a/changelogs/fragments/11492-python_requires_info.yml
+++ /dev/null
@@ -1,4 +0,0 @@
-bugfixes:
- - "python_requirements_info - use ``importlib.metadata`` if ``pkg_resources`` from ``setuptools`` cannot be imported.
- That module has been removed from setuptools 82.0.0
- (https://github.com/ansible-collections/community.general/issues/11491, https://github.com/ansible-collections/community.general/pull/11492)."
diff --git a/changelogs/fragments/11502-keycloak-config-mapper.yaml b/changelogs/fragments/11502-keycloak-config-mapper.yaml
deleted file mode 100644
index b7c1c1d186..0000000000
--- a/changelogs/fragments/11502-keycloak-config-mapper.yaml
+++ /dev/null
@@ -1,2 +0,0 @@
-bugfixes:
- - "keycloak_user_federation - mapper config item can be an array (https://github.com/ansible-collections/community.general/issues/11502, https://github.com/ansible-collections/community.general/pull/11515)."
diff --git a/changelogs/fragments/11503-keycloak-group-search-optimization.yml b/changelogs/fragments/11503-keycloak-group-search-optimization.yml
deleted file mode 100644
index 0f7dda2fc6..0000000000
--- a/changelogs/fragments/11503-keycloak-group-search-optimization.yml
+++ /dev/null
@@ -1,3 +0,0 @@
----
-minor_changes:
- - keycloak_client_rolemapping, keycloak_realm_rolemapping, keycloak_group - optimize retrieval of groups by name to use Keycloak search API with exact matching instead of fetching all groups (https://github.com/ansible-collections/community.general/pull/11503).
diff --git a/changelogs/fragments/11504-redfish-info-add-results-to-return.yml b/changelogs/fragments/11504-redfish-info-add-results-to-return.yml
deleted file mode 100644
index 8e30c43bc2..0000000000
--- a/changelogs/fragments/11504-redfish-info-add-results-to-return.yml
+++ /dev/null
@@ -1,2 +0,0 @@
-minor_changes:
- - redfish_info - add Redfish Root data to results of successful ``CheckAvailability`` command (https://github.com/ansible-collections/community.general/pull/11504).
diff --git a/changelogs/fragments/11512-from_ini-delimiters.yaml b/changelogs/fragments/11512-from_ini-delimiters.yaml
deleted file mode 100644
index 728abf992e..0000000000
--- a/changelogs/fragments/11512-from_ini-delimiters.yaml
+++ /dev/null
@@ -1,2 +0,0 @@
-minor_changes:
- - from_ini filter plugin - add ``delimiters`` parameter to allow correctly parsing more INI documents (https://github.com/ansible-collections/community.general/issues/11506, https://github.com/ansible-collections/community.general/pull/11512).
\ No newline at end of file
diff --git a/changelogs/fragments/11513-keycloak-realm-localizationTexts-support.yml b/changelogs/fragments/11513-keycloak-realm-localizationTexts-support.yml
deleted file mode 100644
index 0502002bfa..0000000000
--- a/changelogs/fragments/11513-keycloak-realm-localizationTexts-support.yml
+++ /dev/null
@@ -1,3 +0,0 @@
----
-minor_changes:
- - keycloak_realm - add support for ``localizationTexts`` option in Keycloak realms (https://github.com/ansible-collections/community.general/pull/11513).
diff --git a/changelogs/fragments/12.4.0.yml b/changelogs/fragments/12.4.0.yml
deleted file mode 100644
index 4b1469c9fe..0000000000
--- a/changelogs/fragments/12.4.0.yml
+++ /dev/null
@@ -1 +0,0 @@
-release_summary: Regular bugfix and feature release.
diff --git a/changelogs/fragments/5117-maven-artifact-snapshot-resolution.yml b/changelogs/fragments/5117-maven-artifact-snapshot-resolution.yml
deleted file mode 100644
index 1e34bba16f..0000000000
--- a/changelogs/fragments/5117-maven-artifact-snapshot-resolution.yml
+++ /dev/null
@@ -1,2 +0,0 @@
-bugfixes:
- - maven_artifact - fix SNAPSHOT version resolution to pick the newest matching ```` entry by ```` timestamp instead of the first. Repositories like GitHub Packages keep all historical entries in ```` (oldest first), causing the module to resolve to the oldest snapshot instead of the latest (https://github.com/ansible-collections/community.general/issues/5117, https://github.com/ansible-collections/community.general/issues/11489, https://github.com/ansible-collections/community.general/pull/11501).
\ No newline at end of file
diff --git a/changelogs/fragments/fix-nsupdate-keyring.yml b/changelogs/fragments/fix-nsupdate-keyring.yml
deleted file mode 100644
index 05e4403151..0000000000
--- a/changelogs/fragments/fix-nsupdate-keyring.yml
+++ /dev/null
@@ -1,2 +0,0 @@
-bugfixes:
- - nsupdate - fix ``AttributeError`` when using the module without TSIG authentication (https://github.com/ansible-collections/community.general/issues/11460, https://github.com/ansible-collections/community.general/pull/11461).
diff --git a/changelogs/fragments/keycloak-client-add-missing-fields.yml b/changelogs/fragments/keycloak-client-add-missing-fields.yml
deleted file mode 100644
index 08bf4654cb..0000000000
--- a/changelogs/fragments/keycloak-client-add-missing-fields.yml
+++ /dev/null
@@ -1,7 +0,0 @@
-minor_changes:
- - keycloak_client - add ``valid_post_logout_redirect_uris`` option to configure
- post logout redirect URIs for a client, and ``backchannel_logout_url`` option to configure the
- backchannel logout URL for a client
- (https://github.com/ansible-collections/community.general/issues/6812,
- https://github.com/ansible-collections/community.general/issues/4892,
- https://github.com/ansible-collections/community.general/pull/11473).
diff --git a/changelogs/fragments/keycloak-realm-key-generated-providers.yml b/changelogs/fragments/keycloak-realm-key-generated-providers.yml
deleted file mode 100644
index c8a011a239..0000000000
--- a/changelogs/fragments/keycloak-realm-key-generated-providers.yml
+++ /dev/null
@@ -1,2 +0,0 @@
-minor_changes:
- - keycloak_realm_key - add support for auto-generated key providers (``rsa-generated``, ``rsa-enc-generated``, ``hmac-generated``, ``aes-generated``, ``ecdsa-generated``, ``ecdh-generated``, ``eddsa-generated``), ``java-keystore`` provider, additional algorithms (HMAC, ECDSA, ECDH, EdDSA, AES), and new config options (``secret_size``, ``key_size``, ``elliptic_curve``, ``keystore``, ``keystore_password``, ``key_alias``, ``key_password``). Also makes ``config.private_key`` and ``config.certificate`` optional as they are only required for imported key providers (https://github.com/ansible-collections/community.general/pull/11468).
diff --git a/changelogs/fragments/keycloak-realm-key-keyerror-bugfix.yml b/changelogs/fragments/keycloak-realm-key-keyerror-bugfix.yml
deleted file mode 100644
index cb8dd12271..0000000000
--- a/changelogs/fragments/keycloak-realm-key-keyerror-bugfix.yml
+++ /dev/null
@@ -1,5 +0,0 @@
-bugfixes:
- - keycloak_realm_key - fix ``KeyError`` crash when managing realm keys where Keycloak
- does not return ``active``, ``enabled``, or ``algorithm`` fields in the config
- response (https://github.com/ansible-collections/community.general/issues/11459,
- https://github.com/ansible-collections/community.general/pull/11470).
diff --git a/changelogs/fragments/keycloak-url-encode-query-params.yml b/changelogs/fragments/keycloak-url-encode-query-params.yml
deleted file mode 100644
index 572f4b99d9..0000000000
--- a/changelogs/fragments/keycloak-url-encode-query-params.yml
+++ /dev/null
@@ -1,7 +0,0 @@
-bugfixes:
- - keycloak module utils - fix ``TypeError`` crash when managing users whose username
- or email contains special characters such as ``+``
- (https://github.com/ansible-collections/community.general/issues/10305, https://github.com/ansible-collections/community.general/pull/11472).
- - keycloak module utils - use proper URL encoding (``urllib.parse.quote``) for query
- parameters in authorization permission name searches, replacing fragile
- manual space replacement (https://github.com/ansible-collections/community.general/pull/11472).
diff --git a/changelogs/fragments/keycloak-user-rolemapping-client-none-check.yml b/changelogs/fragments/keycloak-user-rolemapping-client-none-check.yml
deleted file mode 100644
index d6916c2af8..0000000000
--- a/changelogs/fragments/keycloak-user-rolemapping-client-none-check.yml
+++ /dev/null
@@ -1,5 +0,0 @@
-bugfixes:
- - keycloak_user_rolemapping - fix ``TypeError`` crash when adding a client
- role to a user who has no existing roles for that client
- (https://github.com/ansible-collections/community.general/issues/10960,
- https://github.com/ansible-collections/community.general/pull/11471).