diff --git a/.ansible-lint b/.ansible-lint index 8d9bb70b..48e86f6c 100644 --- a/.ansible-lint +++ b/.ansible-lint @@ -1,5 +1,17 @@ --- +# Red Hat Ansible Collection Certification .ansible-lint file +# Taken from: +# https://github.com/ansible-collections/partner-certification-requirements profile: production exclude_paths: - - changelogs/changelog.yaml + - tests/integration + - tests/unit + - extensions/molecule + - changelogs + - docs + - .ansible + - .github + +warn_list: + - no-log-password diff --git a/.coderabbit.yaml b/.coderabbit.yaml index c7c465d6..454af0f9 100644 --- a/.coderabbit.yaml +++ b/.coderabbit.yaml @@ -1,205 +1,205 @@ # yaml-language-server: $schema=https://coderabbit.ai/integrations/schema.v2.json # # Per-repo CodeRabbit override for vyos/vyos.vyos (Ansible network collection). # # Most behavior is inherited from the org-level central baseline at # https://github.com/vyos/coderabbit/blob/production/.coderabbit.yaml. # This file keeps only what's distinct to this repo: # - Ansible-collection-specific `path_instructions` (15 entries). # - Two `path_filters` entries that aren't in the central list. # - `base_branches: [main]` — central uses VyOS release-train names; this # repo is an Ansible collection that lives on `main`. # - `knowledge_base.jira` scoped to VD. # # Migrated from standalone (591-line rich config from T8584, sha # 38eae56fb991b63e0c89245e4ef5fc130d3f5c8b) to centralized inheritance # mode under T8851 on 2026-05-24. The standalone config preceded # `vyos/coderabbit` central-config introduction (2026-05-12). inheritance: true reviews: auto_review: base_branches: - main path_filters: # Repo-specific filters that aren't in the central baseline. The # central already filters `!**/__pycache__/**`, `!**/*.pyc`, # `!**/*.egg-info/**`, `!**/.venv/**`, `!**/.worktrees/**` — so they # are not repeated here. - "!changelogs/changelog.yaml" - "!.collections/**" path_instructions: # ── Global PR hygiene ────────────────────────────────────────────── - path: "**" instructions: | This is the vyos.vyos Ansible network collection (namespace=vyos, name=vyos, version=6.0.0). PR titles must follow the format `T{id}: description` referencing a Phorge task at vyos.dev. Every PR must include a changelog fragment in changelogs/fragments/ (YAML, valid keys: major_changes, minor_changes, breaking_changes, deprecated_features, removed_features, security_fixes, bugfixes, known_issues, doc_changes, trivial; plus release_summary as a prelude section). Style: black line-length=100, isort profile=black line_length=100, flake8 max-line-length=120. Do not suggest 88-char wrapping. # ── Module entry points ──────────────────────────────────────────── - path: "plugins/modules/vyos_*.py" instructions: | Module entry points. Each file must contain three YAML triple-string blocks: DOCUMENTATION, EXAMPLES, and RETURN — this is Ansible's documentation contract, not Python docstrings. Verify: - DOCUMENTATION includes: module, author, short_description, description, version_added, extends_documentation_fragment (vyos.vyos.vyos), options with types and descriptions, and a notes section listing tested VyOS versions. - EXAMPLES has at least one working task per supported state. - RETURN documents all return keys with description, returned, type, and sample. - The module wires argspec, config, and facts classes correctly. - State choices include the full set where applicable: merged, replaced, overridden, deleted, gathered, parsed, rendered. Do not add Python-style docstrings (def-level) to these files — the YAML blocks are the canonical documentation. # ── Argspec (auto-generated) ─────────────────────────────────────── - path: "plugins/module_utils/network/vyos/argspec/**" instructions: | Auto-generated by the Ansible resource module builder. These files carry a "DO NOT EDIT" warning header. Do not suggest modifications to auto-generated argspec files — changes will be overwritten. If the schema needs updating, the resource module builder must regenerate it. Only flag issues if the argument_spec dict has obvious type mismatches or missing required fields that would cause runtime failures. # ── Config classes ───────────────────────────────────────────────── - path: "plugins/module_utils/network/vyos/config/**" instructions: | Config builders extending ansible.netcommon ConfigBase or ResourceModule. These generate VyOS CLI commands from desired state. Verify: - execute_module() handles all declared states correctly. - set_config() and _set_config() process gathered facts and desired config without data loss. - Command generation produces valid VyOS CLI syntax (set/delete prefixes, proper quoting of values with spaces). - No silent swallowing of unknown keys — unknown config should raise or warn. - Methods that compare current vs desired state handle empty/None gracefully. Some older config files have auto-generated headers — do not restructure those. # ── Facts classes ────────────────────────────────────────────────── - path: "plugins/module_utils/network/vyos/facts/**" instructions: | Facts classes parse raw VyOS CLI output into structured dicts. Verify: - Regex patterns handle edge cases (missing fields, empty values, quoted strings). - populate() returns a clean dict even when device output is incomplete. - get_device_data() uses the correct show command for the resource. - facts/facts.py FACT_RESOURCE_SUBSETS and FACT_LEGACY_SUBSETS stay in sync with available fact classes. - Legacy facts (facts/legacy/) use run_commands(); resource facts use get_resource_connection(). # ── RM Templates ─────────────────────────────────────────────────── - path: "plugins/module_utils/network/vyos/rm_templates/*.py" instructions: | Parser templates mapping structured data to VyOS CLI commands and vice versa. Files with a `_14` suffix target VyOS 1.4+ behavior — do not suggest merging them with the base version. Verify: - _tmplt_* helper functions produce syntactically valid VyOS commands. - Regex patterns in PARSERS list correctly capture all variations of the CLI output (quoted values, optional fields, nested hierarchies). - New templates include both set and delete command generation. - compval/getval paths match the argspec structure. # ── Cliconf plugin ───────────────────────────────────────────────── - path: "plugins/cliconf/vyos.py" instructions: | Low-level CLI abstraction for VyOS. Handles configure mode, commit, diff, command execution. Changes here affect all modules. Verify: - edit_config() enters configure mode and commits correctly. - get_diff() returns accurate before/after config diffs. - Error handling catches VyOS-specific error patterns (commit failures, invalid commands). - __rpc__ list matches actually implemented methods. # ── Terminal plugin ──────────────────────────────────────────────── - path: "plugins/terminal/vyos.py" instructions: | Terminal prompt detection and initialization. Changes affect connection reliability. Verify regex patterns against actual VyOS prompt formats (configure mode, operational mode, different shell variants). Do not remove existing patterns without testing against all supported VyOS versions. # ── Action plugin ────────────────────────────────────────────────── - path: "plugins/action/vyos.py" instructions: | Auto-proxies all modules to the device. Must validate network_cli connection type. Symlinks from each module name point here. Keep minimal — logic belongs in config classes, not the action plugin. # ── Changelog fragments ──────────────────────────────────────────── - path: "changelogs/fragments/*.{yaml,yml}" instructions: | Changelog fragments for ansible-changelog. Valid top-level keys: major_changes, minor_changes, breaking_changes, deprecated_features, removed_features, security_fixes, bugfixes, known_issues, doc_changes, trivial. release_summary is a prelude section (one per release). Fragment filename should be descriptive (e.g., fix-bgp-neighbor-timers.yml). Use `trivial` for tooling/housekeeping. Entries should be complete sentences. # ── CI workflows ─────────────────────────────────────────────────── - path: ".github/workflows/**" instructions: | CI pipeline: tests.yml (main CI with changelog, build, lint, sanity, unit jobs), codecoverage.yml, release.yml (Galaxy + Automation Hub publish), check_label.yaml, cla-check.yml. Changes to release.yml or ah_token_refresh.yml affect publishing credentials — review with extra care. Do not remove the `all_green` aggregation job from tests.yml. # ── Unit tests ───────────────────────────────────────────────────── - path: "tests/unit/**" instructions: | Unit tests use pytest + unittest.TestCase via TestVyosModule base class. Key patterns: - All test classes inherit TestVyosModule (from vyos_module.py). - setUp() creates and starts mock patches; tearDown() stops them. - execute_module(failed, changed, commands, sort) is the primary assertion method. - load_fixtures() is overridden per test class to wire mock return values. - Fixture files (.cfg) go in tests/unit/modules/network/vyos/fixtures/. - Use load_fixture(name) to read fixtures — never inline raw config strings. - set_module_args(dict(...)) configures module input before execution. Style: black line-length=100, assertions via self.assertEqual / self.assertIn / execute_module kwargs. pytest-xdist runs tests in parallel (-n 2). # ── Test fixtures ────────────────────────────────────────────────── - path: "tests/unit/modules/network/vyos/fixtures/**" instructions: | Raw VyOS CLI output files (.cfg). These are loaded by load_fixture() and cached in memory. Format is VyOS `set ...` configuration syntax or show command output. Fixture filenames follow the pattern: vyos_{module}_config.cfg (base) or vyos_{module}_config_v14.cfg (VyOS 1.4+). New fixtures must be syntactically valid VyOS config. Do not add JSON fixtures unless the test explicitly requires JSON parsing. # ── Collection metadata ──────────────────────────────────────────── - path: "galaxy.yml" instructions: | Collection metadata. namespace=vyos, name=vyos. Version bumps must be coordinated with release process. Dependency on ansible.netcommon>=2.5.1 is required. Do not add unnecessary dependencies. - path: "meta/runtime.yml" instructions: | Module redirects and tombstones. Adding a new module requires a redirect entry (short name → FQCN). Tombstoned modules (logging, vyos_logging) must - not be un-tombstoned. requires_ansible must stay >=2.15.0 unless explicitly + not be un-tombstoned. requires_ansible must stay >=2.16.0 unless explicitly bumping minimum version. knowledge_base: jira: # `auto` activates Jira context lookups when this repo lives on an # org with an Atlassian OAuth grant attached (VyOS-Networks); on the # public vyos source it self-disables. usage: auto project_keys: - NOS - VD diff --git a/.github/workflows/certification.yml b/.github/workflows/certification.yml new file mode 100644 index 00000000..cd699aea --- /dev/null +++ b/.github/workflows/certification.yml @@ -0,0 +1,51 @@ +--- +# This workflow calls a pinned version of the +# reusable workflow. Copy this file into your +# repository to check against pinned versions +# of Automation Hub tests. +# The version is pinned to an exact release tag +# (e.g. @v1.2.0) for supply chain security. +# Use Dependabot to receive automatic PRs when +# new versions are released. +name: Run collection certification checks + +permissions: + contents: read + +on: + pull_request: + branches: [main] + workflow_dispatch: + schedule: + - cron: "0 6 * * *" + +concurrency: + group: cert-ver-${{ github.head_ref || github.run_id }} + cancel-in-progress: true + +# Files that are not related to the core functionality +# of your collection can cause Ansible Lint to fail. +# If this happens, add an .ansible-lint file that includes +# those files and directories to the root of your +# repository; for example: +# https://github.com/ansible-collections/partner-certification-checker/blob/main/.ansible-lint + +# If there are sanity test failures that cannot be fixed and are allowed to ignore +# https://docs.ansible.com/projects/lint/rules/sanity/, create a sanity ignore file +# https://docs.ansible.com/projects/ansible/devel/dev_guide/testing/sanity/ignores.html#ignore-file-location +# for each affected version of ansible-core (for example, `tests/sanity/ignore-2.18.txt`) and add corresponding entries. +jobs: + call: + uses: ansible-collections/partner-certification-checker/.github/workflows/certification-reusable.yml@v6.0.0 # zizmor: ignore[unpinned-uses] + # For details on tested ansible-core branches and Python versions, + # see: https://github.com/ansible-collections/partner-certification-checker#tested-ansible-core-branches-and-python-versions + with: + # ansible-core-version: '2.18.0' + # skip-sanity-versions: 'stable-2.16' + # collection-root: 'ansible_collections/junipernetworks/junos' + collection-deps: 'ansible.netcommon' + # automation-hub: true + # Uncomment the lines below if you have 'automation-hub: true' and need to install collections from Red Hat Ansible Automation Hub. + # This requires setting a repository secret called 'AH_TOKEN' which value contains a Red Hat Ansible Automation Hub token. + # secrets: + # AH_TOKEN: ${{ secrets.AH_TOKEN }} diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml index dedbc9e5..4f896607 100644 --- a/.github/workflows/tests.yml +++ b/.github/workflows/tests.yml @@ -1,52 +1,52 @@ --- name: CI concurrency: group: ${{ github.head_ref || github.run_id }} cancel-in-progress: true on: # yamllint disable-line rule:truthy pull_request: branches: [main] workflow_dispatch: schedule: - cron: 0 0 * * * jobs: changelog: uses: ansible/ansible-content-actions/.github/workflows/changelog.yaml@main if: github.event_name == 'pull_request' build-import: uses: ansible/ansible-content-actions/.github/workflows/build_import.yaml@main ansible-lint: uses: ansible/ansible-content-actions/.github/workflows/ansible_lint.yaml@main sanity: uses: ansible/ansible-content-actions/.github/workflows/sanity.yaml@main unit-galaxy: uses: ansible/ansible-content-actions/.github/workflows/unit.yaml@main unit-source: uses: ansible-network/github_actions/.github/workflows/unit_source.yml@main with: collection_pre_install: >- git+https://github.com/ansible-collections/ansible.utils.git git+https://github.com/ansible-collections/ansible.netcommon.git all_green: if: ${{ always() }} needs: - changelog - build-import - sanity - unit-galaxy - unit-source - ansible-lint runs-on: ubuntu-latest steps: - run: >- python -c "assert 'failure' not in set([ '${{ needs.changelog.result }}', '${{ needs.sanity.result }}', - '${{ needs.unit-galaxy.result }}' - '${{ needs.ansible-lint.result }}' + '${{ needs.unit-galaxy.result }}', + '${{ needs.ansible-lint.result }}', '${{ needs.unit-source.result }}' ])" diff --git a/README.md b/README.md index 5e7fbc82..93852a2b 100644 --- a/README.md +++ b/README.md @@ -1,270 +1,298 @@ # VyOS Collection [![codecov](https://codecov.io/gh/vyos/vyos.vyos/graph/badge.svg?token=J217GFD69W)](https://codecov.io/gh/vyos/vyos.vyos) [![CI](https://github.com/vyos/vyos.vyos/actions/workflows/tests.yml/badge.svg?branch=main&event=schedule)](https://github.com/vyos/vyos.vyos/actions/workflows/tests.yml) The Ansible VyOS collection includes a variety of Ansible content to help automate the management of VyOS network appliances. -This collection has been tested against VyOS 1.3.8, 1.4.1 and the current rolling release for 1.5. Where possible, -compatibility with older versions of VyOS are maintained but not guaranteed. +This collection has been tested against VyOS 1.3.8, 1.4.1 and the current rolling release for 1.5. Where possible, compatibility with older versions of VyOS are maintained but not guaranteed. ## Communication * Join the VyOS forum: * [FAQ](https://forum.vyos.io/faq): find answers to frequently asked questions. * [Guides and How To](https://forum.vyos.io/c/howto-guies/27): find guides and how-to articles. * [News & Announcements](https://forum.vyos.io/c/announcements/6): track project-wide announcements . ## Ansible version compatibility -This collection has been tested against the following Ansible versions: **>=2.15.0**. +This collection has been tested against the following Ansible versions: **>=2.16.0**. Plugins and modules within a collection may be tested with only specific Ansible versions. A collection may contain metadata that identifies these versions. PEP440 is the schema used to describe the versions of Ansible. ### Supported connections The VyOS collection supports ``network_cli`` connections. +## Requirements + +- ansible-core >=2.16.0, see [Ansible version compatibility](#ansible-version-compatibility). +- Python >=3.10 on the Ansible controller, as required by ansible-core 2.16. +- [ansible.netcommon](https://galaxy.ansible.com/ui/repo/published/ansible/netcommon/) >=2.5.1, installed automatically as a dependency of this collection. +- Python packages `paramiko` and `scp`, listed in [requirements.txt](https://github.com/vyos/vyos.vyos/blob/main/requirements.txt). `ansible-builder` picks these up when you build an execution environment that includes this collection. +- VyOS devices reachable over SSH with the `ansible.netcommon.network_cli` connection. + ## Included content ### Cliconf plugins Name | Description --- | --- [vyos.vyos.vyos](https://github.com/vyos/vyos.vyos/blob/main/docs/vyos.vyos.vyos_cliconf.rst)|Use vyos cliconf to run command on VyOS platform ### Modules Name | Description --- | --- [vyos.vyos.vyos_banner](https://github.com/vyos/vyos.vyos/blob/main/docs/vyos.vyos.vyos_banner_module.rst)|Manage multiline banners on VyOS devices [vyos.vyos.vyos_bgp_address_family](https://github.com/vyos/vyos.vyos/blob/main/docs/vyos.vyos.vyos_bgp_address_family_module.rst)|BGP Address Family resource module [vyos.vyos.vyos_bgp_global](https://github.com/vyos/vyos.vyos/blob/main/docs/vyos.vyos.vyos_bgp_global_module.rst)|BGP global resource module [vyos.vyos.vyos_command](https://github.com/vyos/vyos.vyos/blob/main/docs/vyos.vyos.vyos_command_module.rst)|Run one or more commands on VyOS devices [vyos.vyos.vyos_config](https://github.com/vyos/vyos.vyos/blob/main/docs/vyos.vyos.vyos_config_module.rst)|Manage VyOS configuration on remote device [vyos.vyos.vyos_facts](https://github.com/vyos/vyos.vyos/blob/main/docs/vyos.vyos.vyos_facts_module.rst)|Get facts about vyos devices. [vyos.vyos.vyos_file](https://github.com/vyos/vyos.vyos/blob/main/docs/vyos.vyos.vyos_file_module.rst)|Manage files, directories, and their ownership on VyOS devices [vyos.vyos.vyos_firewall_global](https://github.com/vyos/vyos.vyos/blob/main/docs/vyos.vyos.vyos_firewall_global_module.rst)|Firewall global resource module [vyos.vyos.vyos_firewall_interfaces](https://github.com/vyos/vyos.vyos/blob/main/docs/vyos.vyos.vyos_firewall_interfaces_module.rst)|Firewall interfaces resource module [vyos.vyos.vyos_firewall_rules](https://github.com/vyos/vyos.vyos/blob/main/docs/vyos.vyos.vyos_firewall_rules_module.rst)|Firewall rules resource module [vyos.vyos.vyos_ha](https://github.com/vyos/vyos.vyos/blob/main/docs/vyos.vyos.vyos_ha_module.rst)|Manage VRRP and load balancer configuration on VyOS [vyos.vyos.vyos_hostname](https://github.com/vyos/vyos.vyos/blob/main/docs/vyos.vyos.vyos_hostname_module.rst)|Manages hostname resource module [vyos.vyos.vyos_interfaces](https://github.com/vyos/vyos.vyos/blob/main/docs/vyos.vyos.vyos_interfaces_module.rst)|Manages interface attributes of VyOS network devices. [vyos.vyos.vyos_l3_interfaces](https://github.com/vyos/vyos.vyos/blob/main/docs/vyos.vyos.vyos_l3_interfaces_module.rst)|Layer 3 interfaces resource module. [vyos.vyos.vyos_lag_interfaces](https://github.com/vyos/vyos.vyos/blob/main/docs/vyos.vyos.vyos_lag_interfaces_module.rst)|LAG interfaces resource module [vyos.vyos.vyos_lldp_global](https://github.com/vyos/vyos.vyos/blob/main/docs/vyos.vyos.vyos_lldp_global_module.rst)|LLDP global resource module [vyos.vyos.vyos_lldp_interfaces](https://github.com/vyos/vyos.vyos/blob/main/docs/vyos.vyos.vyos_lldp_interfaces_module.rst)|LLDP interfaces resource module [vyos.vyos.vyos_logging_global](https://github.com/vyos/vyos.vyos/blob/main/docs/vyos.vyos.vyos_logging_global_module.rst)|Logging resource module [vyos.vyos.vyos_nat](https://github.com/vyos/vyos.vyos/blob/main/docs/vyos.vyos.vyos_nat_module.rst)|NAT resource module [vyos.vyos.vyos_ntp_global](https://github.com/vyos/vyos.vyos/blob/main/docs/vyos.vyos.vyos_ntp_global_module.rst)|NTP global resource module [vyos.vyos.vyos_ospf_interfaces](https://github.com/vyos/vyos.vyos/blob/main/docs/vyos.vyos.vyos_ospf_interfaces_module.rst)|OSPF Interfaces Resource Module. [vyos.vyos.vyos_ospfv2](https://github.com/vyos/vyos.vyos/blob/main/docs/vyos.vyos.vyos_ospfv2_module.rst)|OSPFv2 resource module [vyos.vyos.vyos_ospfv3](https://github.com/vyos/vyos.vyos/blob/main/docs/vyos.vyos.vyos_ospfv3_module.rst)|OSPFv3 resource module [vyos.vyos.vyos_ping](https://github.com/vyos/vyos.vyos/blob/main/docs/vyos.vyos.vyos_ping_module.rst)|Tests reachability using ping from VyOS network devices [vyos.vyos.vyos_prefix_lists](https://github.com/vyos/vyos.vyos/blob/main/docs/vyos.vyos.vyos_prefix_lists_module.rst)|Prefix-Lists resource module for VyOS [vyos.vyos.vyos_route_maps](https://github.com/vyos/vyos.vyos/blob/main/docs/vyos.vyos.vyos_route_maps_module.rst)|Route Map resource module [vyos.vyos.vyos_snmp_server](https://github.com/vyos/vyos.vyos/blob/main/docs/vyos.vyos.vyos_snmp_server_module.rst)|Manages snmp_server resource module [vyos.vyos.vyos_static_routes](https://github.com/vyos/vyos.vyos/blob/main/docs/vyos.vyos.vyos_static_routes_module.rst)|Static routes resource module [vyos.vyos.vyos_system](https://github.com/vyos/vyos.vyos/blob/main/docs/vyos.vyos.vyos_system_module.rst)|Run `set system` commands on VyOS devices [vyos.vyos.vyos_user](https://github.com/vyos/vyos.vyos/blob/main/docs/vyos.vyos.vyos_user_module.rst)|Manage the collection of local users on VyOS device [vyos.vyos.vyos_vlan](https://github.com/vyos/vyos.vyos/blob/main/docs/vyos.vyos.vyos_vlan_module.rst)|Manage VLANs on VyOS network devices [vyos.vyos.vyos_vpn_ipsec](https://github.com/vyos/vyos.vyos/blob/main/docs/vyos.vyos.vyos_vpn_ipsec_module.rst)|Manages global IPsec (ike-group, esp-group, profile, authentication, options) attributes of VyOS network devices. [vyos.vyos.vyos_vpn_ipsec_s2s](https://github.com/vyos/vyos.vyos/blob/main/docs/vyos.vyos.vyos_vpn_ipsec_s2s_module.rst)|Manages IPsec site-to-site VPN peers on VyOS network devices. [vyos.vyos.vyos_vrf](https://github.com/vyos/vyos.vyos/blob/main/docs/vyos.vyos.vyos_vrf_module.rst)|VRF resource module Click the ``Content`` button to see the list of content included in this collection. ## Installing this collection You can install the VyOS collection with the Ansible Galaxy CLI: ansible-galaxy collection install vyos.vyos +Red Hat customers should install this collection from +[Red Hat Ansible Automation Hub](https://console.redhat.com/ansible/automation-hub/repo/published/vyos/vyos/). +Configure Automation Hub as a Galaxy server in `ansible.cfg` as described in +[Configuring Ansible Automation Hub](https://docs.redhat.com/en/documentation/red_hat_ansible_automation_platform/), +then use the same commands as below. Red Hat does not support installing collections from GitHub. + +To install a specific version, for example 6.2.0: + + ansible-galaxy collection install vyos.vyos:==6.2.0 + +To upgrade to the latest version: + + ansible-galaxy collection install vyos.vyos --upgrade + You can also include it in a `requirements.yml` file and install it with `ansible-galaxy collection install -r requirements.yml`, using the format: ```yaml --- collections: - name: vyos.vyos ``` ## Using this collection This collection includes [network resource modules](https://docs.ansible.com/ansible/latest/network/user_guide/network_resource_modules.html). ### Using modules from the VyOS collection in your playbooks You can call modules by their Fully Qualified Collection Namespace (FQCN), such as `vyos.vyos.vyos_static_routes`. The following example task replaces configuration changes in the existing configuration on a VyOS network device, using the FQCN: ```yaml --- - name: Replace device configurations of listed static routes with provided configurations register: result vyos.vyos.vyos_static_routes: &id001 config: - address_families: - afi: ipv4 routes: - dest: 192.0.2.32/28 blackhole_config: distance: 2 next_hops: - forward_router_address: 192.0.2.7 - forward_router_address: 192.0.2.8 - forward_router_address: 192.0.2.9 state: replaced ``` **NOTE**: For Ansible 2.9, you may not see deprecation warnings when you run your playbooks with this collection. Use this documentation to track when a module is deprecated. ### See Also: * [VyOS Platform Options](https://docs.ansible.com/ansible/latest/network/user_guide/platform_vyos.html) * [Ansible Using collections](https://docs.ansible.com/ansible/latest/user_guide/collections_using.html) for more details. ## Contributing to this collection We welcome community contributions to this collection. If you find problems, please open an issue or create a PR against the [VyOS collection repository](https://github.com/vyos/vyos.vyos). See [Contributing to VyOS](https://vyos.net/contribute/) for complete details. You can also join us on: - Forum - https://forum.vyos.io See the [Contributing to VyOS](https://vyos.net/contribute/) for details on contributing to Ansible. ### Code of Conduct This collection follows the Ansible project's [Code of Conduct](https://docs.ansible.com/ansible/devel/community/code_of_conduct.html). Please read and familiarize yourself with this document. ### Updating from resource module models Some of our modules were templated using `resource_module_builder`, but some use the newer [`cli_rm_builder`](https://github.com/ansible-network/cli_rm_builder) which tempaltes baed on in-place device information, but also uses a new network parsing engine designed to simplify and standardize the parsing of network configuration. #### Using older *resource_module_builder* modules Last build was with a slightly-modified version of resource_module_builder. This changes the calling parameters for the resources. To update the collection from the resource module models, run the following command: ```bash ansible-playbook -e rm_dest=`pwd` \ -e structure=collection \ -e collection_org=vyos \ -e collection_name=vyos \ -e model=../../../resource_module_models/models/vyos/firewall_rules/vyos_firewall_rules.yaml \ ../../../resource_module_builder/site.yml ``` #### Using *cli_rm_builder* modules The newer `cli_rm_builder` works similarly to the older `resource_module_builder`, but pulls the information directly from the `DOCUMENTATION`, `EXAMPLES` and `RETURN` blocks in the module itself. To update the collection from the `cli_rm_builder` models, run the following command: ```bash ansible-playbook -e rm_dest=`pwd` \ -e collection_org=vyos \ -e collection_name=vyos \ -e resource=bgp_address_family \ ../../../cli_rm_builder/run.yml ``` Unlike the `resource_module_builder`, the `cli_rm_builder` does not require the `model` parameter. Instead, it uses the `resource` parameter to specify the resource to build. ### Testing playbooks You can use `ANSIBLE_COLLECTIONS_PATH` to test the collection locally. For example: ``` ANSIBLE_COLLECTIONS_PATHS=~/my_dev_path ansible-playbook -i inventory.network test.yml ``` ### Integration Tests Integration tests are run using `ansible-test` and require that there be an inventory defined (you can pass this in with `--inventory `) and that the system be configured for access (recommended to use SSH keys). Additionally: - eth0 should be configured for `address dhcp` and should have an assigned address on the local network - eth1 and eth2 should be defined and uncofirgured (they'll be overwritten by the tests) - eth3 and beyond should not be present or interface-related tests will fail - when using VMs for testing, ensure that the interfaces don't use `virtio`, as it will supress some interface configurations. `e1000e` is a good choice for testing. - eth0 is also expected to show `duplex auto` and `speed auto` in the output of `show interfaces`, however others are not due to the fact that they are repeatedly deleted and recreated which causes the default values to be hidden. ## Changelogs Change logs are available [here](https://github.com/vyos/vyos.vyos/blob/main/CHANGELOG.rst). ## Release notes Release notes are available [here](https://github.com/vyos/vyos.vyos/blob/main/CHANGELOG.rst). ## Roadmap Major Version | Ansible Support | VyOS Support | Details --- | --- | --- | --- 4.1.0 | 2.15 | 1.1.2 | Final release for the 4.x series 5.0.0 | 2.16 | 1.1.2 | First relase under VyOS control as a separate collection 6.0.0 | 2.18 | 1.3.8 | *Planned* release for supporting VyOS 1.3.8+ 7.0.0 | x.xx | 1.4.x | *Prospective* release deprecating incompatible 1.3.x modules Note: - Unreleased versions are not guaranteed to be released as described. - Some modules may support a wider variety of versions depending upon the compatibility with prior versions of VyOS. - The roadmap is subject to change based on community feedback and contributions. ## More information VyOS resources - [Contributing to VyOS](https://vyos.net/contribute) - [VyOS documentation](https://docs.vyos.io/en/latest/) - [VyOS forum](https://forum.vyos.io) Ansible Resources - [Ansible network resources](https://docs.ansible.com/ansible/latest/network/getting_started/network_resources.html) - [Ansible Collection overview](https://github.com/ansible-collections/overview) - [Ansible User guide](https://docs.ansible.com/ansible/latest/user_guide/index.html) - [Ansible Developer guide](https://docs.ansible.com/ansible/latest/dev_guide/index.html) - [Ansible Community code of conduct](https://docs.ansible.com/ansible/latest/community/code_of_conduct.html) +## Support + +As Red Hat Ansible Certified Content, this collection is entitled to support through Ansible Automation Platform (AAP) using the **Create issue** button in the top right corner +of the collection page on Automation Hub. + +The collection is maintained by the VyOS team. +If the collection was obtained from Galaxy or GitHub, community help is available through [GitHub issues](https://github.com/vyos/vyos.vyos/issues), the [VyOS forum](https://forum.vyos.io/) +and the [Ansible Forum](https://forum.ansible.com/). + ## Licensing GNU General Public License v3.0 or later. See [LICENSE](https://www.gnu.org/licenses/gpl-3.0.txt) to see the full text. - - diff --git a/changelogs/fragments/T9331_ah_certification.yml b/changelogs/fragments/T9331_ah_certification.yml new file mode 100644 index 00000000..c1a08d13 --- /dev/null +++ b/changelogs/fragments/T9331_ah_certification.yml @@ -0,0 +1,7 @@ +--- +removed_features: + - vyos.vyos - support for ansible-core 2.15 has been dropped; the minimum supported ansible-core version is now 2.16.0. +trivial: + - action plugins - replace symlinks with import shims so sanity results are consistent across ansible-test and ADE. + - README - add Requirements and Support sections and Automation Hub installation instructions. + - CI - fix missing commas in the all_green gate so failures of unit, lint and build-import jobs fail the workflow. diff --git a/meta/runtime.yml b/meta/runtime.yml index 093e129d..7517c7c1 100644 --- a/meta/runtime.yml +++ b/meta/runtime.yml @@ -1,78 +1,78 @@ --- -requires_ansible: ">=2.15.0" +requires_ansible: ">=2.16.0" plugin_routing: modules: banner: redirect: vyos.vyos.vyos_banner bgp_global: redirect: vyos.vyos.vyos_bgp_global bgp_address_family: redirect: vyos.vyos.vyos_bgp_address_family command: redirect: vyos.vyos.vyos_command config: redirect: vyos.vyos.vyos_config facts: redirect: vyos.vyos.vyos_facts file: redirect: vyos.vyos.vyos_file firewall_global: redirect: vyos.vyos.vyos_firewall_global firewall_interfaces: redirect: vyos.vyos.vyos_firewall_interfaces firewall_rules: redirect: vyos.vyos.vyos_firewall_rules hostname: redirect: vyos.vyos.vyos_hostname interfaces: redirect: vyos.vyos.vyos_interfaces l3_interfaces: redirect: vyos.vyos.vyos_l3_interfaces lag_interfaces: redirect: vyos.vyos.vyos_lag_interfaces lldp_global: redirect: vyos.vyos.vyos_lldp_global lldp_interfaces: redirect: vyos.vyos.vyos_lldp_interfaces logging: tombstone: removal_version: 6.0.0 warning_text: use vyos_logging_global instead vyos_logging: tombstone: removal_version: 6.0.0 warning_text: use vyos_logging_global instead logging_global: redirect: vyos.vyos.vyos_logging_global ntp_global: redirect: vyos.vyos.vyos_ntp_global nat: redirect: vyos.vyos.vyos_nat ospfv2: redirect: vyos.vyos.vyos_ospfv2 ospfv3: redirect: vyos.vyos.vyos_ospfv3 ospf_interfaces: redirect: vyos.vyos.vyos_ospf_interfaces ping: redirect: vyos.vyos.vyos_ping prefix_lists: redirect: vyos.vyos.vyos_prefix_lists snmp_server: redirect: vyos.vyos.vyos_snmp_server static_routes: redirect: vyos.vyos.vyos_static_routes system: redirect: vyos.vyos.vyos_system user: redirect: vyos.vyos.vyos_user vlan: redirect: vyos.vyos.vyos_vlan vrf: redirect: vyos.vyos.vyos_vrf vpn_ipsec: redirect: vyos.vyos.vyos_vpn_ipsec vpn_ipsec_s2s: redirect: vyos.vyos.vyos_vpn_ipsec_s2s ha: redirect: vyos.vyos.vyos_ha diff --git a/plugins/action/banner.py b/plugins/action/banner.py deleted file mode 120000 index 331a791f..00000000 --- a/plugins/action/banner.py +++ /dev/null @@ -1 +0,0 @@ -vyos.py \ No newline at end of file diff --git a/plugins/action/banner.py b/plugins/action/banner.py new file mode 100644 index 00000000..24195be9 --- /dev/null +++ b/plugins/action/banner.py @@ -0,0 +1,11 @@ +# -*- coding: utf-8 -*- +# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt) +from __future__ import absolute_import, division, print_function + + +__metaclass__ = type + +from ansible_collections.vyos.vyos.plugins.action.vyos import ActionModule + + +__all__ = ["ActionModule"] diff --git a/plugins/action/bgp_address_family.py b/plugins/action/bgp_address_family.py deleted file mode 120000 index 331a791f..00000000 --- a/plugins/action/bgp_address_family.py +++ /dev/null @@ -1 +0,0 @@ -vyos.py \ No newline at end of file diff --git a/plugins/action/bgp_address_family.py b/plugins/action/bgp_address_family.py new file mode 100644 index 00000000..24195be9 --- /dev/null +++ b/plugins/action/bgp_address_family.py @@ -0,0 +1,11 @@ +# -*- coding: utf-8 -*- +# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt) +from __future__ import absolute_import, division, print_function + + +__metaclass__ = type + +from ansible_collections.vyos.vyos.plugins.action.vyos import ActionModule + + +__all__ = ["ActionModule"] diff --git a/plugins/action/bgp_global.py b/plugins/action/bgp_global.py deleted file mode 120000 index 331a791f..00000000 --- a/plugins/action/bgp_global.py +++ /dev/null @@ -1 +0,0 @@ -vyos.py \ No newline at end of file diff --git a/plugins/action/bgp_global.py b/plugins/action/bgp_global.py new file mode 100644 index 00000000..24195be9 --- /dev/null +++ b/plugins/action/bgp_global.py @@ -0,0 +1,11 @@ +# -*- coding: utf-8 -*- +# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt) +from __future__ import absolute_import, division, print_function + + +__metaclass__ = type + +from ansible_collections.vyos.vyos.plugins.action.vyos import ActionModule + + +__all__ = ["ActionModule"] diff --git a/plugins/action/command.py b/plugins/action/command.py deleted file mode 120000 index 331a791f..00000000 --- a/plugins/action/command.py +++ /dev/null @@ -1 +0,0 @@ -vyos.py \ No newline at end of file diff --git a/plugins/action/command.py b/plugins/action/command.py new file mode 100644 index 00000000..24195be9 --- /dev/null +++ b/plugins/action/command.py @@ -0,0 +1,11 @@ +# -*- coding: utf-8 -*- +# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt) +from __future__ import absolute_import, division, print_function + + +__metaclass__ = type + +from ansible_collections.vyos.vyos.plugins.action.vyos import ActionModule + + +__all__ = ["ActionModule"] diff --git a/plugins/action/config.py b/plugins/action/config.py deleted file mode 120000 index 331a791f..00000000 --- a/plugins/action/config.py +++ /dev/null @@ -1 +0,0 @@ -vyos.py \ No newline at end of file diff --git a/plugins/action/config.py b/plugins/action/config.py new file mode 100644 index 00000000..24195be9 --- /dev/null +++ b/plugins/action/config.py @@ -0,0 +1,11 @@ +# -*- coding: utf-8 -*- +# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt) +from __future__ import absolute_import, division, print_function + + +__metaclass__ = type + +from ansible_collections.vyos.vyos.plugins.action.vyos import ActionModule + + +__all__ = ["ActionModule"] diff --git a/plugins/action/facts.py b/plugins/action/facts.py deleted file mode 120000 index 331a791f..00000000 --- a/plugins/action/facts.py +++ /dev/null @@ -1 +0,0 @@ -vyos.py \ No newline at end of file diff --git a/plugins/action/facts.py b/plugins/action/facts.py new file mode 100644 index 00000000..24195be9 --- /dev/null +++ b/plugins/action/facts.py @@ -0,0 +1,11 @@ +# -*- coding: utf-8 -*- +# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt) +from __future__ import absolute_import, division, print_function + + +__metaclass__ = type + +from ansible_collections.vyos.vyos.plugins.action.vyos import ActionModule + + +__all__ = ["ActionModule"] diff --git a/plugins/action/file.py b/plugins/action/file.py deleted file mode 120000 index 331a791f..00000000 --- a/plugins/action/file.py +++ /dev/null @@ -1 +0,0 @@ -vyos.py \ No newline at end of file diff --git a/plugins/action/file.py b/plugins/action/file.py new file mode 100644 index 00000000..24195be9 --- /dev/null +++ b/plugins/action/file.py @@ -0,0 +1,11 @@ +# -*- coding: utf-8 -*- +# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt) +from __future__ import absolute_import, division, print_function + + +__metaclass__ = type + +from ansible_collections.vyos.vyos.plugins.action.vyos import ActionModule + + +__all__ = ["ActionModule"] diff --git a/plugins/action/firewall_global.py b/plugins/action/firewall_global.py deleted file mode 120000 index 331a791f..00000000 --- a/plugins/action/firewall_global.py +++ /dev/null @@ -1 +0,0 @@ -vyos.py \ No newline at end of file diff --git a/plugins/action/firewall_global.py b/plugins/action/firewall_global.py new file mode 100644 index 00000000..24195be9 --- /dev/null +++ b/plugins/action/firewall_global.py @@ -0,0 +1,11 @@ +# -*- coding: utf-8 -*- +# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt) +from __future__ import absolute_import, division, print_function + + +__metaclass__ = type + +from ansible_collections.vyos.vyos.plugins.action.vyos import ActionModule + + +__all__ = ["ActionModule"] diff --git a/plugins/action/firewall_interfaces.py b/plugins/action/firewall_interfaces.py deleted file mode 120000 index 331a791f..00000000 --- a/plugins/action/firewall_interfaces.py +++ /dev/null @@ -1 +0,0 @@ -vyos.py \ No newline at end of file diff --git a/plugins/action/firewall_interfaces.py b/plugins/action/firewall_interfaces.py new file mode 100644 index 00000000..24195be9 --- /dev/null +++ b/plugins/action/firewall_interfaces.py @@ -0,0 +1,11 @@ +# -*- coding: utf-8 -*- +# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt) +from __future__ import absolute_import, division, print_function + + +__metaclass__ = type + +from ansible_collections.vyos.vyos.plugins.action.vyos import ActionModule + + +__all__ = ["ActionModule"] diff --git a/plugins/action/firewall_rules.py b/plugins/action/firewall_rules.py deleted file mode 120000 index 331a791f..00000000 --- a/plugins/action/firewall_rules.py +++ /dev/null @@ -1 +0,0 @@ -vyos.py \ No newline at end of file diff --git a/plugins/action/firewall_rules.py b/plugins/action/firewall_rules.py new file mode 100644 index 00000000..24195be9 --- /dev/null +++ b/plugins/action/firewall_rules.py @@ -0,0 +1,11 @@ +# -*- coding: utf-8 -*- +# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt) +from __future__ import absolute_import, division, print_function + + +__metaclass__ = type + +from ansible_collections.vyos.vyos.plugins.action.vyos import ActionModule + + +__all__ = ["ActionModule"] diff --git a/plugins/action/ha.py b/plugins/action/ha.py deleted file mode 120000 index 331a791f..00000000 --- a/plugins/action/ha.py +++ /dev/null @@ -1 +0,0 @@ -vyos.py \ No newline at end of file diff --git a/plugins/action/ha.py b/plugins/action/ha.py new file mode 100644 index 00000000..24195be9 --- /dev/null +++ b/plugins/action/ha.py @@ -0,0 +1,11 @@ +# -*- coding: utf-8 -*- +# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt) +from __future__ import absolute_import, division, print_function + + +__metaclass__ = type + +from ansible_collections.vyos.vyos.plugins.action.vyos import ActionModule + + +__all__ = ["ActionModule"] diff --git a/plugins/action/hostname.py b/plugins/action/hostname.py deleted file mode 120000 index 331a791f..00000000 --- a/plugins/action/hostname.py +++ /dev/null @@ -1 +0,0 @@ -vyos.py \ No newline at end of file diff --git a/plugins/action/hostname.py b/plugins/action/hostname.py new file mode 100644 index 00000000..24195be9 --- /dev/null +++ b/plugins/action/hostname.py @@ -0,0 +1,11 @@ +# -*- coding: utf-8 -*- +# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt) +from __future__ import absolute_import, division, print_function + + +__metaclass__ = type + +from ansible_collections.vyos.vyos.plugins.action.vyos import ActionModule + + +__all__ = ["ActionModule"] diff --git a/plugins/action/interface.py b/plugins/action/interface.py deleted file mode 120000 index 331a791f..00000000 --- a/plugins/action/interface.py +++ /dev/null @@ -1 +0,0 @@ -vyos.py \ No newline at end of file diff --git a/plugins/action/interface.py b/plugins/action/interface.py new file mode 100644 index 00000000..24195be9 --- /dev/null +++ b/plugins/action/interface.py @@ -0,0 +1,11 @@ +# -*- coding: utf-8 -*- +# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt) +from __future__ import absolute_import, division, print_function + + +__metaclass__ = type + +from ansible_collections.vyos.vyos.plugins.action.vyos import ActionModule + + +__all__ = ["ActionModule"] diff --git a/plugins/action/interfaces.py b/plugins/action/interfaces.py deleted file mode 120000 index 331a791f..00000000 --- a/plugins/action/interfaces.py +++ /dev/null @@ -1 +0,0 @@ -vyos.py \ No newline at end of file diff --git a/plugins/action/interfaces.py b/plugins/action/interfaces.py new file mode 100644 index 00000000..24195be9 --- /dev/null +++ b/plugins/action/interfaces.py @@ -0,0 +1,11 @@ +# -*- coding: utf-8 -*- +# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt) +from __future__ import absolute_import, division, print_function + + +__metaclass__ = type + +from ansible_collections.vyos.vyos.plugins.action.vyos import ActionModule + + +__all__ = ["ActionModule"] diff --git a/plugins/action/l3_interface.py b/plugins/action/l3_interface.py deleted file mode 120000 index 331a791f..00000000 --- a/plugins/action/l3_interface.py +++ /dev/null @@ -1 +0,0 @@ -vyos.py \ No newline at end of file diff --git a/plugins/action/l3_interface.py b/plugins/action/l3_interface.py new file mode 100644 index 00000000..24195be9 --- /dev/null +++ b/plugins/action/l3_interface.py @@ -0,0 +1,11 @@ +# -*- coding: utf-8 -*- +# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt) +from __future__ import absolute_import, division, print_function + + +__metaclass__ = type + +from ansible_collections.vyos.vyos.plugins.action.vyos import ActionModule + + +__all__ = ["ActionModule"] diff --git a/plugins/action/l3_interfaces.py b/plugins/action/l3_interfaces.py deleted file mode 120000 index 331a791f..00000000 --- a/plugins/action/l3_interfaces.py +++ /dev/null @@ -1 +0,0 @@ -vyos.py \ No newline at end of file diff --git a/plugins/action/l3_interfaces.py b/plugins/action/l3_interfaces.py new file mode 100644 index 00000000..24195be9 --- /dev/null +++ b/plugins/action/l3_interfaces.py @@ -0,0 +1,11 @@ +# -*- coding: utf-8 -*- +# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt) +from __future__ import absolute_import, division, print_function + + +__metaclass__ = type + +from ansible_collections.vyos.vyos.plugins.action.vyos import ActionModule + + +__all__ = ["ActionModule"] diff --git a/plugins/action/lag_interfaces.py b/plugins/action/lag_interfaces.py deleted file mode 120000 index 331a791f..00000000 --- a/plugins/action/lag_interfaces.py +++ /dev/null @@ -1 +0,0 @@ -vyos.py \ No newline at end of file diff --git a/plugins/action/lag_interfaces.py b/plugins/action/lag_interfaces.py new file mode 100644 index 00000000..24195be9 --- /dev/null +++ b/plugins/action/lag_interfaces.py @@ -0,0 +1,11 @@ +# -*- coding: utf-8 -*- +# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt) +from __future__ import absolute_import, division, print_function + + +__metaclass__ = type + +from ansible_collections.vyos.vyos.plugins.action.vyos import ActionModule + + +__all__ = ["ActionModule"] diff --git a/plugins/action/linkagg.py b/plugins/action/linkagg.py deleted file mode 120000 index 331a791f..00000000 --- a/plugins/action/linkagg.py +++ /dev/null @@ -1 +0,0 @@ -vyos.py \ No newline at end of file diff --git a/plugins/action/linkagg.py b/plugins/action/linkagg.py new file mode 100644 index 00000000..24195be9 --- /dev/null +++ b/plugins/action/linkagg.py @@ -0,0 +1,11 @@ +# -*- coding: utf-8 -*- +# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt) +from __future__ import absolute_import, division, print_function + + +__metaclass__ = type + +from ansible_collections.vyos.vyos.plugins.action.vyos import ActionModule + + +__all__ = ["ActionModule"] diff --git a/plugins/action/lldp.py b/plugins/action/lldp.py deleted file mode 120000 index 331a791f..00000000 --- a/plugins/action/lldp.py +++ /dev/null @@ -1 +0,0 @@ -vyos.py \ No newline at end of file diff --git a/plugins/action/lldp.py b/plugins/action/lldp.py new file mode 100644 index 00000000..24195be9 --- /dev/null +++ b/plugins/action/lldp.py @@ -0,0 +1,11 @@ +# -*- coding: utf-8 -*- +# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt) +from __future__ import absolute_import, division, print_function + + +__metaclass__ = type + +from ansible_collections.vyos.vyos.plugins.action.vyos import ActionModule + + +__all__ = ["ActionModule"] diff --git a/plugins/action/lldp_global.py b/plugins/action/lldp_global.py deleted file mode 120000 index 331a791f..00000000 --- a/plugins/action/lldp_global.py +++ /dev/null @@ -1 +0,0 @@ -vyos.py \ No newline at end of file diff --git a/plugins/action/lldp_global.py b/plugins/action/lldp_global.py new file mode 100644 index 00000000..24195be9 --- /dev/null +++ b/plugins/action/lldp_global.py @@ -0,0 +1,11 @@ +# -*- coding: utf-8 -*- +# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt) +from __future__ import absolute_import, division, print_function + + +__metaclass__ = type + +from ansible_collections.vyos.vyos.plugins.action.vyos import ActionModule + + +__all__ = ["ActionModule"] diff --git a/plugins/action/lldp_interface.py b/plugins/action/lldp_interface.py deleted file mode 120000 index 331a791f..00000000 --- a/plugins/action/lldp_interface.py +++ /dev/null @@ -1 +0,0 @@ -vyos.py \ No newline at end of file diff --git a/plugins/action/lldp_interface.py b/plugins/action/lldp_interface.py new file mode 100644 index 00000000..24195be9 --- /dev/null +++ b/plugins/action/lldp_interface.py @@ -0,0 +1,11 @@ +# -*- coding: utf-8 -*- +# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt) +from __future__ import absolute_import, division, print_function + + +__metaclass__ = type + +from ansible_collections.vyos.vyos.plugins.action.vyos import ActionModule + + +__all__ = ["ActionModule"] diff --git a/plugins/action/lldp_interfaces.py b/plugins/action/lldp_interfaces.py deleted file mode 120000 index 331a791f..00000000 --- a/plugins/action/lldp_interfaces.py +++ /dev/null @@ -1 +0,0 @@ -vyos.py \ No newline at end of file diff --git a/plugins/action/lldp_interfaces.py b/plugins/action/lldp_interfaces.py new file mode 100644 index 00000000..24195be9 --- /dev/null +++ b/plugins/action/lldp_interfaces.py @@ -0,0 +1,11 @@ +# -*- coding: utf-8 -*- +# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt) +from __future__ import absolute_import, division, print_function + + +__metaclass__ = type + +from ansible_collections.vyos.vyos.plugins.action.vyos import ActionModule + + +__all__ = ["ActionModule"] diff --git a/plugins/action/logging_global.py b/plugins/action/logging_global.py deleted file mode 120000 index 331a791f..00000000 --- a/plugins/action/logging_global.py +++ /dev/null @@ -1 +0,0 @@ -vyos.py \ No newline at end of file diff --git a/plugins/action/logging_global.py b/plugins/action/logging_global.py new file mode 100644 index 00000000..24195be9 --- /dev/null +++ b/plugins/action/logging_global.py @@ -0,0 +1,11 @@ +# -*- coding: utf-8 -*- +# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt) +from __future__ import absolute_import, division, print_function + + +__metaclass__ = type + +from ansible_collections.vyos.vyos.plugins.action.vyos import ActionModule + + +__all__ = ["ActionModule"] diff --git a/plugins/action/nat.py b/plugins/action/nat.py deleted file mode 120000 index 331a791f..00000000 --- a/plugins/action/nat.py +++ /dev/null @@ -1 +0,0 @@ -vyos.py \ No newline at end of file diff --git a/plugins/action/nat.py b/plugins/action/nat.py new file mode 100644 index 00000000..24195be9 --- /dev/null +++ b/plugins/action/nat.py @@ -0,0 +1,11 @@ +# -*- coding: utf-8 -*- +# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt) +from __future__ import absolute_import, division, print_function + + +__metaclass__ = type + +from ansible_collections.vyos.vyos.plugins.action.vyos import ActionModule + + +__all__ = ["ActionModule"] diff --git a/plugins/action/ntp_global.py b/plugins/action/ntp_global.py deleted file mode 120000 index 331a791f..00000000 --- a/plugins/action/ntp_global.py +++ /dev/null @@ -1 +0,0 @@ -vyos.py \ No newline at end of file diff --git a/plugins/action/ntp_global.py b/plugins/action/ntp_global.py new file mode 100644 index 00000000..24195be9 --- /dev/null +++ b/plugins/action/ntp_global.py @@ -0,0 +1,11 @@ +# -*- coding: utf-8 -*- +# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt) +from __future__ import absolute_import, division, print_function + + +__metaclass__ = type + +from ansible_collections.vyos.vyos.plugins.action.vyos import ActionModule + + +__all__ = ["ActionModule"] diff --git a/plugins/action/ospf_interfaces.py b/plugins/action/ospf_interfaces.py deleted file mode 120000 index 331a791f..00000000 --- a/plugins/action/ospf_interfaces.py +++ /dev/null @@ -1 +0,0 @@ -vyos.py \ No newline at end of file diff --git a/plugins/action/ospf_interfaces.py b/plugins/action/ospf_interfaces.py new file mode 100644 index 00000000..24195be9 --- /dev/null +++ b/plugins/action/ospf_interfaces.py @@ -0,0 +1,11 @@ +# -*- coding: utf-8 -*- +# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt) +from __future__ import absolute_import, division, print_function + + +__metaclass__ = type + +from ansible_collections.vyos.vyos.plugins.action.vyos import ActionModule + + +__all__ = ["ActionModule"] diff --git a/plugins/action/ospfv2.py b/plugins/action/ospfv2.py deleted file mode 120000 index 331a791f..00000000 --- a/plugins/action/ospfv2.py +++ /dev/null @@ -1 +0,0 @@ -vyos.py \ No newline at end of file diff --git a/plugins/action/ospfv2.py b/plugins/action/ospfv2.py new file mode 100644 index 00000000..24195be9 --- /dev/null +++ b/plugins/action/ospfv2.py @@ -0,0 +1,11 @@ +# -*- coding: utf-8 -*- +# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt) +from __future__ import absolute_import, division, print_function + + +__metaclass__ = type + +from ansible_collections.vyos.vyos.plugins.action.vyos import ActionModule + + +__all__ = ["ActionModule"] diff --git a/plugins/action/ospfv3.py b/plugins/action/ospfv3.py deleted file mode 120000 index 331a791f..00000000 --- a/plugins/action/ospfv3.py +++ /dev/null @@ -1 +0,0 @@ -vyos.py \ No newline at end of file diff --git a/plugins/action/ospfv3.py b/plugins/action/ospfv3.py new file mode 100644 index 00000000..24195be9 --- /dev/null +++ b/plugins/action/ospfv3.py @@ -0,0 +1,11 @@ +# -*- coding: utf-8 -*- +# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt) +from __future__ import absolute_import, division, print_function + + +__metaclass__ = type + +from ansible_collections.vyos.vyos.plugins.action.vyos import ActionModule + + +__all__ = ["ActionModule"] diff --git a/plugins/action/ping.py b/plugins/action/ping.py deleted file mode 120000 index 331a791f..00000000 --- a/plugins/action/ping.py +++ /dev/null @@ -1 +0,0 @@ -vyos.py \ No newline at end of file diff --git a/plugins/action/ping.py b/plugins/action/ping.py new file mode 100644 index 00000000..24195be9 --- /dev/null +++ b/plugins/action/ping.py @@ -0,0 +1,11 @@ +# -*- coding: utf-8 -*- +# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt) +from __future__ import absolute_import, division, print_function + + +__metaclass__ = type + +from ansible_collections.vyos.vyos.plugins.action.vyos import ActionModule + + +__all__ = ["ActionModule"] diff --git a/plugins/action/prefix_lists.py b/plugins/action/prefix_lists.py deleted file mode 120000 index 331a791f..00000000 --- a/plugins/action/prefix_lists.py +++ /dev/null @@ -1 +0,0 @@ -vyos.py \ No newline at end of file diff --git a/plugins/action/prefix_lists.py b/plugins/action/prefix_lists.py new file mode 100644 index 00000000..24195be9 --- /dev/null +++ b/plugins/action/prefix_lists.py @@ -0,0 +1,11 @@ +# -*- coding: utf-8 -*- +# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt) +from __future__ import absolute_import, division, print_function + + +__metaclass__ = type + +from ansible_collections.vyos.vyos.plugins.action.vyos import ActionModule + + +__all__ = ["ActionModule"] diff --git a/plugins/action/route_maps.py b/plugins/action/route_maps.py deleted file mode 120000 index 331a791f..00000000 --- a/plugins/action/route_maps.py +++ /dev/null @@ -1 +0,0 @@ -vyos.py \ No newline at end of file diff --git a/plugins/action/route_maps.py b/plugins/action/route_maps.py new file mode 100644 index 00000000..24195be9 --- /dev/null +++ b/plugins/action/route_maps.py @@ -0,0 +1,11 @@ +# -*- coding: utf-8 -*- +# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt) +from __future__ import absolute_import, division, print_function + + +__metaclass__ = type + +from ansible_collections.vyos.vyos.plugins.action.vyos import ActionModule + + +__all__ = ["ActionModule"] diff --git a/plugins/action/snmp_server.py b/plugins/action/snmp_server.py deleted file mode 120000 index 331a791f..00000000 --- a/plugins/action/snmp_server.py +++ /dev/null @@ -1 +0,0 @@ -vyos.py \ No newline at end of file diff --git a/plugins/action/snmp_server.py b/plugins/action/snmp_server.py new file mode 100644 index 00000000..24195be9 --- /dev/null +++ b/plugins/action/snmp_server.py @@ -0,0 +1,11 @@ +# -*- coding: utf-8 -*- +# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt) +from __future__ import absolute_import, division, print_function + + +__metaclass__ = type + +from ansible_collections.vyos.vyos.plugins.action.vyos import ActionModule + + +__all__ = ["ActionModule"] diff --git a/plugins/action/static_route.py b/plugins/action/static_route.py deleted file mode 120000 index 331a791f..00000000 --- a/plugins/action/static_route.py +++ /dev/null @@ -1 +0,0 @@ -vyos.py \ No newline at end of file diff --git a/plugins/action/static_route.py b/plugins/action/static_route.py new file mode 100644 index 00000000..24195be9 --- /dev/null +++ b/plugins/action/static_route.py @@ -0,0 +1,11 @@ +# -*- coding: utf-8 -*- +# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt) +from __future__ import absolute_import, division, print_function + + +__metaclass__ = type + +from ansible_collections.vyos.vyos.plugins.action.vyos import ActionModule + + +__all__ = ["ActionModule"] diff --git a/plugins/action/static_routes.py b/plugins/action/static_routes.py deleted file mode 120000 index 331a791f..00000000 --- a/plugins/action/static_routes.py +++ /dev/null @@ -1 +0,0 @@ -vyos.py \ No newline at end of file diff --git a/plugins/action/static_routes.py b/plugins/action/static_routes.py new file mode 100644 index 00000000..24195be9 --- /dev/null +++ b/plugins/action/static_routes.py @@ -0,0 +1,11 @@ +# -*- coding: utf-8 -*- +# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt) +from __future__ import absolute_import, division, print_function + + +__metaclass__ = type + +from ansible_collections.vyos.vyos.plugins.action.vyos import ActionModule + + +__all__ = ["ActionModule"] diff --git a/plugins/action/system.py b/plugins/action/system.py deleted file mode 120000 index 331a791f..00000000 --- a/plugins/action/system.py +++ /dev/null @@ -1 +0,0 @@ -vyos.py \ No newline at end of file diff --git a/plugins/action/system.py b/plugins/action/system.py new file mode 100644 index 00000000..24195be9 --- /dev/null +++ b/plugins/action/system.py @@ -0,0 +1,11 @@ +# -*- coding: utf-8 -*- +# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt) +from __future__ import absolute_import, division, print_function + + +__metaclass__ = type + +from ansible_collections.vyos.vyos.plugins.action.vyos import ActionModule + + +__all__ = ["ActionModule"] diff --git a/plugins/action/user.py b/plugins/action/user.py deleted file mode 120000 index 331a791f..00000000 --- a/plugins/action/user.py +++ /dev/null @@ -1 +0,0 @@ -vyos.py \ No newline at end of file diff --git a/plugins/action/user.py b/plugins/action/user.py new file mode 100644 index 00000000..24195be9 --- /dev/null +++ b/plugins/action/user.py @@ -0,0 +1,11 @@ +# -*- coding: utf-8 -*- +# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt) +from __future__ import absolute_import, division, print_function + + +__metaclass__ = type + +from ansible_collections.vyos.vyos.plugins.action.vyos import ActionModule + + +__all__ = ["ActionModule"] diff --git a/plugins/action/vlan.py b/plugins/action/vlan.py deleted file mode 120000 index 331a791f..00000000 --- a/plugins/action/vlan.py +++ /dev/null @@ -1 +0,0 @@ -vyos.py \ No newline at end of file diff --git a/plugins/action/vlan.py b/plugins/action/vlan.py new file mode 100644 index 00000000..24195be9 --- /dev/null +++ b/plugins/action/vlan.py @@ -0,0 +1,11 @@ +# -*- coding: utf-8 -*- +# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt) +from __future__ import absolute_import, division, print_function + + +__metaclass__ = type + +from ansible_collections.vyos.vyos.plugins.action.vyos import ActionModule + + +__all__ = ["ActionModule"] diff --git a/plugins/action/vrf.py b/plugins/action/vrf.py deleted file mode 120000 index 331a791f..00000000 --- a/plugins/action/vrf.py +++ /dev/null @@ -1 +0,0 @@ -vyos.py \ No newline at end of file diff --git a/plugins/action/vrf.py b/plugins/action/vrf.py new file mode 100644 index 00000000..24195be9 --- /dev/null +++ b/plugins/action/vrf.py @@ -0,0 +1,11 @@ +# -*- coding: utf-8 -*- +# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt) +from __future__ import absolute_import, division, print_function + + +__metaclass__ = type + +from ansible_collections.vyos.vyos.plugins.action.vyos import ActionModule + + +__all__ = ["ActionModule"] diff --git a/tests/sanity/ignore-2.15.txt b/tests/sanity/ignore-2.15.txt deleted file mode 100644 index ee3d2aac..00000000 --- a/tests/sanity/ignore-2.15.txt +++ /dev/null @@ -1,39 +0,0 @@ -plugins/action/vyos.py action-plugin-docs # base class for deprecated network platform modules using `connection: local` -plugins/action/banner.py action-plugin-docs -plugins/action/bgp_address_family.py action-plugin-docs -plugins/action/bgp_global.py action-plugin-docs -plugins/action/command.py action-plugin-docs -plugins/action/config.py action-plugin-docs -plugins/action/facts.py action-plugin-docs -plugins/action/firewall_global.py action-plugin-docs -plugins/action/firewall_interfaces.py action-plugin-docs -plugins/action/firewall_rules.py action-plugin-docs -plugins/action/ha.py action-plugin-docs -plugins/action/hostname.py action-plugin-docs -plugins/action/interface.py action-plugin-docs -plugins/action/interfaces.py action-plugin-docs -plugins/action/l3_interface.py action-plugin-docs -plugins/action/l3_interfaces.py action-plugin-docs -plugins/action/lag_interfaces.py action-plugin-docs -plugins/action/linkagg.py action-plugin-docs -plugins/action/lldp.py action-plugin-docs -plugins/action/lldp_global.py action-plugin-docs -plugins/action/lldp_interface.py action-plugin-docs -plugins/action/lldp_interfaces.py action-plugin-docs -plugins/action/logging_global.py action-plugin-docs -plugins/action/nat.py action-plugin-docs -plugins/action/ntp_global.py action-plugin-docs -plugins/action/ospf_interfaces.py action-plugin-docs -plugins/action/ospfv2.py action-plugin-docs -plugins/action/ospfv3.py action-plugin-docs -plugins/action/ping.py action-plugin-docs -plugins/action/prefix_lists.py action-plugin-docs -plugins/action/route_maps.py action-plugin-docs -plugins/action/snmp_server.py action-plugin-docs -plugins/action/static_route.py action-plugin-docs -plugins/action/static_routes.py action-plugin-docs -plugins/action/system.py action-plugin-docs -plugins/action/user.py action-plugin-docs -plugins/action/vlan.py action-plugin-docs -plugins/action/vrf.py action-plugin-docs -plugins/action/file.py action-plugin-docs