| Age | Commit message (Collapse) | Author |
|
Reviewer request (gaige): top-level instruction files (.coderabbit.yaml,
AGENTS.md) belong in separate PRs. Also revert unrelated generated-docs
drift in vyos_config / vyos_bgp_global rst files. All four files are now
identical to main.
|
|
- restore the _state_deleted docstring lost in the L2-safeguard change,
now documenting the address-only delete semantics
- overridden test docstring said "delete interface stanzas" but the
module now emits address-only deletes; align wording
- quote loopback interface name in fixture for consistency with
vyos_interfaces_config.cfg
|
|
Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
|
|
Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
|
|
Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
|
|
|
|
|
|
|
|
* T8513: add .git-blame-ignore-revs to exclude bulk formatting commits
* T8513: fix changelog fragment - use trivial section and correct description
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
---------
Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-authored-by: omnom62 <75066712+omnom62@users.noreply.github.com>
|
|
|
|
|
|
* 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) <noreply@anthropic.com>
* 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) <noreply@anthropic.com>
* 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) <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* 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 <noreply@anthropic.com>
* T8522: add parsed test for legacy type/code ICMP format
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
---------
Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Co-authored-by: omnom62 <75066712+omnom62@users.noreply.github.com>
|
|
* 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 <cursoragent@cursor.com>
* 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 <cursoragent@cursor.com>
* T2295: shorten changelog fragment for ansible-lint line-length
Co-authored-by: Cursor <cursoragent@cursor.com>
* 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 <cursoragent@cursor.com>
* 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 <cursoragent@cursor.com>
* 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 <cursoragent@cursor.com>
* 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 <noreply@anthropic.com>
* Revert "Fix RETURN doc sample, add docstrings and workflow permissions"
This reverts commit 827809ee49cf472a8bf30ec0b24d347a75fcb083.
---------
Co-authored-by: Cursor <cursoragent@cursor.com>
Co-authored-by: omnom62 <75066712+omnom62@users.noreply.github.com>
Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>
|
|
|
|
* 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 <1ms post-fix.
* Trailing form (188 sites): `(?P<X>\S+)\n *$"""` -> `(?P<X>\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<protocol>protocol\s\S+)*` -> `(?P<protocol>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<as_set>as-set)*` -> `(?P<as_set>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<delete>\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<delete>\S+)\s*$` with
`\s(?P<delete>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<name>...)\n *$` shape that collapses to `(?P<name>...)*$` 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 <75066712+omnom62@users.noreply.github.com>
|
|
|
|
vyos/dependabot/github_actions/codecov/codecov-action-7
Bump codecov/codecov-action from 6 to 7
|
|
Bumps [codecov/codecov-action](https://github.com/codecov/codecov-action) from 6 to 7.
- [Release notes](https://github.com/codecov/codecov-action/releases)
- [Changelog](https://github.com/codecov/codecov-action/blob/main/CHANGELOG.md)
- [Commits](https://github.com/codecov/codecov-action/compare/v6...v7)
---
updated-dependencies:
- dependency-name: codecov/codecov-action
dependency-version: '7'
dependency-type: direct:production
update-type: version-update:semver-major
...
Signed-off-by: dependabot[bot] <support@github.com>
|
|
|
|
(#483)
The per-repo T-ID rule flagged every commit's first line, but on repos that
squash-merge AND block force-push (vyos.vyos enforces non_fast_forward on ~ALL
branches, zero bypass) authors cannot rewrite history to make existing commits
conform. The label became unclearable. Keep the title check (always fixable),
and exempt the per-commit check when a maintainer applies the new `legacy`
label. New PRs are still nudged toward the convention.
🤖 Generated by [robots](https://vyos.io)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Rewrites uses: pins to the three HIGH-fanout producers (vyos/.github,
vyos/vyos-cla-signatures, VyOS-Networks/vyos-reusable-workflows) from their
old default branch to the new production compat branch staged in Task 1.
No functional change; pin-ref rewrite only.
Tracking: T8943
|
|
|
|
* T8615: add Mergify config (extends: mergify central template)
Adds the org-local central-config inheritance file per the T8615 sweep
(re-scoped 2026-05-28). 4-line minimum: extends: mergify resolves to
vyos/mergify which provides commands_restrictions (9 slash commands x
4-sender allowlist), conflict labeler, PR-title T-ID format check,
opt-in auto-update, and the backport-conflict merge protection.
merge_protections_settings: reporting_method: check-runs declared
explicitly per-repo because only defaults and commands_restrictions are
documented as merging across extends: -- pin to current behavior pre
the 2026-07-31 default flip per data/github.md Mergify gotchas table.
Phase 0 CR: 0 finding(s). Known false positive: CR flags
extends: mergify as 'not a documented built-in preset' but Mergify
documents the org-local form at https://docs.mergify.com/configuration/sharing/.
Refs: T8615 (re-scoped 2026-05-28), IS-421
Generated by robots https://vyos.io
* T8615: switch yaml-language-server schema URL to JSON-schema
Replaces the human-docs file-format URL (which serves HTML and cannot
drive editor validation) with the machine-readable JSON-schema URL
that yaml-language-server actually resolves for autocomplete and
schema validation.
Old: https://docs.mergify.com/configuration/file-format/
New: https://docs.mergify.com/mergify-configuration-schema.json
Phase 0 CR: 0
0 finding(s).
Refs: T8615 (re-scoped 2026-05-28), IS-421
Generated by robots https://vyos.io
|
|
|
|
Co-authored-by: omnom62 <75066712+omnom62@users.noreply.github.com>
|
|
|
|
|
|
* T8519: add changelog fragment for new unit tests
* Update missing unit tests entry in changelog
Removed mention of unit tests for vyos_l3_interfaces and vyos_lldp_interfaces.
---------
Co-authored-by: omnom62 <75066712+omnom62@users.noreply.github.com>
|
|
* ci: switch .coderabbit.yaml to centralized inheritance (T8851)
* ci: T8851: add changelog fragment for CodeRabbit centralization
---------
Co-authored-by: omnom62 <75066712+omnom62@users.noreply.github.com>
|
|
|
|
This commit adds the argument `allow_password_change` in order to
control whether any configuration lines which would make changes to user
passwords should be filtered out or not.
Co-authored-by: Daniil Baturin <daniil@baturin.org>
Co-authored-by: omnom62 <75066712+omnom62@users.noreply.github.com>
|
|
|
|
|
|
Adds 7 unit tests for vyos_vlan covering present, present_no_change,
absent, absent_no_change, aggregate, purge, and address scenarios.
Fixture data moved to dedicated .cfg files under fixtures/.
🤖 Generated by [robots](https://vyos.io)
Co-authored-by: omnom62 <75066712+omnom62@users.noreply.github.com>
Co-authored-by: Daniil Baturin <daniil@baturin.org>
|
|
* T8515: remove commented-out pre-1.3 parameter artifacts from vyos_bgp_global docs
* T8515: remove stale vrf.old backup file
* T8515: add changelog fragment for deprecated code cleanup
* T8515: fix grammar in ebgp_multihop description
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
---------
Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-authored-by: omnom62 <75066712+omnom62@users.noreply.github.com>
|
|
* general: T8595: add AGENTS.md
* general: T8595: clean leaked internal references
* general: T8595: restore eaten spaces in shell command examples
* general: T8595: correct CI scope (no integration in CI yet) and version-matrix attribution
* general: T8595: add changelog fragment + refine CI scope (unit-galaxy/unit-source)
* general: T8595: address Copilot review threads on test command and commit convention
- Line 15: add `ansible-test units` alongside the existing pytest
command; the two correspond to the unit-galaxy and unit-source CI
jobs respectively, so documenting both gives contributors accurate
options for each CI path.
- Line 30: change "Commit / PR title" to "Commit headline". No
workflow in this repo enforces PR title format; the PR template
checklist confirms only commit headlines must carry a Phorge task ID.
🤖 Generated by [robots](https://vyos.io)
|
|
Bumps [ansible/team-devtools/.github/workflows/ah_token_refresh.yml](https://github.com/ansible/team-devtools) from 26.2.0 to 26.4.0.
- [Release notes](https://github.com/ansible/team-devtools/releases)
- [Commits](https://github.com/ansible/team-devtools/compare/v26.2.0...v26.4.0)
---
updated-dependencies:
- dependency-name: ansible/team-devtools/.github/workflows/ah_token_refresh.yml
dependency-version: 26.4.0
dependency-type: direct:production
update-type: version-update:semver-minor
...
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: omnom62 <75066712+omnom62@users.noreply.github.com>
|
|
Co-authored-by: Daniil Baturin <daniil@baturin.org>
|
|
* T8512: fix isort import ordering violations
* T8512: add changelog fragment
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
---------
Co-authored-by: omnom62 <75066712+omnom62@users.noreply.github.com>
Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>
|
|
Bumps [ansible/team-devtools/.github/workflows/ah_token_refresh.yml](https://github.com/ansible/team-devtools) from 26.1.0 to 26.2.0.
- [Release notes](https://github.com/ansible/team-devtools/releases)
- [Commits](https://github.com/ansible/team-devtools/compare/v26.1.0...v26.2.0)
---
updated-dependencies:
- dependency-name: ansible/team-devtools/.github/workflows/ah_token_refresh.yml
dependency-version: 26.2.0
dependency-type: direct:production
update-type: version-update:semver-minor
...
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Daniil Baturin <daniil@baturin.org>
Co-authored-by: omnom62 <75066712+omnom62@users.noreply.github.com>
Co-authored-by: Yuriy Andamasov <yuriy@vyos.io>
|
|
* T8584: add CodeRabbit review configuration
Add .coderabbit.yaml with path-specific guidelines for automated code
review, docstring generation, and unit test generation covering all
module types (resource and legacy), plugin layers, and test infrastructure.
🤖 Generated by [robots](https://vyos.io)
* T8584: fix changelog glob, valid keys, and vyos_vrf classification
- Expand changelog fragment glob to *.{yaml,yml} (18 of 19 fragments use .yml)
- Add known_issues and release_summary to valid changelog keys per changelogs/config.yaml
- Remove vyos_vrf from legacy module list — it has resource module infrastructure (argspec, config, facts)
🤖 Generated by [robots](https://vyos.io)
* T8584: add ansible/ansible and ansible.netcommon as linked repositories
CodeRabbit will reference core Ansible framework and netcommon base classes
when reviewing this collection modules, plugins, and test patterns.
🤖 Generated by [robots](https://vyos.io)
|
|
* 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) <noreply@anthropic.com>
* 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) <noreply@anthropic.com>
* 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) <noreply@anthropic.com>
* chore: add .worktrees/ and .claude/ to .gitignore
* T8523: add Copilot custom review instructions
Add .github/copilot-instructions.md and path-specific instruction
files under .github/instructions/ to teach Copilot project conventions:
copyright attribution, changelog fragment key selection, test mocking
patterns, required state coverage for resource modules, and module
option description standards.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
* T8523: remove copyright instructions from Copilot config
Copyright attribution rules are internal guidance kept in Claude
config, not in Copilot review instructions.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
* T8523: remove docs/superpowers files inadvertently included
These spec/plan files came from local main commits that were
pulled in during rebase. They are unrelated to this PR.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
* T8523: fix inaccuracies flagged by Copilot review
- CLI quoting: clarify that boolean flags and bare keywords are
unquoted; only string/address values use single quotes
- Test mocking: describe get_device_data / execute_show_command as
the primary resource module pattern (used by most existing tests);
note get_resource_connection_facts approach as an alternative
- modules.instructions.md: broaden applyTo to include meta/runtime.yml
so redirect guidance fires when that file is edited
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
* T8523: fix legacy module mocking guidance in tests.instructions.md
Existing legacy tests use side_effect for run_commands, not
return_value. Updated to describe side_effect as the standard
approach, note return_value as also acceptable for fixed responses,
and clarify that the patched helper varies by module (run_commands
for command/facts/ping, load_config/get_config for vyos_config).
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
* T8523: fix four more inaccuracies flagged by Copilot review
- CLI quoting: address values in firewall groups are unquoted in
fixtures; instruct reviewers to align with surrounding fixture
style rather than flagging all unquoted addresses
- Resource module mocking: add .start()/.stop() calls to the snippet
so it matches the actual setUp/tearDown pattern in existing tests
- terminal plugin versions: reference README.md instead of hardcoding
a version list that diverges from README
- changelog fragment: remove stale "copyright headers" claim (that
section was dropped from the instruction files)
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
---------
Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
|
|
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
|
|
Bumps [codecov/codecov-action](https://github.com/codecov/codecov-action) from 5 to 6.
- [Release notes](https://github.com/codecov/codecov-action/releases)
- [Changelog](https://github.com/codecov/codecov-action/blob/main/CHANGELOG.md)
- [Commits](https://github.com/codecov/codecov-action/compare/v5...v6)
---
updated-dependencies:
- dependency-name: codecov/codecov-action
dependency-version: '6'
dependency-type: direct:production
update-type: version-update:semver-major
...
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: omnom62 <75066712+omnom62@users.noreply.github.com>
|