Merge branch 'main' of github.com:prinzdezibel/community.routeros

This commit is contained in:
Michael Jenny 2025-06-09 15:51:25 +02:00
commit 5bd92baecb
10 changed files with 298 additions and 136 deletions

View file

@ -2,150 +2,153 @@
**Topics**
- <a href="#v3-6-0">v3\.6\.0</a>
- <a href="#v3-7-0">v3\.7\.0</a>
- <a href="#release-summary">Release Summary</a>
- <a href="#minor-changes">Minor Changes</a>
- <a href="#v3-5-0">v3\.5\.0</a>
- <a href="#v3-6-0">v3\.6\.0</a>
- <a href="#release-summary-1">Release Summary</a>
- <a href="#minor-changes-1">Minor Changes</a>
- <a href="#v3-4-0">v3\.4\.0</a>
- <a href="#v3-5-0">v3\.5\.0</a>
- <a href="#release-summary-2">Release Summary</a>
- <a href="#minor-changes-2">Minor Changes</a>
- <a href="#bugfixes">Bugfixes</a>
- <a href="#v3-3-0">v3\.3\.0</a>
- <a href="#v3-4-0">v3\.4\.0</a>
- <a href="#release-summary-3">Release Summary</a>
- <a href="#minor-changes-3">Minor Changes</a>
- <a href="#v3-2-0">v3\.2\.0</a>
- <a href="#bugfixes">Bugfixes</a>
- <a href="#v3-3-0">v3\.3\.0</a>
- <a href="#release-summary-4">Release Summary</a>
- <a href="#minor-changes-4">Minor Changes</a>
- <a href="#v3-1-0">v3\.1\.0</a>
- <a href="#v3-2-0">v3\.2\.0</a>
- <a href="#release-summary-5">Release Summary</a>
- <a href="#minor-changes-5">Minor Changes</a>
- <a href="#v3-1-0">v3\.1\.0</a>
- <a href="#release-summary-6">Release Summary</a>
- <a href="#minor-changes-6">Minor Changes</a>
- <a href="#bugfixes-1">Bugfixes</a>
- <a href="#v3-0-0">v3\.0\.0</a>
- <a href="#release-summary-6">Release Summary</a>
- <a href="#release-summary-7">Release Summary</a>
- <a href="#breaking-changes--porting-guide">Breaking Changes / Porting Guide</a>
- <a href="#removed-features-previously-deprecated">Removed Features \(previously deprecated\)</a>
- <a href="#v2-20-0">v2\.20\.0</a>
- <a href="#release-summary-7">Release Summary</a>
- <a href="#minor-changes-6">Minor Changes</a>
- <a href="#v2-19-0">v2\.19\.0</a>
- <a href="#release-summary-8">Release Summary</a>
- <a href="#minor-changes-7">Minor Changes</a>
- <a href="#v2-18-0">v2\.18\.0</a>
- <a href="#v2-19-0">v2\.19\.0</a>
- <a href="#release-summary-9">Release Summary</a>
- <a href="#minor-changes-8">Minor Changes</a>
- <a href="#v2-18-0">v2\.18\.0</a>
- <a href="#release-summary-10">Release Summary</a>
- <a href="#minor-changes-9">Minor Changes</a>
- <a href="#deprecated-features">Deprecated Features</a>
- <a href="#bugfixes-2">Bugfixes</a>
- <a href="#v2-17-0">v2\.17\.0</a>
- <a href="#release-summary-10">Release Summary</a>
- <a href="#minor-changes-9">Minor Changes</a>
- <a href="#v2-16-0">v2\.16\.0</a>
- <a href="#release-summary-11">Release Summary</a>
- <a href="#minor-changes-10">Minor Changes</a>
- <a href="#v2-15-0">v2\.15\.0</a>
- <a href="#v2-16-0">v2\.16\.0</a>
- <a href="#release-summary-12">Release Summary</a>
- <a href="#minor-changes-11">Minor Changes</a>
- <a href="#v2-14-0">v2\.14\.0</a>
- <a href="#v2-15-0">v2\.15\.0</a>
- <a href="#release-summary-13">Release Summary</a>
- <a href="#minor-changes-12">Minor Changes</a>
- <a href="#v2-13-0">v2\.13\.0</a>
- <a href="#v2-14-0">v2\.14\.0</a>
- <a href="#release-summary-14">Release Summary</a>
- <a href="#minor-changes-13">Minor Changes</a>
- <a href="#bugfixes-3">Bugfixes</a>
- <a href="#v2-12-0">v2\.12\.0</a>
- <a href="#v2-13-0">v2\.13\.0</a>
- <a href="#release-summary-15">Release Summary</a>
- <a href="#minor-changes-14">Minor Changes</a>
- <a href="#v2-11-0">v2\.11\.0</a>
- <a href="#bugfixes-3">Bugfixes</a>
- <a href="#v2-12-0">v2\.12\.0</a>
- <a href="#release-summary-16">Release Summary</a>
- <a href="#minor-changes-15">Minor Changes</a>
- <a href="#v2-10-0">v2\.10\.0</a>
- <a href="#v2-11-0">v2\.11\.0</a>
- <a href="#release-summary-17">Release Summary</a>
- <a href="#minor-changes-16">Minor Changes</a>
- <a href="#bugfixes-4">Bugfixes</a>
- <a href="#v2-9-0">v2\.9\.0</a>
- <a href="#v2-10-0">v2\.10\.0</a>
- <a href="#release-summary-18">Release Summary</a>
- <a href="#minor-changes-17">Minor Changes</a>
- <a href="#bugfixes-4">Bugfixes</a>
- <a href="#v2-9-0">v2\.9\.0</a>
- <a href="#release-summary-19">Release Summary</a>
- <a href="#minor-changes-18">Minor Changes</a>
- <a href="#bugfixes-5">Bugfixes</a>
- <a href="#v2-8-3">v2\.8\.3</a>
- <a href="#release-summary-19">Release Summary</a>
- <a href="#release-summary-20">Release Summary</a>
- <a href="#known-issues">Known Issues</a>
- <a href="#v2-8-2">v2\.8\.2</a>
- <a href="#release-summary-20">Release Summary</a>
- <a href="#release-summary-21">Release Summary</a>
- <a href="#bugfixes-6">Bugfixes</a>
- <a href="#v2-8-1">v2\.8\.1</a>
- <a href="#release-summary-21">Release Summary</a>
- <a href="#release-summary-22">Release Summary</a>
- <a href="#bugfixes-7">Bugfixes</a>
- <a href="#v2-8-0">v2\.8\.0</a>
- <a href="#release-summary-22">Release Summary</a>
- <a href="#minor-changes-18">Minor Changes</a>
- <a href="#bugfixes-8">Bugfixes</a>
- <a href="#v2-7-0">v2\.7\.0</a>
- <a href="#release-summary-23">Release Summary</a>
- <a href="#minor-changes-19">Minor Changes</a>
- <a href="#bugfixes-9">Bugfixes</a>
- <a href="#v2-6-0">v2\.6\.0</a>
- <a href="#bugfixes-8">Bugfixes</a>
- <a href="#v2-7-0">v2\.7\.0</a>
- <a href="#release-summary-24">Release Summary</a>
- <a href="#minor-changes-20">Minor Changes</a>
- <a href="#bugfixes-10">Bugfixes</a>
- <a href="#v2-5-0">v2\.5\.0</a>
- <a href="#bugfixes-9">Bugfixes</a>
- <a href="#v2-6-0">v2\.6\.0</a>
- <a href="#release-summary-25">Release Summary</a>
- <a href="#minor-changes-21">Minor Changes</a>
- <a href="#bugfixes-11">Bugfixes</a>
- <a href="#v2-4-0">v2\.4\.0</a>
- <a href="#bugfixes-10">Bugfixes</a>
- <a href="#v2-5-0">v2\.5\.0</a>
- <a href="#release-summary-26">Release Summary</a>
- <a href="#minor-changes-22">Minor Changes</a>
- <a href="#bugfixes-11">Bugfixes</a>
- <a href="#v2-4-0">v2\.4\.0</a>
- <a href="#release-summary-27">Release Summary</a>
- <a href="#minor-changes-23">Minor Changes</a>
- <a href="#bugfixes-12">Bugfixes</a>
- <a href="#known-issues-1">Known Issues</a>
- <a href="#v2-3-1">v2\.3\.1</a>
- <a href="#release-summary-27">Release Summary</a>
- <a href="#release-summary-28">Release Summary</a>
- <a href="#known-issues-2">Known Issues</a>
- <a href="#v2-3-0">v2\.3\.0</a>
- <a href="#release-summary-28">Release Summary</a>
- <a href="#minor-changes-23">Minor Changes</a>
- <a href="#release-summary-29">Release Summary</a>
- <a href="#minor-changes-24">Minor Changes</a>
- <a href="#bugfixes-13">Bugfixes</a>
- <a href="#v2-2-1">v2\.2\.1</a>
- <a href="#release-summary-29">Release Summary</a>
- <a href="#release-summary-30">Release Summary</a>
- <a href="#bugfixes-14">Bugfixes</a>
- <a href="#v2-2-0">v2\.2\.0</a>
- <a href="#release-summary-30">Release Summary</a>
- <a href="#minor-changes-24">Minor Changes</a>
- <a href="#release-summary-31">Release Summary</a>
- <a href="#minor-changes-25">Minor Changes</a>
- <a href="#bugfixes-15">Bugfixes</a>
- <a href="#new-modules">New Modules</a>
- <a href="#v2-1-0">v2\.1\.0</a>
- <a href="#release-summary-31">Release Summary</a>
- <a href="#minor-changes-25">Minor Changes</a>
- <a href="#release-summary-32">Release Summary</a>
- <a href="#minor-changes-26">Minor Changes</a>
- <a href="#bugfixes-16">Bugfixes</a>
- <a href="#new-modules-1">New Modules</a>
- <a href="#v2-0-0">v2\.0\.0</a>
- <a href="#release-summary-32">Release Summary</a>
- <a href="#minor-changes-26">Minor Changes</a>
- <a href="#release-summary-33">Release Summary</a>
- <a href="#minor-changes-27">Minor Changes</a>
- <a href="#breaking-changes--porting-guide-1">Breaking Changes / Porting Guide</a>
- <a href="#bugfixes-17">Bugfixes</a>
- <a href="#new-plugins">New Plugins</a>
- <a href="#filter">Filter</a>
- <a href="#v1-2-0">v1\.2\.0</a>
- <a href="#release-summary-33">Release Summary</a>
- <a href="#minor-changes-27">Minor Changes</a>
- <a href="#bugfixes-18">Bugfixes</a>
- <a href="#v1-1-0">v1\.1\.0</a>
- <a href="#release-summary-34">Release Summary</a>
- <a href="#minor-changes-28">Minor Changes</a>
- <a href="#v1-0-1">v1\.0\.1</a>
- <a href="#bugfixes-18">Bugfixes</a>
- <a href="#v1-1-0">v1\.1\.0</a>
- <a href="#release-summary-35">Release Summary</a>
- <a href="#minor-changes-29">Minor Changes</a>
- <a href="#v1-0-1">v1\.0\.1</a>
- <a href="#release-summary-36">Release Summary</a>
- <a href="#bugfixes-19">Bugfixes</a>
- <a href="#v1-0-0">v1\.0\.0</a>
- <a href="#release-summary-36">Release Summary</a>
- <a href="#release-summary-37">Release Summary</a>
- <a href="#bugfixes-20">Bugfixes</a>
- <a href="#v0-1-1">v0\.1\.1</a>
- <a href="#release-summary-37">Release Summary</a>
- <a href="#release-summary-38">Release Summary</a>
- <a href="#bugfixes-21">Bugfixes</a>
- <a href="#v0-1-0">v0\.1\.0</a>
- <a href="#release-summary-38">Release Summary</a>
- <a href="#minor-changes-29">Minor Changes</a>
- <a href="#release-summary-39">Release Summary</a>
- <a href="#minor-changes-30">Minor Changes</a>
<a id="v3-6-0"></a>
## v3\.6\.0
<a id="v3-7-0"></a>
## v3\.7\.0
<a id="release-summary"></a>
### Release Summary
@ -155,12 +158,11 @@ Feature release\.
<a id="minor-changes"></a>
### Minor Changes
* api\_info\, api\_modify \- add <code>mdns\-repeat\-ifaces</code> to <code>ip dns</code> for RouterOS 7\.16 and newer \([https\://github\.com/ansible\-collections/community\.routeros/pull/358](https\://github\.com/ansible\-collections/community\.routeros/pull/358)\)\.
* api\_info\, api\_modify \- field name change in <code>routing bgp connection</code> path implemented by RouterOS 7\.19 and newer \([https\://github\.com/ansible\-collections/community\.routeros/pull/360](https\://github\.com/ansible\-collections/community\.routeros/pull/360)\)\.
* api\_info\, api\_modify \- rename <code>is\-responder</code> property in <code>interface wireguard peers</code> to <code>responder</code> for RouterOS 7\.17 and newer \([https\://github\.com/ansible\-collections/community\.routeros/pull/364](https\://github\.com/ansible\-collections/community\.routeros/pull/364)\)\.
* api\_find\_and\_modify \- allow to control whether <code>dynamic</code> and/or <code>builtin</code> entries are ignored with the new <code>ignore\_dynamic</code> and <code>ignore\_builtin</code> options \([https\://github\.com/ansible\-collections/community\.routeros/issues/372](https\://github\.com/ansible\-collections/community\.routeros/issues/372)\, [https\://github\.com/ansible\-collections/community\.routeros/pull/373](https\://github\.com/ansible\-collections/community\.routeros/pull/373)\)\.
* api\_info\, api\_modify \- add <code>port\-cost\-mode</code> to <code>interface bridge</code> which is supported since RouterOS 7\.13 \([https\://github\.com/ansible\-collections/community\.routeros/pull/371](https\://github\.com/ansible\-collections/community\.routeros/pull/371)\)\.
<a id="v3-5-0"></a>
## v3\.5\.0
<a id="v3-6-0"></a>
## v3\.6\.0
<a id="release-summary-1"></a>
### Release Summary
@ -170,17 +172,32 @@ Feature release\.
<a id="minor-changes-1"></a>
### Minor Changes
* api\_info\, api\_modify \- add <code>mdns\-repeat\-ifaces</code> to <code>ip dns</code> for RouterOS 7\.16 and newer \([https\://github\.com/ansible\-collections/community\.routeros/pull/358](https\://github\.com/ansible\-collections/community\.routeros/pull/358)\)\.
* api\_info\, api\_modify \- field name change in <code>routing bgp connection</code> path implemented by RouterOS 7\.19 and newer \([https\://github\.com/ansible\-collections/community\.routeros/pull/360](https\://github\.com/ansible\-collections/community\.routeros/pull/360)\)\.
* api\_info\, api\_modify \- rename <code>is\-responder</code> property in <code>interface wireguard peers</code> to <code>responder</code> for RouterOS 7\.17 and newer \([https\://github\.com/ansible\-collections/community\.routeros/pull/364](https\://github\.com/ansible\-collections/community\.routeros/pull/364)\)\.
<a id="v3-5-0"></a>
## v3\.5\.0
<a id="release-summary-2"></a>
### Release Summary
Feature release\.
<a id="minor-changes-2"></a>
### Minor Changes
* api\_info\, api\_modify \- change default for <code>/ip/cloud/ddns\-enabled</code> for RouterOS 7\.17 and newer from <code>yes</code> to <code>auto</code> \([https\://github\.com/ansible\-collections/community\.routeros/pull/350](https\://github\.com/ansible\-collections/community\.routeros/pull/350)\)\.
<a id="v3-4-0"></a>
## v3\.4\.0
<a id="release-summary-2"></a>
<a id="release-summary-3"></a>
### Release Summary
Feature and bugfix release\.
<a id="minor-changes-2"></a>
<a id="minor-changes-3"></a>
### Minor Changes
* api\_info\, api\_modify \- add support for the <code>ip dns forwarders</code> path implemented by RouterOS 7\.17 and newer \([https\://github\.com/ansible\-collections/community\.routeros/pull/343](https\://github\.com/ansible\-collections/community\.routeros/pull/343)\)\.
@ -193,12 +210,12 @@ Feature and bugfix release\.
<a id="v3-3-0"></a>
## v3\.3\.0
<a id="release-summary-3"></a>
<a id="release-summary-4"></a>
### Release Summary
Feature release\.
<a id="minor-changes-3"></a>
<a id="minor-changes-4"></a>
### Minor Changes
* api\_info\, api\_modify \- add missing attribute <code>require\-message\-auth</code> for the <code>radius</code> path which exists since RouterOS version 7\.15 \([https\://github\.com/ansible\-collections/community\.routeros/issues/338](https\://github\.com/ansible\-collections/community\.routeros/issues/338)\, [https\://github\.com/ansible\-collections/community\.routeros/pull/339](https\://github\.com/ansible\-collections/community\.routeros/pull/339)\)\.
@ -209,12 +226,12 @@ Feature release\.
<a id="v3-2-0"></a>
## v3\.2\.0
<a id="release-summary-4"></a>
<a id="release-summary-5"></a>
### Release Summary
Feature release\.
<a id="minor-changes-4"></a>
<a id="minor-changes-5"></a>
### Minor Changes
* api\_info\, api\_modify \- add support for the <code>routing filter community\-list</code> path implemented by RouterOS 7 and newer \([https\://github\.com/ansible\-collections/community\.routeros/pull/331](https\://github\.com/ansible\-collections/community\.routeros/pull/331)\)\.
@ -222,12 +239,12 @@ Feature release\.
<a id="v3-1-0"></a>
## v3\.1\.0
<a id="release-summary-5"></a>
<a id="release-summary-6"></a>
### Release Summary
Bugfix and feature release\.
<a id="minor-changes-5"></a>
<a id="minor-changes-6"></a>
### Minor Changes
* api\_info\, api\_modify \- add missing fields <code>comment</code>\, <code>next\-pool</code> to <code>ip pool</code> path \([https\://github\.com/ansible\-collections/community\.routeros/pull/327](https\://github\.com/ansible\-collections/community\.routeros/pull/327)\)\.
@ -240,7 +257,7 @@ Bugfix and feature release\.
<a id="v3-0-0"></a>
## v3\.0\.0
<a id="release-summary-6"></a>
<a id="release-summary-7"></a>
### Release Summary
Major release that drops support for End of Life Python versions and fixes check mode for community\.routeros\.command\.
@ -258,12 +275,12 @@ Major release that drops support for End of Life Python versions and fixes check
<a id="v2-20-0"></a>
## v2\.20\.0
<a id="release-summary-7"></a>
<a id="release-summary-8"></a>
### Release Summary
Feature release\.
<a id="minor-changes-6"></a>
<a id="minor-changes-7"></a>
### Minor Changes
* api\_info\, api\_modify \- add new parameters from the RouterOS 7\.16 release \([https\://github\.com/ansible\-collections/community\.routeros/pull/323](https\://github\.com/ansible\-collections/community\.routeros/pull/323)\)\.
@ -274,12 +291,12 @@ Feature release\.
<a id="v2-19-0"></a>
## v2\.19\.0
<a id="release-summary-8"></a>
<a id="release-summary-9"></a>
### Release Summary
Feature release\.
<a id="minor-changes-7"></a>
<a id="minor-changes-8"></a>
### Minor Changes
* api\_info\, api\_modify \- add support for the <code>ip dns adlist</code> path implemented by RouterOS 7\.15 and newer \([https\://github\.com/ansible\-collections/community\.routeros/pull/310](https\://github\.com/ansible\-collections/community\.routeros/pull/310)\)\.
@ -291,12 +308,12 @@ Feature release\.
<a id="v2-18-0"></a>
## v2\.18\.0
<a id="release-summary-9"></a>
<a id="release-summary-10"></a>
### Release Summary
Feature release\.
<a id="minor-changes-8"></a>
<a id="minor-changes-9"></a>
### Minor Changes
* api\_info \- allow to restrict the output by limiting fields to specific values with the new <code>restrict</code> option \([https\://github\.com/ansible\-collections/community\.routeros/pull/305](https\://github\.com/ansible\-collections/community\.routeros/pull/305)\)\.
@ -320,12 +337,12 @@ Feature release\.
<a id="v2-17-0"></a>
## v2\.17\.0
<a id="release-summary-10"></a>
<a id="release-summary-11"></a>
### Release Summary
Feature release\.
<a id="minor-changes-9"></a>
<a id="minor-changes-10"></a>
### Minor Changes
* api\_info\, api\_modify \- add <code>system health settings</code> path \([https\://github\.com/ansible\-collections/community\.routeros/pull/294](https\://github\.com/ansible\-collections/community\.routeros/pull/294)\)\.
@ -335,12 +352,12 @@ Feature release\.
<a id="v2-16-0"></a>
## v2\.16\.0
<a id="release-summary-11"></a>
<a id="release-summary-12"></a>
### Release Summary
Feature release\.
<a id="minor-changes-10"></a>
<a id="minor-changes-11"></a>
### Minor Changes
* api\_info\, api\_modify \- add missing path <code>/ppp secret</code> \([https\://github\.com/ansible\-collections/community\.routeros/pull/286](https\://github\.com/ansible\-collections/community\.routeros/pull/286)\)\.
@ -349,12 +366,12 @@ Feature release\.
<a id="v2-15-0"></a>
## v2\.15\.0
<a id="release-summary-12"></a>
<a id="release-summary-13"></a>
### Release Summary
Feature release\.
<a id="minor-changes-11"></a>
<a id="minor-changes-12"></a>
### Minor Changes
* api\_info\, api\_modify \- Add RouterOS 7\.x support to <code>/mpls ldp</code> path \([https\://github\.com/ansible\-collections/community\.routeros/pull/271](https\://github\.com/ansible\-collections/community\.routeros/pull/271)\)\.
@ -371,12 +388,12 @@ Feature release\.
<a id="v2-14-0"></a>
## v2\.14\.0
<a id="release-summary-13"></a>
<a id="release-summary-14"></a>
### Release Summary
Feature release\.
<a id="minor-changes-12"></a>
<a id="minor-changes-13"></a>
### Minor Changes
* api\_info\, api\_modify \- add read\-only fields <code>installed\-version</code>\, <code>latest\-version</code> and <code>status</code> in <code>system package update</code> \([https\://github\.com/ansible\-collections/community\.routeros/pull/263](https\://github\.com/ansible\-collections/community\.routeros/pull/263)\)\.
@ -386,12 +403,12 @@ Feature release\.
<a id="v2-13-0"></a>
## v2\.13\.0
<a id="release-summary-14"></a>
<a id="release-summary-15"></a>
### Release Summary
Bugfix and feature release\.
<a id="minor-changes-13"></a>
<a id="minor-changes-14"></a>
### Minor Changes
* api\_info\, api\_modify \- make path <code>user group</code> modifiable and add <code>comment</code> attribute \([https\://github\.com/ansible\-collections/community\.routeros/issues/256](https\://github\.com/ansible\-collections/community\.routeros/issues/256)\, [https\://github\.com/ansible\-collections/community\.routeros/pull/257](https\://github\.com/ansible\-collections/community\.routeros/pull/257)\)\.
@ -405,12 +422,12 @@ Bugfix and feature release\.
<a id="v2-12-0"></a>
## v2\.12\.0
<a id="release-summary-15"></a>
<a id="release-summary-16"></a>
### Release Summary
Feature release\.
<a id="minor-changes-14"></a>
<a id="minor-changes-15"></a>
### Minor Changes
* api\_info\, api\_modify \- add <code>interface ovpn\-client</code> path \([https\://github\.com/ansible\-collections/community\.routeros/issues/242](https\://github\.com/ansible\-collections/community\.routeros/issues/242)\, [https\://github\.com/ansible\-collections/community\.routeros/pull/244](https\://github\.com/ansible\-collections/community\.routeros/pull/244)\)\.
@ -424,12 +441,12 @@ Feature release\.
<a id="v2-11-0"></a>
## v2\.11\.0
<a id="release-summary-16"></a>
<a id="release-summary-17"></a>
### Release Summary
Feature and bugfix release\.
<a id="minor-changes-15"></a>
<a id="minor-changes-16"></a>
### Minor Changes
* api\_info\, api\_modify \- add missing DoH parameters <code>doh\-max\-concurrent\-queries</code>\, <code>doh\-max\-server\-connections</code>\, and <code>doh\-timeout</code> to the <code>ip dns</code> path \([https\://github\.com/ansible\-collections/community\.routeros/issues/230](https\://github\.com/ansible\-collections/community\.routeros/issues/230)\, [https\://github\.com/ansible\-collections/community\.routeros/pull/235](https\://github\.com/ansible\-collections/community\.routeros/pull/235)\)
@ -444,12 +461,12 @@ Feature and bugfix release\.
<a id="v2-10-0"></a>
## v2\.10\.0
<a id="release-summary-17"></a>
<a id="release-summary-18"></a>
### Release Summary
Bugfix and feature release\.
<a id="minor-changes-16"></a>
<a id="minor-changes-17"></a>
### Minor Changes
* api\_info \- add new <code>include\_read\_only</code> option to select behavior for read\-only values\. By default these are not returned \([https\://github\.com/ansible\-collections/community\.routeros/pull/213](https\://github\.com/ansible\-collections/community\.routeros/pull/213)\)\.
@ -481,12 +498,12 @@ Bugfix and feature release\.
<a id="v2-9-0"></a>
## v2\.9\.0
<a id="release-summary-18"></a>
<a id="release-summary-19"></a>
### Release Summary
Bugfix and feature release\.
<a id="minor-changes-17"></a>
<a id="minor-changes-18"></a>
### Minor Changes
* api\_info\, api\_modify \- add path <code>caps\-man channel</code> and enable path <code>caps\-man manager interface</code> \([https\://github\.com/ansible\-collections/community\.routeros/issues/193](https\://github\.com/ansible\-collections/community\.routeros/issues/193)\, [https\://github\.com/ansible\-collections/community\.routeros/pull/194](https\://github\.com/ansible\-collections/community\.routeros/pull/194)\)\.
@ -500,7 +517,7 @@ Bugfix and feature release\.
<a id="v2-8-3"></a>
## v2\.8\.3
<a id="release-summary-19"></a>
<a id="release-summary-20"></a>
### Release Summary
Maintenance release with updated documentation\.
@ -521,7 +538,7 @@ for the rendered HTML version of the documentation of the latest release\.
<a id="v2-8-2"></a>
## v2\.8\.2
<a id="release-summary-20"></a>
<a id="release-summary-21"></a>
### Release Summary
Bugfix release\.
@ -534,7 +551,7 @@ Bugfix release\.
<a id="v2-8-1"></a>
## v2\.8\.1
<a id="release-summary-21"></a>
<a id="release-summary-22"></a>
### Release Summary
Bugfix release\.
@ -547,12 +564,12 @@ Bugfix release\.
<a id="v2-8-0"></a>
## v2\.8\.0
<a id="release-summary-22"></a>
<a id="release-summary-23"></a>
### Release Summary
Bugfix and feature release\.
<a id="minor-changes-18"></a>
<a id="minor-changes-19"></a>
### Minor Changes
* api\_modify \- adapt data for API paths <code>ip dhcp\-server network</code> \([https\://github\.com/ansible\-collections/community\.routeros/pull/156](https\://github\.com/ansible\-collections/community\.routeros/pull/156)\)\.
@ -572,12 +589,12 @@ Bugfix and feature release\.
<a id="v2-7-0"></a>
## v2\.7\.0
<a id="release-summary-23"></a>
<a id="release-summary-24"></a>
### Release Summary
Bugfix and feature release\.
<a id="minor-changes-19"></a>
<a id="minor-changes-20"></a>
### Minor Changes
* api\_modify\, api\_info \- support API paths <code>ip arp</code>\, <code>ip firewall raw</code>\, <code>ipv6 firewall raw</code> \([https\://github\.com/ansible\-collections/community\.routeros/pull/144](https\://github\.com/ansible\-collections/community\.routeros/pull/144)\)\.
@ -590,12 +607,12 @@ Bugfix and feature release\.
<a id="v2-6-0"></a>
## v2\.6\.0
<a id="release-summary-24"></a>
<a id="release-summary-25"></a>
### Release Summary
Regular bugfix and feature release\.
<a id="minor-changes-20"></a>
<a id="minor-changes-21"></a>
### Minor Changes
* api\_modify\, api\_info \- add field <code>regexp</code> to <code>ip dns static</code> \([https\://github\.com/ansible\-collections/community\.routeros/issues/141](https\://github\.com/ansible\-collections/community\.routeros/issues/141)\)\.
@ -610,12 +627,12 @@ Regular bugfix and feature release\.
<a id="v2-5-0"></a>
## v2\.5\.0
<a id="release-summary-25"></a>
<a id="release-summary-26"></a>
### Release Summary
Feature and bugfix release\.
<a id="minor-changes-21"></a>
<a id="minor-changes-22"></a>
### Minor Changes
* api\_info\, api\_modify \- support API paths <code>interface ethernet poe</code>\, <code>interface gre6</code>\, <code>interface vrrp</code> and also support all previously missing fields of entries in <code>ip dhcp\-server</code> \([https\://github\.com/ansible\-collections/community\.routeros/pull/137](https\://github\.com/ansible\-collections/community\.routeros/pull/137)\)\.
@ -628,12 +645,12 @@ Feature and bugfix release\.
<a id="v2-4-0"></a>
## v2\.4\.0
<a id="release-summary-26"></a>
<a id="release-summary-27"></a>
### Release Summary
Feature release improving the <code>api\*</code> modules\.
<a id="minor-changes-22"></a>
<a id="minor-changes-23"></a>
### Minor Changes
* api\* modules \- Add new option <code>force\_no\_cert</code> to connect with ADH ciphers \([https\://github\.com/ansible\-collections/community\.routeros/pull/124](https\://github\.com/ansible\-collections/community\.routeros/pull/124)\)\.
@ -672,7 +689,7 @@ Feature release improving the <code>api\*</code> modules\.
<a id="v2-3-1"></a>
## v2\.3\.1
<a id="release-summary-27"></a>
<a id="release-summary-28"></a>
### Release Summary
Maintenance release with improved documentation\.
@ -685,12 +702,12 @@ Maintenance release with improved documentation\.
<a id="v2-3-0"></a>
## v2\.3\.0
<a id="release-summary-28"></a>
<a id="release-summary-29"></a>
### Release Summary
Feature and bugfix release\.
<a id="minor-changes-23"></a>
<a id="minor-changes-24"></a>
### Minor Changes
* The collection repository conforms to the [REUSE specification](https\://reuse\.software/spec/) except for the changelog fragments \([https\://github\.com/ansible\-collections/community\.routeros/pull/108](https\://github\.com/ansible\-collections/community\.routeros/pull/108)\)\.
@ -705,7 +722,7 @@ Feature and bugfix release\.
<a id="v2-2-1"></a>
## v2\.2\.1
<a id="release-summary-29"></a>
<a id="release-summary-30"></a>
### Release Summary
Bugfix release\.
@ -719,12 +736,12 @@ Bugfix release\.
<a id="v2-2-0"></a>
## v2\.2\.0
<a id="release-summary-30"></a>
<a id="release-summary-31"></a>
### Release Summary
New feature release\.
<a id="minor-changes-24"></a>
<a id="minor-changes-25"></a>
### Minor Changes
* All software licenses are now in the <code>LICENSES/</code> directory of the collection root\. Moreover\, <code>SPDX\-License\-Identifier\:</code> is used to declare the applicable license for every file that is not automatically generated \([https\://github\.com/ansible\-collections/community\.routeros/pull/101](https\://github\.com/ansible\-collections/community\.routeros/pull/101)\)\.
@ -743,12 +760,12 @@ New feature release\.
<a id="v2-1-0"></a>
## v2\.1\.0
<a id="release-summary-31"></a>
<a id="release-summary-32"></a>
### Release Summary
Feature and bugfix release with new modules\.
<a id="minor-changes-25"></a>
<a id="minor-changes-26"></a>
### Minor Changes
* Added a <code>community\.routeros\.api</code> module defaults group\. Use with <code>group/community\.routeros\.api</code> to provide options for all API\-based modules \([https\://github\.com/ansible\-collections/community\.routeros/pull/89](https\://github\.com/ansible\-collections/community\.routeros/pull/89)\)\.
@ -772,12 +789,12 @@ Feature and bugfix release with new modules\.
<a id="v2-0-0"></a>
## v2\.0\.0
<a id="release-summary-32"></a>
<a id="release-summary-33"></a>
### Release Summary
A new major release with breaking changes in the behavior of <code>community\.routeros\.api</code> and <code>community\.routeros\.command</code>\.
<a id="minor-changes-26"></a>
<a id="minor-changes-27"></a>
### Minor Changes
* api \- make validation of <code>WHERE</code> for <code>query</code> more strict \([https\://github\.com/ansible\-collections/community\.routeros/pull/53](https\://github\.com/ansible\-collections/community\.routeros/pull/53)\)\.
@ -813,12 +830,12 @@ A new major release with breaking changes in the behavior of <code>community\.ro
<a id="v1-2-0"></a>
## v1\.2\.0
<a id="release-summary-33"></a>
<a id="release-summary-34"></a>
### Release Summary
Bugfix and feature release\.
<a id="minor-changes-27"></a>
<a id="minor-changes-28"></a>
### Minor Changes
* Avoid internal ansible\-core module\_utils in favor of equivalent public API available since at least Ansible 2\.9 \([https\://github\.com/ansible\-collections/community\.routeros/pull/38](https\://github\.com/ansible\-collections/community\.routeros/pull/38)\)\.
@ -834,12 +851,12 @@ Bugfix and feature release\.
<a id="v1-1-0"></a>
## v1\.1\.0
<a id="release-summary-34"></a>
<a id="release-summary-35"></a>
### Release Summary
This release allow dashes in usernames for SSH\-based modules\.
<a id="minor-changes-28"></a>
<a id="minor-changes-29"></a>
### Minor Changes
* command \- added support for a dash \(<code>\-</code>\) in username \([https\://github\.com/ansible\-collections/community\.routeros/pull/18](https\://github\.com/ansible\-collections/community\.routeros/pull/18)\)\.
@ -848,7 +865,7 @@ This release allow dashes in usernames for SSH\-based modules\.
<a id="v1-0-1"></a>
## v1\.0\.1
<a id="release-summary-35"></a>
<a id="release-summary-36"></a>
### Release Summary
Maintenance release with a bugfix for <code>api</code>\.
@ -861,7 +878,7 @@ Maintenance release with a bugfix for <code>api</code>\.
<a id="v1-0-0"></a>
## v1\.0\.0
<a id="release-summary-36"></a>
<a id="release-summary-37"></a>
### Release Summary
This is the first production \(non\-prerelease\) release of <code>community\.routeros</code>\.
@ -874,7 +891,7 @@ This is the first production \(non\-prerelease\) release of <code>community\.rou
<a id="v0-1-1"></a>
## v0\.1\.1
<a id="release-summary-37"></a>
<a id="release-summary-38"></a>
### Release Summary
Small improvements and bugfixes over the initial release\.
@ -887,12 +904,12 @@ Small improvements and bugfixes over the initial release\.
<a id="v0-1-0"></a>
## v0\.1\.0
<a id="release-summary-38"></a>
<a id="release-summary-39"></a>
### Release Summary
The <code>community\.routeros</code> continues the work on the Ansible RouterOS modules from their state in <code>community\.network</code> 1\.2\.0\. The changes listed here are thus relative to the modules <code>community\.network\.routeros\_\*</code>\.
<a id="minor-changes-29"></a>
<a id="minor-changes-30"></a>
### Minor Changes
* facts \- now also collecting data about BGP and OSPF \([https\://github\.com/ansible\-collections/community\.network/pull/101](https\://github\.com/ansible\-collections/community\.network/pull/101)\)\.

View file

@ -4,6 +4,20 @@ Community RouterOS Release Notes
.. contents:: Topics
v3.7.0
======
Release Summary
---------------
Feature release.
Minor Changes
-------------
- api_find_and_modify - allow to control whether ``dynamic`` and/or ``builtin`` entries are ignored with the new ``ignore_dynamic`` and ``ignore_builtin`` options (https://github.com/ansible-collections/community.routeros/issues/372, https://github.com/ansible-collections/community.routeros/pull/373).
- api_info, api_modify - add ``port-cost-mode`` to ``interface bridge`` which is supported since RouterOS 7.13 (https://github.com/ansible-collections/community.routeros/pull/371).
v3.6.0
======

View file

@ -38,7 +38,7 @@ Tested with the current ansible-core 2.15, ansible-core 2.16, ansible-core 2.17,
## External requirements
The exact requirements for every module are listed in the module documentation.
The exact requirements for every module are listed in the module documentation.
### Supported connections

View file

@ -30,6 +30,10 @@ run_no_unwanted_files = true
no_unwanted_files_module_extensions = [".py"]
no_unwanted_files_yaml_extensions = [".yml"]
run_action_groups = true
run_no_trailing_whitespace = true
no_trailing_whitespace_skip_directories = [
"tests/unit/plugins/modules/fixtures/",
]
[[sessions.extra_checks.action_groups_config]]
name = "api"

View file

@ -901,3 +901,18 @@ releases:
- 360-bgp-connection-afi.yml
- 364-wireguard-responder.yml
release_date: '2025-04-21'
3.7.0:
changes:
minor_changes:
- api_find_and_modify - allow to control whether ``dynamic`` and/or ``builtin``
entries are ignored with the new ``ignore_dynamic`` and ``ignore_builtin``
options (https://github.com/ansible-collections/community.routeros/issues/372,
https://github.com/ansible-collections/community.routeros/pull/373).
- api_info, api_modify - add ``port-cost-mode`` to ``interface bridge`` which
is supported since RouterOS 7.13 (https://github.com/ansible-collections/community.routeros/pull/371).
release_summary: Feature release.
fragments:
- 3.7.0.yml
- 371-add-bridge-port-cost-mode.yml
- 373-api_find_and_modify-dynamic-builtin.yml
release_date: '2025-05-31'

View file

@ -57,7 +57,7 @@ This results in the following output:
}
PLAY RECAP *******************************************************************************************************
localhost : ok=2 changed=0 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
localhost : ok=2 changed=0 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
Check out the documentation of the :ansplugin:`community.routeros.api module <community.routeros.api#module>` for details on the options.

View file

@ -126,4 +126,4 @@ This results in the following output:
}
PLAY RECAP *******************************************************************************************************
router : ok=4 changed=0 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
router : ok=4 changed=0 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0

View file

@ -7,7 +7,7 @@
namespace: community
name: routeros
version: 3.6.0
version: 3.7.0
readme: README.md
authors:
- Egor Zaitsev (github.com/heuels)

View file

@ -75,6 +75,22 @@ options:
- Whether to allow that no match is found.
- If not specified, this value is induced from whether O(require_matches_min) is 0 or larger.
type: bool
ignore_dynamic:
description:
- Whether to ignore dynamic entries.
- By default, they are considered. If set to V(true), they are not considered.
- It is generally recommended to set this to V(true) unless when you really need to modify dynamic entries.
type: bool
default: false
version_added: 3.7.0
ignore_builtin:
description:
- Whether to ignore builtin entries.
- By default, they are considered. If set to V(true), they are not considered.
- It is generally recommended to set this to V(true) unless when you really need to modify builtin entries.
type: bool
default: false
version_added: 3.7.0
seealso:
- module: community.routeros.api
- module: community.routeros.api_facts
@ -94,6 +110,10 @@ EXAMPLES = r"""
name: bridge
values:
name: my-bridge
# Always ignore dynamic and builtin entries
# (not relevant for this path, but generally recommended)
ignore_dynamic: true
ignore_builtin: true
- name: Change IP address to 192.168.1.1 for interface bridge - assuming there is only one
community.routeros.api_find_and_modify:
@ -105,10 +125,14 @@ EXAMPLES = r"""
interface: bridge
values:
address: "192.168.1.1/24"
# If there are zero entries, or more than one: fail! We expected that
# exactly one is configured.
# If there are zero entries, or more than one: fail! We expected that
# exactly one is configured.
require_matches_min: 1
require_matches_max: 1
# Always ignore dynamic and builtin entries
# (not relevant for this path, but generally recommended)
ignore_dynamic: true
ignore_builtin: true
"""
RETURN = r"""
@ -185,6 +209,17 @@ def compose_api_path(api, path):
return api_path
def filter_entries(entries, ignore_dynamic=False, ignore_builtin=False):
result = []
for entry in entries:
if ignore_dynamic and entry.get('dynamic', False):
continue
if ignore_builtin and entry.get('builtin', False):
continue
result.append(entry)
return result
DISABLED_MEANS_EMPTY_STRING = ('comment', )
@ -196,6 +231,8 @@ def main():
require_matches_min=dict(type='int', default=0),
require_matches_max=dict(type='int'),
allow_no_matches=dict(type='bool'),
ignore_dynamic=dict(type='bool', default=False),
ignore_builtin=dict(type='bool', default=False),
)
module_args.update(api_argument_spec())
@ -223,6 +260,9 @@ def main():
if key in values:
module.fail_json(msg='`values` must not contain both "{key}" and "!{key}"!'.format(key=key))
ignore_dynamic = module.params['ignore_dynamic']
ignore_builtin = module.params['ignore_builtin']
check_has_library(module)
api = create_api(module)
@ -230,7 +270,7 @@ def main():
api_path = compose_api_path(api, path)
old_data = list(api_path)
old_data = filter_entries(list(api_path), ignore_dynamic=ignore_dynamic, ignore_builtin=ignore_builtin)
new_data = [entry.copy() for entry in old_data]
# Find matching entries
@ -299,7 +339,7 @@ def main():
error=to_native(e),
)
)
new_data = list(api_path)
new_data = filter_entries(list(api_path), ignore_dynamic=ignore_dynamic, ignore_builtin=ignore_builtin)
# Produce return value
more = {}

View file

@ -94,6 +94,52 @@ START_IP_FIREWALL_FILTER = [
START_IP_FIREWALL_FILTER_OLD_DATA = massage_expected_result_data(START_IP_FIREWALL_FILTER, ('ip', 'firewall', 'filter'), keep_all=True)
START_IP_SERVICE = [
# I removed all entryes not for 'api' and 'api-ssl'
{
"certificate": None,
"tls-version": None,
".id": "*7",
"address": "",
"disabled": True,
"dynamic": False,
"invalid": True,
"name": "api",
"port": 8728,
"proto": "tcp",
"vrf": "main"
},
{
".id": "*9",
"address": "192.168.1.0/24",
"certificate": "mycert",
"dynamic": False,
"invalid": False,
"name": "api-ssl",
"port": 8729,
"proto": "tcp",
"tls-version": "only-1.2",
"vrf": "main"
},
{
"address": None,
"certificate": None,
"max-sessions": None,
"tls-version": None,
".id": "*13",
"connection": True,
"dynamic": True,
"invalid": False,
"local": "192.168.1.1",
"name": "api-ssl",
"port": 8729,
"proto": "tcp",
"remote": "192.168.1.2:12346"
}
]
START_IP_SERVICE_OLD_DATA = massage_expected_result_data(START_IP_SERVICE, ('ip', 'service'), keep_all=True)
class TestRouterosApiFindAndModifyModule(ModuleTestCase):
@ -685,3 +731,29 @@ class TestRouterosApiFindAndModifyModule(ModuleTestCase):
])
self.assertEqual(result['match_count'], 3)
self.assertEqual(result['modify_count'], 2)
@patch('ansible_collections.community.routeros.plugins.modules.api_find_and_modify.compose_api_path',
new=create_fake_path(('ip', 'service'), START_IP_SERVICE))
def test_change_ignore_dynamic(self):
with self.assertRaises(AnsibleExitJson) as exc:
args = self.config_module_args.copy()
args.update({
'path': 'ip service',
'find': {
'name': 'api-ssl',
},
'values': {
'address': '192.168.1.0/24',
},
'ignore_dynamic': True,
'_ansible_diff': True,
})
with set_module_args(args):
self.module.main()
result = exc.exception.args[0]
self.assertEqual(result['changed'], False)
self.assertEqual(result['old_data'], [entry for entry in START_IP_SERVICE_OLD_DATA if entry["dynamic"] is False])
self.assertEqual(result['new_data'], [entry for entry in START_IP_SERVICE_OLD_DATA if entry["dynamic"] is False])
self.assertEqual(result['match_count'], 1)
self.assertEqual(result['modify_count'], 0)