<feed xmlns='http://www.w3.org/2005/Atom'>
<title>vyos.vyos.git/plugins, branch fix/black-formatting</title>
<subtitle>Ansible Network Collection for VyOS (mirror of https://github.com/vyos/vyos.vyos.git)
</subtitle>
<id>https://git.amelek.net/vyos/vyos.vyos.git/atom?h=fix%2Fblack-formatting</id>
<link rel='self' href='https://git.amelek.net/vyos/vyos.vyos.git/atom?h=fix%2Fblack-formatting'/>
<link rel='alternate' type='text/html' href='https://git.amelek.net/vyos/vyos.vyos.git/'/>
<updated>2026-08-19T19:28:06+00:00</updated>
<entry>
<title>Merge branch 'main' into fix/black-formatting</title>
<updated>2026-08-19T19:28:06+00:00</updated>
<author>
<name>omnom62</name>
<email>75066712+omnom62@users.noreply.github.com</email>
</author>
<published>2026-08-19T19:28:06+00:00</published>
<link rel='alternate' type='text/html' href='https://git.amelek.net/vyos/vyos.vyos.git/commit/?id=5a20bf9d67d11941aa25702d88bfd617d88c4b2c'/>
<id>urn:sha1:5a20bf9d67d11941aa25702d88bfd617d88c4b2c</id>
<content type='text'>
</content>
</entry>
<entry>
<title>T6820: HA/VRRP module (#438)</title>
<updated>2026-08-19T12:21:24+00:00</updated>
<author>
<name>omnom62</name>
<email>75066712+omnom62@users.noreply.github.com</email>
</author>
<published>2026-08-19T12:21:24+00:00</published>
<link rel='alternate' type='text/html' href='https://git.amelek.net/vyos/vyos.vyos.git/commit/?id=a6adced609472d88cb525f2ef1a4054b52692f76'/>
<id>urn:sha1:a6adced609472d88cb525f2ef1a4054b52692f76</id>
<content type='text'>
* Init VRRP

* RM Templates

* rm_templates for global_parameters

* virtual servers rm_templates

* update

* sync-group rm_tempalte

* VRRP GP GARP template rework

* RM template and new facts logic

* vrrp argspec

* Suppressing backup versions of files

* Facts for vrrp

* VRRP facts updates

* Facts almost done

* Argspec vrrp

* Argspec completed

* Argspec and facts for VRRP finished

* Documentation for VRRP module

* Sanity tests fixes and documentation

* VRRP config started

* Doc fixes

* Doc fixes

* Doc fixes

* Configuration for VRRP

* wip

* Updates to facts, config, templates in VRRP

* VRRP groups templates, facts and config

* VRRP works - templates for groups and virtual_servers

* Mid-result

* VRRP VS prototype

* Groups processor update

* Reworked vrrp.group and vrrp.group.garp processors

* VRRP grp recursive

* VRRP groups and vserver contd

* Update to VRRP want processing

* Updates to VRRP funcs

* VRRP VS RS config

* Sanity test fixes midway

* VRRP Real server fixes

* VRRP sync_group

* Latest fixes to etire VRRP config parsing

* Midway compare function

* update to vrrp group processing

* Mid results for merge parsers / compare

* Working merge for vrrp and virtserv

* Final merge / compare

* WIP replaced / Delete

* Updates to state processing

* Mid-result for virtual_servers

* Mid result commit

* Testing high-availability vrrp processing

* Retesting vrrp stanza

* Mid results

* Real server parsing

* SNMP vrrp fixed

* Sanity fixes

* Purged, rendered, gathered, parsed action states for VRRP

* VRRP integration and unit tests; code fixes midway results

* Sanity check fixes

* Merged integration test case for VRRP

* VRRP rendered integration test case

* Sanity tests fixes

* VRRP unit tests - merged and purged

* Mid-way replaced, deleted and overriden work. Description string fix

* Updates to integration and unit tests for VRRP

* Mid-result for deleted state VRRP

* Mid-results for VRRP deleted

* Deleted vrrp midway results

* Deleted state function for VRRP

* Deleted state VRRP, sanity checks fix

* Deleted integration tests

* Deleted_all unit and integration tests

* Deleted_all unit and integration tests

* Sanity check fixes

* Mid-results overridden VRRP

* WIP vrrp overridden sit and uat

* VRRP overridden sanity test

* UAT overriden vrrp

* UAT deleted for vrrp

* VRRP replaced UAT and SIT

* VRRP RTT SIT

* VRRP SIT suite ready

* Finals for VRRP module - clean-up and fixed UAT

* VRRP module doc examples updated

* VRRP sanity tests fixes

* VRRP disbale default fix

* Misc lint fixes

* Misc Lint fixes

* remove old files

* Rename vyos_vrrp -&gt; vyos_ha

* Rename vyos_vrrp to vyos_ha

* doc fixes

* Changes to HA module

* HA module fixes

* Sanity test fixes

* changelog

* ignore for HA/VRRP and 2.22

* AI-generated comments and fixes

* Fixes after review

* Misc fixes

* Misc fixes

* Misc fixes

* Misc fixes

* Sanity fixes

* Sanity fixes

* Misc changes

* T6820: code refactor to address valid AI comments

* T6820: Optimising facts, config and rm_templates

* T6820: UAT fixes

* T6820: docstring for utils/combine()

* T6820 Misc fixes to changelog

---------

Co-authored-by: Gaige B Paulsen &lt;gaige@cluetrust.com&gt;</content>
</entry>
<entry>
<title>Merge branch 'main' into fix/black-formatting</title>
<updated>2026-08-19T11:12:27+00:00</updated>
<author>
<name>omnom62</name>
<email>75066712+omnom62@users.noreply.github.com</email>
</author>
<published>2026-08-19T11:12:27+00:00</published>
<link rel='alternate' type='text/html' href='https://git.amelek.net/vyos/vyos.vyos.git/commit/?id=28173d14e62e7c582679526513d6ba220957430a'/>
<id>urn:sha1:28173d14e62e7c582679526513d6ba220957430a</id>
<content type='text'>
</content>
</entry>
<entry>
<title>T6830: vyos_file module (support for file upload, management and templating) (#495)</title>
<updated>2026-08-19T10:32:54+00:00</updated>
<author>
<name>omnom62</name>
<email>75066712+omnom62@users.noreply.github.com</email>
</author>
<published>2026-08-19T10:32:54+00:00</published>
<link rel='alternate' type='text/html' href='https://git.amelek.net/vyos/vyos.vyos.git/commit/?id=b6b58bc747c4ea59371253c5541cde92b922c173'/>
<id>urn:sha1:b6b58bc747c4ea59371253c5541cde92b922c173</id>
<content type='text'>
* T6830: vyos_file - support for copy, template, and upload

* T6830: vyos_file - support for copy, template, and upload

* T6830: vyos_file - support for copy, template, and upload

* T6830: Potential fix for pull request finding

Co-authored-by: Copilot Autofix powered by AI &lt;175728472+Copilot@users.noreply.github.com&gt;

* T6830: vyos_file - AI comments fixed

* T6830: vyos_file - AI comments fixed

* T6830: vyos_file - AI comments fixed

* T6830: Potential fix for pull request finding

Co-authored-by: Copilot Autofix powered by AI &lt;175728472+Copilot@users.noreply.github.com&gt;

* T6830: AI comments resolved

* T6830: vyos_file - AI comments fixed

* T6830: vyos_file - AI comments fixed

* T6830: vyos_file - AI comments fixed

* T6830: vyos_file - AI comments fixed

* T6830: vyos_file - AI comments fixed

---------

Co-authored-by: Copilot Autofix powered by AI &lt;175728472+Copilot@users.noreply.github.com&gt;</content>
</entry>
<entry>
<title>Merge branch 'main' into fix/black-formatting</title>
<updated>2026-08-04T10:03:25+00:00</updated>
<author>
<name>omnom62</name>
<email>75066712+omnom62@users.noreply.github.com</email>
</author>
<published>2026-08-04T10:03:25+00:00</published>
<link rel='alternate' type='text/html' href='https://git.amelek.net/vyos/vyos.vyos.git/commit/?id=d712b495f40d80d5e1963887ba1ce61d32b497be'/>
<id>urn:sha1:d712b495f40d80d5e1963887ba1ce61d32b497be</id>
<content type='text'>
</content>
</entry>
<entry>
<title>T6890: use boolean in documentation (#491)</title>
<updated>2026-08-04T09:46:02+00:00</updated>
<author>
<name>omnom62</name>
<email>75066712+omnom62@users.noreply.github.com</email>
</author>
<published>2026-08-04T09:46:02+00:00</published>
<link rel='alternate' type='text/html' href='https://git.amelek.net/vyos/vyos.vyos.git/commit/?id=fa0e13e1a28d2a1f1653db6767e74bc37acc4a28'/>
<id>urn:sha1:fa0e13e1a28d2a1f1653db6767e74bc37acc4a28</id>
<content type='text'>
* T6890: use boolean in documentation

* T6890: use booleans in documentation</content>
</entry>
<entry>
<title>Merge branch 'main' into fix/black-formatting</title>
<updated>2026-07-27T19:09:47+00:00</updated>
<author>
<name>omnom62</name>
<email>75066712+omnom62@users.noreply.github.com</email>
</author>
<published>2026-07-27T19:09:47+00:00</published>
<link rel='alternate' type='text/html' href='https://git.amelek.net/vyos/vyos.vyos.git/commit/?id=b0243027a73583eed7014ae924fbc79bb55577b5'/>
<id>urn:sha1:b0243027a73583eed7014ae924fbc79bb55577b5</id>
<content type='text'>
</content>
</entry>
<entry>
<title>T8522: fix parse_icmp_attr() split delimiter and UnboundLocalError (#464)</title>
<updated>2026-06-30T11:18:50+00:00</updated>
<author>
<name>Yuriy Andamasov</name>
<email>yuriy@vyos.io</email>
</author>
<published>2026-06-30T11:18:50+00:00</published>
<link rel='alternate' type='text/html' href='https://git.amelek.net/vyos/vyos.vyos.git/commit/?id=0e10d136ef280ca147b6f1e332072f6ba14c8844'/>
<id>urn:sha1:0e10d136ef280ca147b6f1e332072f6ba14c8844</id>
<content type='text'>
* Add easy-wins improvement spec for vyos.vyos collection

Covers five phases: formatting compliance, runtime.yml redirect fix,
deprecated feature cleanup, missing unit tests, and template deduplication.

Co-Authored-By: Claude Opus 4.6 (1M context) &lt;noreply@anthropic.com&gt;

* Add implementation plan for easy-wins improvements

15 tasks across 5 phases: formatting compliance, runtime.yml bugfix,
deprecated code cleanup, missing unit tests, template deduplication.

Co-Authored-By: Claude Opus 4.6 (1M context) &lt;noreply@anthropic.com&gt;

* Update spec and plan with architect review corrections

Key changes:
- Defer Phase 5 (template deduplication) to v7.0.0: route_maps
  are not identical, BGP dedup blocked by Python module-level
  scoping, OSPF has fundamentally different command paradigms
- Add .git-blame-ignore-revs step to Phase 1
- Add missing test cases: overridden/rendered for resource modules,
  aggregate/purge/with_address for vyos_vlan
- Fix incorrect claim that version.py LooseVersion is unused
- Add sequential merge requirement to preamble

Co-Authored-By: Claude Opus 4.6 (1M context) &lt;noreply@anthropic.com&gt;

* chore: add .worktrees/ and .claude/ to .gitignore

* T8522: fix parse_icmp_attr() split delimiter and UnboundLocalError

- Use val.split("/") instead of val.split(".") when parsing type/code pairs
- In the numeric-only branch, use int(val) instead of the undefined type_no variable
- Cast both type and code to int for consistent typing

Co-Authored-By: Claude Sonnet 4.6 &lt;noreply@anthropic.com&gt;

* T8522: remove unrelated planning docs and gitignore changes

These files were included from local main branch commits unrelated
to this bugfix. This commit removes them to keep the PR scoped.

Co-Authored-By: Claude Sonnet 4.6 &lt;noreply@anthropic.com&gt;

* T8522: add parsed test for legacy type/code ICMP format

Co-Authored-By: Claude Sonnet 4.6 &lt;noreply@anthropic.com&gt;

---------

Co-authored-by: Claude Opus 4.6 (1M context) &lt;noreply@anthropic.com&gt;
Co-authored-by: omnom62 &lt;75066712+omnom62@users.noreply.github.com&gt;</content>
</entry>
<entry>
<title>T2295: vyos_user: quote plaintext-password in generated set commands (#480)</title>
<updated>2026-06-25T19:30:57+00:00</updated>
<author>
<name>Stavros Kroustouris</name>
<email>kroustou@users.noreply.github.com</email>
</author>
<published>2026-06-25T19:30:57+00:00</published>
<link rel='alternate' type='text/html' href='https://git.amelek.net/vyos/vyos.vyos.git/commit/?id=6d7a2184e970624f74f333931f7f70a1f900f7b5'/>
<id>urn:sha1:6d7a2184e970624f74f333931f7f70a1f900f7b5</id>
<content type='text'>
* vyos_user: quote plaintext-password in generated set commands

VyOS requires quoted values for passwords with special characters.
Align with encrypted-password and integration test conventions.

Co-authored-by: Cursor &lt;cursoragent@cursor.com&gt;

* T2295: escape plaintext-password values in vyos_user set commands

Quote passwords for VyOS special-character handling and escape embedded
single quotes. Update RETURN sample, add unit tests, refresh changelog.

Co-authored-by: Cursor &lt;cursoragent@cursor.com&gt;

* T2295: shorten changelog fragment for ansible-lint line-length

Co-authored-by: Cursor &lt;cursoragent@cursor.com&gt;

* T2295: use shlex.quote() for plaintext-password values

Replace custom _quote_config_value() with stdlib shlex.quote() per
review feedback; update unit tests and RETURN sample accordingly.

Co-authored-by: Cursor &lt;cursoragent@cursor.com&gt;

* T2295: add complex plaintext-password quoting unit test

Cover spaces, shell metacharacters, embedded quotes, and backslashes in
one password; assert command output matches shlex.quote().

Co-authored-by: Cursor &lt;cursoragent@cursor.com&gt;

* T2295: assert explicit quoting in complex password unit test

Replace shlex.quote()-derived expectation with a fixed command string,
matching the other password quoting tests.

Co-authored-by: Cursor &lt;cursoragent@cursor.com&gt;

* Fix RETURN doc sample, add docstrings and workflow permissions

- RETURN sample was missing the username token in the example command
- Add docstrings to all undocumented module-level functions to bring
  docstring coverage above the 80% threshold
- Add explicit permissions: contents: read to codecoverage.yml

Co-Authored-By: Claude Sonnet 4.6 &lt;noreply@anthropic.com&gt;

* Revert "Fix RETURN doc sample, add docstrings and workflow permissions"

This reverts commit 827809ee49cf472a8bf30ec0b24d347a75fcb083.

---------

Co-authored-by: Cursor &lt;cursoragent@cursor.com&gt;
Co-authored-by: omnom62 &lt;75066712+omnom62@users.noreply.github.com&gt;
Co-authored-by: Claude Sonnet 4.6 &lt;noreply@anthropic.com&gt;</content>
</entry>
<entry>
<title>rm_templates: T8609: fix slow parse() from group-quantifier patterns (#470)</title>
<updated>2026-06-19T13:02:27+00:00</updated>
<author>
<name>Robert Navarro</name>
<email>crshman@gmail.com</email>
</author>
<published>2026-06-19T13:02:27+00:00</published>
<link rel='alternate' type='text/html' href='https://git.amelek.net/vyos/vyos.vyos.git/commit/?id=5b80cd0cbddd014e54b01e7fa1cd0c0777d94724'/>
<id>urn:sha1:5b80cd0cbddd014e54b01e7fa1cd0c0777d94724</id>
<content type='text'>
* rm_templates: T8609: fix slow parse() from group-quantifier patterns

Running an Ansible playbook that manages BGP route-maps on my VyOS 1.4
edge routers, the vyos.vyos.vyos_route_maps task (state=gathered or
state=merged) takes ~50 seconds per host, sometimes 100s+, against
devices with only a handful of route-maps configured.  The persistent
connection times out before the module finishes and the failure
surfaces as a misleading "socket path does not exist".

Three related quantifier shapes in nine rm_templates files cause O(2^n)
regex backtracking on inputs that share a parser's prefix but don't
match overall.  parse() time on a representative 12-line route-map
config drops from ~50s to &lt;1ms post-fix.

* Trailing form (188 sites): `(?P&lt;X&gt;\S+)\n  *$"""` -&gt; `(?P&lt;X&gt;\S+)\s*$"""`.
  Under re.VERBOSE the literal newline+indent between `\S+` and `*$`
  is stripped at compile time, so the source compiled to `(\S+)*$`
  with the `*` quantifying the named group.

* Mid-pattern `(group containing \S+)*` (22 sites in snmp_server.py
  with a couple in bgp_global*.py): e.g.
  `(?P&lt;protocol&gt;protocol\s\S+)*` -&gt; `(?P&lt;protocol&gt;protocol\s\S+)?`.
  Different position from the trailing form, but the same shape
  underneath (a group whose content includes \S+, quantified with
  `*`), so the same O(2^n) backtracking on prefix-sharing inputs.

* Mid-pattern `(literal-only group)*` (14 sites in snmp_server.py,
  bgp_address_family*.py, bgp_global*.py): e.g.
  `(?P&lt;as_set&gt;as-set)*` -&gt; `(?P&lt;as_set&gt;as-set)?`.  No \S+ inside the
  quantified group, so the backtracking exposure is much smaller.
  On the inputs these patterns actually receive (no device line
  carries duplicate flags) `*` and `?` accept identical input sets,
  so changing to `?` is behavior-preserving.

The first draft of this fix made set_comm_list_delete's
`(?P&lt;delete&gt;\S+)` group required.  The parser's setval emits `set
comm-list delete` with no token after `delete`, so the parser stopped
matching its own output (no existing fixture covered this case, which
is why the regression initially shipped).  CodeRabbit caught it
during review.  Replaced `delete(?P&lt;delete&gt;\S+)\s*$` with
`\s(?P&lt;delete&gt;delete)\s*$` so the named group captures the literal
word `delete`; the result template `{{True if delete is defined}}`
continues to evaluate True.

Affects: route_maps[/_14], bgp_global[/_14], bgp_address_family[/_14],
snmp_server, ospf_interfaces[/_14].

Adds tests/unit/modules/network/vyos/test_rm_templates_perf.py with
a 1-second budget against fixture inputs that have realistic-length
identifiers, plus a round-trip test asserting set_comm_list_delete
matches its own setval-generated line, plus a Bgp_address_familyTemplate14
budget test for symmetry with the other "hot" template families.

* Fix regex backtracking issues in parse() method

Fix slow parse() to prevent regex backtracking on prefix-sharing inputs across multiple files. Add unit test for the bugfixes.

* Refactor bug fixes for regex backtracking improvements

Updated bug fixes to include details on regex backtracking issues in multiple files.

* Fix typo in bugfixes section of changelog

* Update bugfixes for regex backtracking issues

* rm_templates: T8609: route_maps.py: fix remaining trailing `*$` patterns

Five sites in route_maps.py still had the `(?P&lt;name&gt;...)\n  *$` shape that collapses to `(?P&lt;name&gt;...)*$` under `re.VERBOSE`, parsers `sequence`, `on_match_next`, `set_atomic_aggregate`, `set_extcommunity_bandwidth_non_transitive`, and `match_community_exact_match`.  Collapsed each to `\s*$` on the same line as the named group, matching the rest of the PR.

* rm_templates: T8609: route_maps.py: split overlong getval to satisfy E501

Line 517 was 161 chars (`set_extcommunity_bandwidth_non_transitive` parser) and tripped pycodestyle's E501 sanity test in CI.  Split the regex source across two lines at the `\d+)` boundary; under `re.VERBOSE` the literal newline and indent between regex tokens are stripped at compile time, so the engine sees the same pattern.  `\s*$` stays on the same line as the closing capture group, so the group-quantifier shape this PR fixes elsewhere isn't reintroduced.

---------

Co-authored-by: omnom62 &lt;75066712+omnom62@users.noreply.github.com&gt;</content>
</entry>
</feed>
