diff --git a/.git-blame-ignore-revs b/.git-blame-ignore-revs deleted file mode 100644 index 9623a78..0000000 --- a/.git-blame-ignore-revs +++ /dev/null @@ -1,6 +0,0 @@ -# Copyright (c) Ansible Project -# GNU General Public License v3.0+ (see LICENSES/GPL-3.0-or-later.txt or https://www.gnu.org/licenses/gpl-3.0.txt) -# SPDX-License-Identifier: GPL-3.0-or-later - -# Reformat YAML: https://github.com/ansible-collections/community.routeros/pull/369 -08152376de116e7d933d19ee25318f7a2eb222ae diff --git a/.github/workflows/docs-pr.yml b/.github/workflows/docs-pr.yml index 63135a1..7d35e5c 100644 --- a/.github/workflows/docs-pr.yml +++ b/.github/workflows/docs-pr.yml @@ -7,7 +7,7 @@ name: Collection Docs concurrency: group: docs-pr-${{ github.head_ref }} cancel-in-progress: true -'on': +on: pull_request_target: types: [opened, synchronize, reopened, closed] diff --git a/.github/workflows/docs-push.yml b/.github/workflows/docs-push.yml index 3d2c2b1..80f62f5 100644 --- a/.github/workflows/docs-push.yml +++ b/.github/workflows/docs-push.yml @@ -7,7 +7,7 @@ name: Collection Docs concurrency: group: docs-push-${{ github.sha }} cancel-in-progress: true -'on': +on: push: branches: - main diff --git a/.github/workflows/ee.yml b/.github/workflows/ee.yml new file mode 100644 index 0000000..b04d197 --- /dev/null +++ b/.github/workflows/ee.yml @@ -0,0 +1,159 @@ +--- +# Copyright (c) Ansible Project +# GNU General Public License v3.0+ (see LICENSES/GPL-3.0-or-later.txt or https://www.gnu.org/licenses/gpl-3.0.txt) +# SPDX-License-Identifier: GPL-3.0-or-later + +name: execution environment +on: + # Run CI against all pushes (direct commits, also merged PRs), Pull Requests + push: + branches: + - main + - stable-* + pull_request: + # Run CI once per day (at 05:15 UTC) + # This ensures that even if there haven't been commits that we are still testing against latest version of ansible-builder + schedule: + - cron: '15 5 * * *' + +env: + NAMESPACE: community + COLLECTION_NAME: routeros + +jobs: + build: + name: Build and test EE (${{ matrix.name }}) + strategy: + fail-fast: false + matrix: + name: + - '' + ansible_core: + - '' + ansible_runner: + - '' + base_image: + - '' + pre_base: + - '' + extra_vars: + - '' + other_deps: + - '' + exclude: + - ansible_core: '' + include: + - name: ansible-core devel @ RHEL UBI 9 + ansible_core: https://github.com/ansible/ansible/archive/devel.tar.gz + ansible_runner: ansible-runner + other_deps: |2 + python_interpreter: + package_system: python3.11 python3.11-pip python3.11-wheel python3.11-cryptography + python_path: "/usr/bin/python3.11" + base_image: docker.io/redhat/ubi9:latest + pre_base: '"#"' + - name: ansible-core 2.15 @ Rocky Linux 9 + ansible_core: https://github.com/ansible/ansible/archive/stable-2.15.tar.gz + ansible_runner: ansible-runner + base_image: quay.io/rockylinux/rockylinux:9 + pre_base: '"#"' + runs-on: ubuntu-latest + steps: + - name: Check out code + uses: actions/checkout@v4 + with: + path: ansible_collections/${{ env.NAMESPACE }}/${{ env.COLLECTION_NAME }} + persist-credentials: false + + - name: Set up Python + uses: actions/setup-python@v5 + with: + python-version: '3.11' + + - name: Install ansible-builder and ansible-navigator + run: pip install ansible-builder ansible-navigator + + - name: Verify requirements + run: ansible-builder introspect --sanitize . + + - name: Make sure galaxy.yml has version entry + run: >- + python -c + 'import yaml ; + f = open("galaxy.yml", "rb") ; + data = yaml.safe_load(f) ; + f.close() ; + data["version"] = data.get("version") or "0.0.1" ; + f = open("galaxy.yml", "wb") ; + f.write(yaml.dump(data).encode("utf-8")) ; + f.close() ; + ' + working-directory: ansible_collections/${{ env.NAMESPACE }}/${{ env.COLLECTION_NAME }} + + - name: Build collection + run: | + ansible-galaxy collection build --output-path ../../../ + working-directory: ansible_collections/${{ env.NAMESPACE }}/${{ env.COLLECTION_NAME }} + + - name: Create files for building execution environment + run: | + COLLECTION_FILENAME="$(ls "${NAMESPACE}-${COLLECTION_NAME}"-*.tar.gz)" + + # EE config + cat > execution-environment.yml < requirements.yml < + ansible-navigator run + --mode stdout + --container-engine docker + --pull-policy never + --set-environment-variable ANSIBLE_PRIVATE_ROLE_VARS=true + --execution-environment-image test-ee:latest + -v + all.yml + ${{ matrix.extra_vars }} + working-directory: ansible_collections/${{ env.NAMESPACE }}/${{ env.COLLECTION_NAME }}/tests/ee diff --git a/.gitignore b/.gitignore index 728531b..8e398ff 100644 --- a/.gitignore +++ b/.gitignore @@ -4,7 +4,6 @@ /tests/output/ /changelogs/.plugin-cache.yaml -/tests/integration/inventory # Byte-compiled / optimized / DLL files __pycache__/ diff --git a/.yamllint b/.yamllint deleted file mode 100644 index a6707e2..0000000 --- a/.yamllint +++ /dev/null @@ -1,53 +0,0 @@ ---- -# GNU General Public License v3.0+ (see LICENSES/GPL-3.0-or-later.txt or https://www.gnu.org/licenses/gpl-3.0.txt) -# SPDX-License-Identifier: GPL-3.0-or-later -# SPDX-FileCopyrightText: 2025 Felix Fontein - -extends: default - -ignore: | - /changelogs/ - -rules: - line-length: - max: 300 - level: error - document-start: - present: true - document-end: false - truthy: - level: error - allowed-values: - - 'true' - - 'false' - indentation: - spaces: 2 - indent-sequences: true - key-duplicates: enable - trailing-spaces: enable - new-line-at-end-of-file: disable - hyphens: - max-spaces-after: 1 - empty-lines: - max: 2 - max-start: 0 - max-end: 0 - commas: - max-spaces-before: 0 - min-spaces-after: 1 - max-spaces-after: 1 - colons: - max-spaces-before: 0 - max-spaces-after: 1 - brackets: - min-spaces-inside: 0 - max-spaces-inside: 0 - braces: - min-spaces-inside: 0 - max-spaces-inside: 1 - octal-values: - forbid-implicit-octal: true - forbid-explicit-octal: true - comments: - min-spaces-from-content: 1 - comments-indentation: false diff --git a/.yamllint-docs b/.yamllint-docs deleted file mode 100644 index de8947d..0000000 --- a/.yamllint-docs +++ /dev/null @@ -1,54 +0,0 @@ ---- -# GNU General Public License v3.0+ (see LICENSES/GPL-3.0-or-later.txt or https://www.gnu.org/licenses/gpl-3.0.txt) -# SPDX-License-Identifier: GPL-3.0-or-later -# SPDX-FileCopyrightText: 2025 Felix Fontein - -extends: default - -ignore: | - /changelogs/ - -rules: - line-length: - max: 160 - level: error - document-start: - present: false - document-end: - present: false - truthy: - level: error - allowed-values: - - 'true' - - 'false' - indentation: - spaces: 2 - indent-sequences: true - key-duplicates: enable - trailing-spaces: enable - new-line-at-end-of-file: disable - hyphens: - max-spaces-after: 1 - empty-lines: - max: 2 - max-start: 0 - max-end: 0 - commas: - max-spaces-before: 0 - min-spaces-after: 1 - max-spaces-after: 1 - colons: - max-spaces-before: 0 - max-spaces-after: 1 - brackets: - min-spaces-inside: 0 - max-spaces-inside: 0 - braces: - min-spaces-inside: 0 - max-spaces-inside: 1 - octal-values: - forbid-implicit-octal: true - forbid-explicit-octal: true - comments: - min-spaces-from-content: 1 - comments-indentation: false diff --git a/.yamllint-examples b/.yamllint-examples deleted file mode 100644 index 062ac5a..0000000 --- a/.yamllint-examples +++ /dev/null @@ -1,54 +0,0 @@ ---- -# GNU General Public License v3.0+ (see LICENSES/GPL-3.0-or-later.txt or https://www.gnu.org/licenses/gpl-3.0.txt) -# SPDX-License-Identifier: GPL-3.0-or-later -# SPDX-FileCopyrightText: 2025 Felix Fontein - -extends: default - -ignore: | - /changelogs/ - -rules: - line-length: - max: 160 - level: error - document-start: - present: true - document-end: - present: false - truthy: - level: error - allowed-values: - - 'true' - - 'false' - indentation: - spaces: 2 - indent-sequences: true - key-duplicates: enable - trailing-spaces: enable - new-line-at-end-of-file: disable - hyphens: - max-spaces-after: 1 - empty-lines: - max: 2 - max-start: 0 - max-end: 0 - commas: - max-spaces-before: 0 - min-spaces-after: 1 - max-spaces-after: 1 - colons: - max-spaces-before: 0 - max-spaces-after: 1 - brackets: - min-spaces-inside: 0 - max-spaces-inside: 0 - braces: - min-spaces-inside: 0 - max-spaces-inside: 1 - octal-values: - forbid-implicit-octal: true - forbid-explicit-octal: true - comments: - min-spaces-from-content: 1 - comments-indentation: false diff --git a/.yamllint-extra-docs b/.yamllint-extra-docs deleted file mode 100644 index 7e24c0f..0000000 --- a/.yamllint-extra-docs +++ /dev/null @@ -1,53 +0,0 @@ ---- -# GNU General Public License v3.0+ (see LICENSES/GPL-3.0-or-later.txt or https://www.gnu.org/licenses/gpl-3.0.txt) -# SPDX-License-Identifier: GPL-3.0-or-later -# SPDX-FileCopyrightText: 2025 Felix Fontein - -extends: default - -ignore: | - /changelogs/ - -rules: - line-length: - max: 160 - level: error - document-start: disable - document-end: - present: false - truthy: - level: error - allowed-values: - - 'true' - - 'false' - indentation: - spaces: 2 - indent-sequences: true - key-duplicates: enable - trailing-spaces: enable - new-line-at-end-of-file: disable - hyphens: - max-spaces-after: 1 - empty-lines: - max: 2 - max-start: 0 - max-end: 0 - commas: - max-spaces-before: 0 - min-spaces-after: 1 - max-spaces-after: 1 - colons: - max-spaces-before: 0 - max-spaces-after: 1 - brackets: - min-spaces-inside: 0 - max-spaces-inside: 0 - braces: - min-spaces-inside: 0 - max-spaces-inside: 1 - octal-values: - forbid-implicit-octal: true - forbid-explicit-octal: true - comments: - min-spaces-from-content: 1 - comments-indentation: false diff --git a/CHANGELOG.md b/CHANGELOG.md index af8c632..136ba21 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,235 +2,157 @@ **Topics** -- v3\.9\.0 +- v3\.6\.0 - Release Summary - Minor Changes - - Bugfixes -- v3\.8\.1 - - Release Summary - - Bugfixes -- v3\.8\.0 - - Release Summary - - Minor Changes -- v3\.7\.0 - - Release Summary - - Minor Changes -- v3\.6\.0 - - Release Summary - - Minor Changes - v3\.5\.0 - - Release Summary - - Minor Changes + - Release Summary + - Minor Changes - v3\.4\.0 - - Release Summary - - Minor Changes - - Bugfixes + - Release Summary + - Minor Changes + - Bugfixes - v3\.3\.0 - - Release Summary - - Minor Changes + - Release Summary + - Minor Changes - v3\.2\.0 - - Release Summary - - Minor Changes + - Release Summary + - Minor Changes - v3\.1\.0 - - Release Summary - - Minor Changes - - Bugfixes + - Release Summary + - Minor Changes + - Bugfixes - v3\.0\.0 - - Release Summary + - Release Summary - Breaking Changes / Porting Guide - Removed Features \(previously deprecated\) - v2\.20\.0 - - Release Summary - - Minor Changes + - Release Summary + - Minor Changes - v2\.19\.0 - - Release Summary - - Minor Changes + - Release Summary + - Minor Changes - v2\.18\.0 - - Release Summary - - Minor Changes + - Release Summary + - Minor Changes - Deprecated Features - - Bugfixes + - Bugfixes - v2\.17\.0 - - Release Summary - - Minor Changes + - Release Summary + - Minor Changes - v2\.16\.0 - - Release Summary - - Minor Changes + - Release Summary + - Minor Changes - v2\.15\.0 - - Release Summary - - Minor Changes + - Release Summary + - Minor Changes - v2\.14\.0 - - Release Summary - - Minor Changes + - Release Summary + - Minor Changes - v2\.13\.0 - - Release Summary - - Minor Changes - - Bugfixes + - Release Summary + - Minor Changes + - Bugfixes - v2\.12\.0 - - Release Summary - - Minor Changes + - Release Summary + - Minor Changes - v2\.11\.0 - - Release Summary - - Minor Changes + - Release Summary + - Minor Changes - v2\.10\.0 - - Release Summary - - Minor Changes - - Bugfixes + - Release Summary + - Minor Changes + - Bugfixes - v2\.9\.0 - - Release Summary - - Minor Changes - - Bugfixes + - Release Summary + - Minor Changes + - Bugfixes - v2\.8\.3 - - Release Summary + - Release Summary - Known Issues - v2\.8\.2 - - Release Summary - - Bugfixes + - Release Summary + - Bugfixes - v2\.8\.1 - - Release Summary - - Bugfixes + - Release Summary + - Bugfixes - v2\.8\.0 - - Release Summary - - Minor Changes - - Bugfixes + - Release Summary + - Minor Changes + - Bugfixes - v2\.7\.0 - - Release Summary - - Minor Changes - - Bugfixes + - Release Summary + - Minor Changes + - Bugfixes - v2\.6\.0 - - Release Summary - - Minor Changes - - Bugfixes + - Release Summary + - Minor Changes + - Bugfixes - v2\.5\.0 - - Release Summary - - Minor Changes - - Bugfixes + - Release Summary + - Minor Changes + - Bugfixes - v2\.4\.0 - - Release Summary - - Minor Changes - - Bugfixes + - Release Summary + - Minor Changes + - Bugfixes - Known Issues - v2\.3\.1 - - Release Summary + - Release Summary - Known Issues - v2\.3\.0 - - Release Summary - - Minor Changes - - Bugfixes + - Release Summary + - Minor Changes + - Bugfixes - v2\.2\.1 - - Release Summary - - Bugfixes + - Release Summary + - Bugfixes - v2\.2\.0 - - Release Summary - - Minor Changes - - Bugfixes + - Release Summary + - Minor Changes + - Bugfixes - New Modules - v2\.1\.0 - - Release Summary - - Minor Changes - - Bugfixes + - Release Summary + - Minor Changes + - Bugfixes - New Modules - v2\.0\.0 - - Release Summary - - Minor Changes + - Release Summary + - Minor Changes - Breaking Changes / Porting Guide - - Bugfixes + - Bugfixes - New Plugins - Filter - v1\.2\.0 - - Release Summary - - Minor Changes - - Bugfixes + - Release Summary + - Minor Changes + - Bugfixes - v1\.1\.0 - - Release Summary - - Minor Changes + - Release Summary + - Minor Changes - v1\.0\.1 - - Release Summary - - Bugfixes + - Release Summary + - Bugfixes - v1\.0\.0 - - Release Summary - - Bugfixes + - Release Summary + - Bugfixes - v0\.1\.1 - - Release Summary - - Bugfixes + - Release Summary + - Bugfixes - v0\.1\.0 - - Release Summary - - Minor Changes - - -## v3\.9\.0 - - -### Release Summary - -Bugfix and feature release\. - - -### Minor Changes - -* api\_info\, api modify \- add remote\-log\-format\, remote\-protocol\, and event\-delimiter to system logging action \([https\://github\.com/ansible\-collections/community\.routeros/pull/381](https\://github\.com/ansible\-collections/community\.routeros/pull/381)\)\. -* api\_info\, api\_modify \- add disable\-link\-local\-address and stale\-neighbor\-timeout fields to ipv6 settings \([https\://github\.com/ansible\-collections/community\.routeros/pull/380](https\://github\.com/ansible\-collections/community\.routeros/pull/380)\)\. -* api\_info\, api\_modify \- adjust neighbor limit fields in ipv6 settings to match RouterOS 7\.18 and newer \([https\://github\.com/ansible\-collections/community\.routeros/pull/380](https\://github\.com/ansible\-collections/community\.routeros/pull/380)\)\. -* api\_info\, api\_modify \- set passthrough default in ip firewall mangle to true for RouterOS 7\.19 and newer \([https\://github\.com/ansible\-collections/community\.routeros/pull/382](https\://github\.com/ansible\-collections/community\.routeros/pull/382)\)\. -* api\_info\, api\_modify \- since RouterOS 7\.17 VRF is supported for OVPN server\. It now supports multiple entries\, while api\_modify so far only accepted a single entry\. The interface ovpn\-server server path now allows multiple entries on RouterOS 7\.17 and newer \([https\://github\.com/ansible\-collections/community\.routeros/pull/383](https\://github\.com/ansible\-collections/community\.routeros/pull/383)\)\. - - -### Bugfixes - -* routeros terminal plugin \- fix terminal\_stdout\_re pattern to handle long system identities when connecting to RouterOS through SSH \([https\://github\.com/ansible\-collections/community\.routeros/pull/386](https\://github\.com/ansible\-collections/community\.routeros/pull/386)\)\. - - -## v3\.8\.1 - - -### Release Summary - -Bugfix release\. - - -### Bugfixes - -* facts and api\_facts modules \- prevent deprecation warnings when used with ansible\-core 2\.19 \([https\://github\.com/ansible\-collections/community\.routeros/pull/384](https\://github\.com/ansible\-collections/community\.routeros/pull/384)\)\. - - -## v3\.8\.0 - - -### Release Summary - -Feature release\. - - -### Minor Changes - -* api\_info\, api\_modify \- add interface ethernet switch port\-isolation which is supported since RouterOS 6\.43 \([https\://github\.com/ansible\-collections/community\.routeros/pull/375](https\://github\.com/ansible\-collections/community\.routeros/pull/375)\)\. -* api\_info\, api\_modify \- add routing bfd configuration\. Officially stabilized BFD support for BGP and OSPF is available since RouterOS 7\.11 - \([https\://github\.com/ansible\-collections/community\.routeros/pull/375](https\://github\.com/ansible\-collections/community\.routeros/pull/375)\)\. -* api\_modify\, api\_info \- support API path ip ipsec mode\-config \([https\://github\.com/ansible\-collections/community\.routeros/pull/376](https\://github\.com/ansible\-collections/community\.routeros/pull/376)\)\. - - -## 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/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 port\-cost\-mode to interface bridge 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)\)\. + - Release Summary + - Minor Changes ## v3\.6\.0 - + ### Release Summary Feature release\. - + ### Minor Changes * api\_info\, api\_modify \- add mdns\-repeat\-ifaces to ip dns for RouterOS 7\.16 and newer \([https\://github\.com/ansible\-collections/community\.routeros/pull/358](https\://github\.com/ansible\-collections/community\.routeros/pull/358)\)\. @@ -240,12 +162,12 @@ Feature release\. ## v3\.5\.0 - + ### Release Summary Feature release\. - + ### Minor Changes * api\_info\, api\_modify \- change default for /ip/cloud/ddns\-enabled for RouterOS 7\.17 and newer from yes to auto \([https\://github\.com/ansible\-collections/community\.routeros/pull/350](https\://github\.com/ansible\-collections/community\.routeros/pull/350)\)\. @@ -253,17 +175,17 @@ Feature release\. ## v3\.4\.0 - + ### Release Summary Feature and bugfix release\. - + ### Minor Changes * api\_info\, api\_modify \- add support for the ip dns forwarders 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)\)\. - + ### Bugfixes * api\_info\, api\_modify \- remove the primary key action from the interface wifi provisioning path\, since RouterOS also allows to create completely duplicate entries \([https\://github\.com/ansible\-collections/community\.routeros/issues/344](https\://github\.com/ansible\-collections/community\.routeros/issues/344)\, [https\://github\.com/ansible\-collections/community\.routeros/pull/345](https\://github\.com/ansible\-collections/community\.routeros/pull/345)\)\. @@ -271,12 +193,12 @@ Feature and bugfix release\. ## v3\.3\.0 - + ### Release Summary Feature release\. - + ### Minor Changes * api\_info\, api\_modify \- add missing attribute require\-message\-auth for the radius 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)\)\. @@ -287,12 +209,12 @@ Feature release\. ## v3\.2\.0 - + ### Release Summary Feature release\. - + ### Minor Changes * api\_info\, api\_modify \- add support for the routing filter community\-list 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)\)\. @@ -300,17 +222,17 @@ Feature release\. ## v3\.1\.0 - + ### Release Summary Bugfix and feature release\. - + ### Minor Changes * api\_info\, api\_modify \- add missing fields comment\, next\-pool to ip pool path \([https\://github\.com/ansible\-collections/community\.routeros/pull/327](https\://github\.com/ansible\-collections/community\.routeros/pull/327)\)\. - + ### Bugfixes * api\_info\, api\_modify \- fields log and log\-prefix in paths ip firewall filter\, ip firewall mangle\, ip firewall nat\, ip firewall raw now have the correct default values \([https\://github\.com/ansible\-collections/community\.routeros/pull/324](https\://github\.com/ansible\-collections/community\.routeros/pull/324)\)\. @@ -318,7 +240,7 @@ Bugfix and feature release\. ## v3\.0\.0 - + ### Release Summary Major release that drops support for End of Life Python versions and fixes check mode for community\.routeros\.command\. @@ -336,12 +258,12 @@ Major release that drops support for End of Life Python versions and fixes check ## v2\.20\.0 - + ### Release Summary Feature release\. - + ### 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)\)\. @@ -352,12 +274,12 @@ Feature release\. ## v2\.19\.0 - + ### Release Summary Feature release\. - + ### Minor Changes * api\_info\, api\_modify \- add support for the ip dns adlist 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)\)\. @@ -369,12 +291,12 @@ Feature release\. ## v2\.18\.0 - + ### Release Summary Feature release\. - + ### Minor Changes * api\_info \- allow to restrict the output by limiting fields to specific values with the new restrict option \([https\://github\.com/ansible\-collections/community\.routeros/pull/305](https\://github\.com/ansible\-collections/community\.routeros/pull/305)\)\. @@ -390,7 +312,7 @@ Feature release\. * The collection deprecates support for all Ansible/ansible\-base/ansible\-core versions that are currently End of Life\, [according to the ansible\-core support matrix](https\://docs\.ansible\.com/ansible\-core/devel/reference\_appendices/release\_and\_maintenance\.html\#ansible\-core\-support\-matrix)\. This means that the next major release of the collection will no longer support Ansible 2\.9\, ansible\-base 2\.10\, ansible\-core 2\.11\, ansible\-core 2\.12\, ansible\-core 2\.13\, and ansible\-core 2\.14\. - + ### Bugfixes * api\_modify\, api\_info \- change the default of ingress\-filtering in paths interface bridge and interface bridge port back to false for RouterOS before version 7 \([https\://github\.com/ansible\-collections/community\.routeros/pull/305](https\://github\.com/ansible\-collections/community\.routeros/pull/305)\)\. @@ -398,12 +320,12 @@ Feature release\. ## v2\.17\.0 - + ### Release Summary Feature release\. - + ### Minor Changes * api\_info\, api\_modify \- add system health settings path \([https\://github\.com/ansible\-collections/community\.routeros/pull/294](https\://github\.com/ansible\-collections/community\.routeros/pull/294)\)\. @@ -413,12 +335,12 @@ Feature release\. ## v2\.16\.0 - + ### Release Summary Feature release\. - + ### Minor Changes * api\_info\, api\_modify \- add missing path /ppp secret \([https\://github\.com/ansible\-collections/community\.routeros/pull/286](https\://github\.com/ansible\-collections/community\.routeros/pull/286)\)\. @@ -427,12 +349,12 @@ Feature release\. ## v2\.15\.0 - + ### Release Summary Feature release\. - + ### Minor Changes * api\_info\, api\_modify \- Add RouterOS 7\.x support to /mpls ldp path \([https\://github\.com/ansible\-collections/community\.routeros/pull/271](https\://github\.com/ansible\-collections/community\.routeros/pull/271)\)\. @@ -449,12 +371,12 @@ Feature release\. ## v2\.14\.0 - + ### Release Summary Feature release\. - + ### Minor Changes * api\_info\, api\_modify \- add read\-only fields installed\-version\, latest\-version and status in system package update \([https\://github\.com/ansible\-collections/community\.routeros/pull/263](https\://github\.com/ansible\-collections/community\.routeros/pull/263)\)\. @@ -464,18 +386,18 @@ Feature release\. ## v2\.13\.0 - + ### Release Summary Bugfix and feature release\. - + ### Minor Changes * api\_info\, api\_modify \- make path user group modifiable and add comment 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)\)\. * api\_modify\, api\_info \- add support for the ip vrf path in RouterOS 7 \([https\://github\.com/ansible\-collections/community\.routeros/pull/259](https\://github\.com/ansible\-collections/community\.routeros/pull/259)\) - + ### Bugfixes * facts \- fix date not getting removed for idempotent config export \([https\://github\.com/ansible\-collections/community\.routeros/pull/262](https\://github\.com/ansible\-collections/community\.routeros/pull/262)\)\. @@ -483,12 +405,12 @@ Bugfix and feature release\. ## v2\.12\.0 - + ### Release Summary Feature release\. - + ### Minor Changes * api\_info\, api\_modify \- add interface ovpn\-client 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)\)\. @@ -502,12 +424,12 @@ Feature release\. ## v2\.11\.0 - + ### Release Summary Feature and bugfix release\. - + ### Minor Changes * api\_info\, api\_modify \- add missing DoH parameters doh\-max\-concurrent\-queries\, doh\-max\-server\-connections\, and doh\-timeout to the ip dns 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)\) @@ -522,12 +444,12 @@ Feature and bugfix release\. ## v2\.10\.0 - + ### Release Summary Bugfix and feature release\. - + ### Minor Changes * api\_info \- add new include\_read\_only 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)\)\. @@ -551,7 +473,7 @@ Bugfix and feature release\. * api\_modify \- add new handle\_read\_only and handle\_write\_only options to handle the module\'s behavior for read\-only and write\-only fields \([https\://github\.com/ansible\-collections/community\.routeros/pull/213](https\://github\.com/ansible\-collections/community\.routeros/pull/213)\)\. * api\_modify\, api\_info \- support API paths routing id\, routing bgp connection \([https\://github\.com/ansible\-collections/community\.routeros/pull/220](https\://github\.com/ansible\-collections/community\.routeros/pull/220)\)\. - + ### Bugfixes * api\_info\, api\_modify \- in the snmp path\, ensure that engine\-id\-suffix is only available on RouterOS 7\.10\+\, and that engine\-id is read\-only on RouterOS 7\.10\+ \([https\://github\.com/ansible\-collections/community\.routeros/issues/208](https\://github\.com/ansible\-collections/community\.routeros/issues/208)\, [https\://github\.com/ansible\-collections/community\.routeros/pull/218](https\://github\.com/ansible\-collections/community\.routeros/pull/218)\)\. @@ -559,18 +481,18 @@ Bugfix and feature release\. ## v2\.9\.0 - + ### Release Summary Bugfix and feature release\. - + ### Minor Changes * api\_info\, api\_modify \- add path caps\-man channel and enable path caps\-man manager interface \([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)\)\. * api\_info\, api\_modify \- add path ip traffic\-flow target \([https\://github\.com/ansible\-collections/community\.routeros/issues/191](https\://github\.com/ansible\-collections/community\.routeros/issues/191)\, [https\://github\.com/ansible\-collections/community\.routeros/pull/192](https\://github\.com/ansible\-collections/community\.routeros/pull/192)\)\. - + ### Bugfixes * api\_modify\, api\_info \- add missing parameter engine\-id\-suffix for the snmp path \([https\://github\.com/ansible\-collections/community\.routeros/issues/189](https\://github\.com/ansible\-collections/community\.routeros/issues/189)\, [https\://github\.com/ansible\-collections/community\.routeros/pull/190](https\://github\.com/ansible\-collections/community\.routeros/pull/190)\)\. @@ -578,7 +500,7 @@ Bugfix and feature release\. ## v2\.8\.3 - + ### Release Summary Maintenance release with updated documentation\. @@ -599,12 +521,12 @@ for the rendered HTML version of the documentation of the latest release\. ## v2\.8\.2 - + ### Release Summary Bugfix release\. - + ### Bugfixes * api\_modify\, api\_info \- add missing parameter tls for the tool e\-mail path \([https\://github\.com/ansible\-collections/community\.routeros/issues/179](https\://github\.com/ansible\-collections/community\.routeros/issues/179)\, [https\://github\.com/ansible\-collections/community\.routeros/pull/180](https\://github\.com/ansible\-collections/community\.routeros/pull/180)\)\. @@ -612,12 +534,12 @@ Bugfix release\. ## v2\.8\.1 - + ### Release Summary Bugfix release\. - + ### Bugfixes * facts \- do not crash in CLI output preprocessing in unexpected situations during line unwrapping \([https\://github\.com/ansible\-collections/community\.routeros/issues/170](https\://github\.com/ansible\-collections/community\.routeros/issues/170)\, [https\://github\.com/ansible\-collections/community\.routeros/pull/177](https\://github\.com/ansible\-collections/community\.routeros/pull/177)\)\. @@ -625,12 +547,12 @@ Bugfix release\. ## v2\.8\.0 - + ### Release Summary Bugfix and feature release\. - + ### Minor Changes * api\_modify \- adapt data for API paths ip dhcp\-server network \([https\://github\.com/ansible\-collections/community\.routeros/pull/156](https\://github\.com/ansible\-collections/community\.routeros/pull/156)\)\. @@ -640,7 +562,7 @@ Bugfix and feature release\. * api\_modify \- support API paths ip firewall layer7\-protocol \([https\://github\.com/ansible\-collections/community\.routeros/pull/153](https\://github\.com/ansible\-collections/community\.routeros/pull/153)\)\. * command \- workaround for extra characters in stdout in RouterOS versions between 6\.49 and 7\.1\.5 \([https\://github\.com/ansible\-collections/community\.routeros/issues/62](https\://github\.com/ansible\-collections/community\.routeros/issues/62)\, [https\://github\.com/ansible\-collections/community\.routeros/pull/161](https\://github\.com/ansible\-collections/community\.routeros/pull/161)\)\. - + ### Bugfixes * api\_info\, api\_modify \- fix default and remove behavior for dhcp\-options in path ip dhcp\-client \([https\://github\.com/ansible\-collections/community\.routeros/issues/148](https\://github\.com/ansible\-collections/community\.routeros/issues/148)\, [https\://github\.com/ansible\-collections/community\.routeros/pull/154](https\://github\.com/ansible\-collections/community\.routeros/pull/154)\)\. @@ -650,17 +572,17 @@ Bugfix and feature release\. ## v2\.7\.0 - + ### Release Summary Bugfix and feature release\. - + ### Minor Changes * api\_modify\, api\_info \- support API paths ip arp\, ip firewall raw\, ipv6 firewall raw \([https\://github\.com/ansible\-collections/community\.routeros/pull/144](https\://github\.com/ansible\-collections/community\.routeros/pull/144)\)\. - + ### Bugfixes * api\_modify\, api\_info \- defaults corrected for fields in interface wireguard peers API path \([https\://github\.com/ansible\-collections/community\.routeros/pull/144](https\://github\.com/ansible\-collections/community\.routeros/pull/144)\)\. @@ -668,18 +590,18 @@ Bugfix and feature release\. ## v2\.6\.0 - + ### Release Summary Regular bugfix and feature release\. - + ### Minor Changes * api\_modify\, api\_info \- add field regexp to ip dns static \([https\://github\.com/ansible\-collections/community\.routeros/issues/141](https\://github\.com/ansible\-collections/community\.routeros/issues/141)\)\. * api\_modify\, api\_info \- support API paths interface wireguard\, interface wireguard peers \([https\://github\.com/ansible\-collections/community\.routeros/pull/143](https\://github\.com/ansible\-collections/community\.routeros/pull/143)\)\. - + ### Bugfixes * api\_modify \- do not use name as a unique key in ip dns static \([https\://github\.com/ansible\-collections/community\.routeros/issues/141](https\://github\.com/ansible\-collections/community\.routeros/issues/141)\)\. @@ -688,17 +610,17 @@ Regular bugfix and feature release\. ## v2\.5\.0 - + ### Release Summary Feature and bugfix release\. - + ### Minor Changes * api\_info\, api\_modify \- support API paths interface ethernet poe\, interface gre6\, interface vrrp and also support all previously missing fields of entries in ip dhcp\-server \([https\://github\.com/ansible\-collections/community\.routeros/pull/137](https\://github\.com/ansible\-collections/community\.routeros/pull/137)\)\. - + ### Bugfixes * api\_modify \- address\-pool field of entries in API path ip dhcp\-server is not required anymore \([https\://github\.com/ansible\-collections/community\.routeros/pull/137](https\://github\.com/ansible\-collections/community\.routeros/pull/137)\)\. @@ -706,12 +628,12 @@ Feature and bugfix release\. ## v2\.4\.0 - + ### Release Summary Feature release improving the api\* modules\. - + ### Minor Changes * api\* modules \- Add new option force\_no\_cert to connect with ADH ciphers \([https\://github\.com/ansible\-collections/community\.routeros/pull/124](https\://github\.com/ansible\-collections/community\.routeros/pull/124)\)\. @@ -732,7 +654,7 @@ Feature release improving the api\* modules\. * api\_modify\, api\_info \- support for fields blackhole\, pref\-src\, routing\-table\, suppress\-hw\-offload\, type\, vrf\-interface in ip route path \([https\://github\.com/ansible\-collections/community\.routeros/pull/131](https\://github\.com/ansible\-collections/community\.routeros/pull/131)\)\. * api\_modify\, api\_info \- support paths system ntp client servers and system ntp server available in ROS7\, as well as new fields servers\, mode\, and vrf for system ntp client \([https\://github\.com/ansible\-collections/community\.routeros/pull/122](https\://github\.com/ansible\-collections/community\.routeros/pull/122)\)\. - + ### Bugfixes * api\_modify \- ip route entry can be defined without the need of gateway field\, which is correct for unreachable/blackhole type of routes \([https\://github\.com/ansible\-collections/community\.routeros/pull/131](https\://github\.com/ansible\-collections/community\.routeros/pull/131)\)\. @@ -750,7 +672,7 @@ Feature release improving the api\* modules\. ## v2\.3\.1 - + ### Release Summary Maintenance release with improved documentation\. @@ -763,19 +685,19 @@ Maintenance release with improved documentation\. ## v2\.3\.0 - + ### Release Summary Feature and bugfix release\. - + ### 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)\)\. * api\* modules \- added timeout parameter \([https\://github\.com/ansible\-collections/community\.routeros/pull/109](https\://github\.com/ansible\-collections/community\.routeros/pull/109)\)\. * api\_modify\, api\_info \- support API path ip firewall mangle \([https\://github\.com/ansible\-collections/community\.routeros/pull/110](https\://github\.com/ansible\-collections/community\.routeros/pull/110)\)\. - + ### Bugfixes * api\_modify\, api\_info \- make API path ip dhcp\-server support script\, and ip firewall nat support in\-interface and in\-interface\-list \([https\://github\.com/ansible\-collections/community\.routeros/pull/110](https\://github\.com/ansible\-collections/community\.routeros/pull/110)\)\. @@ -783,12 +705,12 @@ Feature and bugfix release\. ## v2\.2\.1 - + ### Release Summary Bugfix release\. - + ### Bugfixes * api\_modify\, api\_info \- make API path ip dhcp\-server lease support server\=all \([https\://github\.com/ansible\-collections/community\.routeros/issues/104](https\://github\.com/ansible\-collections/community\.routeros/issues/104)\, [https\://github\.com/ansible\-collections/community\.routeros/pull/107](https\://github\.com/ansible\-collections/community\.routeros/pull/107)\)\. @@ -797,17 +719,17 @@ Bugfix release\. ## v2\.2\.0 - + ### Release Summary New feature release\. - + ### Minor Changes * All software licenses are now in the LICENSES/ directory of the collection root\. Moreover\, SPDX\-License\-Identifier\: 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)\)\. - + ### Bugfixes * Include LICENSES/BSD\-2\-Clause\.txt file for the routeros module utils \([https\://github\.com/ansible\-collections/community\.routeros/pull/101](https\://github\.com/ansible\-collections/community\.routeros/pull/101)\)\. @@ -821,12 +743,12 @@ New feature release\. ## v2\.1\.0 - + ### Release Summary Feature and bugfix release with new modules\. - + ### Minor Changes * Added a community\.routeros\.api module defaults group\. Use with group/community\.routeros\.api 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)\)\. @@ -835,7 +757,7 @@ Feature and bugfix release with new modules\. * api \- update query to accept symbolic parameters \([https\://github\.com/ansible\-collections/community\.routeros/pull/63](https\://github\.com/ansible\-collections/community\.routeros/pull/63)\)\. * api\* modules \- allow to set an encoding other than the default ASCII for communicating with the API \([https\://github\.com/ansible\-collections/community\.routeros/pull/95](https\://github\.com/ansible\-collections/community\.routeros/pull/95)\)\. - + ### Bugfixes * query \- fix query function check for \.id vs\. id arguments to not conflict with routeros arguments like identity \([https\://github\.com/ansible\-collections/community\.routeros/pull/68](https\://github\.com/ansible\-collections/community\.routeros/pull/68)\, [https\://github\.com/ansible\-collections/community\.routeros/issues/67](https\://github\.com/ansible\-collections/community\.routeros/issues/67)\)\. @@ -850,12 +772,12 @@ Feature and bugfix release with new modules\. ## v2\.0\.0 - + ### Release Summary A new major release with breaking changes in the behavior of community\.routeros\.api and community\.routeros\.command\. - + ### Minor Changes * api \- make validation of WHERE for query more strict \([https\://github\.com/ansible\-collections/community\.routeros/pull/53](https\://github\.com/ansible\-collections/community\.routeros/pull/53)\)\. @@ -869,7 +791,7 @@ A new major release with breaking changes in the behavior of community\.ro * api \- splitting commands no longer uses a naive split by whitespace\, but a more RouterOS CLI compatible splitting algorithm \([https\://github\.com/ansible\-collections/community\.routeros/pull/45](https\://github\.com/ansible\-collections/community\.routeros/pull/45)\)\. * command \- the module now always indicates that a change happens\. If this is not correct\, please use changed\_when to determine the correct changed status for a task \([https\://github\.com/ansible\-collections/community\.routeros/pull/50](https\://github\.com/ansible\-collections/community\.routeros/pull/50)\)\. - + ### Bugfixes * api \- improve splitting of WHERE queries \([https\://github\.com/ansible\-collections/community\.routeros/pull/47](https\://github\.com/ansible\-collections/community\.routeros/pull/47)\)\. @@ -891,12 +813,12 @@ A new major release with breaking changes in the behavior of community\.ro ## v1\.2\.0 - + ### Release Summary Bugfix and feature release\. - + ### 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)\)\. @@ -904,7 +826,7 @@ Bugfix and feature release\. * api \- rename option ssl to tls\, and keep the old name as an alias \([https\://github\.com/ansible\-collections/community\.routeros/pull/37](https\://github\.com/ansible\-collections/community\.routeros/pull/37)\)\. * fact \- add fact ansible\_net\_config\_nonverbose to get idempotent config \(no date\, no verbose\) \([https\://github\.com/ansible\-collections/community\.routeros/pull/23](https\://github\.com/ansible\-collections/community\.routeros/pull/23)\)\. - + ### Bugfixes * api \- when using TLS/SSL\, remove explicit cipher configuration to insecure values\, which also makes it impossible to connect to newer RouterOS versions \([https\://github\.com/ansible\-collections/community\.routeros/pull/34](https\://github\.com/ansible\-collections/community\.routeros/pull/34)\)\. @@ -912,12 +834,12 @@ Bugfix and feature release\. ## v1\.1\.0 - + ### Release Summary This release allow dashes in usernames for SSH\-based modules\. - + ### Minor Changes * command \- added support for a dash \(\-\) in username \([https\://github\.com/ansible\-collections/community\.routeros/pull/18](https\://github\.com/ansible\-collections/community\.routeros/pull/18)\)\. @@ -926,12 +848,12 @@ This release allow dashes in usernames for SSH\-based modules\. ## v1\.0\.1 - + ### Release Summary Maintenance release with a bugfix for api\. - + ### Bugfixes * api \- remove id to \.id as default requirement which conflicts with RouterOS id configuration parameter \([https\://github\.com/ansible\-collections/community\.routeros/pull/15](https\://github\.com/ansible\-collections/community\.routeros/pull/15)\)\. @@ -939,12 +861,12 @@ Maintenance release with a bugfix for api\. ## v1\.0\.0 - + ### Release Summary This is the first production \(non\-prerelease\) release of community\.routeros\. - + ### Bugfixes * routeros terminal plugin \- allow slashes in hostnames for terminal detection\. Without this\, slashes in hostnames will result in connection timeouts \([https\://github\.com/ansible\-collections/community\.network/pull/138](https\://github\.com/ansible\-collections/community\.network/pull/138)\)\. @@ -952,12 +874,12 @@ This is the first production \(non\-prerelease\) release of community\.rou ## v0\.1\.1 - + ### Release Summary Small improvements and bugfixes over the initial release\. - + ### Bugfixes * api \- fix crash when the ssl parameter is used \([https\://github\.com/ansible\-collections/community\.routeros/pull/3](https\://github\.com/ansible\-collections/community\.routeros/pull/3)\)\. @@ -965,12 +887,12 @@ Small improvements and bugfixes over the initial release\. ## v0\.1\.0 - + ### Release Summary The community\.routeros continues the work on the Ansible RouterOS modules from their state in community\.network 1\.2\.0\. The changes listed here are thus relative to the modules community\.network\.routeros\_\*\. - + ### 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)\)\. diff --git a/CHANGELOG.rst b/CHANGELOG.rst index 3fc3b05..744afef 100644 --- a/CHANGELOG.rst +++ b/CHANGELOG.rst @@ -4,71 +4,6 @@ Community RouterOS Release Notes .. contents:: Topics -v3.9.0 -====== - -Release Summary ---------------- - -Bugfix and feature release. - -Minor Changes -------------- - -- api_info, api modify - add ``remote-log-format``, ``remote-protocol``, and ``event-delimiter`` to ``system logging action`` (https://github.com/ansible-collections/community.routeros/pull/381). -- api_info, api_modify - add ``disable-link-local-address`` and ``stale-neighbor-timeout`` fields to ``ipv6 settings`` (https://github.com/ansible-collections/community.routeros/pull/380). -- api_info, api_modify - adjust neighbor limit fields in ``ipv6 settings`` to match RouterOS 7.18 and newer (https://github.com/ansible-collections/community.routeros/pull/380). -- api_info, api_modify - set ``passthrough`` default in ``ip firewall mangle`` to ``true`` for RouterOS 7.19 and newer (https://github.com/ansible-collections/community.routeros/pull/382). -- api_info, api_modify - since RouterOS 7.17 VRF is supported for OVPN server. It now supports multiple entries, while ``api_modify`` so far only accepted a single entry. The ``interface ovpn-server server`` path now allows multiple entries on RouterOS 7.17 and newer (https://github.com/ansible-collections/community.routeros/pull/383). - -Bugfixes --------- - -- routeros terminal plugin - fix ``terminal_stdout_re`` pattern to handle long system identities when connecting to RouterOS through SSH (https://github.com/ansible-collections/community.routeros/pull/386). - -v3.8.1 -====== - -Release Summary ---------------- - -Bugfix release. - -Bugfixes --------- - -- facts and api_facts modules - prevent deprecation warnings when used with ansible-core 2.19 (https://github.com/ansible-collections/community.routeros/pull/384). - -v3.8.0 -====== - -Release Summary ---------------- - -Feature release. - -Minor Changes -------------- - -- api_info, api_modify - add ``interface ethernet switch port-isolation`` which is supported since RouterOS 6.43 (https://github.com/ansible-collections/community.routeros/pull/375). -- api_info, api_modify - add ``routing bfd configuration``. Officially stabilized BFD support for BGP and OSPF is available since RouterOS 7.11 - (https://github.com/ansible-collections/community.routeros/pull/375). -- api_modify, api_info - support API path ``ip ipsec mode-config`` (https://github.com/ansible-collections/community.routeros/pull/376). - -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 ====== diff --git a/README.md b/README.md index 7d4f4c3..2d6aec1 100644 --- a/README.md +++ b/README.md @@ -34,11 +34,11 @@ For more information about communication, see the [Ansible communication guide]( ## Tested with Ansible -Tested with the current ansible-core 2.15, ansible-core 2.16, ansible-core 2.17, ansible-core 2.18, and ansible-core 2.19 releases and the current development version of ansible-core. Ansible 2.9, ansible-base 2.10, and ansible-core versions before 2.15.0 are not supported. +Tested with the current ansible-core 2.15, ansible-core 2.16, ansible-core 2.17, and ansible-core 2.18 releases and the current development version of ansible-core. Ansible 2.9, ansible-base 2.10, and ansible-core versions before 2.15.0 are not supported. ## 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 @@ -208,4 +208,4 @@ See [LICENSES/GPL-3.0-or-later.txt](https://github.com/ansible-collections/commu Parts of the collection are licensed under the [BSD 2-Clause license](https://github.com/ansible-collections/community.routeros/blob/main/LICENSES/BSD-2-Clause.txt). -All files have a machine readable `SDPX-License-Identifier:` comment denoting its respective license(s) or an equivalent entry in an accompanying `.license` file. Only changelog fragments (which will not be part of a release) are covered by a blanket statement in `REUSE.toml`. This conforms to the [REUSE specification](https://reuse.software/spec/). +All files have a machine readable `SDPX-License-Identifier:` comment denoting its respective license(s) or an equivalent entry in an accompanying `.license` file. Only changelog fragments (which will not be part of a release) are covered by a blanket statement in `.reuse/dep5`. This conforms to the [REUSE specification](https://reuse.software/spec/). diff --git a/antsibull-nox.toml b/antsibull-nox.toml index 72982fa..541f4e7 100644 --- a/antsibull-nox.toml +++ b/antsibull-nox.toml @@ -10,28 +10,20 @@ [sessions] [sessions.lint] +# https://ansible.readthedocs.io/projects/antsibull-nox/config-file/#basic-linting-sessions + +# disable reformatting for now run_isort = false run_black = false + +# disable most linters run_flake8 = false run_pylint = false -run_yamllint = true -yamllint_config = ".yamllint" -yamllint_config_plugins = ".yamllint-docs" -yamllint_config_plugins_examples = ".yamllint-examples" -yamllint_config_extra_docs = ".yamllint-extra-docs" +run_yamllint = false run_mypy = false [sessions.docs_check] validate_collection_refs="all" -codeblocks_restrict_types = [ - "ansible-output", - "ini", - "yaml", - "yaml+jinja", -] -codeblocks_restrict_type_exact_case = true -codeblocks_allow_without_type = false -codeblocks_allow_literal_blocks = false [sessions.license_check] @@ -40,11 +32,6 @@ 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/", -] -run_avoid_characters = true [[sessions.extra_checks.action_groups_config]] name = "api" @@ -52,10 +39,6 @@ pattern = "^api.*$" exclusions = [] doc_fragment = "community.routeros.attributes.actiongroup_api" -[[sessions.extra_checks.avoid_character_group]] -name = "tab" -regex = "\\x09" - [sessions.build_import_check] run_galaxy_importer = true @@ -74,24 +57,3 @@ controller_python_versions_only = true "2.16" = ["3.10"] "2.17" = ["3.8"] "2.18" = ["3.9"] -"2.19" = ["3.11"] - -[[sessions.ee_check.execution_environments]] -name = "devel-ubi-9" -description = "ansible-core devel @ RHEL UBI 9" -test_playbooks = ["tests/ee/all.yml"] -config.images.base_image.name = "docker.io/redhat/ubi9:latest" -config.dependencies.ansible_core.package_pip = "https://github.com/ansible/ansible/archive/devel.tar.gz" -config.dependencies.ansible_runner.package_pip = "ansible-runner" -config.dependencies.python_interpreter.package_system = "python3.12 python3.12-pip python3.12-wheel python3.12-cryptography" -config.dependencies.python_interpreter.python_path = "/usr/bin/python3.12" -runtime_environment = {"ANSIBLE_PRIVATE_ROLE_VARS" = "true"} - -[[sessions.ee_check.execution_environments]] -name = "2.15-rocky-9" -description = "ansible-core 2.15 @ Rocky Linux 9" -test_playbooks = ["tests/ee/all.yml"] -config.images.base_image.name = "quay.io/rockylinux/rockylinux:9" -config.dependencies.ansible_core.package_pip = "https://github.com/ansible/ansible/archive/stable-2.15.tar.gz" -config.dependencies.ansible_runner.package_pip = "ansible-runner" -runtime_environment = {"ANSIBLE_PRIVATE_ROLE_VARS" = "true"} diff --git a/changelogs/changelog.yaml b/changelogs/changelog.yaml index 1ba1857..5bb0119 100644 --- a/changelogs/changelog.yaml +++ b/changelogs/changelog.yaml @@ -901,73 +901,3 @@ 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' - 3.8.0: - changes: - minor_changes: - - api_info, api_modify - add ``interface ethernet switch port-isolation`` - which is supported since RouterOS 6.43 (https://github.com/ansible-collections/community.routeros/pull/375). - - 'api_info, api_modify - add ``routing bfd configuration``. Officially stabilized - BFD support for BGP and OSPF is available since RouterOS 7.11 - - (https://github.com/ansible-collections/community.routeros/pull/375). - - ' - - api_modify, api_info - support API path ``ip ipsec mode-config`` (https://github.com/ansible-collections/community.routeros/pull/376). - release_summary: Feature release. - fragments: - - 3.8.0.yml - - 375-port_isolation-and-routing_bfd_configuration.yml - - 376-ipsec-mode-config.yml - release_date: '2025-06-14' - 3.8.1: - changes: - bugfixes: - - facts and api_facts modules - prevent deprecation warnings when used with - ansible-core 2.19 (https://github.com/ansible-collections/community.routeros/pull/384). - release_summary: Bugfix release. - fragments: - - 3.8.1.yml - - 384-warnings.yml - release_date: '2025-07-26' - 3.9.0: - changes: - bugfixes: - - routeros terminal plugin - fix ``terminal_stdout_re`` pattern to handle - long system identities when connecting to RouterOS through SSH (https://github.com/ansible-collections/community.routeros/pull/386). - minor_changes: - - api_info, api modify - add ``remote-log-format``, ``remote-protocol``, and - ``event-delimiter`` to ``system logging action`` (https://github.com/ansible-collections/community.routeros/pull/381). - - api_info, api_modify - add ``disable-link-local-address`` and ``stale-neighbor-timeout`` - fields to ``ipv6 settings`` (https://github.com/ansible-collections/community.routeros/pull/380). - - api_info, api_modify - adjust neighbor limit fields in ``ipv6 settings`` - to match RouterOS 7.18 and newer (https://github.com/ansible-collections/community.routeros/pull/380). - - api_info, api_modify - set ``passthrough`` default in ``ip firewall mangle`` - to ``true`` for RouterOS 7.19 and newer (https://github.com/ansible-collections/community.routeros/pull/382). - - api_info, api_modify - since RouterOS 7.17 VRF is supported for OVPN server. - It now supports multiple entries, while ``api_modify`` so far only accepted - a single entry. The ``interface ovpn-server server`` path now allows multiple - entries on RouterOS 7.17 and newer (https://github.com/ansible-collections/community.routeros/pull/383). - release_summary: Bugfix and feature release. - fragments: - - 3.9.0.yml - - 380-ipv6-settings.yml - - 381-logging-cef.yml - - 382-mangle-passthrough.yml - - 385-vrf-support-for-ovpn-server.yml - - 386-fix-pattern-to-handle-long-identity.yml - release_date: '2025-08-10' diff --git a/changelogs/config.yaml b/changelogs/config.yaml index 39b7120..a02e530 100644 --- a/changelogs/config.yaml +++ b/changelogs/config.yaml @@ -7,9 +7,9 @@ changelog_filename_template: ../CHANGELOG.rst changelog_filename_version_depth: 0 changes_file: changelog.yaml changes_format: combined -ignore_other_fragment_extensions: true keep_fragments: false mention_ancestor: true +flatmap: true new_plugins_after_name: removed_features notesdir: fragments output_formats: @@ -40,4 +40,3 @@ use_fqcn: true add_plugin_period: true changelog_nice_yaml: true changelog_sort: version -vcs: auto diff --git a/changelogs/fragments/392-sys-note-cli-login.yml b/changelogs/fragments/392-sys-note-cli-login.yml deleted file mode 100644 index 618db86..0000000 --- a/changelogs/fragments/392-sys-note-cli-login.yml +++ /dev/null @@ -1,2 +0,0 @@ -minor_changes: - - api_info, api_modify - add ``show-at-cli-login`` property in ``system note`` (https://github.com/ansible-collections/community.routeros/pull/392). diff --git a/docs/docsite/rst/api-guide.rst b/docs/docsite/rst/api-guide.rst index 9df17fc..6140d81 100644 --- a/docs/docsite/rst/api-guide.rst +++ b/docs/docsite/rst/api-guide.rst @@ -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 ` for details on the options. @@ -191,7 +191,7 @@ When this playbook completed successfully, you should be able to use the HTTPS a .. code-block:: yaml+jinja - community.routeros.api: - # ... + ... tls: true validate_certs: true validate_cert_hostname: true diff --git a/docs/docsite/rst/ssh-guide.rst b/docs/docsite/rst/ssh-guide.rst index ac1f65b..4b0eb20 100644 --- a/docs/docsite/rst/ssh-guide.rst +++ b/docs/docsite/rst/ssh-guide.rst @@ -66,22 +66,22 @@ With the above inventory, you can use the following playbook to execute ``/syste gather_facts: false tasks: - - name: Gather system resources - community.routeros.command: - commands: - - /system resource print - register: system_resource_print + - name: Gather system resources + community.routeros.command: + commands: + - /system resource print + register: system_resource_print - - name: Show system resources - debug: - var: system_resource_print.stdout_lines + - name: Show system resources + debug: + var: system_resource_print.stdout_lines - - name: Gather facts - community.routeros.facts: + - name: Gather facts + community.routeros.facts: - - name: Show a fact - debug: - msg: "First IP address: {{ ansible_net_all_ipv4_addresses[0] }}" + - name: Show a fact + debug: + msg: "First IP address: {{ ansible_net_all_ipv4_addresses[0] }}" This results in the following output: @@ -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 diff --git a/galaxy.yml b/galaxy.yml index f2ba31a..2bd801f 100644 --- a/galaxy.yml +++ b/galaxy.yml @@ -7,7 +7,7 @@ namespace: community name: routeros -version: 3.9.0 +version: 3.6.0 readme: README.md authors: - Egor Zaitsev (github.com/heuels) @@ -16,7 +16,7 @@ authors: description: Modules and plugins for MikroTik RouterOS license: - GPL-3.0-or-later -# license_file: COPYING +#license_file: COPYING tags: - network - mikrotik diff --git a/plugins/filter/join.yml b/plugins/filter/join.yml index f25d739..9ff8a50 100644 --- a/plugins/filter/join.yml +++ b/plugins/filter/join.yml @@ -20,7 +20,6 @@ DOCUMENTATION: - Felix Fontein (@felixfontein) EXAMPLES: | - --- - name: Join arguments for a RouterOS CLI command ansible.builtin.set_fact: arguments: "{{ ['foo=bar', 'comment=foo is bar'] | community.routeros.join }}" diff --git a/plugins/filter/list_to_dict.yml b/plugins/filter/list_to_dict.yml index 7b7c5b1..6e7992d 100644 --- a/plugins/filter/list_to_dict.yml +++ b/plugins/filter/list_to_dict.yml @@ -30,7 +30,6 @@ DOCUMENTATION: - Felix Fontein (@felixfontein) EXAMPLES: | - --- - name: Convert a list to a dictionary ansible.builtin.set_fact: dictionary: "{{ ['foo=bar', 'comment=foo is bar'] | community.routeros.list_to_dict }}" diff --git a/plugins/filter/quote_argument.yml b/plugins/filter/quote_argument.yml index 477a15e..26a1f04 100644 --- a/plugins/filter/quote_argument.yml +++ b/plugins/filter/quote_argument.yml @@ -19,11 +19,9 @@ DOCUMENTATION: - Felix Fontein (@felixfontein) EXAMPLES: | - --- - name: Quote a RouterOS CLI command argument ansible.builtin.set_fact: - quoted: >- - {{ 'comment=this is a "comment"' | community.routeros.quote_argument }} + quoted: "{{ 'comment=this is a "comment"' | community.routeros.quote_argument }}" # Should result in 'comment="this is a \"comment\""' RETURN: diff --git a/plugins/filter/quote_argument_value.yml b/plugins/filter/quote_argument_value.yml index b4da246..839895b 100644 --- a/plugins/filter/quote_argument_value.yml +++ b/plugins/filter/quote_argument_value.yml @@ -19,11 +19,9 @@ DOCUMENTATION: - Felix Fontein (@felixfontein) EXAMPLES: | - --- - name: Quote a RouterOS CLI command argument's value ansible.builtin.set_fact: - quoted: >- - {{ 'this is a "comment"' | community.routeros.quote_argument_value }} + quoted: "{{ 'this is a "comment"' | community.routeros.quote_argument_value }}" # Should result in '"this is a \"comment\""' RETURN: diff --git a/plugins/filter/split.yml b/plugins/filter/split.yml index cb4ba88..5fc4b30 100644 --- a/plugins/filter/split.yml +++ b/plugins/filter/split.yml @@ -19,11 +19,9 @@ DOCUMENTATION: - Felix Fontein (@felixfontein) EXAMPLES: | - --- - name: Split command into list of arguments ansible.builtin.set_fact: - argument_list: >- - {{ 'foo=bar comment="foo is bar" baz' | community.routeros.split }} + argument_list: "{{ 'foo=bar comment="foo is bar" baz' | community.routeros.split }}" # Should result in ['foo=bar', 'comment=foo is bar', 'baz'] RETURN: diff --git a/plugins/module_utils/_api_data.py b/plugins/module_utils/_api_data.py index fb4f919..222155d 100644 --- a/plugins/module_utils/_api_data.py +++ b/plugins/module_utils/_api_data.py @@ -281,7 +281,6 @@ PATHS = { versioned_fields=[ ([('7.0', '<')], 'ingress-filtering', KeyInfo(default=False)), ([('7.0', '>=')], 'ingress-filtering', KeyInfo(default=True)), - ([('7.13', '>=')], 'port-cost-mode', KeyInfo(default='long')), ([('7.16', '>=')], 'forward-reserved-addresses', KeyInfo(default=False)), ([('7.16', '>=')], 'max-learned-entries', KeyInfo(default='auto')), ], @@ -652,22 +651,13 @@ PATHS = { ), ('ip', 'ipsec', 'mode-config'): APIData( unversioned=VersionedAPIData( - fully_understood=True, - primary_keys=('name', ), - versioned_fields=[ - ([('6.43', '>=')], 'responder', KeyInfo(default=False)), - ([('6.44', '>=')], 'address', KeyInfo(can_disable=True, remove_value='0.0.0.0')), - ], + unknown_mechanism=True, + # primary_keys=('default', ), fields={ - 'address-pool': KeyInfo(can_disable=True, remove_value='none'), - 'address-prefix-length': KeyInfo(), - 'comment': KeyInfo(can_disable=True, remove_value=''), + 'default': KeyInfo(), 'name': KeyInfo(), - 'split-dns': KeyInfo(can_disable=True, remove_value=''), - 'split-include': KeyInfo(can_disable=True, remove_value=''), - 'src-address-list': KeyInfo(can_disable=True, remove_value=''), - 'static-dns': KeyInfo(can_disable=True, remove_value=''), - 'system-dns': KeyInfo(default=False), + 'responder': KeyInfo(), + 'use-responder-dns': KeyInfo(), }, ), ), @@ -1553,19 +1543,13 @@ PATHS = { fully_understood=True, versioned_fields=[ ([('7.16', '>=')], 'multipath-hash-policy', KeyInfo(default='l3')), - ([('7.17', '>=')], 'disable-link-local-address', KeyInfo(default=False)), - ([('7.17', '>=')], 'stale-neighbor-timeout', KeyInfo(default=60)), - ([('7.18', '>=')], 'allow-fast-path', KeyInfo(default=True)), - ([('7.18', '<')], 'max-neighbor-entries', KeyInfo(default=8192)), - ([('7.18', '>=')], 'min-neighbor-entries', KeyInfo()), - ([('7.18', '>=')], 'soft-max-neighbor-entries', KeyInfo()), - ([('7.18', '>=')], 'max-neighbor-entries', KeyInfo()), ], fields={ 'accept-redirects': KeyInfo(default='yes-if-forwarding-disabled'), 'accept-router-advertisements': KeyInfo(default='yes-if-forwarding-disabled'), 'disable-ipv6': KeyInfo(default=False), 'forward': KeyInfo(default=True), + 'max-neighbor-entries': KeyInfo(default=8192), }, ), ), @@ -1664,46 +1648,23 @@ PATHS = { ), ), ('interface', 'ovpn-server', 'server'): APIData( - versioned=[ - ('7.17', '>=', VersionedAPIData( - fully_understood=True, - fields={ - 'auth': KeyInfo(), - 'cipher': KeyInfo(), - 'default-profile': KeyInfo(default='default'), - 'enabled': KeyInfo(default=False), - 'keepalive-timeout': KeyInfo(default=60), - 'mac-address': KeyInfo(), - 'max-mtu': KeyInfo(default=1500), - 'mode': KeyInfo(default='ip'), - 'name': KeyInfo(default=''), - 'netmask': KeyInfo(default=24), - 'port': KeyInfo(default=1194), - 'protocol': KeyInfo(default='tcp'), - 'require-client-certificate': KeyInfo(default=False), - 'vrf': KeyInfo(default='main'), - }, - )), - ('7.17', '<', VersionedAPIData( - single_value=True, - fully_understood=True, - fields={ - 'auth': KeyInfo(), - 'cipher': KeyInfo(), - 'default-profile': KeyInfo(default='default'), - 'enabled': KeyInfo(default=False), - 'keepalive-timeout': KeyInfo(default=60), - 'mac-address': KeyInfo(), - 'max-mtu': KeyInfo(default=1500), - 'mode': KeyInfo(default='ip'), - 'name': KeyInfo(default=''), - 'netmask': KeyInfo(default=24), - 'port': KeyInfo(default=1194), - 'protocol': KeyInfo(default='tcp'), - 'require-client-certificate': KeyInfo(default=False), - }, - )) - ] + unversioned=VersionedAPIData( + single_value=True, + fully_understood=True, + fields={ + 'auth': KeyInfo(), + 'cipher': KeyInfo(), + 'default-profile': KeyInfo(default='default'), + 'enabled': KeyInfo(default=False), + 'keepalive-timeout': KeyInfo(default=60), + 'mac-address': KeyInfo(), + 'max-mtu': KeyInfo(default=1500), + 'mode': KeyInfo(default='ip'), + 'netmask': KeyInfo(default=24), + 'port': KeyInfo(default=1194), + 'require-client-certificate': KeyInfo(default=False), + }, + ), ), ('interface', 'pppoe-server', 'server'): APIData( unversioned=VersionedAPIData( @@ -3174,10 +3135,6 @@ PATHS = { unversioned=VersionedAPIData( fully_understood=True, stratify_keys=('chain', ), - versioned_fields=[ - ([('7.19', '<')], 'passthrough', KeyInfo(can_disable=True)), - ([('7.19', '>=')], 'passthrough', KeyInfo(default=True)), - ], fields={ 'action': KeyInfo(), 'address-list': KeyInfo(can_disable=True), @@ -3229,6 +3186,7 @@ PATHS = { 'p2p': KeyInfo(can_disable=True), 'packet-mark': KeyInfo(can_disable=True), 'packet-size': KeyInfo(can_disable=True), + 'passthrough': KeyInfo(can_disable=True), 'per-connection-classifier': KeyInfo(can_disable=True), 'port': KeyInfo(can_disable=True), 'priority': KeyInfo(can_disable=True), @@ -4219,28 +4177,6 @@ PATHS = { }, ), ), - ('routing', 'bfd', 'configuration'): APIData( - versioned=[ - ('7.11', '>=', VersionedAPIData( - fully_understood=True, - fields={ - 'address-list': KeyInfo(), - 'addresses': KeyInfo(), - 'comment': KeyInfo(can_disable=True, remove_value=''), - 'copy-from': KeyInfo(), - 'disabled': KeyInfo(default=False), - 'forbid-bfd': KeyInfo(), - 'interfaces': KeyInfo(), - 'min-echo-rx': KeyInfo(), - 'min-rx': KeyInfo(), - 'min-tx': KeyInfo(), - 'multiplier': KeyInfo(), - 'place-before': KeyInfo(), - 'vrf': KeyInfo(), - }, - )) - ], - ), ('routing', 'bfd', 'interface'): APIData( unversioned=VersionedAPIData( unknown_mechanism=True, @@ -4421,9 +4357,6 @@ PATHS = { unversioned=VersionedAPIData( single_value=True, fully_understood=True, - versioned_fields=[ - ([('7.14', '>=')], 'show-at-cli-login', KeyInfo(default=False)), - ], fields={ 'note': KeyInfo(default=''), 'show-at-login': KeyInfo(default=True), @@ -4960,18 +4893,6 @@ PATHS = { }, ), ), - ('interface', 'ethernet', 'switch', 'port-isolation'): APIData( - versioned=[ - ('6.43', '>=', VersionedAPIData( - primary_keys=('name', ), - fully_understood=True, - fields={ - 'forwarding-override': KeyInfo(), - 'name': KeyInfo(), - }, - )), - ], - ), ('ip', 'dhcp-client', 'option'): APIData( unversioned=VersionedAPIData( fixed_entries=True, @@ -5247,11 +5168,6 @@ PATHS = { unversioned=VersionedAPIData( fully_understood=True, primary_keys=('name',), - versioned_fields=[ - ([('7.18', '>=')], 'remote-log-format', KeyInfo(default='default')), - ([('7.18', '>=')], 'remote-protocol', KeyInfo(default='udp')), - ([('7.18', '>=')], 'cef-event-delimiter', KeyInfo(default='\r\n')), - ], fields={ 'bsd-syslog': KeyInfo(default=False), 'comment': KeyInfo(can_disable=True, remove_value=''), diff --git a/plugins/modules/api.py b/plugins/modules/api.py index d3ec089..4e42912 100644 --- a/plugins/modules/api.py +++ b/plugins/modules/api.py @@ -164,7 +164,6 @@ seealso: """ EXAMPLES = r""" ---- - name: Get example - ip address print community.routeros.api: hostname: "{{ hostname }}" diff --git a/plugins/modules/api_facts.py b/plugins/modules/api_facts.py index 09c0fbb..b6d1261 100644 --- a/plugins/modules/api_facts.py +++ b/plugins/modules/api_facts.py @@ -55,7 +55,6 @@ seealso: """ EXAMPLES = r""" ---- - name: Collect all facts from the device community.routeros.api_facts: hostname: 192.168.88.1 @@ -419,6 +418,8 @@ FACT_SUBSETS = dict( VALID_SUBSETS = frozenset(FACT_SUBSETS.keys()) +warnings = [] + def main(): argument_spec = dict( @@ -483,7 +484,7 @@ def main(): key = 'ansible_net_%s' % key ansible_facts[key] = value - module.exit_json(ansible_facts=ansible_facts) + module.exit_json(ansible_facts=ansible_facts, warnings=warnings) if __name__ == '__main__': diff --git a/plugins/modules/api_find_and_modify.py b/plugins/modules/api_find_and_modify.py index acdd125..817451c 100644 --- a/plugins/modules/api_find_and_modify.py +++ b/plugins/modules/api_find_and_modify.py @@ -75,22 +75,6 @@ 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 @@ -99,7 +83,6 @@ seealso: """ EXAMPLES = r""" ---- - name: Rename bridge from 'bridge' to 'my-bridge' community.routeros.api_find_and_modify: hostname: "{{ hostname }}" @@ -110,10 +93,6 @@ 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: @@ -125,14 +104,10 @@ 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""" @@ -209,17 +184,6 @@ 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', ) @@ -231,8 +195,6 @@ 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()) @@ -260,9 +222,6 @@ 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) @@ -270,7 +229,7 @@ def main(): api_path = compose_api_path(api, path) - old_data = filter_entries(list(api_path), ignore_dynamic=ignore_dynamic, ignore_builtin=ignore_builtin) + old_data = list(api_path) new_data = [entry.copy() for entry in old_data] # Find matching entries @@ -339,7 +298,7 @@ def main(): error=to_native(e), ) ) - new_data = filter_entries(list(api_path), ignore_dynamic=ignore_dynamic, ignore_builtin=ignore_builtin) + new_data = list(api_path) # Produce return value more = {} diff --git a/plugins/modules/api_info.py b/plugins/modules/api_info.py index 1eb8a94..b94e987 100644 --- a/plugins/modules/api_info.py +++ b/plugins/modules/api_info.py @@ -68,7 +68,6 @@ options: - interface ethernet poe - interface ethernet switch - interface ethernet switch port - - interface ethernet switch port-isolation - interface gre - interface gre6 - interface l2tp-client @@ -149,7 +148,6 @@ options: - ip firewall service-port - ip hotspot service-port - ip ipsec identity - - ip ipsec mode-config - ip ipsec peer - ip ipsec policy - ip ipsec profile @@ -204,7 +202,6 @@ options: - queue type - radius - radius incoming - - routing bfd configuration - routing bgp aggregate - routing bgp connection - routing bgp instance @@ -327,7 +324,6 @@ seealso: """ EXAMPLES = r""" ---- - name: Get IP addresses community.routeros.api_info: hostname: "{{ hostname }}" diff --git a/plugins/modules/api_modify.py b/plugins/modules/api_modify.py index dfa6fd5..1fb4dae 100644 --- a/plugins/modules/api_modify.py +++ b/plugins/modules/api_modify.py @@ -79,7 +79,6 @@ options: - interface ethernet poe - interface ethernet switch - interface ethernet switch port - - interface ethernet switch port-isolation - interface gre - interface gre6 - interface l2tp-client @@ -160,7 +159,6 @@ options: - ip firewall service-port - ip hotspot service-port - ip ipsec identity - - ip ipsec mode-config - ip ipsec peer - ip ipsec policy - ip ipsec profile @@ -215,7 +213,6 @@ options: - queue type - radius - radius incoming - - routing bfd configuration - routing bgp aggregate - routing bgp connection - routing bgp instance @@ -363,7 +360,6 @@ seealso: """ EXAMPLES = r""" ---- - name: Setup DHCP server networks # Ensures that we have exactly two DHCP server networks (in the specified order) community.routeros.api_modify: diff --git a/plugins/modules/command.py b/plugins/modules/command.py index 50abe49..90f9733 100644 --- a/plugins/modules/command.py +++ b/plugins/modules/command.py @@ -77,7 +77,6 @@ seealso: """ EXAMPLES = r""" ---- - name: Run command on remote devices community.routeros.command: commands: /system routerboard print diff --git a/plugins/modules/facts.py b/plugins/modules/facts.py index e80143c..7b169b7 100644 --- a/plugins/modules/facts.py +++ b/plugins/modules/facts.py @@ -42,7 +42,6 @@ seealso: """ EXAMPLES = r""" ---- - name: Collect all facts from the device community.routeros.facts: gather_subset: all @@ -589,6 +588,8 @@ FACT_SUBSETS = dict( VALID_SUBSETS = frozenset(FACT_SUBSETS.keys()) +warnings = list() + def main(): """main entry point for module execution @@ -651,7 +652,7 @@ def main(): key = 'ansible_net_%s' % key ansible_facts[key] = value - module.exit_json(ansible_facts=ansible_facts) + module.exit_json(ansible_facts=ansible_facts, warnings=warnings) if __name__ == '__main__': diff --git a/plugins/terminal/routeros.py b/plugins/terminal/routeros.py index 8a39561..9d50fa2 100644 --- a/plugins/terminal/routeros.py +++ b/plugins/terminal/routeros.py @@ -31,9 +31,7 @@ class TerminalModule(TerminalBase): terminal_stdout_re = [ re.compile(br"\x1b<"), - re.compile( - br"((\[[\w\-\.]+\@)|(\r\<(([\w\-\.]*\@)|)))" - br"[\w\s\-\.\/]+\] ?( ?$"), + re.compile(br"\[[\w\-\.]+\@[\w\s\-\.\/]+\] ?( ?$"), re.compile(br"Please press \"Enter\" to continue!"), re.compile(br"Do you want to see the software license\? \[Y\/n\]: ?"), ] diff --git a/tests/ee/roles/filter_quoting/tasks/main.yml b/tests/ee/roles/filter_quoting/tasks/main.yml index c80af59..e7a2d29 100644 --- a/tests/ee/roles/filter_quoting/tasks/main.yml +++ b/tests/ee/roles/filter_quoting/tasks/main.yml @@ -22,7 +22,7 @@ assert: that: - >- - "Unexpected end of string during escaped parameter" in result.msg + result.msg == "Unexpected end of string during escaped parameter" - name: "Test quote_argument filter" assert: diff --git a/tests/integration/requirements.yml b/tests/integration/requirements.yml index 559c301..6a22736 100644 --- a/tests/integration/requirements.yml +++ b/tests/integration/requirements.yml @@ -4,4 +4,4 @@ # SPDX-License-Identifier: GPL-3.0-or-later collections: - - ansible.netcommon +- ansible.netcommon diff --git a/tests/sanity/ignore-2.20.txt b/tests/sanity/ignore-2.20.txt deleted file mode 100644 index 65e5bca..0000000 --- a/tests/sanity/ignore-2.20.txt +++ /dev/null @@ -1 +0,0 @@ -tests/update-docs.py shebang diff --git a/tests/sanity/ignore-2.20.txt.license b/tests/sanity/ignore-2.20.txt.license deleted file mode 100644 index edff8c7..0000000 --- a/tests/sanity/ignore-2.20.txt.license +++ /dev/null @@ -1,3 +0,0 @@ -GNU General Public License v3.0+ (see LICENSES/GPL-3.0-or-later.txt or https://www.gnu.org/licenses/gpl-3.0.txt) -SPDX-License-Identifier: GPL-3.0-or-later -SPDX-FileCopyrightText: Ansible Project diff --git a/tests/unit/plugins/modules/test_api_find_and_modify.py b/tests/unit/plugins/modules/test_api_find_and_modify.py index e700f9d..fe5e180 100644 --- a/tests/unit/plugins/modules/test_api_find_and_modify.py +++ b/tests/unit/plugins/modules/test_api_find_and_modify.py @@ -94,52 +94,6 @@ 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): @@ -731,29 +685,3 @@ 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)