Full Code of aristanetworks/avd for AI

devel 6b6fe1c8f31a cached
5859 files
47.9 MB
13.0M tokens
14832 symbols
1 requests
Copy disabled (too large) Download .txt
Showing preview only (51,936K chars total). Download the full file to get everything.
Repository: aristanetworks/avd
Branch: devel
Commit: 6b6fe1c8f31a
Files: 5859
Total size: 47.9 MB

Directory structure:
gitextract_o4fy4adq/

├── .arista/
│   └── secret_allowlist.yaml
├── .codecov.yml
├── .codespellrc
├── .devcontainer/
│   └── devcontainer.json
├── .find-missing-tables-args
├── .flake8
├── .gitattributes
├── .github/
│   ├── CODEOWNERS
│   ├── ISSUE_TEMPLATE/
│   │   ├── bug-report.yml
│   │   └── feature-request.yml
│   ├── PULL_REQUEST_TEMPLATE/
│   │   ├── pull_request_template.md
│   │   └── schema_eos_cli_config_gen.md
│   ├── actions/
│   │   └── rn-pr-labeler-action/
│   │       └── action.yml
│   ├── changelog.sh
│   ├── check-git-status.sh
│   ├── dependabot.yml
│   ├── generate_release.py
│   ├── ignore-codespell-words
│   ├── ignore-codespell-words.md
│   ├── labeler.yml
│   ├── pull_request_template.md
│   ├── release.yml
│   ├── workflows/
│   │   ├── codecov.yml
│   │   ├── container_build_base.yml
│   │   ├── container_build_dev.yml
│   │   ├── container_build_fix.yml
│   │   ├── container_build_template.yml
│   │   ├── container_build_universal.yml
│   │   ├── new-cvp-integration.yml
│   │   ├── offline-links-check.yml
│   │   ├── pull-request-comment.yml
│   │   ├── pull-request-conflict.yml
│   │   ├── pull-request-management.yml
│   │   ├── pull-request-rn-labeler.yml
│   │   ├── pull-request-triage.yml
│   │   ├── release-schema.yml
│   │   ├── sonar.yml
│   │   └── stale.yml
│   └── yamllintrc
├── .gitignore
├── .markdownlint-cli2.yaml
├── .pre-commit-config.yaml
├── .readthedocs.yaml
├── .sonarlint/
│   └── connectedMode.json
├── LICENSE
├── Makefile
├── README.md
├── ansible_collections/
│   └── arista/
│       └── avd/
│           ├── .ansible-lint
│           ├── .yamllint
│           ├── CHANGELOG.rst
│           ├── CNAME
│           ├── LICENSE
│           ├── README.md
│           ├── bindep.txt
│           ├── changelogs/
│           │   ├── .plugin-cache.yaml
│           │   ├── README.md
│           │   ├── changelog.yaml
│           │   ├── config.yaml
│           │   ├── fragments/
│           │   │   └── .gitkeep
│           │   └── fragments_backup/
│           │       ├── v3.6.0.yml
│           │       ├── v3.7.0.yml
│           │       ├── v3.8.0.yml
│           │       ├── v4.0.0.yml
│           │       ├── v4.1.0.yml
│           │       ├── v4.10.0.yml
│           │       ├── v4.2.0.yml
│           │       ├── v4.3.0.yml
│           │       ├── v4.4.0.yml
│           │       ├── v4.5.0.yml
│           │       ├── v4.6.0.yml
│           │       ├── v4.7.0.yml
│           │       ├── v4.7.1.yml
│           │       ├── v4.8.0.yml
│           │       ├── v4.9.0.yml
│           │       ├── v5.0.0.yml
│           │       ├── v5.1.0.yml
│           │       ├── v5.2.0.yml
│           │       ├── v5.3.0.yml
│           │       ├── v5.4.0.yml
│           │       ├── v5.5.0.yml
│           │       ├── v5.6.0.yml
│           │       ├── v5.7.0.yml
│           │       ├── v6.0.0.yml
│           │       ├── v6.0.1.yml
│           │       └── v6.1.0.yml
│           ├── examples/
│           │   ├── README.md
│           │   ├── campus-fabric/
│           │   │   ├── README.md
│           │   │   ├── ansible.cfg
│           │   │   ├── build.yml
│           │   │   ├── deploy.yml
│           │   │   ├── documentation/
│           │   │   │   ├── devices/
│           │   │   │   │   ├── LEAF1A.md
│           │   │   │   │   ├── LEAF1B.md
│           │   │   │   │   ├── LEAF2A.md
│           │   │   │   │   ├── LEAF3A.md
│           │   │   │   │   ├── LEAF3B.md
│           │   │   │   │   ├── LEAF3C.md
│           │   │   │   │   ├── LEAF3D.md
│           │   │   │   │   ├── LEAF3E.md
│           │   │   │   │   ├── SPINE1.md
│           │   │   │   │   └── SPINE2.md
│           │   │   │   └── fabric/
│           │   │   │       └── DC1_FABRIC-documentation.md
│           │   │   ├── group_vars/
│           │   │   │   ├── DC1.yml
│           │   │   │   ├── DC1_FABRIC.yml
│           │   │   │   ├── DC1_LEAFS.yml
│           │   │   │   ├── DC1_NETWORK_PORTS.yml
│           │   │   │   ├── DC1_NETWORK_SERVICES.yml
│           │   │   │   └── DC1_SPINES.yml
│           │   │   ├── intended/
│           │   │   │   ├── configs/
│           │   │   │   │   ├── LEAF1A.cfg
│           │   │   │   │   ├── LEAF1B.cfg
│           │   │   │   │   ├── LEAF2A.cfg
│           │   │   │   │   ├── LEAF3A.cfg
│           │   │   │   │   ├── LEAF3B.cfg
│           │   │   │   │   ├── LEAF3C.cfg
│           │   │   │   │   ├── LEAF3D.cfg
│           │   │   │   │   ├── LEAF3E.cfg
│           │   │   │   │   ├── SPINE1.cfg
│           │   │   │   │   └── SPINE2.cfg
│           │   │   │   └── structured_configs/
│           │   │   │       ├── LEAF1A.yml
│           │   │   │       ├── LEAF1B.yml
│           │   │   │       ├── LEAF2A.yml
│           │   │   │       ├── LEAF3A.yml
│           │   │   │       ├── LEAF3B.yml
│           │   │   │       ├── LEAF3C.yml
│           │   │   │       ├── LEAF3D.yml
│           │   │   │       ├── LEAF3E.yml
│           │   │   │       ├── SPINE1.yml
│           │   │   │       └── SPINE2.yml
│           │   │   ├── inventory.yml
│           │   │   └── switch-basic-configurations/
│           │   │       ├── LEAF1A.cfg
│           │   │       ├── LEAF1B.cfg
│           │   │       ├── LEAF2A.cfg
│           │   │       ├── LEAF3A.cfg
│           │   │       ├── LEAF3B.cfg
│           │   │       ├── LEAF3C.cfg
│           │   │       ├── LEAF3D.cfg
│           │   │       ├── LEAF3E.cfg
│           │   │       ├── SPINE1.cfg
│           │   │       └── SPINE2.cfg
│           │   ├── common/
│           │   │   ├── example-installation.md
│           │   │   └── start-avd-playground.md
│           │   ├── cv-pathfinder/
│           │   │   ├── .vault
│           │   │   ├── README.md
│           │   │   ├── ansible.cfg
│           │   │   ├── build.yml
│           │   │   ├── deploy.yml
│           │   │   ├── documentation/
│           │   │   │   ├── devices/
│           │   │   │   │   ├── inet-cloud.md
│           │   │   │   │   ├── mpls-cloud.md
│           │   │   │   │   ├── pf1.md
│           │   │   │   │   ├── pf2.md
│           │   │   │   │   ├── site1-border1.md
│           │   │   │   │   ├── site1-border2.md
│           │   │   │   │   ├── site1-wan1.md
│           │   │   │   │   ├── site1-wan2.md
│           │   │   │   │   ├── site2-leaf1.md
│           │   │   │   │   ├── site2-leaf2.md
│           │   │   │   │   ├── site2-wan1.md
│           │   │   │   │   ├── site2-wan2.md
│           │   │   │   │   ├── site3-leaf1.md
│           │   │   │   │   ├── site3-wan1.md
│           │   │   │   │   ├── site4-border1.md
│           │   │   │   │   ├── site4-border2.md
│           │   │   │   │   └── site4-wan1.md
│           │   │   │   └── fabric/
│           │   │   │       ├── WAN-documentation.md
│           │   │   │       ├── WAN-p2p-links.csv
│           │   │   │       └── WAN-topology.csv
│           │   │   ├── group_vars/
│           │   │   │   ├── PATHFINDERS.yml
│           │   │   │   ├── SITE1.yml
│           │   │   │   ├── SITE2.yml
│           │   │   │   ├── SITE3.yml
│           │   │   │   ├── SITE4.yml
│           │   │   │   ├── TRANSPORTS.yml
│           │   │   │   ├── WAN/
│           │   │   │   │   ├── cv_pathfinder_settings.yml
│           │   │   │   │   ├── l3_interface_profiles.yml
│           │   │   │   │   ├── management.yml
│           │   │   │   │   └── tenants.yml
│           │   │   │   └── all.yml
│           │   │   ├── host_vars/
│           │   │   │   └── inet-cloud.yml
│           │   │   ├── intended/
│           │   │   │   ├── configs/
│           │   │   │   │   ├── inet-cloud.cfg
│           │   │   │   │   ├── mpls-cloud.cfg
│           │   │   │   │   ├── pf1.cfg
│           │   │   │   │   ├── pf2.cfg
│           │   │   │   │   ├── site1-border1.cfg
│           │   │   │   │   ├── site1-border2.cfg
│           │   │   │   │   ├── site1-wan1.cfg
│           │   │   │   │   ├── site1-wan2.cfg
│           │   │   │   │   ├── site2-leaf1.cfg
│           │   │   │   │   ├── site2-leaf2.cfg
│           │   │   │   │   ├── site2-wan1.cfg
│           │   │   │   │   ├── site2-wan2.cfg
│           │   │   │   │   ├── site3-leaf1.cfg
│           │   │   │   │   ├── site3-wan1.cfg
│           │   │   │   │   ├── site4-border1.cfg
│           │   │   │   │   ├── site4-border2.cfg
│           │   │   │   │   └── site4-wan1.cfg
│           │   │   │   └── structured_configs/
│           │   │   │       ├── inet-cloud.yml
│           │   │   │       ├── mpls-cloud.yml
│           │   │   │       ├── pf1.yml
│           │   │   │       ├── pf2.yml
│           │   │   │       ├── site1-border1.yml
│           │   │   │       ├── site1-border2.yml
│           │   │   │       ├── site1-wan1.yml
│           │   │   │       ├── site1-wan2.yml
│           │   │   │       ├── site2-leaf1.yml
│           │   │   │       ├── site2-leaf2.yml
│           │   │   │       ├── site2-wan1.yml
│           │   │   │       ├── site2-wan2.yml
│           │   │   │       ├── site3-leaf1.yml
│           │   │   │       ├── site3-wan1.yml
│           │   │   │       ├── site4-border1.yml
│           │   │   │       ├── site4-border2.yml
│           │   │   │       └── site4-wan1.yml
│           │   │   ├── inventory.yml
│           │   │   └── switch-basic-configurations/
│           │   │       ├── inet-cloud-basic-configuration.txt
│           │   │       ├── mpls-cloud-basic-configuration.txt
│           │   │       ├── pf1-basic-configuration.txt
│           │   │       ├── pf2-basic-configuration.txt
│           │   │       ├── site1-border1-basic-configuration.txt
│           │   │       ├── site1-border2-basic-configuration.txt
│           │   │       ├── site1-wan1-basic-configuration.txt
│           │   │       ├── site1-wan2-basic-configuration.txt
│           │   │       ├── site2-leaf1-basic-configuration.txt
│           │   │       ├── site2-leaf2-basic-configuration.txt
│           │   │       ├── site2-wan1-basic-configuration.txt
│           │   │       ├── site2-wan2-basic-configuration.txt
│           │   │       ├── site3-leaf1-basic-configuration.txt
│           │   │       └── site3-wan1-basic-configuration.txt
│           │   ├── dual-dc-l3ls/
│           │   │   ├── Makefile
│           │   │   ├── README.md
│           │   │   ├── ansible.cfg
│           │   │   ├── build.yml
│           │   │   ├── clab/
│           │   │   │   ├── init-configs/
│           │   │   │   │   ├── dc1-leaf1-server1.cfg
│           │   │   │   │   ├── dc1-leaf1a.cfg
│           │   │   │   │   ├── dc1-leaf1b.cfg
│           │   │   │   │   ├── dc1-leaf1c.cfg
│           │   │   │   │   ├── dc1-leaf2-server1.cfg
│           │   │   │   │   ├── dc1-leaf2a.cfg
│           │   │   │   │   ├── dc1-leaf2b.cfg
│           │   │   │   │   ├── dc1-leaf2c.cfg
│           │   │   │   │   ├── dc1-spine1.cfg
│           │   │   │   │   ├── dc1-spine2.cfg
│           │   │   │   │   ├── dc2-leaf1-server1.cfg
│           │   │   │   │   ├── dc2-leaf1a.cfg
│           │   │   │   │   ├── dc2-leaf1b.cfg
│           │   │   │   │   ├── dc2-leaf1c.cfg
│           │   │   │   │   ├── dc2-leaf2-server1.cfg
│           │   │   │   │   ├── dc2-leaf2a.cfg
│           │   │   │   │   ├── dc2-leaf2b.cfg
│           │   │   │   │   ├── dc2-leaf2c.cfg
│           │   │   │   │   ├── dc2-spine1.cfg
│           │   │   │   │   └── dc2-spine2.cfg
│           │   │   │   ├── interface_mapping.json
│           │   │   │   └── topology.clab.yml
│           │   │   ├── deploy.yml
│           │   │   ├── documentation/
│           │   │   │   ├── devices/
│           │   │   │   │   ├── dc1-leaf1a.md
│           │   │   │   │   ├── dc1-leaf1b.md
│           │   │   │   │   ├── dc1-leaf1c.md
│           │   │   │   │   ├── dc1-leaf2a.md
│           │   │   │   │   ├── dc1-leaf2b.md
│           │   │   │   │   ├── dc1-leaf2c.md
│           │   │   │   │   ├── dc1-spine1.md
│           │   │   │   │   ├── dc1-spine2.md
│           │   │   │   │   ├── dc2-leaf1a.md
│           │   │   │   │   ├── dc2-leaf1b.md
│           │   │   │   │   ├── dc2-leaf1c.md
│           │   │   │   │   ├── dc2-leaf2a.md
│           │   │   │   │   ├── dc2-leaf2b.md
│           │   │   │   │   ├── dc2-leaf2c.md
│           │   │   │   │   ├── dc2-spine1.md
│           │   │   │   │   └── dc2-spine2.md
│           │   │   │   └── fabric/
│           │   │   │       ├── FABRIC-documentation.md
│           │   │   │       ├── FABRIC-p2p-links.csv
│           │   │   │       └── FABRIC-topology.csv
│           │   │   ├── group_vars/
│           │   │   │   ├── CONNECTED_ENDPOINTS.yml
│           │   │   │   ├── DC1.yml
│           │   │   │   ├── DC1_L2_LEAFS.yml
│           │   │   │   ├── DC1_L3_LEAFS.yml
│           │   │   │   ├── DC1_SPINES.yml
│           │   │   │   ├── DC2.yml
│           │   │   │   ├── DC2_L2_LEAFS.yml
│           │   │   │   ├── DC2_L3_LEAFS.yml
│           │   │   │   ├── DC2_SPINES.yml
│           │   │   │   ├── FABRIC.yml
│           │   │   │   └── NETWORK_SERVICES.yml
│           │   │   ├── intended/
│           │   │   │   ├── configs/
│           │   │   │   │   ├── dc1-leaf1a.cfg
│           │   │   │   │   ├── dc1-leaf1b.cfg
│           │   │   │   │   ├── dc1-leaf1c.cfg
│           │   │   │   │   ├── dc1-leaf2a.cfg
│           │   │   │   │   ├── dc1-leaf2b.cfg
│           │   │   │   │   ├── dc1-leaf2c.cfg
│           │   │   │   │   ├── dc1-spine1.cfg
│           │   │   │   │   ├── dc1-spine2.cfg
│           │   │   │   │   ├── dc2-leaf1a.cfg
│           │   │   │   │   ├── dc2-leaf1b.cfg
│           │   │   │   │   ├── dc2-leaf1c.cfg
│           │   │   │   │   ├── dc2-leaf2a.cfg
│           │   │   │   │   ├── dc2-leaf2b.cfg
│           │   │   │   │   ├── dc2-leaf2c.cfg
│           │   │   │   │   ├── dc2-spine1.cfg
│           │   │   │   │   └── dc2-spine2.cfg
│           │   │   │   └── structured_configs/
│           │   │   │       ├── dc1-leaf1a.yml
│           │   │   │       ├── dc1-leaf1b.yml
│           │   │   │       ├── dc1-leaf1c.yml
│           │   │   │       ├── dc1-leaf2a.yml
│           │   │   │       ├── dc1-leaf2b.yml
│           │   │   │       ├── dc1-leaf2c.yml
│           │   │   │       ├── dc1-spine1.yml
│           │   │   │       ├── dc1-spine2.yml
│           │   │   │       ├── dc2-leaf1a.yml
│           │   │   │       ├── dc2-leaf1b.yml
│           │   │   │       ├── dc2-leaf1c.yml
│           │   │   │       ├── dc2-leaf2a.yml
│           │   │   │       ├── dc2-leaf2b.yml
│           │   │   │       ├── dc2-leaf2c.yml
│           │   │   │       ├── dc2-spine1.yml
│           │   │   │       └── dc2-spine2.yml
│           │   │   ├── inventory.yml
│           │   │   └── switch-basic-configurations/
│           │   │       ├── dc1-leaf1a-basic-configuration.txt
│           │   │       ├── dc1-leaf1b-basic-configuration.txt
│           │   │       ├── dc1-leaf1c-basic-configuration.txt
│           │   │       ├── dc1-leaf2a-basic-configuration.txt
│           │   │       ├── dc1-leaf2b-basic-configuration.txt
│           │   │       ├── dc1-leaf2c-basic-configuration.txt
│           │   │       ├── dc1-spine1-basic-configuration.txt
│           │   │       ├── dc1-spine2-basic-configuration.txt
│           │   │       ├── dc2-leaf1a-basic-configuration.txt
│           │   │       ├── dc2-leaf1b-basic-configuration.txt
│           │   │       ├── dc2-leaf1c-basic-configuration.txt
│           │   │       ├── dc2-leaf2a-basic-configuration.txt
│           │   │       ├── dc2-leaf2b-basic-configuration.txt
│           │   │       ├── dc2-leaf2c-basic-configuration.txt
│           │   │       ├── dc2-spine1-basic-configuration.txt
│           │   │       └── dc2-spine2-basic-configuration.txt
│           │   ├── isis-ldp-ipvpn/
│           │   │   ├── Makefile
│           │   │   ├── README.md
│           │   │   ├── ansible.cfg
│           │   │   ├── build.yml
│           │   │   ├── clab/
│           │   │   │   ├── init-configs/
│           │   │   │   │   ├── agg.cfg
│           │   │   │   │   ├── cu1cpe1.cfg
│           │   │   │   │   ├── cu1cpe2.cfg
│           │   │   │   │   ├── cu2cpe1.cfg
│           │   │   │   │   ├── cu2cpe2.cfg
│           │   │   │   │   ├── p1.cfg
│           │   │   │   │   ├── p2.cfg
│           │   │   │   │   ├── p3.cfg
│           │   │   │   │   ├── p4.cfg
│           │   │   │   │   ├── pe1.cfg
│           │   │   │   │   ├── pe2.cfg
│           │   │   │   │   ├── pe3.cfg
│           │   │   │   │   ├── rr1.cfg
│           │   │   │   │   └── rr2.cfg
│           │   │   │   ├── interface_mapping.json
│           │   │   │   └── topology.clab.yml
│           │   │   ├── deploy.yml
│           │   │   ├── documentation/
│           │   │   │   ├── devices/
│           │   │   │   │   ├── p1.md
│           │   │   │   │   ├── p2.md
│           │   │   │   │   ├── p3.md
│           │   │   │   │   ├── p4.md
│           │   │   │   │   ├── pe1.md
│           │   │   │   │   ├── pe2.md
│           │   │   │   │   ├── pe3.md
│           │   │   │   │   ├── rr1.md
│           │   │   │   │   └── rr2.md
│           │   │   │   └── fabric/
│           │   │   │       ├── FABRIC-documentation.md
│           │   │   │       ├── FABRIC-p2p-links.csv
│           │   │   │       └── FABRIC-topology.csv
│           │   │   ├── group_vars/
│           │   │   │   ├── FABRIC.yml
│           │   │   │   ├── NETWORK_SERVICES.yml
│           │   │   │   ├── WAN1.yml
│           │   │   │   ├── WAN1_PE_ROUTERS.yml
│           │   │   │   ├── WAN1_P_ROUTERS.yml
│           │   │   │   └── WAN1_RR_ROUTERS.yml
│           │   │   ├── intended/
│           │   │   │   ├── configs/
│           │   │   │   │   ├── p1.cfg
│           │   │   │   │   ├── p2.cfg
│           │   │   │   │   ├── p3.cfg
│           │   │   │   │   ├── p4.cfg
│           │   │   │   │   ├── pe1.cfg
│           │   │   │   │   ├── pe2.cfg
│           │   │   │   │   ├── pe3.cfg
│           │   │   │   │   ├── rr1.cfg
│           │   │   │   │   └── rr2.cfg
│           │   │   │   └── structured_configs/
│           │   │   │       ├── p1.yml
│           │   │   │       ├── p2.yml
│           │   │   │       ├── p3.yml
│           │   │   │       ├── p4.yml
│           │   │   │       ├── pe1.yml
│           │   │   │       ├── pe2.yml
│           │   │   │       ├── pe3.yml
│           │   │   │       ├── rr1.yml
│           │   │   │       └── rr2.yml
│           │   │   ├── inventory.yml
│           │   │   └── switch-basic-configurations/
│           │   │       ├── p1-basic-configuration.txt
│           │   │       ├── p2-basic-configuration.txt
│           │   │       ├── p3-basic-configuration.txt
│           │   │       ├── p4-basic-configuration.txt
│           │   │       ├── pe1-basic-configuration.txt
│           │   │       ├── pe2-basic-configuration.txt
│           │   │       ├── pe3-basic-configuration.txt
│           │   │       ├── rr1-basic-configuration.txt
│           │   │       └── rr2-basic-configuration.txt
│           │   ├── l2ls-fabric/
│           │   │   ├── Makefile
│           │   │   ├── README.md
│           │   │   ├── ansible.cfg
│           │   │   ├── build.yml
│           │   │   ├── clab/
│           │   │   │   ├── init-configs/
│           │   │   │   │   ├── FW.cfg
│           │   │   │   │   ├── HostA.cfg
│           │   │   │   │   ├── HostB.cfg
│           │   │   │   │   ├── HostC.cfg
│           │   │   │   │   ├── HostD.cfg
│           │   │   │   │   ├── LEAF1.cfg
│           │   │   │   │   ├── LEAF2.cfg
│           │   │   │   │   ├── LEAF3.cfg
│           │   │   │   │   ├── LEAF4.cfg
│           │   │   │   │   ├── SPINE1.cfg
│           │   │   │   │   └── SPINE2.cfg
│           │   │   │   ├── interface_mapping.json
│           │   │   │   └── topology.clab.yml
│           │   │   ├── deploy.yml
│           │   │   ├── documentation/
│           │   │   │   ├── devices/
│           │   │   │   │   ├── LEAF1.md
│           │   │   │   │   ├── LEAF2.md
│           │   │   │   │   ├── LEAF3.md
│           │   │   │   │   ├── LEAF4.md
│           │   │   │   │   ├── SPINE1.md
│           │   │   │   │   └── SPINE2.md
│           │   │   │   └── fabric/
│           │   │   │       └── DC1-documentation.md
│           │   │   ├── group_vars/
│           │   │   │   ├── DC1.yml
│           │   │   │   ├── DC1_ENDPOINTS.yml
│           │   │   │   ├── DC1_LEAFS.yml
│           │   │   │   ├── DC1_NETWORK_SERVICES.yml
│           │   │   │   ├── DC1_SPINES.yml
│           │   │   │   └── FABRIC.yml
│           │   │   ├── intended/
│           │   │   │   ├── configs/
│           │   │   │   │   ├── LEAF1.cfg
│           │   │   │   │   ├── LEAF2.cfg
│           │   │   │   │   ├── LEAF3.cfg
│           │   │   │   │   ├── LEAF4.cfg
│           │   │   │   │   ├── SPINE1.cfg
│           │   │   │   │   └── SPINE2.cfg
│           │   │   │   └── structured_configs/
│           │   │   │       ├── LEAF1.yml
│           │   │   │       ├── LEAF2.yml
│           │   │   │       ├── LEAF3.yml
│           │   │   │       ├── LEAF4.yml
│           │   │   │       ├── SPINE1.yml
│           │   │   │       └── SPINE2.yml
│           │   │   ├── inventory.yml
│           │   │   └── switch-basic-configurations/
│           │   │       ├── FIREWALL.cfg
│           │   │       ├── LEAF1.cfg
│           │   │       ├── LEAF2.cfg
│           │   │       ├── LEAF3.cfg
│           │   │       ├── LEAF4.cfg
│           │   │       ├── SPINE1.cfg
│           │   │       └── SPINE2.cfg
│           │   ├── single-dc-l3ls/
│           │   │   ├── Makefile
│           │   │   ├── README.md
│           │   │   ├── ansible.cfg
│           │   │   ├── build.yml
│           │   │   ├── clab/
│           │   │   │   ├── init-configs/
│           │   │   │   │   ├── dc1-leaf1-server1.cfg
│           │   │   │   │   ├── dc1-leaf1a.cfg
│           │   │   │   │   ├── dc1-leaf1b.cfg
│           │   │   │   │   ├── dc1-leaf1c.cfg
│           │   │   │   │   ├── dc1-leaf2-server1.cfg
│           │   │   │   │   ├── dc1-leaf2a.cfg
│           │   │   │   │   ├── dc1-leaf2b.cfg
│           │   │   │   │   ├── dc1-leaf2c.cfg
│           │   │   │   │   ├── dc1-spine1.cfg
│           │   │   │   │   └── dc1-spine2.cfg
│           │   │   │   ├── interface_mapping.json
│           │   │   │   └── topology.clab.yml
│           │   │   ├── deploy-cvp.yml
│           │   │   ├── deploy.yml
│           │   │   ├── documentation/
│           │   │   │   ├── devices/
│           │   │   │   │   ├── dc1-leaf1a.md
│           │   │   │   │   ├── dc1-leaf1b.md
│           │   │   │   │   ├── dc1-leaf1c.md
│           │   │   │   │   ├── dc1-leaf2a.md
│           │   │   │   │   ├── dc1-leaf2b.md
│           │   │   │   │   ├── dc1-leaf2c.md
│           │   │   │   │   ├── dc1-spine1.md
│           │   │   │   │   └── dc1-spine2.md
│           │   │   │   └── fabric/
│           │   │   │       ├── FABRIC-documentation.md
│           │   │   │       ├── FABRIC-p2p-links.csv
│           │   │   │       └── FABRIC-topology.csv
│           │   │   ├── group_vars/
│           │   │   │   ├── CONNECTED_ENDPOINTS/
│           │   │   │   │   └── connected_endpoints.yml
│           │   │   │   ├── DC1/
│           │   │   │   │   └── dc1.yml
│           │   │   │   ├── DC1_L2_LEAVES/
│           │   │   │   │   └── l2_leaves.yml
│           │   │   │   ├── DC1_L3_LEAVES/
│           │   │   │   │   └── l3_leaves.yml
│           │   │   │   ├── DC1_SPINES/
│           │   │   │   │   └── spines.yml
│           │   │   │   ├── FABRIC/
│           │   │   │   │   ├── fabric_ansible_connectivity.yml
│           │   │   │   │   └── fabric_variables.yml
│           │   │   │   └── NETWORK_SERVICES/
│           │   │   │       └── network_services.yml
│           │   │   ├── intended/
│           │   │   │   ├── configs/
│           │   │   │   │   ├── dc1-leaf1a.cfg
│           │   │   │   │   ├── dc1-leaf1b.cfg
│           │   │   │   │   ├── dc1-leaf1c.cfg
│           │   │   │   │   ├── dc1-leaf2a.cfg
│           │   │   │   │   ├── dc1-leaf2b.cfg
│           │   │   │   │   ├── dc1-leaf2c.cfg
│           │   │   │   │   ├── dc1-spine1.cfg
│           │   │   │   │   └── dc1-spine2.cfg
│           │   │   │   └── structured_configs/
│           │   │   │       ├── dc1-leaf1a.yml
│           │   │   │       ├── dc1-leaf1b.yml
│           │   │   │       ├── dc1-leaf1c.yml
│           │   │   │       ├── dc1-leaf2a.yml
│           │   │   │       ├── dc1-leaf2b.yml
│           │   │   │       ├── dc1-leaf2c.yml
│           │   │   │       ├── dc1-spine1.yml
│           │   │   │       └── dc1-spine2.yml
│           │   │   ├── inventory.yml
│           │   │   ├── inventory_without_ip.yml
│           │   │   └── switch-basic-configurations/
│           │   │       ├── dc1-leaf1a-basic-configuration.txt
│           │   │       ├── dc1-leaf1b-basic-configuration.txt
│           │   │       ├── dc1-leaf1c-basic-configuration.txt
│           │   │       ├── dc1-leaf2a-basic-configuration.txt
│           │   │       ├── dc1-leaf2b-basic-configuration.txt
│           │   │       ├── dc1-leaf2c-basic-configuration.txt
│           │   │       ├── dc1-spine1-basic-configuration.txt
│           │   │       └── dc1-spine2-basic-configuration.txt
│           │   ├── single-dc-l3ls-ipv6/
│           │   │   ├── Makefile
│           │   │   ├── README.md
│           │   │   ├── ansible.cfg
│           │   │   ├── build.yml
│           │   │   ├── clab/
│           │   │   │   ├── init-configs/
│           │   │   │   │   ├── dc1-leaf1-server1.cfg
│           │   │   │   │   ├── dc1-leaf1a.cfg
│           │   │   │   │   ├── dc1-leaf1b.cfg
│           │   │   │   │   ├── dc1-leaf1c.cfg
│           │   │   │   │   ├── dc1-leaf2-server1.cfg
│           │   │   │   │   ├── dc1-leaf2a.cfg
│           │   │   │   │   ├── dc1-leaf2b.cfg
│           │   │   │   │   ├── dc1-leaf2c.cfg
│           │   │   │   │   ├── dc1-spine1.cfg
│           │   │   │   │   └── dc1-spine2.cfg
│           │   │   │   ├── interface_mapping.json
│           │   │   │   └── topology.clab.yml
│           │   │   ├── deploy-cvp.yml
│           │   │   ├── deploy.yml
│           │   │   ├── documentation/
│           │   │   │   ├── devices/
│           │   │   │   │   ├── dc1-leaf1a.md
│           │   │   │   │   ├── dc1-leaf1b.md
│           │   │   │   │   ├── dc1-leaf1c.md
│           │   │   │   │   ├── dc1-leaf2a.md
│           │   │   │   │   ├── dc1-leaf2b.md
│           │   │   │   │   ├── dc1-leaf2c.md
│           │   │   │   │   ├── dc1-spine1.md
│           │   │   │   │   └── dc1-spine2.md
│           │   │   │   └── fabric/
│           │   │   │       ├── FABRIC-documentation.md
│           │   │   │       ├── FABRIC-p2p-links.csv
│           │   │   │       └── FABRIC-topology.csv
│           │   │   ├── group_vars/
│           │   │   │   ├── CONNECTED_ENDPOINTS/
│           │   │   │   │   └── connected_endpoints.yml
│           │   │   │   ├── DC1/
│           │   │   │   │   └── dc1.yml
│           │   │   │   ├── DC1_L2_LEAVES/
│           │   │   │   │   └── l2_leaves.yml
│           │   │   │   ├── DC1_L3_LEAVES/
│           │   │   │   │   └── l3_leaves.yml
│           │   │   │   ├── DC1_SPINES/
│           │   │   │   │   └── spines.yml
│           │   │   │   ├── FABRIC/
│           │   │   │   │   ├── fabric_ansible_connectivity.yml
│           │   │   │   │   └── fabric_variables.yml
│           │   │   │   └── NETWORK_SERVICES/
│           │   │   │       └── network_services.yml
│           │   │   ├── intended/
│           │   │   │   ├── configs/
│           │   │   │   │   ├── dc1-leaf1a.cfg
│           │   │   │   │   ├── dc1-leaf1b.cfg
│           │   │   │   │   ├── dc1-leaf1c.cfg
│           │   │   │   │   ├── dc1-leaf2a.cfg
│           │   │   │   │   ├── dc1-leaf2b.cfg
│           │   │   │   │   ├── dc1-leaf2c.cfg
│           │   │   │   │   ├── dc1-spine1.cfg
│           │   │   │   │   └── dc1-spine2.cfg
│           │   │   │   └── structured_configs/
│           │   │   │       ├── dc1-leaf1a.yml
│           │   │   │       ├── dc1-leaf1b.yml
│           │   │   │       ├── dc1-leaf1c.yml
│           │   │   │       ├── dc1-leaf2a.yml
│           │   │   │       ├── dc1-leaf2b.yml
│           │   │   │       ├── dc1-leaf2c.yml
│           │   │   │       ├── dc1-spine1.yml
│           │   │   │       └── dc1-spine2.yml
│           │   │   ├── inventory.yml
│           │   │   ├── inventory_without_ip.yml
│           │   │   └── switch-basic-configurations/
│           │   │       ├── dc1-leaf1a-basic-configuration.txt
│           │   │       ├── dc1-leaf1b-basic-configuration.txt
│           │   │       ├── dc1-leaf1c-basic-configuration.txt
│           │   │       ├── dc1-leaf2a-basic-configuration.txt
│           │   │       ├── dc1-leaf2b-basic-configuration.txt
│           │   │       ├── dc1-leaf2c-basic-configuration.txt
│           │   │       ├── dc1-spine1-basic-configuration.txt
│           │   │       └── dc1-spine2-basic-configuration.txt
│           │   └── single-dc-multipod-l3ls/
│           │       ├── Makefile
│           │       ├── README.md
│           │       ├── ansible.cfg
│           │       ├── build.yml
│           │       ├── clab/
│           │       │   ├── init-configs/
│           │       │   │   ├── dc1-leaf1a.cfg
│           │       │   │   ├── dc1-leaf1b.cfg
│           │       │   │   ├── dc1-leaf2a.cfg
│           │       │   │   ├── dc1-leaf2b.cfg
│           │       │   │   ├── dc1-spine1.cfg
│           │       │   │   ├── dc1-spine2.cfg
│           │       │   │   ├── dc1-spine3.cfg
│           │       │   │   ├── dc1-spine4.cfg
│           │       │   │   ├── dc1-ss1.cfg
│           │       │   │   ├── dc1-ss2.cfg
│           │       │   │   ├── host1.cfg
│           │       │   │   └── host2.cfg
│           │       │   ├── interface_mapping.json
│           │       │   └── topology.clab.yml
│           │       ├── deploy.yml
│           │       ├── documentation/
│           │       │   ├── devices/
│           │       │   │   ├── dc1-leaf1a.md
│           │       │   │   ├── dc1-leaf1b.md
│           │       │   │   ├── dc1-leaf2a.md
│           │       │   │   ├── dc1-leaf2b.md
│           │       │   │   ├── dc1-spine1.md
│           │       │   │   ├── dc1-spine2.md
│           │       │   │   ├── dc1-spine3.md
│           │       │   │   ├── dc1-spine4.md
│           │       │   │   ├── dc1-ss1.md
│           │       │   │   └── dc1-ss2.md
│           │       │   └── fabric/
│           │       │       ├── FABRIC-documentation.md
│           │       │       ├── FABRIC-p2p-links.csv
│           │       │       └── FABRIC-topology.csv
│           │       ├── group_vars/
│           │       │   ├── CONNECTED_ENDPOINTS/
│           │       │   │   └── endpoints.yml
│           │       │   ├── EVPN_SERVICES/
│           │       │   │   └── evpn_services.yml
│           │       │   ├── FABRIC/
│           │       │   │   ├── fabric_ansible_connectivity.yml
│           │       │   │   └── fabric_variables.yml
│           │       │   ├── POD1/
│           │       │   │   └── pod1.yml
│           │       │   ├── POD2/
│           │       │   │   └── pod2.yml
│           │       │   └── SUPERSPINES/
│           │       │       └── superspines.yml
│           │       ├── intended/
│           │       │   ├── configs/
│           │       │   │   ├── dc1-leaf1a.cfg
│           │       │   │   ├── dc1-leaf1b.cfg
│           │       │   │   ├── dc1-leaf2a.cfg
│           │       │   │   ├── dc1-leaf2b.cfg
│           │       │   │   ├── dc1-spine1.cfg
│           │       │   │   ├── dc1-spine2.cfg
│           │       │   │   ├── dc1-spine3.cfg
│           │       │   │   ├── dc1-spine4.cfg
│           │       │   │   ├── dc1-ss1.cfg
│           │       │   │   └── dc1-ss2.cfg
│           │       │   └── structured_configs/
│           │       │       ├── dc1-leaf1a.yml
│           │       │       ├── dc1-leaf1b.yml
│           │       │       ├── dc1-leaf2a.yml
│           │       │       ├── dc1-leaf2b.yml
│           │       │       ├── dc1-spine1.yml
│           │       │       ├── dc1-spine2.yml
│           │       │       ├── dc1-spine3.yml
│           │       │       ├── dc1-spine4.yml
│           │       │       ├── dc1-ss1.yml
│           │       │       └── dc1-ss2.yml
│           │       ├── inventory.yml
│           │       └── validate.yml
│           ├── extensions/
│           │   ├── molecule/
│           │   │   ├── MOLECULE_SCENARIOS.txt
│           │   │   ├── Makefile
│           │   │   ├── README.md
│           │   │   ├── ansible_only/
│           │   │   │   ├── converge.yml
│           │   │   │   ├── create.yml
│           │   │   │   ├── custom_templates/
│           │   │   │   │   ├── empty.j2
│           │   │   │   │   ├── interface_descriptions/
│           │   │   │   │   │   ├── connected_endpoints/
│           │   │   │   │   │   │   ├── ethernet-interfaces.j2
│           │   │   │   │   │   │   └── port-channel-interfaces.j2
│           │   │   │   │   │   ├── loopbacks/
│           │   │   │   │   │   │   ├── router-id-loopback.j2
│           │   │   │   │   │   │   └── vtep-loopback.j2
│           │   │   │   │   │   ├── mlag/
│           │   │   │   │   │   │   ├── ethernet-interfaces.j2
│           │   │   │   │   │   │   └── port-channel-interfaces.j2
│           │   │   │   │   │   └── underlay/
│           │   │   │   │   │       ├── ethernet-interfaces.j2
│           │   │   │   │   │       └── port-channel-interfaces.j2
│           │   │   │   │   └── ip_addressing/
│           │   │   │   │       ├── mlag-ibgp-peering-ip-primary.j2
│           │   │   │   │       ├── mlag-ibgp-peering-ip-secondary.j2
│           │   │   │   │       ├── mlag-ip-primary.j2
│           │   │   │   │       ├── mlag-ip-secondary.j2
│           │   │   │   │       ├── mlag-l3-ip-primary.j2
│           │   │   │   │       ├── mlag-l3-ip-secondary.j2
│           │   │   │   │       ├── p2p-uplinks-ip.j2
│           │   │   │   │       ├── p2p-uplinks-peer-ip.j2
│           │   │   │   │       ├── router-id-ipv6.j2
│           │   │   │   │       ├── router-id.j2
│           │   │   │   │       ├── vtep-ip-mlag.j2
│           │   │   │   │       └── vtep-ip.j2
│           │   │   │   ├── destroy.yml
│           │   │   │   ├── intended/
│           │   │   │   │   ├── configs/
│           │   │   │   │   │   ├── custom-templates-l2leaf1a.cfg
│           │   │   │   │   │   ├── custom-templates-l2leaf1b.cfg
│           │   │   │   │   │   ├── custom-templates-l3leaf1a.cfg
│           │   │   │   │   │   ├── custom-templates-l3leaf1b.cfg
│           │   │   │   │   │   ├── custom-templates-spine1.cfg
│           │   │   │   │   │   ├── dc1-bl1a.cfg
│           │   │   │   │   │   ├── dc1-bl1b.cfg
│           │   │   │   │   │   ├── dc1-spine1.cfg
│           │   │   │   │   │   ├── l3-edge.cfg
│           │   │   │   │   │   ├── node-type-l3-interfaces-portchannels-custom-template.cfg
│           │   │   │   │   │   ├── rd-rt-admin-subfield-l3leaf.cfg
│           │   │   │   │   │   └── string-set-as-play-var.cfg
│           │   │   │   │   └── structured_configs/
│           │   │   │   │       ├── custom-templates-l2leaf1a.yml
│           │   │   │   │       ├── custom-templates-l2leaf1b.yml
│           │   │   │   │       ├── custom-templates-l3leaf1a.yml
│           │   │   │   │       ├── custom-templates-l3leaf1b.yml
│           │   │   │   │       ├── custom-templates-spine1.yml
│           │   │   │   │       ├── dc1-bl1a.yml
│           │   │   │   │       ├── dc1-bl1b.yml
│           │   │   │   │       ├── dc1-spine1.yml
│           │   │   │   │       ├── l3-edge.yml
│           │   │   │   │       ├── node-type-l3-interfaces-portchannels-custom-template.yml
│           │   │   │   │       ├── rd-rt-admin-subfield-l3leaf.yml
│           │   │   │   │       └── string-set-as-play-var.yml
│           │   │   │   ├── inventory/
│           │   │   │   │   ├── group_vars/
│           │   │   │   │   │   ├── CUSTOM_TEMPLATES_L2LEAFS.yml
│           │   │   │   │   │   ├── CUSTOM_TEMPLATES_L3LEAFS.yml
│           │   │   │   │   │   ├── CUSTOM_TEMPLATES_SPINES.yml
│           │   │   │   │   │   ├── CUSTOM_TEMPLATES_TESTS.yml
│           │   │   │   │   │   ├── DC1_BL1.yml
│           │   │   │   │   │   ├── DC1_FABRIC.yml
│           │   │   │   │   │   ├── DC1_SPINES.yml
│           │   │   │   │   │   ├── EOS_DESIGNS_UNIT_TESTS.yml
│           │   │   │   │   │   └── all.yml
│           │   │   │   │   ├── host_vars/
│           │   │   │   │   │   ├── dc1-bl1a.yml
│           │   │   │   │   │   ├── l3-edge.yml
│           │   │   │   │   │   ├── node-type-l3-interfaces-portchannels-custom-template.yml
│           │   │   │   │   │   ├── rd-rt-admin-subfield-l3leaf.yml
│           │   │   │   │   │   └── string-set-as-play-var.yml
│           │   │   │   │   └── hosts.yml
│           │   │   │   ├── molecule.yml
│           │   │   │   └── verify.yml
│           │   │   ├── anta_runner/
│           │   │   │   ├── anta/
│           │   │   │   │   ├── avd_catalogs/
│           │   │   │   │   │   ├── default_run/
│           │   │   │   │   │   │   ├── dc1-leaf1a.json
│           │   │   │   │   │   │   ├── dc1-leaf1b.json
│           │   │   │   │   │   │   ├── dc1-leaf1c.json
│           │   │   │   │   │   │   ├── dc1-leaf2a.json
│           │   │   │   │   │   │   ├── dc1-leaf2c.json
│           │   │   │   │   │   │   ├── dc1-spine1.json
│           │   │   │   │   │   │   ├── dc1-spine2.json
│           │   │   │   │   │   │   ├── dc1-svc-leaf1a.json
│           │   │   │   │   │   │   ├── dc1-svc-leaf1b.json
│           │   │   │   │   │   │   ├── dc1-wan1.json
│           │   │   │   │   │   │   ├── dc1-wan2.json
│           │   │   │   │   │   │   ├── dc1-wan3.json
│           │   │   │   │   │   │   ├── dc2-leaf1a.json
│           │   │   │   │   │   │   ├── dc2-leaf1b.json
│           │   │   │   │   │   │   ├── dc2-leaf1c.json
│           │   │   │   │   │   │   ├── dc2-leaf2a.json
│           │   │   │   │   │   │   ├── dc2-leaf2b.json
│           │   │   │   │   │   │   ├── dc2-leaf3a.arista.com.json
│           │   │   │   │   │   │   ├── dc2-leaf3b.arista.com.json
│           │   │   │   │   │   │   ├── dc2-leaf3c.json
│           │   │   │   │   │   │   ├── dc2-spine1.json
│           │   │   │   │   │   │   └── dc2-spine2.json
│           │   │   │   │   │   ├── default_run_filtered_report/
│           │   │   │   │   │   │   ├── dc1-leaf1a.json
│           │   │   │   │   │   │   ├── dc1-leaf1b.json
│           │   │   │   │   │   │   ├── dc1-leaf1c.json
│           │   │   │   │   │   │   ├── dc1-leaf2a.json
│           │   │   │   │   │   │   ├── dc1-leaf2c.json
│           │   │   │   │   │   │   ├── dc1-spine1.json
│           │   │   │   │   │   │   ├── dc1-spine2.json
│           │   │   │   │   │   │   ├── dc1-svc-leaf1a.json
│           │   │   │   │   │   │   ├── dc1-svc-leaf1b.json
│           │   │   │   │   │   │   ├── dc1-wan1.json
│           │   │   │   │   │   │   ├── dc1-wan2.json
│           │   │   │   │   │   │   ├── dc1-wan3.json
│           │   │   │   │   │   │   ├── dc2-leaf1a.json
│           │   │   │   │   │   │   ├── dc2-leaf1b.json
│           │   │   │   │   │   │   ├── dc2-leaf1c.json
│           │   │   │   │   │   │   ├── dc2-leaf2a.json
│           │   │   │   │   │   │   ├── dc2-leaf2b.json
│           │   │   │   │   │   │   ├── dc2-leaf3a.arista.com.json
│           │   │   │   │   │   │   ├── dc2-leaf3b.arista.com.json
│           │   │   │   │   │   │   ├── dc2-leaf3c.json
│           │   │   │   │   │   │   ├── dc2-spine1.json
│           │   │   │   │   │   │   └── dc2-spine2.json
│           │   │   │   │   │   ├── default_run_sorted_report/
│           │   │   │   │   │   │   ├── dc1-leaf1a.json
│           │   │   │   │   │   │   ├── dc1-leaf1b.json
│           │   │   │   │   │   │   ├── dc1-leaf1c.json
│           │   │   │   │   │   │   ├── dc1-leaf2a.json
│           │   │   │   │   │   │   ├── dc1-leaf2c.json
│           │   │   │   │   │   │   ├── dc1-spine1.json
│           │   │   │   │   │   │   ├── dc1-spine2.json
│           │   │   │   │   │   │   ├── dc1-svc-leaf1a.json
│           │   │   │   │   │   │   ├── dc1-svc-leaf1b.json
│           │   │   │   │   │   │   ├── dc1-wan1.json
│           │   │   │   │   │   │   ├── dc1-wan2.json
│           │   │   │   │   │   │   ├── dc1-wan3.json
│           │   │   │   │   │   │   ├── dc2-leaf1a.json
│           │   │   │   │   │   │   ├── dc2-leaf1b.json
│           │   │   │   │   │   │   ├── dc2-leaf1c.json
│           │   │   │   │   │   │   ├── dc2-leaf2a.json
│           │   │   │   │   │   │   ├── dc2-leaf2b.json
│           │   │   │   │   │   │   ├── dc2-leaf3a.arista.com.json
│           │   │   │   │   │   │   ├── dc2-leaf3b.arista.com.json
│           │   │   │   │   │   │   ├── dc2-leaf3c.json
│           │   │   │   │   │   │   ├── dc2-spine1.json
│           │   │   │   │   │   │   └── dc2-spine2.json
│           │   │   │   │   │   └── filtered_run/
│           │   │   │   │   │       ├── dc1-leaf1a.json
│           │   │   │   │   │       ├── dc1-leaf1b.json
│           │   │   │   │   │       ├── dc1-leaf1c.json
│           │   │   │   │   │       ├── dc1-leaf2a.json
│           │   │   │   │   │       ├── dc1-leaf2c.json
│           │   │   │   │   │       ├── dc1-spine1.json
│           │   │   │   │   │       ├── dc1-spine2.json
│           │   │   │   │   │       ├── dc1-svc-leaf1a.json
│           │   │   │   │   │       ├── dc1-svc-leaf1b.json
│           │   │   │   │   │       ├── dc1-wan1.json
│           │   │   │   │   │       ├── dc1-wan2.json
│           │   │   │   │   │       ├── dc1-wan3.json
│           │   │   │   │   │       ├── dc2-leaf1a.json
│           │   │   │   │   │       ├── dc2-leaf1b.json
│           │   │   │   │   │       ├── dc2-leaf1c.json
│           │   │   │   │   │       ├── dc2-leaf2a.json
│           │   │   │   │   │       ├── dc2-leaf2b.json
│           │   │   │   │   │       ├── dc2-leaf3a.arista.com.json
│           │   │   │   │   │       ├── dc2-leaf3b.arista.com.json
│           │   │   │   │   │       ├── dc2-leaf3c.json
│           │   │   │   │   │       ├── dc2-spine1.json
│           │   │   │   │   │       └── dc2-spine2.json
│           │   │   │   │   ├── reports/
│           │   │   │   │   │   ├── default_run/
│           │   │   │   │   │   │   ├── anta_report.csv
│           │   │   │   │   │   │   ├── anta_report.json
│           │   │   │   │   │   │   └── anta_report.md
│           │   │   │   │   │   ├── default_run_filtered_report/
│           │   │   │   │   │   │   ├── anta_report.csv
│           │   │   │   │   │   │   ├── anta_report.json
│           │   │   │   │   │   │   └── anta_report.md
│           │   │   │   │   │   ├── default_run_sorted_report/
│           │   │   │   │   │   │   ├── anta_report.csv
│           │   │   │   │   │   │   ├── anta_report.json
│           │   │   │   │   │   │   └── anta_report.md
│           │   │   │   │   │   ├── filtered_run/
│           │   │   │   │   │   │   ├── anta_report.csv
│           │   │   │   │   │   │   ├── anta_report.json
│           │   │   │   │   │   │   └── anta_report.md
│           │   │   │   │   │   ├── user_defined_catalogs_run/
│           │   │   │   │   │   │   ├── anta_report.csv
│           │   │   │   │   │   │   ├── anta_report.json
│           │   │   │   │   │   │   └── anta_report.md
│           │   │   │   │   │   └── user_defined_catalogs_with_tags_run/
│           │   │   │   │   │       ├── anta_report.csv
│           │   │   │   │   │       ├── anta_report.json
│           │   │   │   │   │       └── anta_report.md
│           │   │   │   │   └── user_catalogs/
│           │   │   │   │       ├── software.yml
│           │   │   │   │       └── vxlan.yml
│           │   │   │   ├── converge.yml
│           │   │   │   ├── create.yml
│           │   │   │   ├── destroy.yml
│           │   │   │   ├── intended/
│           │   │   │   │   └── structured_configs/
│           │   │   │   │       ├── dc1-leaf1a.yml
│           │   │   │   │       ├── dc1-leaf1b.yml
│           │   │   │   │       ├── dc1-leaf1c.yml
│           │   │   │   │       ├── dc1-leaf2a.yml
│           │   │   │   │       ├── dc1-leaf2b.yml
│           │   │   │   │       ├── dc1-leaf2c.yml
│           │   │   │   │       ├── dc1-spine1.yml
│           │   │   │   │       ├── dc1-spine2.yml
│           │   │   │   │       ├── dc1-svc-leaf1a.yml
│           │   │   │   │       ├── dc1-svc-leaf1b.yml
│           │   │   │   │       ├── dc1-wan1.yml
│           │   │   │   │       ├── dc1-wan2.yml
│           │   │   │   │       ├── dc1-wan3.yml
│           │   │   │   │       ├── dc2-leaf1a.yml
│           │   │   │   │       ├── dc2-leaf1b.yml
│           │   │   │   │       ├── dc2-leaf1c.yml
│           │   │   │   │       ├── dc2-leaf2a.yml
│           │   │   │   │       ├── dc2-leaf2b.yml
│           │   │   │   │       ├── dc2-leaf2c.yml
│           │   │   │   │       ├── dc2-leaf3a.arista.com.yml
│           │   │   │   │       ├── dc2-leaf3b.arista.com.yml
│           │   │   │   │       ├── dc2-leaf3c.yml
│           │   │   │   │       ├── dc2-spine1.yml
│           │   │   │   │       └── dc2-spine2.yml
│           │   │   │   ├── inventory/
│           │   │   │   │   ├── group_vars/
│           │   │   │   │   │   ├── CONNECTED_ENDPOINTS.yml
│           │   │   │   │   │   ├── DC1.yml
│           │   │   │   │   │   ├── DC1_L2_LEAVES.yml
│           │   │   │   │   │   ├── DC1_L3_LEAVES.yml
│           │   │   │   │   │   ├── DC1_SPINES.yml
│           │   │   │   │   │   ├── DC1_SVC_LEAVES.yml
│           │   │   │   │   │   ├── DC1_WAN.yml
│           │   │   │   │   │   ├── DC2.yml
│           │   │   │   │   │   ├── DC2_L2_LEAVES.yml
│           │   │   │   │   │   ├── DC2_L3_LEAVES.yml
│           │   │   │   │   │   ├── DC2_SPINES.yml
│           │   │   │   │   │   ├── FABRIC.yml
│           │   │   │   │   │   ├── NETWORK_SERVICES.yml
│           │   │   │   │   │   └── WAN.yml
│           │   │   │   │   ├── host_vars/
│           │   │   │   │   │   ├── dc1-leaf1a.yml
│           │   │   │   │   │   ├── dc1-leaf1c.yaml
│           │   │   │   │   │   ├── dc1-leaf3a.yml
│           │   │   │   │   │   ├── dc1-svc-leaf1b.yml
│           │   │   │   │   │   ├── dc1-wan1.yml
│           │   │   │   │   │   ├── dc2-leaf2c.yml
│           │   │   │   │   │   ├── dc2-leaf3a.arista.com.yml
│           │   │   │   │   │   ├── dc2-leaf3b.arista.com.yml
│           │   │   │   │   │   └── dc2-leaf3c.yml
│           │   │   │   │   └── hosts.yml
│           │   │   │   └── molecule.yml
│           │   │   ├── cv_deploy/
│           │   │   │   ├── README.md
│           │   │   │   ├── cc_false.yml
│           │   │   │   ├── cc_requested_state.yml
│           │   │   │   ├── cleanup.yml
│           │   │   │   ├── converge.yml
│           │   │   │   ├── cv_deploy.yml
│           │   │   │   ├── cv_deploy_hostvars.yml
│           │   │   │   ├── cv_deploy_manifest_only.yml
│           │   │   │   ├── cv_deploy_use_manifest_hybrid.yml
│           │   │   │   ├── cv_deploy_with_manifest.yml
│           │   │   │   ├── duplicated_devices.yml
│           │   │   │   ├── duplicated_devices_strict_system_mac.yml
│           │   │   │   ├── intended/
│           │   │   │   │   ├── configlets/
│           │   │   │   │   │   ├── test_manifest_access_lists.txt
│           │   │   │   │   │   └── test_manifest_alias.txt
│           │   │   │   │   ├── configs/
│           │   │   │   │   │   ├── base_configs/
│           │   │   │   │   │   │   ├── avd-ci-core1.cfg
│           │   │   │   │   │   │   ├── avd-ci-leaf1.cfg
│           │   │   │   │   │   │   ├── avd-ci-leaf2.cfg
│           │   │   │   │   │   │   ├── avd-ci-leaf3.cfg
│           │   │   │   │   │   │   ├── avd-ci-leaf4.cfg
│           │   │   │   │   │   │   ├── avd-ci-spine1.cfg
│           │   │   │   │   │   │   └── avd-ci-spine2.cfg
│           │   │   │   │   │   ├── test_configs/
│           │   │   │   │   │   │   ├── avd-ci-core1.cfg
│           │   │   │   │   │   │   ├── avd-ci-leaf1-missing.cfg
│           │   │   │   │   │   │   ├── avd-ci-leaf1.cfg
│           │   │   │   │   │   │   ├── avd-ci-leaf2.cfg
│           │   │   │   │   │   │   ├── avd-ci-leaf3.cfg
│           │   │   │   │   │   │   ├── avd-ci-leaf4.cfg
│           │   │   │   │   │   │   ├── avd-ci-spine1.cfg
│           │   │   │   │   │   │   └── avd-ci-spine2.cfg
│           │   │   │   │   │   └── test_invalid_configs/
│           │   │   │   │   │       ├── avd-ci-core1.cfg
│           │   │   │   │   │       ├── avd-ci-leaf1-missing.cfg
│           │   │   │   │   │       ├── avd-ci-leaf1.cfg
│           │   │   │   │   │       ├── avd-ci-leaf2.cfg
│           │   │   │   │   │       ├── avd-ci-leaf3.cfg
│           │   │   │   │   │       ├── avd-ci-leaf4.cfg
│           │   │   │   │   │       ├── avd-ci-spine1.cfg
│           │   │   │   │   │       └── avd-ci-spine2.cfg
│           │   │   │   │   └── structured_configs/
│           │   │   │   │       ├── base_configs/
│           │   │   │   │       │   └── avd-ci-leaf1.yml
│           │   │   │   │       ├── test_configs/
│           │   │   │   │       │   ├── avd-ci-core1.yml
│           │   │   │   │       │   ├── avd-ci-leaf1.yml
│           │   │   │   │       │   ├── avd-ci-leaf2.yml
│           │   │   │   │       │   ├── avd-ci-leaf3.yml
│           │   │   │   │       │   ├── avd-ci-leaf4.yml
│           │   │   │   │       │   ├── avd-ci-missing.yml
│           │   │   │   │       │   ├── avd-ci-spine1.yml
│           │   │   │   │       │   └── avd-ci-spine2.yml
│           │   │   │   │       ├── test_invalid_configs/
│           │   │   │   │       │   ├── avd-ci-leaf1.yml
│           │   │   │   │       │   └── avd-ci-missing.yml
│           │   │   │   │       └── test_use_manifest_hybrid_configs/
│           │   │   │   │           ├── avd-ci-leaf1.yml
│           │   │   │   │           ├── avd-ci-leaf2.yml
│           │   │   │   │           ├── avd-ci-leaf3.yml
│           │   │   │   │           ├── avd-ci-leaf4.yml
│           │   │   │   │           ├── avd-ci-spine1.yml
│           │   │   │   │           └── avd-ci-spine2.yml
│           │   │   │   ├── invalid_config.yml
│           │   │   │   ├── inventory/
│           │   │   │   │   ├── host_vars/
│           │   │   │   │   │   └── avd-ci-leaf1.yml
│           │   │   │   │   └── hosts.yml
│           │   │   │   ├── molecule.yml
│           │   │   │   ├── no_duplicated_devices.yml
│           │   │   │   ├── workspace_force_false.yml
│           │   │   │   ├── workspace_force_true.yml
│           │   │   │   ├── workspace_id.yml
│           │   │   │   ├── workspace_pending.yml
│           │   │   │   └── workspace_requested_state.yml
│           │   │   ├── cv_workflow/
│           │   │   │   ├── README.md
│           │   │   │   ├── cleanup.yml
│           │   │   │   ├── converge.yml
│           │   │   │   ├── intended/
│           │   │   │   │   ├── configs/
│           │   │   │   │   │   ├── base_configs/
│           │   │   │   │   │   │   ├── ci-s1-leaf1.cfg
│           │   │   │   │   │   │   ├── ci-s1-leaf2.cfg
│           │   │   │   │   │   │   ├── ci-s1-leaf3.cfg
│           │   │   │   │   │   │   ├── ci-s1-leaf4.cfg
│           │   │   │   │   │   │   ├── ci-s1-spine1.cfg
│           │   │   │   │   │   │   └── ci-s1-spine2.cfg
│           │   │   │   │   │   ├── change_tags/
│           │   │   │   │   │   │   └── ci-s1-leaf1.cfg
│           │   │   │   │   │   ├── dotted_hostname/
│           │   │   │   │   │   │   ├── reset_dotted_hostname/
│           │   │   │   │   │   │   │   └── ci-s1-leaf.1.cfg
│           │   │   │   │   │   │   ├── set_dotted_hostname/
│           │   │   │   │   │   │   │   └── ci-s1-leaf1.cfg
│           │   │   │   │   │   │   └── test_dotted_hostname/
│           │   │   │   │   │   │       └── ci-s1-leaf.1.cfg
│           │   │   │   │   │   ├── strict_tags/
│           │   │   │   │   │   │   └── ci-s1-leaf1.cfg
│           │   │   │   │   │   └── test_configs/
│           │   │   │   │   │       ├── ci-s1-leaf1.cfg
│           │   │   │   │   │       ├── ci-s1-leaf2.cfg
│           │   │   │   │   │       ├── ci-s1-leaf3.cfg
│           │   │   │   │   │       ├── ci-s1-leaf4.cfg
│           │   │   │   │   │       ├── ci-s1-missing.cfg
│           │   │   │   │   │       ├── ci-s1-spine1.cfg
│           │   │   │   │   │       └── ci-s1-spine2.cfg
│           │   │   │   │   └── structured_configs/
│           │   │   │   │       ├── base_configs/
│           │   │   │   │       │   ├── ci-s1-leaf1.yml
│           │   │   │   │       │   ├── ci-s1-leaf2.yml
│           │   │   │   │       │   ├── ci-s1-leaf3.yml
│           │   │   │   │       │   ├── ci-s1-leaf4.yml
│           │   │   │   │       │   ├── ci-s1-spine1.yml
│           │   │   │   │       │   └── ci-s1-spine2.yml
│           │   │   │   │       ├── change_tags/
│           │   │   │   │       │   └── ci-s1-leaf1.yml
│           │   │   │   │       ├── dotted_hostname/
│           │   │   │   │       │   ├── reset_dotted_hostname/
│           │   │   │   │       │   │   └── ci-s1-leaf.1.yml
│           │   │   │   │       │   ├── set_dotted_hostname/
│           │   │   │   │       │   │   └── ci-s1-leaf1.yml
│           │   │   │   │       │   └── test_dotted_hostname/
│           │   │   │   │       │       └── ci-s1-leaf.1.yml
│           │   │   │   │       ├── strict_tags/
│           │   │   │   │       │   └── ci-s1-leaf1.yml
│           │   │   │   │       └── test_configs/
│           │   │   │   │           ├── ci-s1-leaf1.yml
│           │   │   │   │           ├── ci-s1-leaf2.yml
│           │   │   │   │           ├── ci-s1-leaf3.yml
│           │   │   │   │           ├── ci-s1-leaf4.yml
│           │   │   │   │           ├── ci-s1-missing.yml
│           │   │   │   │           ├── ci-s1-spine1.yml
│           │   │   │   │           └── ci-s1-spine2.yml
│           │   │   │   ├── inventory/
│           │   │   │   │   └── hosts.yml
│           │   │   │   └── molecule.yml
│           │   │   ├── default/
│           │   │   │   └── molecule.yml
│           │   │   ├── digital_twin/
│           │   │   │   ├── converge.yml
│           │   │   │   ├── create.yml
│           │   │   │   ├── destroy.yml
│           │   │   │   ├── digital_twin/
│           │   │   │   │   ├── documentation/
│           │   │   │   │   │   ├── devices/
│           │   │   │   │   │   │   ├── digital-twin-adjust-oob-mgmt-1.md
│           │   │   │   │   │   │   ├── digital-twin-adjust-oob-mgmt-2.md
│           │   │   │   │   │   │   ├── digital-twin-adjust-oob-mgmt-3.md
│           │   │   │   │   │   │   ├── digital-twin-adjust-oob-mgmt-4.md
│           │   │   │   │   │   │   ├── digital-twin-default-interfaces-digital-twin-platform.md
│           │   │   │   │   │   │   ├── digital-twin-default-interfaces-original-platform.md
│           │   │   │   │   │   │   ├── digital-twin-enforce-eapi-1.md
│           │   │   │   │   │   │   ├── digital-twin-enforce-eapi-2.md
│           │   │   │   │   │   │   ├── digital-twin-enforce-eapi-3.md
│           │   │   │   │   │   │   ├── digital-twin-enforce-eapi-4.md
│           │   │   │   │   │   │   ├── digital-twin-ethernet-ports-1.md
│           │   │   │   │   │   │   ├── digital-twin-ethernet-ports-3.md
│           │   │   │   │   │   │   └── digital.twin.ethernet.ports.2.md
│           │   │   │   │   │   └── fabric/
│           │   │   │   │   │       ├── DIGITAL_TWIN-documentation.md
│           │   │   │   │   │       ├── DIGITAL_TWIN-topology.yml
│           │   │   │   │   │       └── DIGITAL_TWIN_SINGLE_SWITCH_FABRIC-topology.yml
│           │   │   │   │   └── intended/
│           │   │   │   │       ├── configs/
│           │   │   │   │       │   ├── digital-twin-adjust-oob-mgmt-1.cfg
│           │   │   │   │       │   ├── digital-twin-adjust-oob-mgmt-2.cfg
│           │   │   │   │       │   ├── digital-twin-adjust-oob-mgmt-3.cfg
│           │   │   │   │       │   ├── digital-twin-adjust-oob-mgmt-4.cfg
│           │   │   │   │       │   ├── digital-twin-default-interfaces-digital-twin-platform.cfg
│           │   │   │   │       │   ├── digital-twin-default-interfaces-original-platform.cfg
│           │   │   │   │       │   ├── digital-twin-enforce-eapi-1.cfg
│           │   │   │   │       │   ├── digital-twin-enforce-eapi-2.cfg
│           │   │   │   │       │   ├── digital-twin-enforce-eapi-3.cfg
│           │   │   │   │       │   ├── digital-twin-enforce-eapi-4.cfg
│           │   │   │   │       │   ├── digital-twin-ethernet-ports-1.cfg
│           │   │   │   │       │   ├── digital-twin-ethernet-ports-3.cfg
│           │   │   │   │       │   └── digital.twin.ethernet.ports.2.cfg
│           │   │   │   │       └── structured_configs/
│           │   │   │   │           ├── digital-twin-adjust-oob-mgmt-1.yml
│           │   │   │   │           ├── digital-twin-adjust-oob-mgmt-2.yml
│           │   │   │   │           ├── digital-twin-adjust-oob-mgmt-3.yml
│           │   │   │   │           ├── digital-twin-adjust-oob-mgmt-4.yml
│           │   │   │   │           ├── digital-twin-default-interfaces-digital-twin-platform.yml
│           │   │   │   │           ├── digital-twin-default-interfaces-original-platform.yml
│           │   │   │   │           ├── digital-twin-enforce-eapi-1.yml
│           │   │   │   │           ├── digital-twin-enforce-eapi-2.yml
│           │   │   │   │           ├── digital-twin-enforce-eapi-3.yml
│           │   │   │   │           ├── digital-twin-enforce-eapi-4.yml
│           │   │   │   │           ├── digital-twin-ethernet-ports-1.yml
│           │   │   │   │           ├── digital-twin-ethernet-ports-3.yml
│           │   │   │   │           ├── digital-twin-single-switch-fabric-1.yml
│           │   │   │   │           └── digital.twin.ethernet.ports.2.yml
│           │   │   │   ├── documentation/
│           │   │   │   │   ├── devices/
│           │   │   │   │   │   ├── digital-twin-adjust-oob-mgmt-1.md
│           │   │   │   │   │   ├── digital-twin-adjust-oob-mgmt-2.md
│           │   │   │   │   │   ├── digital-twin-adjust-oob-mgmt-3.md
│           │   │   │   │   │   ├── digital-twin-adjust-oob-mgmt-4.md
│           │   │   │   │   │   ├── digital-twin-default-interfaces-digital-twin-platform.md
│           │   │   │   │   │   ├── digital-twin-default-interfaces-original-platform.md
│           │   │   │   │   │   ├── digital-twin-enforce-eapi-1.md
│           │   │   │   │   │   ├── digital-twin-enforce-eapi-2.md
│           │   │   │   │   │   ├── digital-twin-enforce-eapi-3.md
│           │   │   │   │   │   ├── digital-twin-enforce-eapi-4.md
│           │   │   │   │   │   ├── digital-twin-ethernet-ports-1.md
│           │   │   │   │   │   ├── digital-twin-ethernet-ports-3.md
│           │   │   │   │   │   └── digital.twin.ethernet.ports.2.md
│           │   │   │   │   └── fabric/
│           │   │   │   │       └── DIGITAL_TWIN-documentation.md
│           │   │   │   ├── intended/
│           │   │   │   │   ├── configs/
│           │   │   │   │   │   ├── digital-twin-adjust-oob-mgmt-1.cfg
│           │   │   │   │   │   ├── digital-twin-adjust-oob-mgmt-2.cfg
│           │   │   │   │   │   ├── digital-twin-adjust-oob-mgmt-3.cfg
│           │   │   │   │   │   ├── digital-twin-adjust-oob-mgmt-4.cfg
│           │   │   │   │   │   ├── digital-twin-default-interfaces-digital-twin-platform.cfg
│           │   │   │   │   │   ├── digital-twin-default-interfaces-original-platform.cfg
│           │   │   │   │   │   ├── digital-twin-enforce-eapi-1.cfg
│           │   │   │   │   │   ├── digital-twin-enforce-eapi-2.cfg
│           │   │   │   │   │   ├── digital-twin-enforce-eapi-3.cfg
│           │   │   │   │   │   ├── digital-twin-enforce-eapi-4.cfg
│           │   │   │   │   │   ├── digital-twin-ethernet-ports-1.cfg
│           │   │   │   │   │   ├── digital-twin-ethernet-ports-3.cfg
│           │   │   │   │   │   └── digital.twin.ethernet.ports.2.cfg
│           │   │   │   │   └── structured_configs/
│           │   │   │   │       ├── digital-twin-adjust-oob-mgmt-1.yml
│           │   │   │   │       ├── digital-twin-adjust-oob-mgmt-2.yml
│           │   │   │   │       ├── digital-twin-adjust-oob-mgmt-3.yml
│           │   │   │   │       ├── digital-twin-adjust-oob-mgmt-4.yml
│           │   │   │   │       ├── digital-twin-default-interfaces-digital-twin-platform.yml
│           │   │   │   │       ├── digital-twin-default-interfaces-original-platform.yml
│           │   │   │   │       ├── digital-twin-enforce-eapi-1.yml
│           │   │   │   │       ├── digital-twin-enforce-eapi-2.yml
│           │   │   │   │       ├── digital-twin-enforce-eapi-3.yml
│           │   │   │   │       ├── digital-twin-enforce-eapi-4.yml
│           │   │   │   │       ├── digital-twin-ethernet-ports-1.yml
│           │   │   │   │       ├── digital-twin-ethernet-ports-3.yml
│           │   │   │   │       └── digital.twin.ethernet.ports.2.yml
│           │   │   │   ├── inventory/
│           │   │   │   │   ├── group_vars/
│           │   │   │   │   │   ├── DIGITAL_TWIN.yml
│           │   │   │   │   │   ├── DIGITAL_TWIN_DEFAULT_INTERFACES.yml
│           │   │   │   │   │   ├── DIGITAL_TWIN_ETHERNET_PORTS.yml
│           │   │   │   │   │   ├── DIGITAL_TWIN_SINGLE_SWITCH_FABRIC.yml
│           │   │   │   │   │   └── all.yml
│           │   │   │   │   ├── host_vars/
│           │   │   │   │   │   ├── all.yml
│           │   │   │   │   │   ├── digital-twin-adjust-oob-mgmt-1.yml
│           │   │   │   │   │   ├── digital-twin-adjust-oob-mgmt-2.yml
│           │   │   │   │   │   ├── digital-twin-adjust-oob-mgmt-3.yml
│           │   │   │   │   │   ├── digital-twin-adjust-oob-mgmt-4.yml
│           │   │   │   │   │   ├── digital-twin-enforce-eapi-1.yml
│           │   │   │   │   │   ├── digital-twin-enforce-eapi-2.yml
│           │   │   │   │   │   ├── digital-twin-enforce-eapi-3.yml
│           │   │   │   │   │   └── digital-twin-enforce-eapi-4.yml
│           │   │   │   │   └── hosts.yml
│           │   │   │   ├── molecule.yml
│           │   │   │   └── verify.yml
│           │   │   ├── eos_cli_config_gen/
│           │   │   │   ├── converge.yml
│           │   │   │   ├── create.yml
│           │   │   │   ├── custom_templates/
│           │   │   │   │   ├── test-template-1.j2
│           │   │   │   │   ├── test-template-2.j2
│           │   │   │   │   └── test-template-3.j2
│           │   │   │   ├── destroy.yml
│           │   │   │   ├── documentation/
│           │   │   │   │   └── devices/
│           │   │   │   │       ├── host-inline-jinja.md
│           │   │   │   │       ├── host1.md
│           │   │   │   │       ├── host2.md
│           │   │   │   │       ├── host3.md
│           │   │   │   │       ├── host4.md
│           │   │   │   │       ├── host5.md
│           │   │   │   │       └── host6.md
│           │   │   │   ├── files/
│           │   │   │   │   └── TCAM_TRAFFIC_POLICY.conf
│           │   │   │   ├── intended/
│           │   │   │   │   └── configs/
│           │   │   │   │       ├── host-inline-jinja.cfg
│           │   │   │   │       ├── host1.cfg
│           │   │   │   │       ├── host2.cfg
│           │   │   │   │       ├── host3.cfg
│           │   │   │   │       ├── host4.cfg
│           │   │   │   │       ├── host5.cfg
│           │   │   │   │       └── host6.cfg
│           │   │   │   ├── inventory/
│           │   │   │   │   ├── group_vars/
│           │   │   │   │   │   └── all.yml
│           │   │   │   │   ├── host_vars/
│           │   │   │   │   │   ├── host-inline-jinja/
│           │   │   │   │   │   │   ├── custom-templates.yml
│           │   │   │   │   │   │   ├── local-users.yml
│           │   │   │   │   │   │   ├── tacacs-servers.yml
│           │   │   │   │   │   │   └── tcam-profile.yml
│           │   │   │   │   │   ├── host1/
│           │   │   │   │   │   │   ├── aaa-accounting.yml
│           │   │   │   │   │   │   ├── aaa-authentication.yml
│           │   │   │   │   │   │   ├── aaa-authorization.yml
│           │   │   │   │   │   │   ├── aaa-root.yml
│           │   │   │   │   │   │   ├── aaa-server-groups.yml
│           │   │   │   │   │   │   ├── address-locking.yml
│           │   │   │   │   │   │   ├── agents.yml
│           │   │   │   │   │   │   ├── aliases.yml
│           │   │   │   │   │   │   ├── application-traffic-recognition.yml
│           │   │   │   │   │   │   ├── arp.yml
│           │   │   │   │   │   │   ├── as-path.yml
│           │   │   │   │   │   │   ├── banners_without_eof.yml
│           │   │   │   │   │   │   ├── bgp-groups.yml
│           │   │   │   │   │   │   ├── boot.yml
│           │   │   │   │   │   │   ├── cfm.yml
│           │   │   │   │   │   │   ├── class-maps.yml
│           │   │   │   │   │   │   ├── clock.yml
│           │   │   │   │   │   │   ├── config-comment.yml
│           │   │   │   │   │   │   ├── cvx.yml
│           │   │   │   │   │   │   ├── daemon-terminattr.yml
│           │   │   │   │   │   │   ├── daemons.yml
│           │   │   │   │   │   │   ├── dhcp-relay.yml
│           │   │   │   │   │   │   ├── dhcp-servers.yml
│           │   │   │   │   │   │   ├── dns-domain.yml
│           │   │   │   │   │   │   ├── domain-list.yml
│           │   │   │   │   │   │   ├── dot1x.yml
│           │   │   │   │   │   │   ├── dps-interfaces.yml
│           │   │   │   │   │   │   ├── dynamic-prefix-lists.yml
│           │   │   │   │   │   │   ├── enable-password.yml
│           │   │   │   │   │   │   ├── eos-cli-config-gen-configuration.yml
│           │   │   │   │   │   │   ├── eos-cli-config-gen-documentation.yml
│           │   │   │   │   │   │   ├── eos-cli.yml
│           │   │   │   │   │   │   ├── eos-config-future.yml
│           │   │   │   │   │   │   ├── errdisable.yml
│           │   │   │   │   │   │   ├── ethernet-interfaces.yml
│           │   │   │   │   │   │   ├── event-handlers.yml
│           │   │   │   │   │   │   ├── event-monitor.yml
│           │   │   │   │   │   │   ├── flow-tracking.yml
│           │   │   │   │   │   │   ├── hardware-counter.yml
│           │   │   │   │   │   │   ├── hardware.yml
│           │   │   │   │   │   │   ├── hostname.yml
│           │   │   │   │   │   │   ├── interface-defaults.yml
│           │   │   │   │   │   │   ├── interface-groups.yml
│           │   │   │   │   │   │   ├── interface-profiles.yml
│           │   │   │   │   │   │   ├── ip-access-lists.yml
│           │   │   │   │   │   │   ├── ip-community-lists.yml
│           │   │   │   │   │   │   ├── ip-dhcp-relay.yml
│           │   │   │   │   │   │   ├── ip-dhcp-snooping.yml
│           │   │   │   │   │   │   ├── ip-domain-lookup.yml
│           │   │   │   │   │   │   ├── ip-extended-community-lists-regexp.yml
│           │   │   │   │   │   │   ├── ip-extended-community-lists.yml
│           │   │   │   │   │   │   ├── ip-ftp-client-source-interfaces.yml
│           │   │   │   │   │   │   ├── ip-hardware.yml
│           │   │   │   │   │   │   ├── ip-hosts.yml
│           │   │   │   │   │   │   ├── ip-http-client.yml
│           │   │   │   │   │   │   ├── ip-igmp-snooping.yml
│           │   │   │   │   │   │   ├── ip-large-community-lists.yml
│           │   │   │   │   │   │   ├── ip-name-server-groups.yml
│           │   │   │   │   │   │   ├── ip-name-server.yml
│           │   │   │   │   │   │   ├── ip-nat.yml
│           │   │   │   │   │   │   ├── ip-ospf-router-id-output-format-hostnames.yml
│           │   │   │   │   │   │   ├── ip-radius-source-interface.yml
│           │   │   │   │   │   │   ├── ip-routing-ipv6-interfaces.yml
│           │   │   │   │   │   │   ├── ip-routing.yml
│           │   │   │   │   │   │   ├── ip-security.yml
│           │   │   │   │   │   │   ├── ip-ssh-client.yml
│           │   │   │   │   │   │   ├── ip-tacacs-source-interface.yml
│           │   │   │   │   │   │   ├── ip-telnet-client-source-interfaces.yml
│           │   │   │   │   │   │   ├── ip-tftp-client-source-interfaces.yml
│           │   │   │   │   │   │   ├── ip-virtual-router-mac-address-advertisement-interval.yml
│           │   │   │   │   │   │   ├── ip-virtual-router-mac-address-mlag-peer.yml
│           │   │   │   │   │   │   ├── ip-virtual-router-mac-address.yml
│           │   │   │   │   │   │   ├── ipv6-access-lists.yml
│           │   │   │   │   │   │   ├── ipv6-dhcp-relay.yml
│           │   │   │   │   │   │   ├── ipv6-hardware.yml
│           │   │   │   │   │   │   ├── ipv6-neighbors.yml
│           │   │   │   │   │   │   ├── ipv6-prefix-lists.yml
│           │   │   │   │   │   │   ├── ipv6-router-ospf.yml
│           │   │   │   │   │   │   ├── ipv6-standard-acl.yml
│           │   │   │   │   │   │   ├── ipv6-static-routes.yml
│           │   │   │   │   │   │   ├── ipv6-unicast-routing.yml
│           │   │   │   │   │   │   ├── kernel.yml
│           │   │   │   │   │   │   ├── l2-protocol-forwarding.yml
│           │   │   │   │   │   │   ├── lacp.yml
│           │   │   │   │   │   │   ├── link-tracking-groups.yml
│           │   │   │   │   │   │   ├── lldp.yml
│           │   │   │   │   │   │   ├── load-balance.yml
│           │   │   │   │   │   │   ├── load-interval.yml
│           │   │   │   │   │   │   ├── local-users.yml
│           │   │   │   │   │   │   ├── logging.yml
│           │   │   │   │   │   │   ├── loopbacks-interfaces.yml
│           │   │   │   │   │   │   ├── mac-access-lists.yml
│           │   │   │   │   │   │   ├── mac-address-table.yml
│           │   │   │   │   │   │   ├── mac-security-eth-po-entropy.yml
│           │   │   │   │   │   │   ├── maintenance.yml
│           │   │   │   │   │   │   ├── management-accounts.yml
│           │   │   │   │   │   │   ├── management-api-gnmi.yml
│           │   │   │   │   │   │   ├── management-api-http.yml
│           │   │   │   │   │   │   ├── management-api-models.yml
│           │   │   │   │   │   │   ├── management-console.yml
│           │   │   │   │   │   │   ├── management-cvx.yml
│           │   │   │   │   │   │   ├── management-defaults.yml
│           │   │   │   │   │   │   ├── management-interfaces.yml
│           │   │   │   │   │   │   ├── management-security.yml
│           │   │   │   │   │   │   ├── management-ssh.yml
│           │   │   │   │   │   │   ├── management-tech-support.yml
│           │   │   │   │   │   │   ├── match-lists.yml
│           │   │   │   │   │   │   ├── mcs-client.yml
│           │   │   │   │   │   │   ├── mlag-configuration.yml
│           │   │   │   │   │   │   ├── monitor-connectivity.yml
│           │   │   │   │   │   │   ├── monitor-layer1.yml
│           │   │   │   │   │   │   ├── monitor-link-flap-policy.yml
│           │   │   │   │   │   │   ├── monitor-loop-protection.yml
│           │   │   │   │   │   │   ├── monitor-server-radius.yml
│           │   │   │   │   │   │   ├── monitor-session-default-encapsulation-gre.yml
│           │   │   │   │   │   │   ├── monitor-sessions.yml
│           │   │   │   │   │   │   ├── monitor-telemetry-influx.yml
│           │   │   │   │   │   │   ├── monitor-telemetry-postcard-policy.yml
│           │   │   │   │   │   │   ├── monitor-twamp.yml
│           │   │   │   │   │   │   ├── mpls.yml
│           │   │   │   │   │   │   ├── none_configuration.yml
│           │   │   │   │   │   │   ├── ntp.yml
│           │   │   │   │   │   │   ├── object-tracking.yml
│           │   │   │   │   │   │   ├── patch-panel.yml
│           │   │   │   │   │   │   ├── peer-filters.yml
│           │   │   │   │   │   │   ├── platform.yml
│           │   │   │   │   │   │   ├── poe.yml
│           │   │   │   │   │   │   ├── policy-maps.yml
│           │   │   │   │   │   │   ├── port-channel-interfaces.yml
│           │   │   │   │   │   │   ├── port-channel.yml
│           │   │   │   │   │   │   ├── prefix-lists.yml
│           │   │   │   │   │   │   ├── priority-flow-control.yml
│           │   │   │   │   │   │   ├── prompt.yml
│           │   │   │   │   │   │   ├── ptp.yml
│           │   │   │   │   │   │   ├── qos-profiles.yml
│           │   │   │   │   │   │   ├── qos.yml
│           │   │   │   │   │   │   ├── queue-monitor-length.yml
│           │   │   │   │   │   │   ├── queue-monitor-streaming.yml
│           │   │   │   │   │   │   ├── radius-proxy.yml
│           │   │   │   │   │   │   ├── radius-server.yml
│           │   │   │   │   │   │   ├── redundancy.yml
│           │   │   │   │   │   │   ├── roles.yml
│           │   │   │   │   │   │   ├── route-maps.yml
│           │   │   │   │   │   │   ├── router-adaptive-virtual-topology.yml
│           │   │   │   │   │   │   ├── router-bfd.yml
│           │   │   │   │   │   │   ├── router-bgp.yml
│           │   │   │   │   │   │   ├── router-general.yml
│           │   │   │   │   │   │   ├── router-igmp.yml
│           │   │   │   │   │   │   ├── router-internet-exit.yml
│           │   │   │   │   │   │   ├── router-isis.yml
│           │   │   │   │   │   │   ├── router-l2-vpn.yml
│           │   │   │   │   │   │   ├── router-msdp.yml
│           │   │   │   │   │   │   ├── router-multicast.yml
│           │   │   │   │   │   │   ├── router-ospf.yml
│           │   │   │   │   │   │   ├── router-path-selection.yml
│           │   │   │   │   │   │   ├── router-pim-sparse-mode.yml
│           │   │   │   │   │   │   ├── router-rip.yml
│           │   │   │   │   │   │   ├── router-segment-security.yml
│           │   │   │   │   │   │   ├── router-service-insertion.yml
│           │   │   │   │   │   │   ├── router-traffic-engineering.yml
│           │   │   │   │   │   │   ├── serial_number.yml
│           │   │   │   │   │   │   ├── service-routing-configuration-bgp.yml
│           │   │   │   │   │   │   ├── service-routing-protocols-model.yml
│           │   │   │   │   │   │   ├── sflow.yml
│           │   │   │   │   │   │   ├── snmp-server.yml
│           │   │   │   │   │   │   ├── spanning-tree.yml
│           │   │   │   │   │   │   ├── standard-acl.yml
│           │   │   │   │   │   │   ├── static-routes.yml
│           │   │   │   │   │   │   ├── stun.yml
│           │   │   │   │   │   │   ├── switchport-default.yml
│           │   │   │   │   │   │   ├── switchport-port-security.yml
│           │   │   │   │   │   │   ├── sync-e.yml
│           │   │   │   │   │   │   ├── system.yml
│           │   │   │   │   │   │   ├── tacacs-servers.yml
│           │   │   │   │   │   │   ├── tap-aggregation.yml
│           │   │   │   │   │   │   ├── tcam-profile.yml
│           │   │   │   │   │   │   ├── terminal.yml
│           │   │   │   │   │   │   ├── traffic-policies.yml
│           │   │   │   │   │   │   ├── transceiver.yml
│           │   │   │   │   │   │   ├── transceiver_qsfp_default_mode_4x10_false.yml
│           │   │   │   │   │   │   ├── tunnel-interfaces.yml
│           │   │   │   │   │   │   ├── unsupported-transceiver.yml
│           │   │   │   │   │   │   ├── virtual-source-nat.yml
│           │   │   │   │   │   │   ├── vlan-interfaces.yml
│           │   │   │   │   │   │   ├── vlan-internal-order.yml
│           │   │   │   │   │   │   ├── vlans.yml
│           │   │   │   │   │   │   ├── vmtracer-sessions.yml
│           │   │   │   │   │   │   ├── vrf-instances.yml
│           │   │   │   │   │   │   └── vxlan-interface.yml
│           │   │   │   │   │   ├── host2/
│           │   │   │   │   │   │   ├── aaa-accounting.yml
│           │   │   │   │   │   │   ├── aaa-authentication.yml
│           │   │   │   │   │   │   ├── aaa-authorization.yml
│           │   │   │   │   │   │   ├── application-traffic-recognition.yml
│           │   │   │   │   │   │   ├── arp.yml
│           │   │   │   │   │   │   ├── as-path.yml
│           │   │   │   │   │   │   ├── banners.yml
│           │   │   │   │   │   │   ├── boot.yml
│           │   │   │   │   │   │   ├── cvx.yml
│           │   │   │   │   │   │   ├── daemon-terminattr.yml
│           │   │   │   │   │   │   ├── dhcp-relay.yml
│           │   │   │   │   │   │   ├── dot1x.yml
│           │   │   │   │   │   │   ├── dps-interfaces.yml
│           │   │   │   │   │   │   ├── enable-password.yml
│           │   │   │   │   │   │   ├── errdisable.yml
│           │   │   │   │   │   │   ├── flow-tracking.yml
│           │   │   │   │   │   │   ├── interface-defaults.yml
│           │   │   │   │   │   │   ├── ip-dhcp-relay.yml
│           │   │   │   │   │   │   ├── ip-dhcp-snooping.yml
│           │   │   │   │   │   │   ├── ip-icmp-redirect.yml
│           │   │   │   │   │   │   ├── ip-igmp-snooping.yml
│           │   │   │   │   │   │   ├── ip-nat.yml
│           │   │   │   │   │   │   ├── ip-radius-source-interface.yml
│           │   │   │   │   │   │   ├── ip-routing.yml
│           │   │   │   │   │   │   ├── ip-tacacs-source-interface.yml
│           │   │   │   │   │   │   ├── ipv6-dhcp-relay.yml
│           │   │   │   │   │   │   ├── ipv6-icmp-redirect.yml
│           │   │   │   │   │   │   ├── lacp.yml
│           │   │   │   │   │   │   ├── lldp.yml
│           │   │   │   │   │   │   ├── load-balance.yml
│           │   │   │   │   │   │   ├── logging.yml
│           │   │   │   │   │   │   ├── mac-address-table.yml
│           │   │   │   │   │   │   ├── mac-security.yml
│           │   │   │   │   │   │   ├── management-api-gnmi.yml
│           │   │   │   │   │   │   ├── management-api-http.yml
│           │   │   │   │   │   │   ├── management-cvx.yml
│           │   │   │   │   │   │   ├── management-security.yml
│           │   │   │   │   │   │   ├── management-ssh.yml
│           │   │   │   │   │   │   ├── mcs-client.yml
│           │   │   │   │   │   │   ├── monitor-connectivity.yml
│           │   │   │   │   │   │   ├── monitor-layer1.yml
│           │   │   │   │   │   │   ├── monitor-loop-protection.yml
│           │   │   │   │   │   │   ├── monitor-server-radius.yml
│           │   │   │   │   │   │   ├── monitor-telemetry-postcard-policy.yml
│           │   │   │   │   │   │   ├── mpls.yml
│           │   │   │   │   │   │   ├── ntp.yml
│           │   │   │   │   │   │   ├── platform.yml
│           │   │   │   │   │   │   ├── policy-maps-pbr.yml
│           │   │   │   │   │   │   ├── priority-flow-control.yml
│           │   │   │   │   │   │   ├── prompt.yml
│           │   │   │   │   │   │   ├── ptp.yml
│           │   │   │   │   │   │   ├── qos.yml
│           │   │   │   │   │   │   ├── queue-monitor-length-notifying.yml
│           │   │   │   │   │   │   ├── queue-monitor-streaming.yml
│           │   │   │   │   │   │   ├── radius-server.yml
│           │   │   │   │   │   │   ├── router-adaptive-virtual-topology.yml
│           │   │   │   │   │   │   ├── router-bfd.yml
│           │   │   │   │   │   │   ├── router-bgp.yml
│           │   │   │   │   │   │   ├── router-isis.yml
│           │   │   │   │   │   │   ├── router-l2-vpn.yml
│           │   │   │   │   │   │   ├── router-multicast.yml
│           │   │   │   │   │   │   ├── router-path-selection.yml
│           │   │   │   │   │   │   ├── router-pim-sparse-mode.yml
│           │   │   │   │   │   │   ├── service-routing-configuration-bgp.yml
│           │   │   │   │   │   │   ├── service-routing-protocols-model.yml
│           │   │   │   │   │   │   ├── sflow.yml
│           │   │   │   │   │   │   ├── snmp-server.yml
│           │   │   │   │   │   │   ├── spanning-tree.yml
│           │   │   │   │   │   │   ├── stun.yml
│           │   │   │   │   │   │   ├── switchport-default.yml
│           │   │   │   │   │   │   ├── switchport-port-security.yml
│           │   │   │   │   │   │   ├── tacacs-servers.yml
│           │   │   │   │   │   │   ├── tap-aggregation.yml
│           │   │   │   │   │   │   ├── tcam_profile.yml
│           │   │   │   │   │   │   ├── traffic-policies.yml
│           │   │   │   │   │   │   ├── transceiver.yml
│           │   │   │   │   │   │   └── vxlan-interface.yml
│           │   │   │   │   │   ├── host3/
│           │   │   │   │   │   │   ├── aaa-accounting.yml
│           │   │   │   │   │   │   ├── cvx.yml
│           │   │   │   │   │   │   ├── daemon-terminattr.yml
│           │   │   │   │   │   │   ├── eos-cli-config-gen-documentation.yml
│           │   │   │   │   │   │   ├── errdisable.yml
│           │   │   │   │   │   │   ├── ipv6-dhcp-relay.yml
│           │   │   │   │   │   │   ├── logging.yml
│           │   │   │   │   │   │   ├── management-ssh.yml
│           │   │   │   │   │   │   ├── mcs-client.yml
│           │   │   │   │   │   │   ├── mpls.yml
│           │   │   │   │   │   │   ├── ntp.yml
│           │   │   │   │   │   │   ├── ptp.yml
│           │   │   │   │   │   │   ├── router-bgp.yml
│           │   │   │   │   │   │   ├── router-isis.yml
│           │   │   │   │   │   │   ├── router-multicast.yml
│           │   │   │   │   │   │   ├── spanning-tree.yml
│           │   │   │   │   │   │   └── traffic-policies.yml
│           │   │   │   │   │   ├── host4/
│           │   │   │   │   │   │   ├── daemon-terminattr.yml
│           │   │   │   │   │   │   ├── router-bgp.yml
│           │   │   │   │   │   │   ├── router-isis.yml
│           │   │   │   │   │   │   └── router-multicast.yml
│           │   │   │   │   │   ├── host5/
│           │   │   │   │   │   │   ├── daemon-terminattr.yml
│           │   │   │   │   │   │   └── router-multicast.yml
│           │   │   │   │   │   └── host6/
│           │   │   │   │   │       ├── eos-cli-config-gen-configuration.yml
│           │   │   │   │   │       ├── eos-cli-config-gen-documentation.yml
│           │   │   │   │   │       ├── eos-config-future.yml
│           │   │   │   │   │       ├── snmp-server.yml
│           │   │   │   │   │       └── vrf-instances.yml
│           │   │   │   │   └── hosts.yml
│           │   │   │   └── molecule.yml
│           │   │   ├── eos_cli_config_gen_deprecated_vars/
│           │   │   │   ├── converge.yml
│           │   │   │   ├── create.yml
│           │   │   │   ├── destroy.yml
│           │   │   │   ├── documentation/
│           │   │   │   │   └── devices/
│           │   │   │   │       └── host1.md
│           │   │   │   ├── intended/
│           │   │   │   │   └── configs/
│           │   │   │   │       └── host1.cfg
│           │   │   │   ├── inventory/
│           │   │   │   │   ├── group_vars/
│           │   │   │   │   │   └── all.yml
│           │   │   │   │   ├── host_vars/
│           │   │   │   │   │   ├── README.txt
│           │   │   │   │   │   └── host1/
│           │   │   │   │   │       ├── access-lists.yml
│           │   │   │   │   │       ├── ethernet-interface-ipv6-nd.yml
│           │   │   │   │   │       ├── ethernet-interfaces.yml
│           │   │   │   │   │       ├── ip-access-lists.yml
│           │   │   │   │   │       ├── ip-name-server-groups.yml
│           │   │   │   │   │       ├── ip-radius-source-interface.yml
│           │   │   │   │   │       ├── ip-tacacs-source-interface.yml
│           │   │   │   │   │       ├── ipv6-access-lists.yml
│           │   │   │   │   │       ├── loopback-interfaces.yml
│           │   │   │   │   │       ├── management-interfaces.yml
│           │   │   │   │   │       ├── port-channel-interfaces-ipv6-nd.yml
│           │   │   │   │   │       ├── port-channel-interfaces.yml
│           │   │   │   │   │       ├── standard-acls.yml
│           │   │   │   │   │       ├── tunnel-interfaces.yml
│           │   │   │   │   │       └── vlan-interfaces.yml
│           │   │   │   │   └── hosts.yml
│           │   │   │   └── molecule.yml
│           │   │   ├── eos_cli_config_gen_negative_unit_tests/
│           │   │   │   ├── converge.yml
│           │   │   │   ├── create.yml
│           │   │   │   ├── destroy.yml
│           │   │   │   ├── inventory/
│           │   │   │   │   ├── group_vars/
│           │   │   │   │   │   ├── EOS_CLI_CONFIG_GEN_NEGATIVE_TESTS.yml
│           │   │   │   │   │   └── all.yml
│           │   │   │   │   ├── host_vars/
│           │   │   │   │   │   ├── conflicting-deprecated-and-new-keys.yml
│           │   │   │   │   │   ├── router-bfd-dangerous-interval-false.yml
│           │   │   │   │   │   └── router-bfd-dangerous-interval-not-set.yml
│           │   │   │   │   └── hosts.yml
│           │   │   │   └── molecule.yml
│           │   │   ├── eos_designs-l2ls/
│           │   │   │   ├── converge.yml
│           │   │   │   ├── create.yml
│           │   │   │   ├── destroy.yml
│           │   │   │   ├── documentation/
│           │   │   │   │   ├── devices/
│           │   │   │   │   │   ├── BGP-LEAF1.md
│           │   │   │   │   │   ├── BGP-LEAF2.md
│           │   │   │   │   │   ├── BGP-LEAF3.md
│           │   │   │   │   │   ├── BGP-SPINE1.md
│           │   │   │   │   │   ├── BGP-SPINE2.md
│           │   │   │   │   │   ├── ISIS-LEAF1.md
│           │   │   │   │   │   ├── ISIS-SPINE1.md
│           │   │   │   │   │   ├── L2ONLY-LEAF1.md
│           │   │   │   │   │   ├── L2ONLY-LEAF2.md
│           │   │   │   │   │   ├── L2ONLY-SPINE1.md
│           │   │   │   │   │   ├── L2ONLY-SPINE2.md
│           │   │   │   │   │   ├── OSPF-LEAF1.md
│           │   │   │   │   │   ├── OSPF-LEAF2.md
│           │   │   │   │   │   ├── OSPF-SPINE1.md
│           │   │   │   │   │   └── OSPF-SPINE2.md
│           │   │   │   │   └── fabric/
│           │   │   │   │       ├── L2LS-documentation.md
│           │   │   │   │       ├── L2LS-p2p-links.csv
│           │   │   │   │       └── L2LS-topology.csv
│           │   │   │   ├── intended/
│           │   │   │   │   ├── configs/
│           │   │   │   │   │   ├── BGP-LEAF1.cfg
│           │   │   │   │   │   ├── BGP-LEAF2.cfg
│           │   │   │   │   │   ├── BGP-LEAF3.cfg
│           │   │   │   │   │   ├── BGP-SPINE1.cfg
│           │   │   │   │   │   ├── BGP-SPINE2.cfg
│           │   │   │   │   │   ├── ISIS-LEAF1.cfg
│           │   │   │   │   │   ├── ISIS-SPINE1.cfg
│           │   │   │   │   │   ├── L2ONLY-LEAF1.cfg
│           │   │   │   │   │   ├── L2ONLY-LEAF2.cfg
│           │   │   │   │   │   ├── L2ONLY-SPINE1.cfg
│           │   │   │   │   │   ├── L2ONLY-SPINE2.cfg
│           │   │   │   │   │   ├── OSPF-LEAF1.cfg
│           │   │   │   │   │   ├── OSPF-LEAF2.cfg
│           │   │   │   │   │   ├── OSPF-SPINE1.cfg
│           │   │   │   │   │   └── OSPF-SPINE2.cfg
│           │   │   │   │   └── structured_configs/
│           │   │   │   │       ├── BGP-LEAF1.yml
│           │   │   │   │       ├── BGP-LEAF2.yml
│           │   │   │   │       ├── BGP-LEAF3.yml
│           │   │   │   │       ├── BGP-SPINE1.yml
│           │   │   │   │       ├── BGP-SPINE2.yml
│           │   │   │   │       ├── ISIS-LEAF1.yml
│           │   │   │   │       ├── ISIS-SPINE1.yml
│           │   │   │   │       ├── L2ONLY-LEAF1.yml
│           │   │   │   │       ├── L2ONLY-LEAF2.yml
│           │   │   │   │       ├── L2ONLY-SPINE1.yml
│           │   │   │   │       ├── L2ONLY-SPINE2.yml
│           │   │   │   │       ├── OSPF-LEAF1.yml
│           │   │   │   │       ├── OSPF-LEAF2.yml
│           │   │   │   │       ├── OSPF-SPINE1.yml
│           │   │   │   │       └── OSPF-SPINE2.yml
│           │   │   │   ├── inventory/
│           │   │   │   │   ├── group_vars/
│           │   │   │   │   │   ├── BGP_LEAFS.yml
│           │   │   │   │   │   ├── BGP_SPINES.yml
│           │   │   │   │   │   ├── ISIS_LEAFS.yml
│           │   │   │   │   │   ├── ISIS_SPINES.yml
│           │   │   │   │   │   ├── L2LS.yml
│           │   │   │   │   │   ├── L2LS_BGP.yml
│           │   │   │   │   │   ├── L2LS_ISIS.yml
│           │   │   │   │   │   ├── L2LS_L2ONLY.yml
│           │   │   │   │   │   ├── L2LS_OSPF.yml
│           │   │   │   │   │   ├── L2ONLY_LEAFS.yml
│           │   │   │   │   │   ├── L2ONLY_SPINES.yml
│           │   │   │   │   │   ├── OSPF_LEAFS.yml
│           │   │   │   │   │   ├── OSPF_SPINES.yml
│           │   │   │   │   │   └── all.yml
│           │   │   │   │   ├── host_vars/
│           │   │   │   │   │   └── all.yml
│           │   │   │   │   └── hosts.yml
│           │   │   │   ├── molecule.yml
│           │   │   │   └── verify.yml
│           │   │   ├── eos_designs-mpls-isis-sr-ldp/
│           │   │   │   ├── converge.yml
│           │   │   │   ├── create.yml
│           │   │   │   ├── destroy.yml
│           │   │   │   ├── documentation/
│           │   │   │   │   ├── devices/
│           │   │   │   │   │   ├── SITE1-LER1.md
│           │   │   │   │   │   ├── SITE1-LER2.md
│           │   │   │   │   │   ├── SITE1-LSR1.md
│           │   │   │   │   │   ├── SITE1-LSR2.md
│           │   │   │   │   │   ├── SITE1-RR1.md
│           │   │   │   │   │   ├── SITE2-LER1.md
│           │   │   │   │   │   ├── SITE2-LSR1.md
│           │   │   │   │   │   ├── SITE2-LSR2.md
│           │   │   │   │   │   ├── SITE2-RR1.md
│           │   │   │   │   │   ├── SITE3-LER1.md
│           │   │   │   │   │   └── SITE3-RR1.md
│           │   │   │   │   └── fabric/
│           │   │   │   │       ├── MPLS_CORE-documentation.md
│           │   │   │   │       ├── MPLS_CORE-p2p-links.csv
│           │   │   │   │       └── MPLS_CORE-topology.csv
│           │   │   │   ├── intended/
│           │   │   │   │   ├── configs/
│           │   │   │   │   │   ├── SITE1-LER1.cfg
│           │   │   │   │   │   ├── SITE1-LER2.cfg
│           │   │   │   │   │   ├── SITE1-LSR1.cfg
│           │   │   │   │   │   ├── SITE1-LSR2.cfg
│           │   │   │   │   │   ├── SITE1-RR1.cfg
│           │   │   │   │   │   ├── SITE2-LER1.cfg
│           │   │   │   │   │   ├── SITE2-LSR1.cfg
│           │   │   │   │   │   ├── SITE2-LSR2.cfg
│           │   │   │   │   │   ├── SITE2-RR1.cfg
│           │   │   │   │   │   ├── SITE3-LER1.cfg
│           │   │   │   │   │   └── SITE3-RR1.cfg
│           │   │   │   │   └── structured_configs/
│           │   │   │   │       ├── SITE1-LER1.yml
│           │   │   │   │       ├── SITE1-LER2.yml
│           │   │   │   │       ├── SITE1-LSR1.yml
│           │   │   │   │       ├── SITE1-LSR2.yml
│           │   │   │   │       ├── SITE1-RR1.yml
│           │   │   │   │       ├── SITE2-LER1.yml
│           │   │   │   │       ├── SITE2-LSR1.yml
│           │   │   │   │       ├── SITE2-LSR2.yml
│           │   │   │   │       ├── SITE2-RR1.yml
│           │   │   │   │       ├── SITE3-LER1.yml
│           │   │   │   │       └── SITE3-RR1.yml
│           │   │   │   ├── inventory/
│           │   │   │   │   ├── group_vars/
│           │   │   │   │   │   ├── MPLS_CORE.yml
│           │   │   │   │   │   ├── MPLS_TENANTS_NETWORKS.yml
│           │   │   │   │   │   ├── SITE1_CONNECTED_ENDPOINTS.yml
│           │   │   │   │   │   ├── SITE2_CONNECTED_ENDPOINTS.yml
│           │   │   │   │   │   ├── SITE2_P_ROUTERS.yml
│           │   │   │   │   │   └── all.yml
│           │   │   │   │   ├── host_vars/
│           │   │   │   │   │   └── SITE1-LER2.yml
│           │   │   │   │   └── hosts.yml
│           │   │   │   ├── molecule.yml
│           │   │   │   └── verify.yml
│           │   │   ├── eos_designs-twodc-5stage-clos/
│           │   │   │   ├── converge.yml
│           │   │   │   ├── create.yml
│           │   │   │   ├── custom_templates/
│           │   │   │   │   └── ip_addressing/
│           │   │   │   │       ├── avd-v2-spine-p2p-uplinks-ip.j2
│           │   │   │   │       └── avd-v2-spine-p2p-uplinks-peer-ip.j2
│           │   │   │   ├── destroy.yml
│           │   │   │   ├── digital_twin/
│           │   │   │   │   ├── documentation/
│           │   │   │   │   │   ├── devices/
│           │   │   │   │   │   │   ├── DC1-POD1-L2LEAF1A.md
│           │   │   │   │   │   │   ├── DC1-POD1-L2LEAF2A.md
│           │   │   │   │   │   │   ├── DC1-POD1-L2LEAF2B.md
│           │   │   │   │   │   │   ├── DC1-POD1-LEAF1A.md
│           │   │   │   │   │   │   ├── DC1-POD1-LEAF1B.md
│           │   │   │   │   │   │   ├── DC1-POD1-LEAF2B.md
│           │   │   │   │   │   │   ├── DC1-POD1-SPINE1.md
│           │   │   │   │   │   │   ├── DC1-POD1-SPINE2.md
│           │   │   │   │   │   │   ├── DC1-POD2-LEAF1A.md
│           │   │   │   │   │   │   ├── DC1-POD2-SPINE1.md
│           │   │   │   │   │   │   ├── DC1-POD2-SPINE2.md
│           │   │   │   │   │   │   ├── DC1-RS1.md
│           │   │   │   │   │   │   ├── DC1-RS2.md
│           │   │   │   │   │   │   ├── DC1-SUPER-SPINE1.md
│           │   │   │   │   │   │   ├── DC1-SUPER-SPINE2.md
│           │   │   │   │   │   │   ├── DC1.POD1.LEAF2A.md
│           │   │   │   │   │   │   ├── DC2-POD1-L2LEAF1A.md
│           │   │   │   │   │   │   ├── DC2-POD1-L2LEAF2A.md
│           │   │   │   │   │   │   ├── DC2-POD1-LEAF1A.md
│           │   │   │   │   │   │   ├── DC2-POD1-LEAF2A.md
│           │   │   │   │   │   │   ├── DC2-POD1-SPINE1.md
│           │   │   │   │   │   │   ├── DC2-POD1-SPINE2.md
│           │   │   │   │   │   │   ├── DC2-RS1.md
│           │   │   │   │   │   │   ├── DC2-RS2.md
│           │   │   │   │   │   │   ├── DC2-SUPER-SPINE1.md
│           │   │   │   │   │   │   └── DC2-SUPER-SPINE2.md
│           │   │   │   │   │   └── fabric/
│           │   │   │   │   │       ├── TWODC_5STAGE_CLOS-documentation.md
│           │   │   │   │   │       ├── TWODC_5STAGE_CLOS-p2p-links.csv
│           │   │   │   │   │       ├── TWODC_5STAGE_CLOS-topology.csv
│           │   │   │   │   │       └── TWODC_5STAGE_CLOS-topology.yml
│           │   │   │   │   └── intended/
│           │   │   │   │       ├── configs/
│           │   │   │   │       │   ├── DC1-POD1-L2LEAF1A.cfg
│           │   │   │   │       │   ├── DC1-POD1-L2LEAF2A.cfg
│           │   │   │   │       │   ├── DC1-POD1-L2LEAF2B.cfg
│           │   │   │   │       │   ├── DC1-POD1-LEAF1A.cfg
│           │   │   │   │       │   ├── DC1-POD1-LEAF1B.cfg
│           │   │   │   │       │   ├── DC1-POD1-LEAF2B.cfg
│           │   │   │   │       │   ├── DC1-POD1-SPINE1.cfg
│           │   │   │   │       │   ├── DC1-POD1-SPINE2.cfg
│           │   │   │   │       │   ├── DC1-POD2-LEAF1A.cfg
│           │   │   │   │       │   ├── DC1-POD2-SPINE1.cfg
│           │   │   │   │       │   ├── DC1-POD2-SPINE2.cfg
│           │   │   │   │       │   ├── DC1-RS1.cfg
│           │   │   │   │       │   ├── DC1-RS2.cfg
│           │   │   │   │       │   ├── DC1-SUPER-SPINE1.cfg
│           │   │   │   │       │   ├── DC1-SUPER-SPINE2.cfg
│           │   │   │   │       │   ├── DC1.POD1.LEAF2A.cfg
│           │   │   │   │       │   ├── DC2-POD1-L2LEAF1A.cfg
│           │   │   │   │       │   ├── DC2-POD1-L2LEAF2A.cfg
│           │   │   │   │       │   ├── DC2-POD1-LEAF1A.cfg
│           │   │   │   │       │   ├── DC2-POD1-LEAF2A.cfg
│           │   │   │   │       │   ├── DC2-POD1-SPINE1.cfg
│           │   │   │   │       │   ├── DC2-POD1-SPINE2.cfg
│           │   │   │   │       │   ├── DC2-RS1.cfg
│           │   │   │   │       │   ├── DC2-RS2.cfg
│           │   │   │   │       │   ├── DC2-SUPER-SPINE1.cfg
│           │   │   │   │       │   └── DC2-SUPER-SPINE2.cfg
│           │   │   │   │       └── structured_configs/
│           │   │   │   │           ├── DC1-POD1-L2LEAF1A.yml
│           │   │   │   │           ├── DC1-POD1-L2LEAF2A.yml
│           │   │   │   │           ├── DC1-POD1-L2LEAF2B.yml
│           │   │   │   │           ├── DC1-POD1-LEAF1A.yml
│           │   │   │   │           ├── DC1-POD1-LEAF1B.yml
│           │   │   │   │           ├── DC1-POD1-LEAF2B.yml
│           │   │   │   │           ├── DC1-POD1-SPINE1.yml
│           │   │   │   │           ├── DC1-POD1-SPINE2.yml
│           │   │   │   │           ├── DC1-POD2-LEAF1A.yml
│           │   │   │   │           ├── DC1-POD2-SPINE1.yml
│           │   │   │   │           ├── DC1-POD2-SPINE2.yml
│           │   │   │   │           ├── DC1-RS1.yml
│           │   │   │   │           ├── DC1-RS2.yml
│           │   │   │   │           ├── DC1-SUPER-SPINE1.yml
│           │   │   │   │           ├── DC1-SUPER-SPINE2.yml
│           │   │   │   │           ├── DC1.POD1.LEAF2A.yml
│           │   │   │   │           ├── DC2-POD1-L2LEAF1A.yml
│           │   │   │   │           ├── DC2-POD1-L2LEAF2A.yml
│           │   │   │   │           ├── DC2-POD1-LEAF1A.yml
│           │   │   │   │           ├── DC2-POD1-LEAF2A.yml
│           │   │   │   │           ├── DC2-POD1-SPINE1.yml
│           │   │   │   │           ├── DC2-POD1-SPINE2.yml
│           │   │   │   │           ├── DC2-RS1.yml
│           │   │   │   │           ├── DC2-RS2.yml
│           │   │   │   │           ├── DC2-SUPER-SPINE1.yml
│           │   │   │   │           └── DC2-SUPER-SPINE2.yml
│           │   │   │   ├── documentation/
│           │   │   │   │   ├── devices/
│           │   │   │   │   │   ├── DC1-POD1-L2LEAF1A.md
│           │   │   │   │   │   ├── DC1-POD1-L2LEAF2A.md
│           │   │   │   │   │   ├── DC1-POD1-L2LEAF2B.md
│           │   │   │   │   │   ├── DC1-POD1-LEAF1A.md
│           │   │   │   │   │   ├── DC1-POD1-LEAF1B.md
│           │   │   │   │   │   ├── DC1-POD1-LEAF2B.md
│           │   │   │   │   │   ├── DC1-POD1-SPINE1.md
│           │   │   │   │   │   ├── DC1-POD1-SPINE2.md
│           │   │   │   │   │   ├── DC1-POD2-LEAF1A.md
│           │   │   │   │   │   ├── DC1-POD2-SPINE1.md
│           │   │   │   │   │   ├── DC1-POD2-SPINE2.md
│           │   │   │   │   │   ├── DC1-RS1.md
│           │   │   │   │   │   ├── DC1-RS2.md
│           │   │   │   │   │   ├── DC1-SUPER-SPINE1.md
│           │   │   │   │   │   ├── DC1-SUPER-SPINE2.md
│           │   │   │   │   │   ├── DC1.POD1.LEAF2A.md
│           │   │   │   │   │   ├── DC2-POD1-L2LEAF1A.md
│           │   │   │   │   │   ├── DC2-POD1-L2LEAF2A.md
│           │   │   │   │   │   ├── DC2-POD1-LEAF1A.md
│           │   │   │   │   │   ├── DC2-POD1-LEAF2A.md
│           │   │   │   │   │   ├── DC2-POD1-SPINE1.md
│           │   │   │   │   │   ├── DC2-POD1-SPINE2.md
│           │   │   │   │   │   ├── DC2-RS1.md
│           │   │   │   │   │   ├── DC2-RS2.md
│           │   │   │   │   │   ├── DC2-SUPER-SPINE1.md
│           │   │   │   │   │   └── DC2-SUPER-SPINE2.md
│           │   │   │   │   └── fabric/
│           │   │   │   │       ├── TWODC_5STAGE_CLOS-documentation.md
│           │   │   │   │       ├── TWODC_5STAGE_CLOS-p2p-links.csv
│           │   │   │   │       └── TWODC_5STAGE_CLOS-topology.csv
│           │   │   │   ├── intended/
│           │   │   │   │   ├── configs/
│           │   │   │   │   │   ├── DC1-POD1-L2LEAF1A.cfg
│           │   │   │   │   │   ├── DC1-POD1-L2LEAF2A.cfg
│           │   │   │   │   │   ├── DC1-POD1-L2LEAF2B.cfg
│           │   │   │   │   │   ├── DC1-POD1-LEAF1A.cfg
│           │   │   │   │   │   ├── DC1-POD1-LEAF1B.cfg
│           │   │   │   │   │   ├── DC1-POD1-LEAF2B.cfg
│           │   │   │   │   │   ├── DC1-POD1-SPINE1.cfg
│           │   │   │   │   │   ├── DC1-POD1-SPINE2.cfg
│           │   │   │   │   │   ├── DC1-POD2-LEAF1A.cfg
│           │   │   │   │   │   ├── DC1-POD2-SPINE1.cfg
│           │   │   │   │   │   ├── DC1-POD2-SPINE2.cfg
│           │   │   │   │   │   ├── DC1-RS1.cfg
│           │   │   │   │   │   ├── DC1-RS2.cfg
│           │   │   │   │   │   ├── DC1-SUPER-SPINE1.cfg
│           │   │   │   │   │   ├── DC1-SUPER-SPINE2.cfg
│           │   │   │   │   │   ├── DC1.POD1.LEAF2A.cfg
│           │   │   │   │   │   ├── DC2-POD1-L2LEAF1A.cfg
│           │   │   │   │   │   ├── DC2-POD1-L2LEAF2A.cfg
│           │   │   │   │   │   ├── DC2-POD1-LEAF1A.cfg
│           │   │   │   │   │   ├── DC2-POD1-LEAF2A.cfg
│           │   │   │   │   │   ├── DC2-POD1-SPINE1.cfg
│           │   │   │   │   │   ├── DC2-POD1-SPINE2.cfg
│           │   │   │   │   │   ├── DC2-RS1.cfg
│           │   │   │   │   │   ├── DC2-RS2.cfg
│           │   │   │   │   │   ├── DC2-SUPER-SPINE1.cfg
│           │   │   │   │   │   └── DC2-SUPER-SPINE2.cfg
│           │   │   │   │   ├── data/
│           │   │   │   │   │   └── test-ids.yml
│           │   │   │   │   └── structured_configs/
│           │   │   │   │       ├── DC1-POD1-L2LEAF1A.yml
│           │   │   │   │       ├── DC1-POD1-L2LEAF2A.yml
│           │   │   │   │       ├── DC1-POD1-L2LEAF2B.yml
│           │   │   │   │       ├── DC1-POD1-LEAF1A.yml
│           │   │   │   │       ├── DC1-POD1-LEAF1B.yml
│           │   │   │   │       ├── DC1-POD1-LEAF2B.yml
│           │   │   │   │       ├── DC1-POD1-SPINE1.yml
│           │   │   │   │       ├── DC1-POD1-SPINE2.yml
│           │   │   │   │       ├── DC1-POD2-LEAF1A.yml
│           │   │   │   │       ├── DC1-POD2-SPINE1.yml
│           │   │   │   │       ├── DC1-POD2-SPINE2.yml
│           │   │   │   │       ├── DC1-RS1.yml
│           │   │   │   │       ├── DC1-RS2.yml
│           │   │   │   │       ├── DC1-SUPER-SPINE1.yml
│           │   │   │   │       ├── DC1-SUPER-SPINE2.yml
│           │   │   │   │       ├── DC1.POD1.LEAF2A.yml
│           │   │   │   │       ├── DC2-POD1-L2LEAF1A.yml
│           │   │   │   │       ├── DC2-POD1-L2LEAF2A.yml
│           │   │   │   │       ├── DC2-POD1-LEAF1A.yml
│           │   │   │   │       ├── DC2-POD1-LEAF2A.yml
│           │   │   │   │       ├── DC2-POD1-SPINE1.yml
│           │   │   │   │       ├── DC2-POD1-SPINE2.yml
│           │   │   │   │       ├── DC2-RS1.yml
│           │   │   │   │       ├── DC2-RS2.yml
│           │   │   │   │       ├── DC2-SUPER-SPINE1.yml
│           │   │   │   │       └── DC2-SUPER-SPINE2.yml
│           │   │   │   ├── inventory/
│           │   │   │   │   ├── group_vars/
│           │   │   │   │   │   ├── DC1.yml
│           │   │   │   │   │   ├── DC1_POD1.yml
│           │   │   │   │   │   ├── DC1_POD2.yml
│           │   │   │   │   │   ├── DC2.yml
│           │   │   │   │   │   ├── DC2_POD1.yml
│           │   │   │   │   │   ├── SERVERS.yml
│           │   │   │   │   │   ├── TENANTS_NETWORKS.yml
│           │   │   │   │   │   ├── TWODC_5STAGE_CLOS.yml
│           │   │   │   │   │   └── all.yml
│           │   │   │   │   ├── host_vars/
│           │   │   │   │   │   ├── DC1-POD1-LEAF2B.yml
│           │   │   │   │   │   ├── DC1-POD1-SPINE1.yml
│           │   │   │   │   │   ├── DC1-RS1.yml
│           │   │   │   │   │   ├── DC1.POD1.LEAF2A.yml
│           │   │   │   │   │   └── all.yml
│           │   │   │   │   └── hosts.yml
│           │   │   │   ├── molecule.yml
│           │   │   │   └── verify.yml
│           │   │   ├── eos_designs_deprecated_vars/
│           │   │   │   ├── converge.yml
│           │   │   │   ├── create.yml
│           │   │   │   ├── destroy.yml
│           │   │   │   ├── intended/
│           │   │   │   │   ├── configs/
│           │   │   │   │   │   ├── host1.cfg
│           │   │   │   │   │   ├── host2.cfg
│           │   │   │   │   │   └── host_ansible_only.cfg
│           │   │   │   │   └── structured_configs/
│           │   │   │   │       ├── host1.yml
│           │   │   │   │       ├── host2.yml
│           │   │   │   │       └── host_ansible_only.yml
│           │   │   │   ├── inventory/
│           │   │   │   │   ├── group_vars/
│           │   │   │   │   │   └── all.yml
│           │   │   │   │   ├── host_vars/
│           │   │   │   │   │   ├── host1/
│           │   │   │   │   │   │   ├── evpn_l2_multicast_fast_leave.yml
│           │   │   │   │   │   │   ├── igmp_snooping.yml
│           │   │   │   │   │   │   ├── ipv4_acls.yml
│           │   │   │   │   │   │   └── node_type.yml
│           │   │   │   │   │   ├── host2/
│           │   │   │   │   │   │   ├── mgmt.yml
│           │   │   │   │   │   │   └── node_type.yml
│           │   │   │   │   │   └── host_ansible_only/
│           │   │   │   │   │       └── node_type.yml
│           │   │   │   │   └── hosts.yml
│           │   │   │   ├── molecule.yml
│           │   │   │   └── verify.yml
│           │   │   ├── eos_designs_negative_unit_tests/
│           │   │   │   ├── converge.yml
│           │   │   │   ├── create.yml
│           │   │   │   ├── destroy.yml
│           │   │   │   ├── inventory/
│           │   │   │   │   ├── group_vars/
│           │   │   │   │   │   ├── DUPLICATE_IP_ADDRESS_ROUTER_BGP.yml
│           │   │   │   │   │   ├── DUPLICATE_VLANS_MLAG.yml
│           │   │   │   │   │   ├── EOS_DESIGNS_FAILURES.yml
│           │   │   │   │   │   ├── FABRIC_DOWNLINK_INTERFACES_TOO_SMALL.yml
│           │   │   │   │   │   ├── FABRIC_DOWNLINK_POOLS_DUPLICATE.yml
│           │   │   │   │   │   ├── FABRIC_DOWNLINK_POOLS_MISSING.yml
│           │   │   │   │   │   ├── FABRIC_DOWNLINK_POOLS_MISSING_IPV6.yml
│           │   │   │   │   │   ├── FABRIC_ID_STATIC_AND_POOL_MANAGER_COLLISION.yml
│           │   │   │   │   │   ├── FABRIC_INCORRECT_UPLINK_PORT_CHANNEL_ID.yml
│           │   │   │   │   │   ├── FABRIC_INVALID_UPLINK_PORT_CHANNEL_ID_1.yml
│           │   │   │   │   │   ├── FABRIC_INVALID_UPLINK_PORT_CHANNEL_ID_2.yml
│           │   │   │   │   │   ├── FABRIC_INVALID_UPLINK_PORT_CHANNEL_ID_3.yml
│           │   │   │   │   │   ├── FABRIC_IP_ADDRESSING_MLAG_ODD_ID.yml
│           │   │   │   │   │   ├── FABRIC_MISSING_BGP_AS_ON_UPLINK_SWITCH.yml
│           │   │   │   │   │   ├── FABRIC_MISSING_CV_TOPOLOGY_DEFAULT_MLAG_INTERFACEES.yml
│           │   │   │   │   │   ├── FABRIC_MISSING_DOWNLINK_INTERFACES.yml
│           │   │   │   │   │   ├── FABRIC_MISSING_ID_FOR_MLAG.yml
│           │   │   │   │   │   ├── FABRIC_MISSING_ID_FOR_SECONDARY_MLAG.yml
│           │   │   │   │   │   ├── FABRIC_MISSING_ID_UPLINK_SWITCH_INTERFACES.yml
│           │   │   │   │   │   ├── FABRIC_MISSING_IP_ADDRESS_ON_WAN_LAN_HA_UPLINK.yml
│           │   │   │   │   │   ├── FABRIC_MISSING_MLAG_INTERFACES.yml
│           │   │   │   │   │   ├── FABRIC_MISSING_MLAG_PEER_IPV4_POOL.yml
│           │   │   │   │   │   ├── FABRIC_MISSING_MLAG_PEER_IPV6_POOL.yml
│           │   │   │   │   │   ├── FABRIC_MISSING_MLAG_PEER_L3_IPV4_POOL.yml
│           │   │   │   │   │   ├── FABRIC_MISSING_MLAG_PEER_L3_IPV6_POOL.yml
│           │   │   │   │   │   ├── FABRIC_MISSING_UNDERLAY_ROUTER_AND_NETWORK_SERVICES_FOR_UPLINK_TYPE_LAN.yml
│           │   │   │   │   │   ├── FABRIC_MISSING_VTEP_LOOPBACK_IPV6_POOL.yml
│           │   │   │   │   │   ├── FABRIC_MLAG_DUAL_PRIMARY_DHCP_MGMT_IP.yml
│           │   │   │   │   │   ├── FABRIC_MULTIPLE_UPLINK_INTERFACES_FOR_UPLINK_TYPE_LAN.yml
│           │   │   │   │   │   ├── FABRIC_SMALL_BGP_AS_RANGE_ON_UPLINK_SWITCH.yml
│           │   │   │   │   │   ├── FABRIC_UPLINK_TESTS_1.yml
│           │   │   │   │   │   ├── FABRIC_UPLINK_TESTS_2.yml
│           │   │   │   │   │   ├── FABRIC_UPLINK_TESTS_3.yml
│           │   │   │   │   │   ├── INVALID_DUAL_ROUTER_WAN_EVPN_GW.yml
│           │   │   │   │   │   ├── SMALL_BGP_AS_RANGE.yml
│           │   │   │   │   │   ├── VRF_BGP_VTEP_ROUTER_ID.yml
│           │   │   │   │   │   ├── VRF_OSPF_MISSING_PROCESS_ID.yml
│           │   │   │   │   │   ├── VRF_OSPF_VTEP_ROUTER_ID.yml
│           │   │   │   │   │   └── all.yml
│           │   │   │   │   ├── host_vars/
│           │   │   │   │   │   ├── address-locking-missing-dhcp-server-ip-and-locked-address-ipv4-enforcement-disabled.yml
│           │   │   │   │   │   ├── address-locking-missing-dhcp-server-ip-and-locked-address-ipv6-enforcement-disabled.yml
│           │   │   │   │   │   ├── all-wan-ha-interfaces-are-not-uplink-interfaces.yml
│           │   │   │   │   │   ├── conflict-underlay-ospf-with-network-services.yml
│           │   │   │   │   │   ├── connected-endpoints-invalid-access-vlan-ethernet.yml
│           │   │   │   │   │   ├── connected-endpoints-invalid-access-vlan-port-channel.yml
│           │   │   │   │   │   ├── connected-endpoints-mismatched-descriptions.yml
│           │   │   │   │   │   ├── connected-endpoints-missing-profile-lacp-fallback.yml
│           │   │   │   │   │   ├── connected-endpoints-monitor-session-connected-endpoint-acl.yml
│           │   │   │   │   │   ├── connected-endpoints-monitor-session-network-port-acl.yml
│           │   │   │   │   │   ├── connected-endpoints-monitor-sessions-mismatch-direction.yml
│           │   │   │   │   │   ├── connected-endpoints-phone-vlan-mode.yml
│           │   │   │   │   │   ├── connected-endpoints-phone-vlan-vlans.yml
│           │   │   │   │   │   ├── connected-endpoints-short-esi-single-homed.yml
│           │   │   │   │   │   ├── connected-endpoints-wrong-profile-lacp-fallback.yml
│           │   │   │   │   │   ├── core-interfaces-ipv6-only-include-in-underlay-protocol.yml
│           │   │   │   │   │   ├── core-interfaces-missing-id-with-channel-id-algorithm.yml
│           │   │   │   │   │   ├── core-interfaces-p2p-links-as.yml
│           │   │   │   │   │   ├── core-interfaces-p2p-ospf-auth-global-config-missing.yml
│           │   │   │   │   │   ├── dhcp-mgmt-ip-cvx-server-1.yml
│           │   │   │   │   │   ├── dhcp-mgmt-ip-cvx-server-2.yml
│           │   │   │   │   │   ├── dhcp-mgmt-ip-overlay-cvx-servers.yml
│           │   │   │   │   │   ├── digital-twin-act-dhcp-ip-addr.yml
│           │   │   │   │   │   ├── digital-twin-act-missing-ip-addr.yml
│           │   │   │   │   │   ├── digital-twin-act-missing-node-type.yml
│           │   │   │   │   │   ├── dns-settings-missing-inband-mgmt.yml
│           │   │   │   │   │   ├── dns-settings-missing-mgmt-ip.yml
│           │   │   │   │   │   ├── dns-settings-missing-vrf.yml
│           │   │   │   │   │   ├── dot1x-aaa-accounting-radius-groups-not-defined.yml
│           │   │   │   │   │   ├── dot1x-aaa-authentication-radius-groups-not-defined.yml
│           │   │   │   │   │   ├── dot1x-aaa-authentication-radius-servers-not-defined.yml
│           │   │   │   │   │   ├── dot1x-aaa-authorization-dynamic-radius-groups-not-defined.yml
│           │   │   │   │   │   ├── dot1x-connected-endpoints-not-globally-enabled.yml
│           │   │   │   │   │   ├── dot1x-network-ports-not-globally-enabled.yml
│           │   │   │   │   │   ├── duplicate-auto-generated-parent-network-services-point-to-point.yml
│           │   │   │   │   │   ├── duplicate-flow-tracking-hardware-cloudvision-exporter.yml
│           │   │   │   │   │   ├── duplicate-flow-tracking-sampled-cloudvision-exporter.yml
│           │   │   │   │   │   ├── duplicate-interface-l3-edge.yml
│           │   │   │   │   │   ├── duplicate-interfaces-connected-endpoints.yml
│           │   │   │   │   │   ├── duplicate-interfaces-core-interfaces-with-port-channel.yml
│           │   │   │   │   │   ├── duplicate-interfaces-core-interfaces.yml
│           │   │   │   │   │   ├── duplicate-interfaces-network-ports-with-port-channel.yml
│           │   │   │   │   │   ├── duplicate-interfaces-point-to-point-services-1.yml
│           │   │   │   │   │   ├── duplicate-interfaces-point-to-point-services-2.yml
│           │   │   │   │   │   ├── duplicate-interfaces-point-to-point-services-3.yml
│           │   │   │   │   │   ├── duplicate-interfaces-point-to-point-services-4.yml
│           │   │   │   │   │   ├── duplicate-interfaces-underlay.yml
│           │   │   │   │   │   ├── duplicate-ip-address-uplink-switch-router-bgp.yml
│           │   │   │   │   │   ├── duplicate-l3-interfaces-network-services.yml
│           │   │   │   │   │   ├── duplicate-neighbors-l3-edge.yml
│           │   │   │   │   │   ├── duplicate-peer-ip-address-network-services.yml
│           │   │   │   │   │   ├── duplicate-tunnel-interface-internet-exit.yml
│           │   │   │   │   │   ├── duplicate-vlans-l2vlans.yml
│           │   │   │   │   │   ├── duplicate-vlans-svi-id.yml
│           │   │   │   │   │   ├── duplicate-vni-l2vlans-vxlan-interface.yml
│           │   │   │   │   │   ├── duplicate-vni-l3-interfaces-in-vxlan-interface.yml
│           │   │   │   │   │   ├── duplicate-vni-vxlan-interface.yml
│           │   │   │   │   │   ├── duplicate-vrfs-duplicate-svi-name-conflict.yml
│           │   │   │   │   │   ├── duplicate-vrfs-id-conflict.yml
│           │   │   │   │   │   ├── duplicate-vrfs-tenant-igmp-snooping-conflict.yml
│           │   │   │   │   │   ├── duplicate-vrfs-vni-conflict.yml
│           │   │   │   │   │   ├── duplication-checks-across-models.yml
│           │   │   │   │   │   ├── evpn-multicast-missing-underlay-multicast.yml
│           │   │   │   │   │   ├── failure-adapter-ptp-profile-does-not-exist.yml
│           │   │   │   │   │   ├── failure-connected-endpoint-parent-port-profile-does-not-exist.yml
│           │   │   │   │   │   ├── failure-connected-endpoint-port-profile-does-not-exist-in-facts.yml
│           │   │   │   │   │   ├── failure-connected-endpoint-port-profile-does-not-exist.yml
│           │   │   │   │   │   ├── failure-cv-topology-uplink-interfaces.yml
│           │   │   │   │   │   ├── failure-devices-and-node-key-1.yml
│           │   │   │   │   │   ├── failure-devices-and-node-key-2.yml
│           │   │   │   │   │   ├── failure-devices-mlag-group.yml
│           │   │   │   │   │   ├── failure-duplicate-evpn-vlan-bundle-name.yml
│           │   │   │   │   │   ├── failure-evpn-gateway-aa-mh-gw-interdomain-conflict.yml
│           │   │   │   │   │   ├── failure-evpn-gateway-aa-mh-gw-ipvpngw-conflict.yml
│           │   │   │   │   │   ├── failure-evpn-gateway-aa-mh-gw-mlag-conflict.yml
│           │   │   │   │   │   ├── failure-evpn-gateway-aa-mh-gw-platform-conflict.yml
│           │   │   │   │   │   ├── failure-evpn-gateway-l3-rd-rt-rewrite-platform-conflict.yml
│           │   │   │   │   │   ├── failure-l2leaf-l2vlan-igmp-querier-no-router-id.yml
│           │   │   │   │   │   ├── failure-l2leaf-svi-igmp-querier-no-router-id.yml
│           │   │   │   │   │   ├── failure-l2vlan-igmp-snooping-querier-source-address-resolve.yml
│           │   │   │   │   │   ├── failure-l2vlan-parent-profile-does-not-exist.yml
│           │   │   │   │   │   ├── failure-l2vlan-profile-does-not-exist.yml
│           │   │   │   │   │   ├── failure-l3-interface-profile-does-not-exist.yml
│           │   │   │   │   │   ├── failure-missing-evpn-multicast-l3-with-pim.yml
│           │   │   │   │   │   ├── failure-missing-evpn-multicast-peg-rps.yml
│           │   │   │   │   │   ├── failure-missing-evpn-multicast-with-pim.yml
│           │   │   │   │   │   ├── failure-missing-evpn-vlan-bundle-svi.yml
│           │   │   │   │   │   ├── failure-missing-evpn-vlan-bundle.yml
│           │   │   │   │   │   ├── failure-network-port-ptp-profile-does-not-exist.yml
│           │   │   │   │   │   ├── failure-no-local-path-group-in-default-policy.yml
│           │   │   │   │   │   ├── failure-p2p-links-ptp-profile-does-not-exist.yml
│           │   │   │   │   │   ├── failure-port-channel.yml
│           │   │   │   │   │   ├── failure-ptp-profile-does-not-exist.yml
│           │   │   │   │   │   ├── failure-svi-grandparent-profile-does-not-exist.yml
│           │   │   │   │   │   ├── failure-svi-igmp-snooping-querier-source-address-for-diagnostic-loopback.yml
│           │   │   │   │   │   ├── failure-svi-igmp-snooping-querier-source-address-resolve.yml
│           │   │   │   │   │   ├── failure-svi-parent-profile-does-not-exist.yml
│           │   │   │   │   │   ├── flood-multicast-missing-1a.yml
│           │   │   │   │   │   ├── flood-multicast-missing-underlay-multicast-1a.yml
│           │   │   │   │   │   ├── flow-tracking-missing-tracker.yml
│           │   │   │   │   │   ├── id-static-and-pool-manager-invalid.yml
│           │   │   │   │   │   ├── inband-mgmt-missing-id-with-ipv6-subnet.yml
│           │   │   │   │   │   ├── inband-mgmt-missing-id-with-subnet.yml
│           │   │   │   │   │   ├── incorrect-downlink-link-tracking-group.yml
│           │   │   │   │   │   ├── invalid-admin-subfield.yml
│           │   │   │   │   │   ├── invalid-generate-cv-device-tags-data-path.yml
│           │   │   │   │   │   ├── invalid-generate-cv-device-tags.yml
│           │   │   │   │   │   ├── invalid-generate-cv-interface-tags-data-path.yml
│           │   │   │   │   │   ├── invalid-ptp-source-ip-address.yml
│           │   │   │   │   │   ├── invalid-schema-connected-endpoints.yml
│           │   │   │   │   │   ├── invalid-schema.yml
│           │   │   │   │   │   ├── invalid-uplink-type-p2p-vrfs-underlay-router-false.yml
│           │   │   │   │   │   ├── invalid-value-bgp-as-asdot-notation.yml
│           │   │   │   │   │   ├── invalid-value-bgp-as-asplain-notation.yml
│           │   │   │   │   │   ├── ipv4-acl-in-missing-on-l3-port-channel-wan-interface.yml
│           │   │   │   │   │   ├── ipv4-acl-in-missing-on-wan-interface.yml
│           │   │   │   │   │   ├── ipv4-acls-internet-exit-access-lists.yml
│           │   │   │   │   │   ├── ipv4-acls-zscaler-internet-exit-access-lists.yml
│           │   │   │   │   │   ├── ipv4-acls.yml
│           │   │   │   │   │   ├── ipv6-acls-missing-acl.yml
│           │   │   │   │   │   ├── ipv6-acls-missing-entry-destination.yml
│           │   │   │   │   │   ├── ipv6-acls-missing-entry-source.yml
│           │   │   │   │   │   ├── ipv6-acls-missing-interface-ip.yml
│           │   │   │   │   │   ├── isis-system-id-format-missing-node-id.yml
│           │   │   │   │   │   ├── l3-edge-ipv6-only-include-in-underlay-protocol.yml
│           │   │   │   │   │   ├── l3-edge-p2p-ospf-auth-global-disabled.yml
│           │   │   │   │   │   ├── l3-port-channel-no-ip-address-subif.yml
│           │   │   │   │   │   ├── l3-port-channel-sub-interface-with-member-interfaces.yml
│           │   │   │   │   │   ├── l3-port-channel-sub-interface-with-mode.yml
│           │   │   │   │   │   ├── l3-port-channel-without-member-interfaces.yml
│           │   │   │   │   │   ├── management-eapi-vrf-name-use-inband-mgmt-vrf.yml
│           │   │   │   │   │   ├── missing-application-classification-application-profile.yml
│           │   │   │   │   │   ├── missing-application-classification-category.yml
│           │   │   │   │   │   ├── missing-application-classification-port-set.yml
│           │   │   │   │   │   ├── missing-application-classification-prefix-set.yml
│           │   │   │   │   │   ├── missing-avt-id-cv-pathfinder.yml
│           │   │   │   │   │   ├── missing-bgp-as-with-l3-interfaces-bgp-peers.yml
│           │   │   │   │   │   ├── missing-bgp-wan-overlay-peers-listen-range-prefixes.yml
│           │   │   │   │   │   ├── missing-control-plane-virtual-topology-path-groups.yml
│           │   │   │   │   │   ├── missing-cv-pathfinder-internet-exit-policy-configured-under-l3-interface.yml
│           │   │   │   │   │   ├── missing-cv-pathfinder-path-group-with-preferred.yml
│           │   │   │   │   │   ├── missing-cv-pathfinder-region-name-under-cv-pathfinder-regions.yml
│           │   │   │   │   │   ├── missing-cv-pathfinder-region.yml
│           │   │   │   │   │   ├── missing-cv-pathfinder-regions.yml
│           │   │   │   │   │   ├── missing-cv-pathfinder-site-name-under-cv-pathfinder-regions-sites.yml
│           │   │   │   │   │   ├── missing-cv-pathfinder-site-under-cv-pathfinder-global-sites.yml
│           │   │   │   │   │   ├── missing-cv-pathfinder-site.yml
│           │   │   │   │   │   ├── missing-cv-settings-for-flow-tracking-cloudvision-vrf.yml
│           │   │   │   │   │   ├── missing-cv-settings-for-sflow-export-cloudvision-vrf.yml
│           │   │   │   │   │   ├── missing-cv-topology-default-uplink-interfaces.yml
│           │   │   │   │   │   ├── missing-cv-topology-levels-type.yml
│           │   │   │   │   │   ├── missing-cv-topology-levels.yml
│           │   │   │   │   │   ├── missing-cv-topology.yml
│           │   │   │   │   │   ├── missing-data-plane-cpu-allocation-max.yml
│           │   │   │   │   │   ├── missing-dc-name-for-overlay-her-flood-list-scope-dc.yml
│           │   │   │   │   │   ├── missing-default-policy-wan-control-load-balance-policy.yml
│           │   │   │   │   │   ├── missing-default-virtual-topology-path-group.yml
│           │   │   │   │   │   ├── missing-devices-parent-profile.yml
│           │   │   │   │   │   ├── missing-devices-profile.yml
│           │   │   │   │   │   ├── missing-devices-type.yml
│           │   │   │   │   │   ├── missing-dns-settings-when-cv-server-set-as-dns-name-cvaas.yml
│           │   │   │   │   │   ├── missing-dns-settings-when-cv-server-set-as-dns-name-onprem.yml
│           │   │   │   │   │   ├── missing-dot1q-encapsulation-vlan-ethernet-subinterface.yml
│           │   │   │   │   │   ├── missing-dot1q-encapsulation-vlan-port-channel-subinterface.yml
│           │   │   │   │   │   ├── missing-evpn-underlay-l3-multicast-group-ipv4-pool.yml
│           │   │   │   │   │   ├── missing-generated-cv-device-tags-value-and-data-paths.yml
│           │   │   │   │   │   ├── missing-generated-cv-interface-tags-value-and-data-paths.yml
│           │   │   │   │   │   ├── missing-id-for-ptp-priority2.yml
│           │   │   │   │   │   ├── missing-id-for-vrf-loopback-ipv6.yml
│           │   │   │   │   │   ├── missing-id-for-vrf-loopback.yml
│           │   │   │   │   │   ├── missing-inband-mgmt-interface.yml
│           │   │   │   │   │   ├── missing-internet-exit-policy-direct-wan-interface-dhcp-ip.yml
│           │   │   │   │   │   ├── missing-internet-exit-policy-direct-wan-interface-peer-ip.yml
│           │   │   │   │   │   ├── missing-internet-exit-policy-zscaler-wan-interface-peer-ip.yml
│           │   │   │   │   │   ├── missing-internet-exit-policy-zscaler-wan-interface-tunnels-id.yml
│           │   │   │   │   │   ├── missing-internet-exit-policy.yml
│           │   │   │   │   │   ├── missing-ip-address-on-uplink-used-as-wan-lan-ha.yml
│           │   │   │   │   │   ├── missing-ip-address-on-wan-lan-ha-uplink-for-peer.yml
│           │   │   │   │   │   ├── missing-key-evpn-gateway-remote-peer.yml
│           │   │   │   │   │   ├── missing-local-user-password-or-no-password-true.yml
│           │   │   │   │   │   ├── missing-loopback-ipv4-pool.yml
│           │   │   │   │   │   ├── missing-loopback-ipv6-pool.yml
│           │   │   │   │   │   ├── missing-mac-vrf-vni-base.yml
│           │   │   │   │   │   ├── missing-mgmt-ip-cvx-servers.yml
│           │   │   │   │   │   ├── missing-mgmt-ip-ipv6-mgmt-ip.yml
│           │   │   │   │   │   ├── missing-mgmt-ip-overlay-cvx-servers.yml
│           │   │   │   │   │   ├── missing-mlag-peer.yml
│           │   │   │   │   │   ├── missing-network-services-l3-interface-ospf-authentication-key.yaml
│           │   │   │   │   │   ├── missing-network-services-l3-interface-ospf-authentication-message-digest-key.yaml
│           │   │   │   │   │   ├── missing-network-services-l3-port-channel-ospf-authentication-key.yaml
│           │   │   │   │   │   ├── missing-network-services-l3-port-channel-ospf-authentication-message-digest-key.yaml
│           │   │   │   │   │   ├── missing-network-services-svi-ospf-authentication-key.yaml
│           │   │   │   │   │   ├── missing-network-services-svi-ospf-authentication-message-digest-key.yaml
│           │   │   │   │   │   ├── missing-ntp-authentication-key.yml
│           │   │   │   │   │   ├── missing-ntp-settings-when-cv-server-is-set.yml
│           │   │   │   │   │   ├── missing-overlay-cvx-servers.yml
│           │   │   │   │   │   ├── missing-parent-of-l3-port-channel-sub-interface.yml
│           │   │   │   │   │   ├── missing-peer-ip-l3-interface.yml
│           │   │   │   │   │   ├── missing-peer-router-id-for-router-pim-sparse-mode.yml
│           │   │   │   │   │   ├── missing-peer-wan-router-server-path-groups-not-found-under-inventory.yml
│           │   │   │   │   │   ├── missing-peering-address-under-evpn-gateway-remote-peers.yml
│           │   │   │   │   │   ├── missing-prefix-list-definition-cv-pathfinder.yml
│           │   │   │   │   │   ├── missing-prefix-list-in-cv-pathfinder.yml
│           │   │   │   │   │   ├── missing-radius-server-key-and-cleartext-key.yml
│           │   │   │   │   │   ├── missing-router-id-for-ptp-source-ip.yml
│           │   │   │   │   │   ├── missing-router-id-pool.yml
│           │   │   │   │   │   ├── missing-sflow-setting-destination-vrf.yml
│           │   │   │   │   │   ├── missing-system-mac-address-in-snmp-settings.yml
│           │   │   │   │   │   ├── missing-tacacs-server-key-and-cleartext-key.yml
│           │   │   │   │   │   ├── missing-underlay-ipv6.yml
│           │   │   │   │   │   ├── missing-underlay-l2-multicast-group-ipv4-pool.yml
│           │   │   │   │   │   ├── missing-valid-ipv4-address-ntp-servers-spine.yml
│           │   │   │   │   │   ├── missing-validation-parent-profile.yml
│           │   │   │   │   │   ├── missing-validation-profile.yml
│           │   │   │   │   │   ├── missing-virtual-router-mac-address.yml
│           │   │   │   │   │   ├── missing-vlan-id-on-ethernet-subinterface.yml
│           │   │   │   │   │   ├── missing-vlan-id-on-port-channel-subinterface.yml
│           │   │   │   │   │   ├── missing-vrf-vtep-diagnostic-loopback.yml
│           │   │   │   │   │   ├── missing-vtep-ip-for-peer-cv-pathfinder.yml
│           │   │   │   │   │   ├── missing-vtep-ip-wan-server-not-found-in-the-inventory.yml
│           │   │   │   │   │   ├── missing-vtep-loopback-ipv4-pool.yml
│           │   │   │   │   │   ├── missing-wan-carriers.yml
│           │   │   │   │   │   ├── missing-wan-control-load-balance-policy.yml
│           │   │   │   │   │   ├── missing-wan-ha-ipv4-pool.yml
│           │   │   │   │   │   ├── missing-wan-interfaces-ip-address.yml
│           │   │   │   │   │   ├── missing-wan-interfaces.yml
│           │   │   │   │   │   ├── missing-wan-ipsec-profiles-control-plane-key.yml
│           │   │   │   │   │   ├── missing-wan-ipsec-profiles-data-plane-key.yml
│           │   │   │   │   │   ├── missing-wan-ipsec-profiles.yml
│           │   │   │   │   │   ├── missing-wan-path-groups-for-peer-cv-pathfinder.yml
│           │   │   │   │   │   ├── missing-wan-policy-in-traffic-vrfs.yml
│           │   │   │   │   │   ├── missing-wan-route-servers-with-cv-pathfinder-mode.yml
│           │   │   │   │   │   ├── missing-wan-router-vtep-ip-in-route-reflector-listen-range-prefixes.yml
│           │   │   │   │   │   ├── mlag-dhcp-mgmt-ip-1.yml
│           │   │   │   │   │   ├── mlag-dhcp-mgmt-ip-2.yml
│           │   │   │   │   │   ├── monitor-connectivity-host-local-interfaces-not-in-interface-sets.yml
│           │   │   │   │   │   ├── monitor-connectivity-local-interfaces-not-in-interface-sets.yml
│           │   │   │   │   │   ├── monitor-connectivity-vrf-host-local-interfaces-not-in-interface-sets.yml
│           │   │   │   │   │   ├── monitor-connectivity-vrf-local-interfaces-not-in-interface-sets.yml
│           │   │   │   │   │   ├── net-srv-l3-po-sub-interface-with-members.yml
│           │   │   │   │   │   ├── net-srv-l3-po-sub-interface-with-mode.yml
│           │   │   │   │   │   ├── net-srv-l3-po-sub-interface-with-mtu.yml
│           │   │   │   │   │   ├── net-srv-l3-po-sub-interface-without-ip.yml
│           │   │   │   │   │   ├── net-srv-l3-po-sub-interface-without-main-po.yml
│           │   │   │   │   │   ├── net-srv-l3-po-without-member-interfaces.yml
│           │   │   │   │   │   ├── network-services-l2vlan-pvlan-missing-primary.yml
│           │   │   │   │   │   ├── network-services-l2vlan-pvlan-platform-disabled.yml
│           │   │   │   │   │   ├── ntp-settings-server-vrf-missing-inband-mgmt-interface.yml
│           │   │   │   │   │   ├── ntp-settings-server-vrf-missing-mgmt-ip.yml
│           │   │   │   │   │   ├── ospf-enabled-on-svi-not-on-vrf.yml
│           │   │   │   │   │   ├── overlay-routing-protocol-address-family-ipv6.yml
│           │   │   │   │   │   ├── p2p-links-missing-ip-subnet-ip-pool.yml
│           │   │   │   │   │   ├── parent-ethernet-interface-switchport-enabled-with-subinterface.yml
│           │   │   │   │   │   ├── parent-port-channel-interface-switchport-enabled-with-subinterface.yml
│           │   │   │   │   │   ├── set-both-all-active-multihoming-and-d-path-keys.yml
│           │   │   │   │   │   ├── sfe-interface-profile-duplicate-interface-members.yml
│           │   │   │   │   │   ├── sfe-interface-profile-exceed-max-rx-queue-cnt.yml
│           │   │   │   │   │   ├── sfe-interface-profile-worker-id-exceed-max.yml
│           │   │   │   │   │   ├── sflow-settings-missing-destinations.yml
│           │   │   │   │   │   ├── sflow-settings-missing-inband-mgmt-interface.yml
│           │   │   │   │   │   ├── sflow-settings-missing-mgmt-ip.yml
│           │   │   │   │   │   ├── snmp-settings-missing-inband-mgmt.yml
│           │   │   │   │   │   ├── snmp-settings-missing-ip.yml
│           │   │   │   │   │   ├── snmp-settings-missing-mgmt-ip.yml
│           │   │   │   │   │   ├── snmp-settings-missing-system-mac-address-rfc3411-type3.yml
│           │   │   │   │   │   ├── source-interface-conflict-in-logging-vrf-config.yml
│           │   │   │   │   │   ├── source-interfaces-http-client-duplicate-vrf.yml
│           │   │   │   │   │   ├── source-interfaces-http-client-missing-inband-mgmt-interface.yml
│           │   │   │   │   │   ├── source-interfaces-http-client-missing-mgmt-ip.yml
│           │   │   │   │   │   ├── source-interfaces-ssh-client-duplicate-vrf.yml
│           │   │   │   │   │   ├── source-interfaces-ssh-client-missing-inband-mgmt-interface.yml
│           │   │   │   │   │   ├── source-interfaces-ssh-client-missing-mgmt-ip.yml
│           │   │   │   │   │   ├── ul-filter-evpn-default-vrf-services.yml
│           │   │   │   │   │   ├── undefined-peer-facts.yml
│           │   │   │   │   │   ├── underlay-ospf-process-id-is-same-as-ospf-process-id-under-vrf.yml
│           │   │   │   │   │   ├── underlay-router-with-port-channel-uplink.yml
│           │   │   │   │   │   ├── unsupported-inband-ztp-ip-underlay-ipv6-numbered.yml
│           │   │   │   │   │   ├── unsupported-non-ebgp-underlay-routing-protocol-ip-underlay-ipv6-numbered.yml
│           │   │   │   │   │   ├── unsupported-rfc5549-underlay-ipv6-numbered.yml
│           │   │   │   │   │   ├── unsupported-underlay-multicast-underlay-ipv6-numbered.yml
│           │   │   │   │   │   ├── unsupported-vtep-vvtep-ip-underlay-ipv6-numbered.yml
│           │   │   │   │   │   ├── unsupported-wan-router-underlay-ipv6-numbered.yml
│           │   │   │   │   │   ├── wan-carriers-path-group-is-missing-in-wan-path-groups.yml
│           │   │   │   │   │   ├── wan-router-l3-interfaces-unsupported-rxtx-for-subinterface.yml
│           │   │   │   │   │   ├── wan-router-policy-unmatched.yml
│           │   │   │   │   │   ├── wan-server-bgp-as-different-from-own.yml
│           │   │   │   │   │   ├── wan-server-with-interfaces-as-dhcp-address.yml
│           │   │   │   │   │   └── wan-unsupported-platform.yml
│           │   │   │   │   └── hosts.yml
│           │   │   │   └── molecule.yml
│           │   │   ├── eos_designs_unit_tests/
│           │   │   │   ├── converge.yml
│           │   │   │   ├── create.yml
│           │   │   │   ├── custom_modules/
│           │   │   │   │   ├── custom_interface_descriptions_with_data.py
│           │   │   │   │   └── custom_ip_addressing.py
│           │   │   │   ├── destroy.yml
│           │   │   │   ├── extra_python_paths
│           │   │   │   ├── intended/
│           │   │   │   │   ├── configs/
│           │   │   │   │   │   ├── 7010tx-leaf1.cfg
│           │   │   │   │   │   ├── 7010tx-leaf2.cfg
│           │   │   │   │   │   ├── 7020tx-leaf1.cfg
│           │   │   │   │   │   ├── aaa-settings-1.cfg
│           │   │   │   │   │   ├── aaa-settings-2.cfg
│           │   │   │   │   │   ├── aaa-settings-3.cfg
│           │   │   │   │   │   ├── add-subnets-to-redistribution-in-default-vrf-with-sequence30.cfg
│           │   │   │   │   │   ├── address-locking-2.cfg
│           │   │   │   │   │   ├── address-locking-3.cfg
│           │   │   │   │   │   ├── address-locking-4.cfg
│           │   │   │   │   │   ├── address-locking.cfg
│           │   │   │   │   │   ├── always-configure-ip-routing.cfg
│           │   │   │   │   │   ├── asdot-for-wan-ha-leaf11.cfg
│           │   │   │   │   │   ├── asdot-for-wan-ha-transit1a1.cfg
│           │   │   │   │   │   ├── asdot-for-wan-ha-transit1b1.cfg
│           │   │   │   │   │   ├── auto-bgp-asn-leaf1a.cfg
│           │   │   │   │   │   ├── auto-bgp-asn-leaf1b.cfg
│           │   │   │   │   │   ├── auto-bgp-asn-leaf2.cfg
│           │   │   │   │   │   ├── auto-bgp-asn-leaf3a.cfg
│           │   │   │   │   │   ├── auto-bgp-asn-leaf3b.cfg
│           │   │   │   │   │   ├── auto-bgp-asn-leaf4a.cfg
│           │   │   │   │   │   ├── auto-bgp-asn-leaf4b.cfg
│           │   │   │   │   │   ├── auto-bgp-asn-leaf5a.cfg
│           │   │   │   │   │   ├── auto-bgp-asn-leaf7a.cfg
│           │   │   │   │   │   ├── auto-bgp-asn-leaf7b.cfg
│           │   │   │   │   │   ├── auto-bgp-asn-leaf8a.cfg
│           │   │   │   │   │   ├── auto-bgp-asn-leaf8b.cfg
│           │   │   │   │   │   ├── auto-bgp-ungrouped-leaf6.cfg
│           │   │   │   │   │   ├── auto-node-type-leaf01.cfg
│           │   │   │   │   │   ├── auto-node-type-spine01.cfg
│           │   │   │   │   │   ├── auto-node-type-spine02.cfg
│           │   │   │   │   │   ├── auto-node-type-ungrouped-leaf02.cfg
│           │   │   │   │   │   ├── bgp-cleartext-passwords.cfg
│           │   │   │   │   │   ├── bgp-from-network-services-1.cfg
│           │   │   │   │   │   ├── bgp-from-network-services-11.cfg
│           │   │   │   │   │   ├── bgp-from-network-services-12.cfg
│           │   │   │   │   │   ├── bgp-from-network-services-2.cfg
│           │   │   │   │   │   ├── bgp-from-network-services-21.cfg
│           │   │   │   │   │   ├── bgp-from-network-services-22.cfg
│           │   │   │   │   │   ├── bgp-from-network-services-31.cfg
│           │   │   │   │   │   ├── bgp-from-network-services-32.cfg
│           │   │   │   │   │   ├── bgp-from-network-services-41.cfg
│           │   │   │   │   │   ├── bgp-options.cfg
│           │   │   │   │   │   ├── bgp-peer-groups-1.cfg
│           │   │   │   │   │   ├── bgp-peer-groups-2.cfg
│           │   │   │   │   │   ├── bgp-peer-groups-3.cfg
│           │   │   │   │   │   ├── bgp-peer-groups-4.cfg
│           │   │   │   │   │   ├── bgp-peer-groups-ipv6-1.cfg
│           │   │   │   │   │   ├── bgp-preencrypted-passwords.cfg
│           │   │   │   │   │   ├── connected-endpoints-no-network-services.cfg
│           │   │   │   │   │   ├── connected-endpoints-only-defined-vlans.cfg
│           │   │   │   │   │   ├── connected-endpoints.cfg
│           │   │   │   │   │   ├── core-1-isis-sr-ldp.cfg
│           │   │   │   │   │   ├── core-2-ospf-ldp.cfg
│           │   │   │   │   │   ├── core-3-isis-sr-ldp.cfg
│           │   │   │   │   │   ├── core-4-multicast.cfg
│           │   │   │   │   │   ├── core-5-isis-sr-ldp.cfg
│           │   │   │   │   │   ├── core-6-isis-ldp.cfg
│           │   │   │   │   │   ├── custom-ptp-profile.cfg
│           │   │   │   │   │   ├── custom-python-modules-l3leaf1a.cfg
│           │   │   │   │   │   ├── custom-python-modules-l3leaf1b.cfg
│           │   │   │   │   │   ├── custom-python-modules-l3leaf2.cfg
│           │   │   │   │   │   ├── custom-python-modules-spine1.cfg
│           │   │   │   │   │   ├── custom-structured-configuration.cfg
│           │   │   │   │   │   ├── cv-mlag-ospf-l3leaf1a.cfg
│           │   │   │   │   │   ├── cv-mlag-ospf-l3leaf1b.cfg
│           │   │   │   │   │   ├── cv-pathfinder-custom-control-plane-policy-edge-1.cfg
│           │   │   │   │   │   ├── cv-pathfinder-custom-control-plane-policy-edge-2.cfg
│           │   │   │   │   │   ├── cv-pathfinder-custom-control-plane-policy-edge-3.cfg
│           │   │   │   │   │   ├── cv-pathfinder-custom-control-plane-policy-pathfinder-1.cfg
│           │   │   │   │   │   ├── cv-pathfinder-edge-custom-default-policy.cfg
│           │   │   │   │   │   ├── cv-pathfinder-edge-no-default-policy.cfg
│           │   │   │   │   │   ├── cv-pathfinder-edge-no-ipsec-for-wan-path-group.cfg
│           │   │   │   │   │   ├── cv-pathfinder-edge-wan-gateway-spine-uplink.cfg
│           │   │   │   │   │   ├── cv-pathfinder-edge-wan-use-evpn-on-lan-no-overlay-on-lan.cfg
│           │   │   │   │   │   ├── cv-pathfinder-edge-wan-use-evpn-on-lan.cfg
│           │   │   │   │   │   ├── cv-pathfinder-edge.cfg
│           │   │   │   │   │   ├── cv-pathfinder-edge1.cfg
│           │   │   │   │   │   ├── cv-pathfinder-edge2a.cfg
│           │   │   │   │   │   ├── cv-pathfinder-edge2b.cfg
│           │   │   │   │   │   ├── cv-pathfinder-edge3a.cfg
│           │   │   │   │   │   ├── cv-pathfinder-edge3b.cfg
│           │   │   │   │   │   ├── cv-pathfinder-edge4a.cfg
│           │   │   │   │   │   ├── cv-pathfinder-edge4b.cfg
│           │   │   │   │   │   ├── cv-pathfinder-metadata-with-no-default-vrf-in-wan-virtual-topologies.cfg
│           │   │   │   │   │   ├── cv-pathfinder-pathfinder.cfg
│           │   │   │   │   │   ├── cv-pathfinder-pathfinder1.cfg
│           │   │   │   │   │   ├── cv-pathfinder-pathfinder2.cfg
│           │   │   │   │   │   ├── cv-pathfinder-spine1.cfg
│           │   │   │   │   │   ├── cv-pathfinder-transit1a.cfg
│           │   │   │   │   │   ├── cv-pathfinder-transit1b.cfg
│           │   │   │   │   │   ├── cv-settings.cfg
│           │   │   │   │   │   ├── cv-topology-leaf3a.cfg
│           │   │   │   │   │   ├── cv-topology-leaf3b.cfg
│           │   │   │   │   │   ├── dc1-bl1a.cfg
│           │   │   │   │   │   ├── dc1-bl1b.cfg
│           │   │   │   │   │   ├── dc1-bl2a.cfg
│           │   │   │   │   │   ├── dc1-bl2b.cfg
│           │   │   │   │   │   ├── dc1-cl1a.cfg
│           │   │   │   │   │   ├── dc1-cl1b.cfg
│           │   │   │   │   │   ├── dc1-l2leaf1a.cfg
│           │   │   │   │   │   ├── dc1-l2leaf1b.cfg
│           │   │   │   │   │   ├── dc1-l2leaf2a.cfg
│           │   │   │   │   │   ├── dc1-l2leaf2b.cfg
│           │   │   │   │   │   ├── dc1-l2leaf3a.cfg
│           │   │   │   │   │   ├── dc1-l2leaf4a.cfg
│           │   │   │   │   │   ├── dc1-leaf1a.cfg
│           │   │   │   │   │   ├── dc1-leaf2a.cfg
│           │   │   │   │   │   ├── dc1-leaf2b.cfg
│           │   │   │   │   │   ├── dc1-spine1.cfg
│           │   │   │   │   │   ├── dc1-spine2.cfg
│           │   │   │   │   │   ├── dc1-spine3.cfg
│           │   │   │   │   │   ├── dc1-spine4.cfg
│           │   │   │   │   │   ├── dc1-svc3a.cfg
│           │   │   │   │   │   ├── dc1-svc3b.cfg
│           │   │   │   │   │   ├── dc1-undeployed-leaf1a.cfg
│           │   │   │   │   │   ├── dc1-undeployed-leaf1b.cfg
│           │   │   │   │   │   ├── dc1.l2leaf5a.cfg
│           │   │   │   │   │   ├── dc1.l2leaf5b.cfg
│           │   │   │   │   │   ├── dc1.l2leaf6a.cfg
│           │   │   │   │   │   ├── dc1.l2leaf6b.cfg
│           │   │   │   │   │   ├── dc1.l2leaf7a.cfg
│           │   │   │   │   │   ├── default-interface-mtu-hostvars.cfg
│           │   │   │   │   │   ├── default-interface-mtu-platform.cfg
│           │   │   │   │   │   ├── default-overlay-protocol-cvx.cfg
│           │   │   │   │   │   ├── default-overlay-protocol-her.cfg
│           │   │   │   │   │   ├── device.with.dots.in.hostname.cfg
│           │   │   │   │   │   ├── devices-l2leaf1.cfg
│           │   │   │   │   │   ├── devices-leaf1a.cfg
│           │   │   │   │   │   ├── devices-leaf1b.cfg
│           │   │   │   │   │   ├── devices-leaf2a.cfg
│           │   │   │   │   │   ├── devices-leaf2b.cfg
│           │   │   │   │   │   ├── dhcp-relay-option-82-non-vtep.cfg
│           │   │   │   │   │   ├── dhcp-relay-option-82.cfg
│           │   │   │   │   │   ├── dhcp-relay-vtep-mlag-1.cfg
│           │   │   │   │   │   ├── dhcp-relay-vtep-mlag-2.cfg
│           │   │   │   │   │   ├── dhcp-relay-vtep-mlag-link-only-1.cfg
│           │   │   │   │   │   ├── dhcp-relay-vtep-mlag-link-only-2.cfg
│           │   │   │   │   │   ├── dhcp-relay-vtep.cfg
│           │   │   │   │   │   ├── dns-settings-1.cfg
│           │   │   │   │   │   ├── dns-settings-2.cfg
│           │   │   │   │   │   ├── dns-settings-3.cfg
│           │   │   │   │   │   ├── dot1x-settings-1.cfg
│           │   │   │   │   │   ├── dot1x-settings-2.cfg
│           │   │   │   │   │   ├── dot1x-settings-3.cfg
│           │   │   │   │   │   ├── dot1x-settings-4.cfg
│           │   │   │   │   │   ├── downlink-pools-l3leaf1.cfg
│           │   │   │   │   │   ├── downlink-pools-l3leaf2.cfg
│           │   │   │   │   │   ├── downlink-pools-l3leaf3.cfg
│           │   │   │   │   │   ├── downlink-pools-l3leaf4.cfg
│           │   │   │   │   │   ├── downlink-pools-spine1.cfg
│           │   │   │   │   │   ├── downlink-pools-spine2.cfg
│           │   │   │   │   │   ├── dup-leaf1.cfg
│           │   │   │   │   │   ├── dup-leaf2.cfg
│           │   │   │   │   │   ├── duplicate-vrfs.cfg
│           │   │   │   │   │   ├── ebgp-overlay-address-families-vpn-ipv4.cfg
│           │   │   │   │   │   ├── eos-cli.cfg
│           │   │   │   │   │   ├── evpn-gateway-all-active-mh-gw-enabled-d-path-false.cfg
│           │   │   │   │   │   ├── evpn-gateway-all-active-mh-gw.cfg
│           │   │   │   │   │   ├── evpn-gateway-l2-evpn-role-server.cfg
│           │   │   │   │   │   ├── evpn-gateway-l2-l3-disabled.cfg
│           │   │   │   │   │   ├── evpn-gateway-l3-rd-rt-rewrite.cfg
│           │   │   │   │   │   ├── evpn-l2-multi-domain.cfg
│           │   │   │   │   │   ├── evpn-multicast-disabled.cfg
│           │   │   │   │   │   ├── evpn-multicast-l2leaf1a.cfg
│           │   │   │   │   │   ├── evpn-multicast-l3leaf1a.cfg
│           │   │   │   │   │   ├── evpn-multicast-l3leaf1b.cfg
│           │   │   │   │   │   ├── evpn-multicast-l3leaf2a.cfg
│           │   │   │   │   │   ├── evpn-multicast-l3leaf3a.cfg
│           │   │   │   │   │   ├── evpn-multicast-l3leaf3b.cfg
│           │   │   │   │   │   ├── evpn-multicast-spine1.cfg
│           │   │   │   │   │   ├── evpn-overlay-mpls-route-reflectors-ibgp.cfg
│           │   │   │   │   │   ├── evpn-overlay-mpls-route-reflectors2-ibgp.cfg
│           │   │   │   │   │   ├── evpn-overlay-mpls-route-reflectors3-ibgp.cfg
│           │   │   │   │   │   ├── evpn-prevent-readvertise-to-server-1.cfg
│           │   │   │   │   │   ├── evpn-prevent-readvertise-to-server-2.cfg
│           │   │   │   │   │   ├── evpn-prevent-readvertise-to-server-3.cfg
│           │   │   │   │   │   ├── evpn-prevent-readvertise-to-server-4.cfg
│           │   │   │   │   │   ├── evpn-prevent-readvertise-to-server-5.cfg
│           │   │   │   │   │   ├── evpn-prevent-readvertise-to-server-6.cfg
│           │   │   │   │   │   ├── evpn-prevent-readvertise-to-server-8.cfg
│           │   │   │   │   │   ├── evpn-role-server-overlay-vxlan-ibgp.cfg
│           │   │   │   │   │   ├── evpn-services-l2-only-false.cfg
│           │   │   │   │   │   ├── evpn-services-l2-only-true.cfg
│           │   │   │   │   │   ├── evpn-to-ipvpn-gateway.cfg
│           │   │   │   │   │   ├── evpn-vlan-bundle-svi-l2vlan.cfg
│           │   │   │   │   │   ├── evpn-vlan-bundle.cfg
│           │   │   │   │   │   ├── evpn-vtep-with-default-vrf-not-evpn.cfg
│           │   │   │   │   │   ├── exclude-as-extra-fabric-validation-target.cfg
│           │   │   │   │   │   ├── fabric-numbering-node-id.cfg
│           │   │   │   │   │   ├── filter.only-vlans-in-use.cfg
│           │   │   │   │   │   ├── filter.vrfs.cfg
│           │   │   │   │   │   ├── flow-tracking-tests-l2-leaf1.cfg
│           │   │   │   │   │   ├── flow-tracking-tests-l2-leaf2.cfg
│           │   │   │   │   │   ├── flow-tracking-tests-l2-leaf3.cfg
│           │   │   │   │   │   ├── flow-tracking-tests-l2-leaf4.cfg
│           │   │   │   │   │   ├── flow-tracking-tests-leaf1.cfg
│           │   │   │   │   │   ├── flow-tracking-tests-leaf2.cfg
│           │   │   │   │   │   ├── flow-tracking-tests-leaf3.cfg
│           │   │   │   │   │   ├── flow-tracking-tests-leaf4.cfg
│           │   │   │   │   │   ├── flow-tracking-tests-spine1.cfg
│           │   │   │   │   │   ├── flow-tracking-tests-spine2.cfg
│           │   │   │   │   │   ├── general-settings.cfg
│           │   │   │   │   │   ├── generate-cv-tags-1.cfg
│           │   │   │   │   │   ├── generate-cv-tags-2.cfg
│           │   │   │   │   │   ├── hardware-counters.cfg
│           │   │   │   │   │   ├── hardware-feature-sflow-subinterface-1.cfg
│           │   │   │   │   │   ├── hardware-features-720xp.cfg
│           │   │   │   │   │   ├── hardware-features-7280r.cfg
│           │   │   │   │   │   ├── hardware-features-ceos-lab.cfg
│           │   │   │   │   │   ├── hardware-features-cloudeos-2.cfg
│           │   │   │   │   │   ├── hardware-features-cloudeos.cfg
│           │   │   │   │   │   ├── hardware-features-custom-platform.cfg
│           │   │   │   │   │   ├── hardware-features-veos-lab.cfg
│           │   │   │   │   │   ├── igmp-querier-l2leaf1a.cfg
│           │   │   │   │   │   ├── igmp-querier-l3leaf1a.cfg
│           │   │   │   │   │   ├── ignore-custom-keys-in-data-models.cfg
│           │   │   │   │   │   ├── inband-mgmt-dualstack-ips.cfg
│           │   │   │   │   │   ├── inband-mgmt-dualstack-subnets.cfg
│           │   │   │   │   │   ├── inband-mgmt-ip.cfg
│           │   │   │   │   │   ├── inband-mgmt-ipv6-only-vrf.cfg
│           │   │   │   │   │   ├── inband-mgmt-ipv6-only.cfg
│           │   │   │   │   │   ├── inband-mgmt-ipv6-with-address.cfg
│           │   │   │   │   │   ├── inband-mgmt-mlag-a.cfg
│           │   │   │   │   │   ├── inband-mgmt-mlag-b.cfg
│           │   │   │   │   │   ├── inband-mgmt-parent-dualstack1.cfg
│           │   │   │   │   │   ├── inband-mgmt-parent-dualstack2.cfg
│           │   │   │   │   │   ├── inband-mgmt-parent-ipv6-1.cfg
│           │   │   │   │   │   ├── inband-mgmt-parent-ipv6-2.cfg
│           │   │   │   │   │   ├── inband-mgmt-parent-ipv6-3.cfg
│           │   │   │   │   │   ├── inband-mgmt-parent-vrf.cfg
│           │   │   │   │   │   ├── inband-mgmt-parent.cfg
│           │   │   │   │   │   ├── inband-mgmt-per-interface-mtu-false.cfg
│           │   │   │   │   │   ├── inband-mgmt-spine1-ztp.cfg
│           │   │   │   │   │   ├── inband-mgmt-spine2-ztp.cfg
│           │   │   │   │   │   ├── inband-mgmt-subnet-vrf.cfg
│           │   │   │   │   │   ├── inband-mgmt-subnet.cfg
│           │   │   │   │   │   ├── inband-ztp-without-ntp-leaf.cfg
│           │   │   │   │   │   ├── inband-ztp-without-ntp-spine.cfg
│           │   │   │   │   │   ├── ipv4-acls.cfg
│           │   │   │   │   │   ├── ipv6-downlink-pools-leaf1a.cfg
│           │   │   │   │   │   ├── ipv6-downlink-pools-spine.cfg
│           │   │   │   │   │   ├── ipv6-numbered-leaf1a.cfg
│           │   │   │   │   │   ├── ipv6-numbered-leaf1b.cfg
│           │   │   │   │   │   ├── ipv6-numbered-leaf2a.cfg
│           │   │   │   │   │   ├── ipv6-numbered-spine1.cfg
│           │   │   │   │   │   ├── ipv6-numbered-spine2.cfg
│           │   │   │   │   │   ├── ipv6-numbered-vtep-loopback0-leaf1a.cfg
│           │   │   │   │   │   ├── ipv6-numbered-vtep-loopback0-leaf1b.cfg
│           │   │   │   │   │   ├── ipv6-numbered-vtep-loopback0-spine.cfg
│           │   │   │   │   │   ├── isis-cleartext-keys-leaf1.cfg
│           │   │   │   │   │   ├── isis-cleartext-keys-leaf2.cfg
│           │   │   │   │   │   ├── isis-system-id-format-using-node-id.cfg
│           │   │   │   │   │   ├── isis-system-id-format-using-underlay-loopback.cfg
│           │   │   │   │   │   ├── l2vlan-profiles.cfg
│           │   │   │   │   │   ├── l3-edge-bgp.cfg
│           │   │   │   │   │   ├── l3-edge-isis.cfg
│           │   │   │   │   │   ├── l3-edge-multicast.cfg
│           │   │   │   │   │   ├── l3-edge-ospf-auth.cfg
│           │   │   │   │   │   ├── l3-edge-ospf.cfg
│           │   │   │   │   │   ├── l3-edge-rfc5549.cfg
│           │   │   │   │   │   ├── leaf-wan-use-evpn-on-lan.cfg
│           │   │   │   │   │   ├── leaf1-dot1x-evpn-redistribution-enabled-vlan-aware-bundles.cfg
│           │   │   │   │   │   ├── leaf1-dot1x-evpn-redistribution-enabled.cfg
│           │   │   │   │   │   ├── leaf2-dot1x-evpn-redistribution-disabled-vlan-aware-bundles.cfg
│           │   │   │   │   │   ├── leaf2-dot1x-evpn-redistribution-disabled.cfg
│           │   │   │   │   │   ├── legacy-autovpn-cv-interface-tags-test.cfg
│           │   │   │   │   │   ├── legacy-autovpn-edge-no-default-policy.cfg
│           │   │   │   │   │   ├── legacy-autovpn-edge.cfg
│           │   │   │   │   │   ├── legacy-autovpn-empty-load-balance-policy.cfg
│           │   │   │   │   │   ├── legacy-autovpn-rr1.cfg
│           │   │   │   │   │   ├── legacy-autovpn-rr2.cfg
│           │   │   │   │   │   ├── logging-settings-local-interface.cfg
│           │   │   │   │   │   ├── logging-settings.cfg
│           │   │   │   │   │   ├── management-eapi-vrfs-2.cfg
│           │   │   │   │   │   ├── management-eapi-vrfs-3.cfg
│           │   │   │   │   │   ├── management-eapi-vrfs.cfg
│           │   │   │   │   │   ├── management-settings-console.cfg
│           │   │   │   │   │   ├── management-settings-login-banner.cfg
│           │   │   │   │   │   ├── management-settings-motd-banner.cfg
│           │   │   │   │   │   ├── management-settings.cfg
│           │   │   │   │   │   ├── mgmt-interface-default.cfg
│           │   │   │   │   │   ├── mgmt-interface-description.cfg
│           │   │   │   │   │   ├── mgmt-interface-dhcp-with-accept-default-route-false.cfg
│           │   │   │   │   │   ├── mgmt-interface-dhcp.cfg
│           │   │   │   │   │   ├── mgmt-interface-dualstack.cfg
│           │   │   │   │   │   ├── mgmt-interface-fabric.cfg
│           │   │   │   │   │   ├── mgmt-interface-host.cfg
│           │   │   │   │   │   ├── mgmt-interface-ipv6.cfg
│           │   │   │   │   │   ├── mgmt-interface-platform.cfg
│           │   │   │   │   │   ├── mgmt-interface-settings-1.cfg
│           │   │   │   │   │   ├── mgmt-interface-settings-2.cfg
│           │   │   │   │   │   ├── mh-l2leaf1a.cfg
│           │   │   │   │   │   ├── mh-leaf1a.cfg
│           │   │   │   │   │   ├── mh-leaf1b.cfg
│           │   │   │   │   │   ├── mh-leaf2a.cfg
│           │   │   │   │   │   ├── mlag-bgp-different-as-notation-1.cfg
│           │   │   │   │   │   ├── mlag-bgp-different-as-notation-2.cfg
│           │   │   │   │   │   ├── mlag-ipv6-l3leaf1a.cfg
│           │   │   │   │   │   ├── mlag-ipv6-l3leaf1b.cfg
│           │   │   │   │   │   ├── mlag-isis-l3leaf1a.cfg
│           │   │   │   │   │   ├── mlag-isis-l3leaf1b.cfg
│           │   │   │   │   │   ├── mlag-isis-spine.cfg
│           │   │   │   │   │   ├── mlag-odd-id-l3leaf1a.cfg
│           │   │   │   │   │   ├── mlag-odd-id-l3leaf1b.cfg
│           │   │   │   │   │   ├── mlag-ospf-l3leaf1a.cfg
│           │   │   │   │   │   ├── mlag-ospf-l3leaf1b.cfg
│           │   │   │   │   │   ├── mlag-same-subnet-l3leaf1a.cfg
│           │   │   │   │   │   ├── mlag-same-subnet-l3leaf1b.cfg
│           │   │   │   │   │   ├── mlag-same-subnet-l3leaf2a.cfg
│           │   │   │   │   │   ├── mlag-same-subnet-l3leaf2b.cfg
│           │   │   │   │   │   ├── monitor-combined-settings.cfg
│           │   │   │   │   │   ├── monitor-connectivity-settings.cfg
│           │   │   │   │   │   ├── monitor-layer1-minimal.cfg
│           │   │   │   │   │   ├── monitor-layer1-settings.cfg
│           │   │   │   │   │   ├── network-ports-tests-2.cfg
│           │   │   │   │   │   ├── network-ports-tests.1.cfg
│           │   │   │   │   │   ├── network-services-arp-static-entries.cfg
│           │   │   │   │   │   ├── network-services-l2vlan-private-vlan.cfg
│           │   │   │   │   │   ├── network-services-l3-port-channels.cfg
│           │   │   │   │   │   ├── network-services-point-to-point.cfg
│           │   │   │   │   │   ├── network-services-static-routes.cfg
│           │   │   │   │   │   ├── no-mgmt-gateway.cfg
│           │   │   │   │   │   ├── no-mgmt-interface.cfg
│           │   │   │   │   │   ├── node-type-l3-interfaces-bgp.cfg
│           │   │   │   │   │   ├── node-type-l3-interfaces.cfg
│           │   │   │   │   │   ├── node-type-l3-port-channels-subinterfaces.cfg
│           │   │   │   │   │   ├── node-type-l3-port-channels.cfg
│           │   │   │   │   │   ├── ntp-settings-1.cfg
│           │   │   │   │   │   ├── ntp-settings-2.cfg
│           │   │   │   │   │   ├── only-connected-endpoints.cfg
│           │   │   │   │   │   ├── ospf-cleartext-passwords.cfg
│           │   │   │   │   │   ├── ospf-preencrypted-passwords.cfg
│           │   │   │   │   │   ├── overlay-routing-protocol-cvx-l3leaf1.cfg
│           │   │   │   │   │   ├── overlay-routing-protocol-cvx-l3leaf2.cfg
│           │   │   │   │   │   ├── overlay-routing-protocol-cvx-server1.cfg
│           │   │   │   │   │   ├── overlay-routing-protocol-cvx-server2.cfg
│           │   │   │   │   │   ├── overlay-routing-protocol-cvx-server3.cfg
│           │   │   │   │   │   ├── overlay-routing-protocol-her-l3leaf1.cfg
│           │   │   │   │   │   ├── overlay-routing-protocol-her-l3leaf2.cfg
│           │   │   │   │   │   ├── overlay-routing-protocol-her-l3leaf3a.cfg
│           │   │   │   │   │   ├── overlay-routing-protocol-her-l3leaf3b.cfg
│           │   │   │   │   │   ├── overlay-routing-protocol-her-l3leaf4.cfg
│           │   │   │   │   │   ├── override-uplink-type-d.cfg
│           │   │   │   │   │   ├── override-uplink-type-u.cfg
│           │   │   │   │   │   ├── override-vtep-l3leaf1a.cfg
│           │   │   │   │   │   ├── override-vtep-l3leaf1b.cfg
│           │   │   │   │   │   ├── p2p-uplinks-ipv4-prefix-length.cfg
│           │   │   │   │   │   ├── platform-7358x4.cfg
│           │   │   │   │   │   ├── platform-settings.cfg
│           │   │   │   │   │   ├── ptp-tests-l2leaf1-ptp-disabled.cfg
│           │   │   │   │   │   ├── ptp-tests-l2leaf2-ptp-enabled-uplink-disabled.cfg
│           │   │   │   │   │   ├── ptp-tests-l2leaf2-ptp-enabled.cfg
│           │   │   │   │   │   ├── ptp-tests-leaf1.cfg
│           │   │   │   │   │   ├── ptp-tests-leaf2.cfg
│           │   │   │   │   │   ├── ptp-tests-leaf3.cfg
│           │   │   │   │   │   ├── ptp-tests-leaf4.cfg
│           │   │   │   │   │   ├── ptp-tests-leaf5.cfg
│           │   │   │   │   │   ├── ptp-tests-leaf6.cfg
│           │   │   │   │   │   ├── ptp-tests-spine1.cfg
│           │   │   │   │   │   ├── ptp-tests-spine2.cfg
│           │   │   │   │   │   ├── ptp-tests-spine3.cfg
│           │   │   │   │   │   ├── rd-rt-admin-subfield-l3leaf1.cfg
│           │   │   │   │   │   ├── rd-rt-admin-subfield-l3leaf10.cfg
│           │   │   │   │   │   ├── rd-rt-admin-subfield-l3leaf2.cfg
│           │   │   │   │   │   ├── rd-rt-admin-subfield-l3leaf3.cfg
│           │   │   │   │   │   ├── rd-rt-admin-subfield-l3leaf4.cfg
│           │   │   │   │   │   ├── rd-rt-admin-subfield-l3leaf5.cfg
│           │   │   │   │   │   ├── rd-rt-admin-subfield-l3leaf6.cfg
│           │   │   │   │   │   ├── rd-rt-admin-subfield-l3leaf7.cfg
│           │   │   │   │   │   ├── rd-rt-admin-subfield-l3leaf9.cfg
│           │   │   │   │   │   ├── relaxed-structured-config-validation.cfg
│           │   │   │   │   │   ├── sfe-interface-profile-options.cfg
│           │   │   │   │   │   ├── sflow-settings-1.cfg
│           │   │   │   │   │   ├── sflow-settings-2.cfg
│           │   │   │   │   │   ├── sflow-tests-l2-leaf1.cfg
│           │   │   │   │   │   ├── sflow-tests-l2-leaf2.cfg
│           │   │   │   │   │   ├── sflow-tests-leaf1.cfg
│           │   │   │   │   │   ├── sflow-tests-leaf2.cfg
│           │   │   │   │   │   ├── sflow-tests-leaf3.cfg
│           │   │   │   │   │   ├── sflow-tests-leaf4.cfg
│           │   │   │   │   │   ├── sflow-tests-spine1.cfg
│           │   │   │   │   │   ├── sflow-tests-spine2.cfg
│           │   │   │   │   │   ├── site-ha-disabled-leaf.cfg
│           │   │   │   │   │   ├── site-ha-enabled-leaf1.cfg
│           │   │   │   │   │   ├── site-ha-enabled-leaf2a.cfg
│           │   │   │   │   │   ├── site-ha-enabled-leaf2b.cfg
│           │   │   │   │   │   ├── sl-leaf0a.cfg
│           │   │   │   │   │   ├── sl-leaf0b.cfg
│           │   │   │   │   │   ├── sl-leaf1a.cfg
│           │   │   │   │   │   ├── sl-leaf1b.cfg
│           │   │   │   │   │   ├── sl-leaf2a.cfg
│           │   │   │   │   │   ├── sl-leaf2b.cfg
│           │   │   │   │   │   ├── sl-mleaf1.cfg
│           │   │   │   │   │   ├── snmp-autogen-engineid-hostname-and-ip-inband.cfg
│           │   │   │   │   │   ├── snmp-autogen-engineid-hostname-ip-dhcp.cfg
│           │   │   │   │   │   ├── snmp-autogen-engineid-hostname-ip-oob.cfg
│           │   │   │   │   │   ├── snmp-autogen-engineid-rfc3411-hostname-default-mgmt-inband.cfg
│           │   │   │   │   │   ├── snmp-autogen-engineid-rfc3411-hostname-default-mgmt-oob.cfg
│           │   │   │   │   │   ├── snmp-autogen-engineid-rfc3411-hostname-dhcp.cfg
│           │   │   │   │   │   ├── snmp-autogen-engineid-rfc3411-hostname-inband-ip.cfg
│           │   │   │   │   │   ├── snmp-autogen-engineid-rfc3411-hostname-oob-ip.cfg
│           │   │   │   │   │   ├── snmp-autogen-engineid-rfc3411-hostname-oob-ipv6.cfg
│           │   │   │   │   │   ├── snmp-autogen-engineid-rfc3411-hostname-specific-ip.cfg
│           │   │   │   │   │   ├── snmp-autogen-engineid-rfc3411-type3.cfg
│           │   │   │   │   │   ├── snmp-settings-1.cfg
│           │   │   │   │   │   ├── snmp-settings-2.cfg
│           │   │   │   │   │   ├── snmp-system-mac-engineid-1.cfg
│           │   │   │   │   │   ├── snmp-system-mac-engineid-2.cfg
│           │   │   │   │   │   ├── source-interfaces-1.cfg
│           │   │   │   │   │   ├── source-interfaces.cfg
│           │   │   │   │   │   ├── spanning-tree-mode-rapid-pvst.cfg
│           │   │   │   │   │   ├── ssh-settings-1.cfg
│           │   │   │   │   │   ├── ssh-settings-2.cfg
│           │   │   │   │   │   ├── ssh-settings-3.cfg
│           │   │   │   │   │   ├── svi-profile-node-1.cfg
│           │   │   │   │   │   ├── svi-profile-node-2.cfg
│           │   │   │   │   │   ├── tenant-default-vrf-settings.cfg
│           │   │   │   │   │   ├── tenant-default-vrf-with-loopbacks.cfg
│           │   │   │   │   │   ├── test-mgmt-gateway-in-node-group.cfg
│           │   │   │   │   │   ├── trunk-group-tests-l2leaf1a.cfg
│           │   │   │   │   │   ├── trunk-group-tests-l2leaf1b.cfg
│           │   │   │   │   │   ├── trunk-group-tests-l2leaf3.cfg
│           │   │   │   │   │   ├── trunk-group-tests-l2leaf4.cfg
│           │   │   │   │   │   ├── trunk-group-tests-l3leaf1a.cfg
│           │   │   │   │   │   ├── trunk-group-tests-l3leaf1b.cfg
│           │   │   │   │   │   ├── trunk-group-tests-l3leaf2a.cfg
│           │   │   │   │   │   ├── trunk-group-tests-l3leaf2b.cfg
│           │   │   │   │   │   ├── underlay-filter-peer-as-evpn-1.cfg
│           │   │   │   │   │   ├── underlay-filter-peer-as-evpn-2.cfg
│           │   │   │   │   │   ├── underlay-filter-peer-as-evpn-3.cfg
│           │   │   │   │   │   ├── underlay-filter-peer-as-l3leaf1.cfg
│           │   │   │   │   │   ├── underlay-filter-peer-as-spine1.cfg
│           │   │   │   │   │   ├── underlay-filter-peer-as-spine2.cfg
│           │   │   │   │   │   ├── underlay-filter-redistribute-connected-false-svi.cfg
│           │   │   │   │   │   ├── underlay-filter-redistribute-connected-to-bgp-without-route-map.cfg
│           │   │   │   │   │   ├── underlay-multicast-l2leaf1a.cfg
│           │   │   │   │   │   ├── underlay-multicast-l3leaf1a.cfg
│           │   │   │   │   │   ├── underlay-multicast-l3leaf1b.cfg
│           │   │   │   │   │   ├── underlay-multicast-l3leaf2a.cfg
│           │   │   │   │   │   ├── underlay-multicast-l3leaf2b.cfg
│           │   │   │   │   │   ├── underlay-multicast-l3leaf3a.cfg
│           │   │   │   │   │   ├── underlay-multicast-l3leaf3b.cfg
│           │   │   │   │   │   ├── underlay-multicast-leaf1.cfg
│           │   │   │   │   │   ├── underlay-multicast-spine1.cfg
│           │   │   │   │   │   ├── underlay-multicast-spine2.cfg
│           │   │   │   │   │   ├── underlay-ospf-process-id-same-as-ospf-process-id-with-vrf-default.cfg
│           │   │   │   │   │   ├── uplink-lan-l2leaf.cfg
│           │   │   │   │   │   ├── uplink-lan-wan-router1.cfg
│           │   │   │   │   │   ├── uplink-lan-wan-router2.cfg
│           │   │   │   │   │   ├── uplink-mlag-structured-config-l2leaf1a.cfg
│           │   │   │   │   │   ├── uplink-mlag-structured-config-l2leaf1b.cfg
│           │   │   │   │   │   ├── uplink-mlag-structured-config-l3leaf1a.cfg
│           │   │   │   │   │   ├── uplink-mlag-structured-config-l3leaf1b.cfg
│           │   │   │   │   │   ├── uplink-mlag-structured-config-spine1.cfg
│           │   │   │   │   │   ├── uplink-native-vlan-child.cfg
│           │   │   │   │   │   ├── uplink-native-vlan-grandparent.cfg
│           │   │   │   │   │   ├── uplink-native-vlan-parent.cfg
│           │   │   │   │   │   ├── uplink-p2p-vrfs-rfc5549-tests-leaf.cfg
│           │   │   │   │   │   ├── uplink-p2p-vrfs-rfc5549-tests-spine1.cfg
│           │   │   │   │   │   ├── uplink-p2p-vrfs-tests-l2leaf1.cfg
│           │   │   │   │   │   ├── uplink-p2p-vrfs-tests-leaf1.cfg
│           │   │   │   │   │   ├── uplink-p2p-vrfs-tests-leaf2.cfg
│           │   │   │   │   │   ├── uplink-p2p-vrfs-tests-spine1.cfg
│           │   │   │   │   │   ├── uplink-p2p-vrfs-tests-spine2.cfg
│           │   │   │   │   │   ├── validation-profiles.cfg
│           │   │   │   │   │   ├── varpv6.cfg
│           │   │   │   │   │   ├── vrfs-rd-rt-override.cfg
│           │   │   │   │   │   └── vrfs-rt-import-and-export.cfg
│           │   │   │   │   ├── data/
│           │   │   │   │   │   └── EOS_DESIGNS_UNIT_TESTS-ids.yml
│           │   │   │   │   └── structured_configs/
│           │   │   │   │       ├── 7010tx-leaf1.yml
│           │   │   │   │       ├── 7010tx-leaf2.yml
│           │   │   │   │       ├── 7020tx-leaf1.yml
│           │   │   │   │       ├── aaa-settings-1.yml
│           │   │   │   │       ├── aaa-settings-2.yml
│           │   │   │   │       ├── aaa-settings-3.yml
│           │   │   │   │       ├── add-subnets-to-redistribution-in-default-vrf-with-sequence30.yml
│           │   │   │   │       ├── address-locking-2.yml
│           │   │   │   │       ├── address-locking-3.yml
│           │   │   │   │       ├── address-locking-4.yml
│           │   │   │   │       ├── address-locking.yml
│           │   │   │   │       ├── always-configure-ip-routing.yml
│           │   │   │   │       ├── asdot-for-wan-ha-leaf11.yml
│           │   │   │   │       ├── asdot-for-wan-ha-transit1a1.yml
│           │   │   │   │       ├── asdot-for-wan-ha-transit1b1.yml
│           │   │   │   │       ├── auto-bgp-asn-leaf1a.yml
│           │   │   │   │       ├── auto-bgp-asn-leaf1b.yml
│           │   │   │   │       ├── auto-bgp-asn-leaf2.yml
│           │   │   │   │       ├── auto-bgp-asn-leaf3a.yml
│           │   │   │   │       ├── auto-bgp-asn-leaf3b.yml
│           │   │   │   │       ├── auto-bgp-asn-leaf4a.yml
│           │   │   │   │       ├── auto-bgp-asn-leaf4b.yml
│           │   │   │   │       ├── auto-bgp-asn-leaf5a.yml
│           │   │   │   │       ├── auto-bgp-asn-leaf7a.yml
│           │   │   │   │       ├── auto-bgp-asn-leaf7b.yml
│           │   │   │   │       ├── auto-bgp-asn-leaf8a.yml
│           │   │   │   │       ├── auto-bgp-asn-leaf8b.yml
│           │   │   │   │       ├── auto-bgp-ungrouped-leaf6.yml
│           │   │   │   │       ├── auto-node-type-leaf01.yml
│           │   │   │   │       ├── auto-node-type-spine01.yml
│           │   │   │   │       ├── auto-node-type-spine02.yml
│           │   │   │   │       ├── auto-node-type-ungrouped-leaf02.yml
│           │   │   │   │       ├── bgp-cleartext-passwords.yml
│           │   │   │   │       ├── bgp-from-network-services-1.yml
│           │   │   │   │       ├── bgp-from-network-services-11.yml
│           │   │   │   │       ├── bgp-from-network-services-12.yml
│           │   │   │   │       ├── bgp-from-network-services-2.yml
│           │   │   │   │       ├── bgp-from-network-services-21.yml
│           │   │   │   │       ├── bgp-from-network-services-22.yml
│           │   │   │   │       ├── bgp-from-network-services-31.yml
│           │   │   │   │       ├── bgp-from-network-services-32.yml
│           │   │   │   │       ├── bgp-from-network-services-41.yml
│           │   │   │   │       ├── bgp-options.yml
│           │   │   │   │       ├── bgp-peer-groups-1.yml
│           │   │   │   │       ├── bgp-peer-groups-2.yml
│           │   │   │   │       ├── bgp-peer-groups-3.yml
│           │   │   │   │       ├── bgp-peer-groups-4.yml
│           │   │   │   │       ├── bgp-peer-groups-ipv6-1.yml
│           │   │   │   │       ├── bgp-preencrypted-passwords.yml
│           │   │   │   │       ├── connected-endpoints-no-network-services.yml
│           │   │   │   │       ├── connected-endpoints-only-defined-vlans.yml
│           │   │   │   │       ├── connected-endpoints.yml
│           │   │   │   │       ├── core-1-isis-sr-ldp.yml
│           │   │   │   │       ├── core-2-ospf-ldp.yml
│           │   │   │   │       ├── core-3-isis-sr-ldp.yml
│           │   │   │   │       ├── core-4-multicast.yml
│           │   │   │   │       ├── core-5-isis-sr-ldp.yml
│           │   │   │   │       ├── core-6-isis-ldp.yml
│           │   │   │   │       ├── custom-ptp-profile.yml
│           │   │   │   │       ├── custom-python-modules-l3leaf1a.yml
│           │   │   │   │       ├── custom-python-modules-l3leaf1b.yml
│           │   │   │   │       ├── custom-python-modules-l3leaf2.yml
│           │   │   │   │       ├── custom-python-modules-spine1.yml
│           │   │   │   │       ├── custom-structured-configuration.yml
│           │   │   │   │       ├── cv-mlag-ospf-l3leaf1a.yml
│           │   │   │   │       ├── cv-mlag-ospf-l3leaf1b.yml
│           │   │   │   │       ├── cv-pathfinder-custom-control-plane-policy-edge-1.yml
│           │   │   │   │       ├── cv-pathfinder-custom-control-plane-policy-edge-2.yml
│           │   │   │   │       ├── cv-pathfinder-custom-control-plane-policy-edge-3.yml
│           │   │   │   │       ├── cv-pathfinder-custom-control-plane-policy-pathfinder-1.yml
│           │   │   │   │       ├── cv-pathfinder-edge-custom-default-policy.yml
│           │   │   │   │       ├── cv-pathfinder-edge-no-default-policy.yml
│           │   │   │   │       ├── cv-pathfinder-edge-no-ipsec-for-wan-path-group.yml
│           │   │   │   │       ├── cv-pathfinder-edge-wan-gateway-spine-uplink.yml
│           │   │   │   │       ├── cv-pathfinder-edge-wan-use-evpn-on-lan-no-overlay-on-lan.yml
│           │   │   │   │       ├── cv-pathfinder-edge-wan-use-evpn-on-lan.yml
│           │   │   │   │       ├── cv-pathfinder-edge.yml
│           │   │   │   │       ├── cv-pathfinder-edge1.yml
│           │   │   │   │       ├── cv-pathfinder-edge2a.yml
│           │   │   │   │       ├── cv-pathfinder-edge2b.yml
│           │   │   │   │       ├── cv-pathfinder-edge3a.yml
│           │   │   │   │       ├── cv-pathfinder-edge3b.yml
│           │   │   │   │       ├── cv-pathfinder-edge4a.yml
│           │   │   │   │       ├── cv-pathfinder-edge4b.yml
│           │   │   │   │       ├── cv-pathfinder-metadata-with-no-default-vrf-in-wan-virtual-topologies.yml
│           │   │   │   │       ├── cv-pathfinder-pathfinder.yml
│           │   │   │   │       ├── cv-pathfinder-pathfinder1.yml
│           │   │   │   │       ├── cv-pathfinder-pathfinder2.yml
│           │   │   │   │       ├── cv-pathfinder-spine1.yml
│           │   │   │   │       ├── cv-pathfinder-transit1a.yml
│           │   │   │   │       ├── cv-pathfinder-transit1b.yml
│           │   │   │   │       ├── cv-settings.yml
│           │   │   │   │       ├── cv-topology-leaf3a.yml
│           │   │   │   │       ├── cv-topology-leaf3b.yml
│           │   │   │   │       ├── dc1-bl1a.yml
│           │   │   │   │       ├── dc1-bl1b.yml
│           │   │   │   │       ├── dc1-bl2a.yml
│           │   │   │   │       ├── dc1-bl2b.yml
│           │   │   │   │       ├── dc1-cl1a.yml
│           │   │   │   │       ├── dc1-cl1b.yml
│           │   │   │   │       ├── dc1-l2leaf1a.yml
│           │   │   │   │       ├── dc1-l2leaf1b.yml
│           │   │   │   │       ├── dc1-l2leaf2a.yml
│           │   │   │   │       ├── dc1-l2leaf2b.yml
│           │   │   │   │       ├── dc1-l2leaf3a.yml
│           │   │   │   │       ├── dc1-l2leaf4a.yml
│           │   │   │   │       ├── dc1-leaf1a.yml
│           │   │   │   │       ├── dc1-leaf2a.yml
│           │   │   │   │       ├── dc1-leaf2b.yml
│           │   │   │   │       ├── dc1-spine1.yml
│           │   │   │   │       ├── dc1-spine2.yml
│           │   │   │   │       ├── dc1-spine3.yml
│           │   │   │   │       ├── dc1-spine4.yml
│           │   │   │   │       ├── dc1-svc3a.yml
│           │   │   │   │       ├── dc1-svc3b.yml
│           │   │   │   │       ├── dc1-undeployed-leaf1a.yml
│           │   │   │   │       ├── dc1-undeployed-leaf1b.yml
│           │   │   │   │       ├── dc1.l2leaf5a.yml
│           │   │   │   │       ├── dc1.l2leaf5b.yml
│           │   │   │   │       ├── dc1.l2leaf6a.yml
│           │   │   │   │       ├── dc1.l2leaf6b.yml
│           │   │   │   │       ├── dc1.l2leaf7a.yml
│           │   │   │   │       ├── default-interface-mtu-hostvars.yml
│           │   │   │   │       ├── default-interface-mtu-platform.yml
│           │   │   │   │       ├── default-overlay-protocol-cvx.yml
│           │   │   │   │       ├── default-overlay-protocol-her.yml
│           │   │   │   │       ├── device.with.dots.in.hostname.yml
│           │   │   │   │       ├── devices-l2leaf1.yml
│           │   │   │   │       ├── devices-leaf1a.yml
│           │   │   │   │       ├── devices-leaf1b.yml
│           │   │   │   │       ├── devices-leaf2a.yml
│           │   │   │   │       ├── devices-leaf2b.yml
│           │   │   │   │       ├── dhcp-relay-option-82-non-vtep.yml
│           │   │   │   │       ├── dhcp-relay-option-82.yml
│           │   │   │   │       ├── dhcp-relay-vtep-mlag-1.yml
│           │   │   │   │       ├── dhcp-relay-vtep-mlag-2.yml
│           │   │   │   │       ├── dhcp-relay-vtep-mlag-link-only-1.yml
│           │   │   │   │       ├── dhcp-relay-vtep-mlag-link-only-2.yml
│           │   │   │   │       ├── dhcp-relay-vtep.yml
│           │   │   │   │       ├── dns-settings-1.yml
│           │   │   │   │       ├── dns-settings-2.yml
│           │   │   │   │       ├── dns-settings-3.yml
│           │   │   │   │       ├── dot1x-settings-1.yml
│           │   │   │   │       ├── dot1x-settings-2.yml
│           │   │   │   │       ├── dot1x-settings-3.yml
│           │   │   │   │       ├── dot1x-settings-4.yml
│           │   │   │   │       ├── downlink-pools-l3leaf1.yml
│           │   │   │   │       ├── downlink-pools-l3leaf2.yml
│           │   │   │   │       ├── downlink-pools-l3leaf3.yml
│           │   │   │   │       ├── downlink-pools-l3leaf4.yml
│           │   │   │   │       ├── downlink-pools-spine1.yml
│           │   │   │   │       ├── downlink-pools-spine2.yml
│           │   │   │   │       ├── dup-leaf1.yml
│           │   │   │   │       ├── dup-leaf2.yml
│           │   │   │   │       ├── duplicate-vrfs.yml
│           │   │   │   │       ├── ebgp-overlay-address-families-vpn-ipv4.yml
│           │   │   │   │       ├── eos-cli.yml
│           │   │   │   │       ├── evpn-gateway-all-active-mh-gw-enabled-d-path-false.yml
│           │   │   │   │       ├── evpn-gateway-all-active-mh-gw.yml
│           │   │   │   │       ├── evpn-gateway-l2-evpn-role-server.yml
│           │   │   │   │       ├── evpn-gateway-l2-l3-disabled.yml
│           │   │   │   │       ├── evpn-gateway-l3-rd-rt-rewrite.yml
│           │   │   │   │       ├── evpn-l2-multi-domain.yml
│           │   │   │   │       ├── evpn-multicast-disabled.yml
│           │   │   │   │       ├── evpn-multicast-l2leaf1a.yml
│           │   │   │   │       ├── evpn-multicast-l3leaf1a.yml
│           │   │   │   │       ├── evpn-multicast-l3leaf1b.yml
│           │   │   │   │       ├── evpn-multicast-l3leaf2a.yml
│           │   │   │   │       ├── evpn-multicast-l3leaf3a.yml
│           │   │   │   │       ├── evpn-multicast-l3leaf3b.yml
│           │   │   │   │       ├── evpn-multicast-spine1.yml
│           │   │   │   │       ├── evpn-overlay-mpls-route-reflectors-ibgp.yml
│           │   │   │   │       ├── evpn-overlay-mpls-route-reflectors2-ibgp.yml
│           │   │   │   │       ├── evpn-overlay-mpls-route-reflectors3-ibgp.yml
│           │   │   │   │       ├── evpn-prevent-readvertise-to-server-1.yml
│           │   │   │   │       ├── evpn-prevent-readvertise-to-server-2.yml
│           │   │   │   │       ├── evpn-prevent-readvertise-to-server-3.yml
│           │   │   │   │       ├── evpn-prevent-readvertise-to-server-4.yml
│           │   │   │   │       ├── evpn-prevent-readvertise-to-server-5.yml
│           │   │   │   │       ├── evpn-prevent-readvertise-to-server-6.yml
│           │   │   │   │       ├── evpn-prevent-readvertise-to-server-8.yml
│           │   │   │   │       ├── evpn-role-server-overlay-vxlan-ibgp.yml
│           │   │   │   │       ├── evpn-services-l2-only-false.yml
│           │   │   │   │       ├── evpn-services-l2-only-true.yml
│           │   │   │   │       ├── evpn-to-ipvpn-gateway.yml
│           │   │   │   │       ├── evpn-vlan-bundle-svi-l2vlan.yml
│           │   │   │   │       ├── evpn-vlan-bundle.yml
│           │   │   │   │       ├── evpn-vtep-with-default-vrf-not-evpn.yml
│           │   │   │   │       ├── exclude-as-extra-fabric-validation-target.yml
│           │   │   │   │       ├── fabric-numbering-node-id.yml
│           │   │   │   │       ├── filter.only-vlans-in-use.yml
│           │   │   │   │       ├── filter.vrfs.yml
│           │   │   │   │       ├── flow-tracking-tests-l2-leaf1.yml
│           │   │   │   │       ├── flow-tracking-tests-l2-leaf2.yml
│           │   │   │   │       ├── flow-tracking-tests-l2-leaf3.yml
│           │   │   │   │       ├── flow-tracking-tests-l2-leaf4.yml
│           │   │   │   │       ├── flow-tracking-tests-leaf1.yml
│           │   │   │   │       ├── flow-tracking-tests-leaf2.yml
│           │   │   │   │       ├── flow-tracking-tests-leaf3.yml
│           │   │   │   │       ├── flow-tracking-tests-leaf4.yml
│           │   │   │   │       ├── flow-tracking-tests-spine1.yml
│           │   │   │   │       ├── flow-tracking-tests-spine2.yml
│           │   │   │   │       ├── general-settings.yml
│           │   │   │   │       ├── generate-cv-tags-1.yml
│           │   │   │   │       ├── generate-cv-tags-2.yml
│           │   │   │   │       ├── hardware-counters.yml
│           │   │   │   │       ├── hardware-feature-sflow-subinterface-1.yml
│           │   │   │   │       ├── hardware-features-720xp.yml
│           │   │   │   │       ├── hardware-features-7280r.yml
│           │   │   │   │       ├── hardware-features-ceos-lab.yml
│           │   │   │   │       ├── hardware-features-cloudeos-2.yml
│           │   │   │   │       ├── hardware-features-cloudeos.yml
│           │   │   │   │       ├── hardware-features-custom-platform.yml
│           │   │   │   │       ├── hardware-features-veos-lab.yml
│           │   │   │   │       ├── igmp-querier-l2leaf1a.yml
│           │   │   │   │       ├── igmp-querier-l3leaf1a.yml
│           │   │   │   │       ├── ignore-custom-keys-in-data-models.yml
│           │   │   │   │       ├── inband-mgmt-dualstack-ips.yml
│           │   │   │   │       ├── inband-mgmt-dualstack-subnets.yml
│           │   │   │   │       ├── inband-mgmt-ip.yml
│           │   │   │   │       ├── inband-mgmt-ipv6-only-vrf.yml
│           │   │   │   │       ├── inband-mgmt-ipv6-only.yml
│           │   │   │   │       ├── inband-mgmt-ipv6-with-address.yml
│           │   │   │   │       ├── inband-mgmt-mlag-a.yml
│           │   │   │   │       ├── inband-mgmt-mlag-b.yml
│           │   │   │   │       ├── inband-mgmt-parent-dualstack1.yml
│           │   │   │   │       ├── inband-mgmt-parent-dualstack2.yml
│           │   │   │   │       ├── inband-mgmt-parent-ipv6-1.yml
│           │   │   │   │       ├── inband-mgmt-parent-ipv6-2.yml
│           │   │   │   │       ├── inband-mgmt-parent-ipv6-3.yml
│           │   │   │   │       ├── inband-mgmt-parent-vrf.yml
│           │   │   │   │       ├── inband-mgmt-parent.yml
│           │   │   │   │       ├── inband-mgmt-per-interface-mtu-false.yml
│           │   │   │   │       ├── inband-mgmt-spine1-ztp.yml
│           │   │   │   │       ├── inband-mgmt-spine2-ztp.yml
│           │   │   │   │       ├── inband-mgmt-subnet-vrf.yml
│           │   │   │   │       ├── inband-mgmt-subnet.yml
│           │   │   │   │       ├── inband-ztp-without-ntp-leaf.yml
│           │   │   │   │       ├── inband-ztp-without-ntp-spine.yml
│           │   │   │   │       ├── ipv4-acls.yml
│           │   │   │   │       ├── ipv6-downlink-pools-leaf1a.yml
│           │   │   │   │       ├── ipv6-downlink-pools-spine.yml
│           │   │   │   │       ├── ipv6-numbered-leaf1a.yml
│           │   │   │   │       ├── ipv6-numbered-leaf1b.yml
│           │   │   │   │       ├── ipv6-numbered-leaf2a.yml
│           │   │   │   │       ├── ipv6-numbered-spine1.yml
│           │   │   │   │       ├── ipv6-numbered-spine2.yml
│           │   │   │   │       ├── ipv6-numbered-vtep-loopback0-leaf1a.yml
│           │   │   │   │       ├── ipv6-numbered-vtep-loopback0-leaf1b.yml
│           │   │   │   │       ├── ipv6-numbered-vtep-loopback0-spine.yml
│           │   │   │   │       ├── isis-cleartext-keys-leaf1.yml
│           │   │   │   │       ├── isis-cleartext-keys-leaf2.yml
│           │   │   │   │       ├── isis-system-id-format-using-node-id.yml
│           │   │   │   │       ├── isis-system-id-format-using-underlay-loopback.yml
│           │   │   │   │       ├── l2vlan-profiles.yml
│           │   │   │   │       ├── l3-edge-bgp.yml
│           │   │   │   │       ├── l3-edge-isis.yml
│           │   │   │   │       ├── l3-edge-multicast.yml
│           │   │   │   │       ├── l3-edge-ospf-auth.yml
│           │   │   │   │       ├── l3-edge-ospf.yml
│           │   │   │   │       ├── l3-edge-rfc5549.yml
│           │   │   │   │       ├── leaf-wan-use-evpn-on-lan.yml
│           │   │   │   │       ├── leaf1-dot1x-evpn-redistribution-enabled-vlan-aware-bundles.yml
│           │   │   │   │       ├── leaf1-dot1x-evpn-redistribution-enabled.yml
│           │   │   │   │       ├── leaf2-dot1x-evpn-redistribution-disabled-vlan-aware-bundles.yml
│           │   │   │   │       ├── leaf2-dot1x-evpn-redistribution-disabled.yml
│           │   │   │   │       ├── legacy-autovpn-cv-interface-tags-test.yml
│           │   │   │   │       ├── legacy-autovpn-edge-no-default-policy.yml
│           │   │   │   │       ├── legacy-autovpn-edge.yml
│           │   │   │   │       ├── legacy-autovpn-empty-load-balance-policy.yml
│           │   │   │   │       ├── legacy-autovpn-rr1.yml
│           │   │   │   │       ├── legacy-autovpn-rr2.yml
│           │   │   │   │       ├── logging-settings-local-interface.yml
│           │   │   │   │       ├── logging-settings.yml
│           │   │   │   │       ├── management-eapi-vrfs-2.yml
│           │   │   │   │       ├── management-eapi-vrfs-3.yml
│           │   │   │   │       ├── management-eapi-vrfs.yml
│           │   │   │   │       ├── management-settings-console.yml
│           │   │   │   │       ├── management-settings-login-banner.yml
│           │   │   │   │       ├── management-settings-motd-banner.yml
│           │   │   │   │       ├── management-settings.yml
│           │   │   │   │       ├── mgmt-interface-default.yml
│           │   │   │   │       ├── mgmt-interface-description.yml
│           │   │   │   │       ├── mgmt-interface-dhcp-with-accept-default-route-false.yml
│           │   │   │   │       ├── mgmt-interface-dhcp.yml
│           │   │   │   │       ├── mgmt-interface-dualstack.yml
│           │   │   │   │       ├── mgmt-interface-fabric.yml
│           │   │   │   │       ├── mgmt-interface-host.yml
│           │   │   │   │       ├── mgmt-interface-ipv6.yml
│           │   │   │   │       ├── mgmt-interface-platform.yml
│           │   │   │   │       ├── mgmt-interface-settings-1.yml
│           │   │   │   │       ├── mgmt-interface-settings-2.yml
│           │   │   │   │       ├── mh-l2leaf1a.yml
│           │   │   │   │       ├── mh-leaf1a.yml
│           │   │   │   │       ├── mh-leaf1b.yml
│           │   │   │   │       ├── mh-leaf2a.yml
│           │   │   │   │       ├── mlag-bgp-different-as-notation-1.yml
│           │   │   │   │       ├── mlag-bgp-different-as-notation-2.yml
│           │   │   │   │       ├── mlag-ipv6-l3leaf1a.yml
│           │   │   │   │       ├── mlag-ipv6-l3leaf1b.yml
│           │   │   │   │       ├── mlag-isis-l3leaf1a.yml
│           │   │   │   │       ├── mlag-isis-l3leaf1b.yml
│           │   │   │   │       ├── mlag-isis-spine.yml
│           │   │   │   │       ├── mlag-odd-id-l3leaf1a.yml
│           │   │   │   │       ├── mlag-odd-id-l3leaf1b.yml
│           │   │   │   │       ├── mlag-ospf-l3leaf1a.yml
│           │   │   │   │       ├── mlag-ospf-l3leaf1b.yml
│           │   │   │   │       ├── mlag-same-subnet-l3leaf1a.yml
│           │   │   │   │       ├── mlag-same-subnet-l3leaf1b.yml
│           │   │   │   │       ├── mlag-same-subnet-l3leaf2a.yml
│           │   │   │   │       ├── mlag-same-subnet-l3leaf2b.yml
│           │   │   │   │       ├── monitor-combined-settings.yml
│           │   │   │   │       ├── monitor-connectivity-settings.yml
│           │   │   │   │       ├── monitor-layer1-minimal.yml
│           │   │   │   │       ├── monitor-layer1-settings.yml
│           │   │   │   │       ├── network-ports-tests-2.yml
│           │   │   │   │       ├── network-ports-tests.1.yml
│           │   │   │   │       ├── network-services-arp-static-entries.yml
│           │   │   │   │       ├── network-services-l2vlan-private-vlan.yml
│           │   │   │   │       ├── network-services-l3-port-channels.yml
│           │   │   │   │       ├── network-services-point-to-point.yml
│           │   │   │   │       ├── network-services-static-routes.yml
│           │   │   │   │       ├── no-mgmt-gateway.yml
│           │   │   │   │       ├── no-mgmt-interface.yml
│           │   │   │   │       ├── node-type-l3-interfaces-bgp.yml
│           │   │   │   │       ├── node-type-l3-interfaces.yml
│           │   │   │   │       ├── node-type-l3-port-channels-subinterfaces.yml
│           │   │   │   │       ├── node-type-l3-port-channels.yml
│           │   │   │   │       ├── ntp-settings-1.yml
│           │   │   │   │       ├── ntp-settings-2.yml
│           │   │   │   │       ├── only-connected-endpoints.yml
│           │   │   │   │       ├── ospf-cleartext-passwords.yml
│           │   │   │   │       ├── ospf-preencrypted-passwords.yml
│           │   │   │   │       ├── overlay-routing-protocol-cvx-l3leaf1.yml
│           │   │   │   │       ├── overlay-routing-protocol-cvx-l3leaf2.yml
│           │   │   │   │       ├── overlay-routing-protocol-cvx-server1.yml
│           │   │   │   │       ├── overlay-routing-protocol-cvx-server2.yml
│           │   │   │   │       ├── overlay-routing-protocol-cvx-server3.yml
│           │   │   │   │       ├── overlay-routing-protocol-her-l3leaf1.yml
│           │   │   │   │       ├── overlay-routing-protocol-her-l3leaf2.yml
│           │   │   │   │       ├── overlay-routing-protocol-her-l3leaf3a.yml
│           │   │   │   │       ├── overlay-routing-protocol-her-l3leaf3b.yml
│           │   │   │   │       ├── overlay-routing-protocol-her-l3leaf4.yml
│           │   │   │   │       ├── override-uplink-type-d.yml
│           │   │   │   │       ├── override-uplink-type-u.yml
│           │   │   │   │       ├── override-vtep-l3leaf1a.yml
│           │   │   │   │       ├── override-vtep-l3leaf1b.yml
│           │   │   │   │       ├── p2p-uplinks-ipv4-prefix-length.yml
│           │   │   │   │       ├── platform-7358x4.yml
│           │   │   │   │       ├── platform-settings.yml
│           │   │   │   │       ├── ptp-tests-l2leaf1-ptp-disabled.yml
│           │   │   │   │       ├── ptp-tests-l2leaf2-ptp-enabled-uplink-disabled.yml
│           │   │   │   │       ├── ptp-tests-l2leaf2-ptp-enabled.yml
│           │   │   │   │       ├── ptp-tests-leaf1.yml
│           │   │   │   │       ├── ptp-tests-leaf2.yml
│           │   │   │   │       ├── ptp-tests-leaf3.yml
│           │   │   │   │       ├── ptp-tests-leaf4.yml
│           │   │   │   │       ├── ptp-tests-leaf5.yml
│           │   │   │   │       ├── ptp-tests-leaf6.yml
│           │   │   │   │       ├── ptp-tests-spine1.yml
│           │   │   │   │       ├── ptp-tests-spine2.yml
│           │   │   │   │       ├── ptp-tests-spine3.yml
│           │   │   │   │       ├── rd-rt-admin-subfield-l3leaf1.yml
│           │   │   │   │       ├── rd-rt-admin-subfield-l3leaf10.yml
│           │   │   │   │       ├── rd-rt-admin-subfield-l3leaf2.yml
│           │   │   │   │       ├── rd-rt-admin-subfield-l3leaf3.yml
│           │   │   │   │       ├── rd-rt-admin-subfield-l3leaf4.yml
│           │   │   │   │       ├── rd-rt-admin-subfield-l3leaf5.yml
│           │   │   │   │       ├── rd-rt-admin-subfield-l3leaf6.yml
│           │   │   │   │       ├── rd-rt-admin-subfield-l3leaf7.yml
│           │   │   │   │       ├── rd-rt-admin-subfield-l3leaf9.yml
│           │   │   │   │       ├── relaxed-structured-config-validation.yml
│           │   │   │   │       ├── sfe-interface-profile-options.yml
│           │   │   │   │       ├── sflow-settings-1.yml
│           │   │   │   │       ├── sflow-settings-2.yml
│           │   │   │   │       ├── sflow-tests-l2-leaf1.yml
│           │   │   │   │       ├── sflow-tests-l2-leaf2.yml
│           │   │   │   │       ├── sflow-tests-leaf1.yml
│           │   │   │   │       ├── sflow-tests-leaf2.yml
│           │   │   │   │       ├── sflow-tests-leaf3.yml
│           │   │   │   │       ├── sflow-tests-leaf4.yml
│           │   │   │   │       ├── sflow-tests-spine1.yml
│           │   │   │   │       ├── sflow-tests-spine2.yml
│           │   │   │   │       ├── site-ha-disabled-leaf.yml
│           │   │   │   │       ├── site-ha-enabled-leaf1.yml
│           │   │   │   │       ├── site-ha-enabled-leaf2a.yml
│           │   │   │   │       ├── site-ha-enabled-leaf2b.yml
│           │   │   │   │       ├── sl-leaf0a.yml
│           │   │   │   │       ├── sl-leaf0b.yml
│           │   │   │   │       ├── sl-leaf1a.yml
│           │   │   │   │       ├── sl-leaf1b.yml
│           │   │   │   │       ├── sl-leaf2a.yml
│           │   │   │   │       ├── sl-leaf2b.yml
│           │   │   │   │       ├── sl-mleaf1.yml
│           │   │   │   │       ├── snmp-autogen-engineid-hostname-and-ip-inband.yml
│           │   │   │   │       ├── snmp-autogen-engineid-hostname-ip-dhcp.yml
│           │   │   │   │       ├── snmp-autogen-engineid-hostname-ip-oob.yml
│           │   │   │   │       ├── snmp-autogen-engineid-rfc3411-hostname-default-mgmt-inband.yml
│           │   │   │   │       ├── snmp-autogen-engineid-rfc3411-hostname-default-mgmt-oob.yml
│           │   │   │   │       ├── snmp-autogen-engineid-rfc3411-hostname-dhcp.yml
│           │   │   │   │       ├── snmp-autogen-engineid-rfc3411-hostname-inband-ip.yml
│           │   │   │   │       ├── snmp-autogen-engineid-rfc3411-hostname-oob-ip.yml
│           │   │   │   │       ├── snmp-autogen-engineid-rfc3411-hostname-oob-ipv6.yml
│           │   │   │   │       ├── snmp-autogen-engineid-rfc3411-hostname-specific-ip.yml
│           │   │   │   │       ├── snmp-autogen-engineid-rfc3411-type3.yml
│           │   │   │   │       ├── snmp-settings-1.yml
│           │   │   │   │       ├── snmp-settings-2.yml
│           │   │   │   │       ├── snmp-system-mac-engineid-1.yml
│           │   │   │   │       ├── snmp-system-mac-engineid-2.yml
│           │   │   │   │       ├── source-interfaces-1.yml
│           │   │   │   │       ├── source-interfaces.yml
│           │   │   │   │       ├── spanning-tree-mode-rapid-pvst.yml
│           │   │   │   │       ├── ssh-settings-1.yml
│           │   │   │   │       ├── ssh-settings-2.yml
│           │   │   │   │       ├── ssh-settings-3.yml
│           │   │   │   │       ├── svi-profile-node-1.yml
│           │   │   │   │       ├── svi-profile-node-2.yml
│           │   │   │   │       ├── tenant-default-vrf-settings.yml
│           │   │   │   │       ├── tenant-default-vrf-with-loopbacks.yml
│           │   │   │   │       ├── test-mgmt-gateway-in-node-group.yml
│           │   │   │   │       ├── trunk-group-tests-l2leaf1a.yml
│           │   │   │   │       ├── trunk-group-tests-l2leaf1b.yml
│           │   │   │   │       ├── trunk-group-tests-l2leaf3.yml
│           │   │   │   │       ├── trunk-group-tests-l2leaf4.yml
│           │   │   │   │       ├── trunk-group-tests-l3leaf1a.yml
│           │   │   │   │       ├── trunk-group-tests-l3leaf1b.yml
│           │   │   │   │       ├── trunk-group-tests-l3leaf2a.yml
│           │   │   │   │       ├── trunk-group-tests-l3leaf2b.yml
│           │   │   │   │       ├── underlay-filter-peer-as-evpn-1.yml
│           │   │   │   │       ├── underlay-filter-peer-as-evpn-2.yml
│           │   │   │   │       ├── underlay-filter-peer-as-evpn-3.yml
│           │   │   │   │       ├── underlay-filter-peer-as-l3leaf1.yml
│           │   │   │   │       ├── underlay-filter-peer-as-spine1.yml
│           │   │   │   │       ├── underlay-filter-peer-as-spine2.yml
│           │   │   │   │       ├── underlay-filter-redistribute-connected-false-svi.yml
│           │   │   │   │       ├── underlay-filter-redistribute-connected-to-bgp-without-route-map.yml
│           │   │   │   │       ├── underlay-multicast-l2leaf1a.yml
│           │   │   │   │       ├── underlay-multicast-l3leaf1a.yml
│           │   │   │   │       ├── underlay-multicast-l3leaf1b.yml
│           │   │   │   │       ├── underlay-multicast-l3leaf2a.yml
│           │   │   │   │       ├── underlay-multicast-l3leaf2b.yml
│           │   │   │   │       ├── underlay-multicast-l3leaf3a.yml
│           │   │   │   │       ├── underlay-multicast-l3leaf3b.yml
│           │   │   │   │       ├── underlay-multicast-leaf1.yml
│           │   │   │   │       ├── underlay-multicast-spine1.yml
│           │   │   │   │       ├── underlay-multicast-spine2.yml
│           │   │   │   │       ├── underlay-ospf-process-id-same-as-ospf-process-id-with-vrf-default.yml
│           │   │   │   │       ├── uplink-lan-l2leaf.yml
│           │   │   │   │       ├── uplink-lan-wan-router1.yml
│           │   │   │   │       ├── uplink-lan-wan-router2.yml
│           │   │   │   │       ├── uplink-mlag-structured-config-l2leaf1a.yml
│           │   │   │   │       ├── uplink-mlag-structured-config-l2leaf1b.yml
│           │   │   │   │       ├── uplink-mlag-structured-config-l3leaf1a.yml
│           │   │   │   │       ├── uplink-mlag-structured-config-l3leaf1b.yml
│           │   │   │   │       ├── uplink-mlag-structured-config-spine1.yml
│           │   │   │   │       ├── uplink-native-vlan-child.yml
│           │   │   │   │       ├── uplink-native-vlan-grandparent.yml
│           │   │   │   │       ├── uplink-native-vlan-parent.yml
│           │   │   │   │       ├── uplink-p2p-vrfs-rfc5549-tests-leaf.yml
│           │   │   │   │       ├── uplink-p2p-vrfs-rfc5549-tests-spine1.yml
│           │   │   │   │       ├── uplink-p2p-vrfs-tests-l2leaf1.yml
│           │   │   │   │       ├── uplink-p2p-vrfs-tests-leaf1.yml
│           │   │   │   │       ├── uplink-p2p-vrfs-tests-leaf2.yml
│           │   │   │   │       ├── uplink-p2p-vrfs-tests-spine1.yml
│           │   │   │   │       ├── uplink-p2p-vrfs-tests-spine2.yml
│           │   │   │   │       ├── validation-profiles.yml
│           │   │   │   │       ├── varpv6.yml
│           │   │   │   │       ├── vrfs-rd-rt-override.yml
│           │   │   │   │       └── vrfs-rt-import-and-export.yml
│           │   │   │   ├── inventory/
│           │   │   │   │   ├── group_vars/
│           │   │   │   │   │   ├── ASDOT_FOR_WAN_HA.yml
│           │   │   │   │   │   ├── AUTO_BGP_ASN.yml
│           │   │   │   │   │   ├── AUTO_NODE_TYPE.yml
│           │   │   │   │   │   ├── AVD_LAB.yml
│           │   │   │   │   │   ├── BGP_FROM_NETWORK_SERVICES.yml
│           │   │   │   │   │   ├── BGP_FROM_NETWORK_SERVICES_GROUP4.yml
│           │   │   │   │   │   ├── BGP_PASSWORD_ENCRYPTION.yml
│           │   │   │   │   │   ├── BGP_PEER_GROUPS.yml
│           │   │   │   │   │   ├── CORE_UNIT_TESTS.yml
│           │   │   │   │   │   ├── CUSTOM_PYTHON_MODULES_L3LEAFS.yml
│           │   │   │   │   │   ├── CUSTOM_PYTHON_MODULES_SPINES.yml
│           │   │   │   │   │   ├── CUSTOM_PYTHON_MODULES_TESTS.yml
│           │   │   │   │   │   ├── CV_PATHFINDER_CUSTOM_CONTROL_PLANE_POLICY_TESTS.yml
│           │   │   │   │   │   ├── CV_PATHFINDER_MULTI_RR_TESTS.yml
│           │   │   │   │   │   ├── CV_PATHFINDER_TESTS.yml
│           │   │   │   │   │   ├── CV_TOPOLOGY.yml
│           │   │   │   │   │   ├── DC1_BL1.yml
│           │   │   │   │   │   ├── DC1_FABRIC.yml
│           │   │   │   │   │   ├── DC1_L2LEAFS.yml
│           │   │   │   │   │   ├── DC1_LEAF1.yml
│           │   │   │   │   │   ├── DC1_LEAF2.yml
│           │   │   │   │   │   ├── DC1_LEAFS.yml
│           │   │   │   │   │   ├── DC1_SERVERS.yml
│           │   │   │   │   │   ├── DC1_SPINES.yml
│           │   │   │   │   │   ├── DC1_SVC3.yml
│           │   │   │   │   │   ├── DC1_TENANTS_NETWORKS/
│           │   │   │   │   │   │   ├── Tenant_A.yml
│           │   │   │   │   │   │   ├── Tenant_B.yml
│           │   │   │   │   │   │   ├── Tenant_C.yml
│           │   │   │   │   │   │   ├── Tenant_D.yml
│           │   │   │   │   │   │   └── main.yml
│           │   │   │   │   │   ├── DEVICES_TESTS.yml
│           │   │   │   │   │   ├── DHCP_RELAY.yml
│           │   │   │   │   │   ├── DHCP_RELAY_1.yml
│           │   │   │   │   │   ├── DOT1X_EVPN_REDISTRIBUTION_TESTS.yml
│           │   │   │   │   │   ├── DOWNLINK_POOLS_TESTS.yml
│           │   │   │   │   │   ├── DUPLICATE_SVIS_L2VLANS.yml
│           │   │   │   │   │   ├── EOS_DESIGNS_UNIT_TESTS.yml
│           │   │   │   │   │   ├── EVPN_MULTICAST_L3LEAF1.yml
│           │   │   │   │   │   ├── EVPN_MULTICAST_TESTS.yml
│           │   │   │   │   │   ├── EVPN_MULTICAST_TESTS_L2LEAFS.yml
│           │   │   │   │   │   ├── EVPN_MULTICAST_TESTS_L3LEAFS.yml
│           │   │   │   │   │   ├── EVPN_MULTICAST_TESTS_SPINES.yml
│           │   │   │   │   │   ├── EVPN_PREVENT_READVERTISE_TO_SERVER.yml
│           │   │   │   │   │   ├── FABRIC_IP_ADDRESSING.yml
│           │   │   │   │   │   ├── FLOW_TRACKING_TESTS.yml
│           │   │   │   │   │   ├── FLOW_TRACKING_TESTS_L2_LEAFS.yml
│           │   │   │   │   │   ├── FLOW_TRACKING_TESTS_LEAFS.yml
│           │   │   │   │   │   ├── FLOW_TRACKING_TESTS_LEAFS_2.yml
│           │   │   │   │   │   ├── FLOW_TRACKING_TESTS_LEAFS_3.yml
│           │   │   │   │   │   ├── FLOW_TRACKING_TESTS_SPINES.yml
│           │   │   │   │   │   ├── FLOW_TRACKING_TESTS_SPINES_1.yml
│           │   │   │   │   │   ├── FLOW_TRACKING_TESTS_SPINES_2.yml
│           │   │   │   │   │   ├── HARDWARE_FEATURES_ON_VIRTUAL_PLATFORMS.yml
│           │   │   │   │   │   ├── IGMP_QUERIER_L2LEAFS.yml
│           │   │   │   │   │   ├── IGMP_QUERIER_L3LEAFS.yml
│           │   │   │   │   │   ├── IGMP_QUERIER_TESTS.yml
│           │   │   │   │   │   ├── INBAND_MGMT_TESTS.yml
│           │   │   │   │   │   ├── INBAND_MGMT_TESTS_DEVICES_WITH_OOB_MGMT.yml
│           │   │   │   │   │   ├── INBAND_ZTP_WITHOUT_NTP.yml
│           │   │   │   │   │   ├── IPV6_DOWNLINK_POOLS.yml
│           │   │   │   │   │   ├── IPV6_NUMBERED_LEAFS.yml
│           │   │   │   │   │   ├── IPV6_NUMBERED_SPINES.yml
│           │   │   │   │   │   ├── IPV6_NUMBERED_VTEP_LOOPBACK0.yml
│           │   │   │   │   │   ├── ISIS_CLEARTEXT_KEYS_TESTS.yml
│           │   │   │   │   │   ├── LEGACY_AUTOVPN_TESTS.yml
│           │   │   │   │   │   ├── MGMT_GATEWAY_TESTS.yml
│           │   │   │   │   │   ├── MH_L2LEAFS_TESTS.yml
│           │   │   │   │   │   ├── MH_LEAFS_TESTS.yml
│           │   │   │   │   │   ├── MH_SERVERS.yml
│           │   │   │   │   │   ├── MH_TENANT_NETWORKS.yml
│           │   │   │   │   │   ├── MLAG_BGP_DIFFERENT_AS_NOTATION.yml
│           │   │   │   │   │   ├── MLAG_IPV6.yml
│           │   │   │   │   │   ├── MLAG_ISIS_TESTS.yml
│           │   │   │   │   │   ├── MLAG_ODD_ID.yml
│           │   │   │   │   │   ├── MLAG_OSPF_TESTS.yml
│           │   │   │   │   │   ├── MLAG_SAME_SUBNET.yml
│           │   │   │   │   │   ├── NETWORK_PORTS_TESTS.yml
│           │   │   │   │   │   ├── OVERLAY_EBGP_EVPN_GATEWAY_TESTS.yml
│           │   │   │   │   │   ├── OVERLAY_IBGP_EVPN_TESTS.yml
│           │   │   │   │   │   ├── OVERLAY_ROUTING_PROTOCOL_CVX_TESTS.yml
│           │   │   │   │   │   ├── OVERLAY_ROUTING_PROTOCOL_HER_TESTS.yml
│           │   │   │   │   │   ├── OVERRIDE_UPLINK_TYPE.yml
│           │   │   │   │   │   ├── OVERRIDE_VTEP_LEAFS.yml
│           │   │   │   │   │   ├── PLATFORM_SETTINGS_TESTS.yml
│           │   │   │   │   │   ├── PTP_TESTS.yml
│           │   │   │   │   │   ├── PTP_TESTS_L2LEAFS.yml
│           │   │   │   │   │   ├── PTP_TESTS_LEAFS.yml
│           │   │   │   │   │   ├── PTP_TESTS_SPINES.yml
│           │   │   │   │   │   ├── PTP_TESTS_UPLINKS.yml
│           │   │   │   │   │   ├── RD_RT_ADMIN_SUBFIELD_TESTS.yml
│           │   │   │   │   │   ├── SFLOW_TESTS.yml
│           │   │   │   │   │   ├── SFLOW_TESTS_L2_LEAFS.yml
│           │   │   │   │   │   ├── SFLOW_TESTS_LEAFS.yml
│           │   │   │   │   │   ├── SFLOW_TESTS_SPINES.yml
│           │   │   │   │   │   ├── SINGLE_LINK_TO_MLAG_PAIR.yml
│           │   │   │   │   │   ├── SITE_EVPN.yml
│           │   │   │   │   │   ├── SVI_PROFILE_TESTS.yml

================================================
FILE CONTENTS
================================================

================================================
FILE: .arista/secret_allowlist.yaml
================================================
# Arista Secret Scanner allow list

version: v1.0
allowed_secrets:
  - secret_pattern: "http://arista:arista@10.83.12.78:3128"
    category: FALSE_POSITIVE
    reason: Used as example in documentation
  - secret_pattern: "http://arista:arista@10.10.10.1:3128"
    category: FALSE_POSITIVE
    reason: Used as example in documentation


================================================
FILE: .codecov.yml
================================================
---
# CodeCov Configuration for AVD
# Reference: https://docs.codecov.com/docs/codecov-yaml

coverage:
  status:
    project:
      default:
        target: auto
        threshold: 0.5%
        paths:
          - "python-avd"
          - "ansible_collections/arista/avd/plugins/"
    patch:
      default:
        target: 80%
        threshold: 0%

comment:
  layout: "reach,diff,flags,files"
  behavior: default
  require_changes: true

flags:
  pyavd:
    paths:
      - python-avd/pyavd/
      - python-avd/schema_tools/
  ansible-test-units:
    paths:
      - ansible_collections/arista/avd/plugins/
  ansible-test-integration:
    paths:
      - ansible_collections/arista/avd/plugins/

ignore:
  # Test directories
  - "python-avd/tests/**/*"
  - "ansible_collections/arista/avd/tests/**/*"
  - "ansible_collections/arista/avd/extensions/molecule/**/*"

  # Documentation
  - "docs/**/*"
  - "ansible_collections/arista/avd/docs/**/*"

  # Examples
  - "ansible_collections/arista/avd/examples/**/*"

  # Ignore checked-in generated code
  # Unchecked files are not supported by codecov
  - "python-avd/pyavd/_eos_cli_config_gen/schema/__init__.py"
  - "python-avd/pyavd/_eos_designs/schema/__init__.py"
  - "python-avd/pyavd/_eos_designs/eos_designs_facts/schema/protocol.py"
  - "python-avd/pyavd/_cv/api/**/*"

  # Coverage report files
  - "python-avd/**/coverage.xml"


================================================
FILE: .codespellrc
================================================
[codespell]
ignore-words = .github/ignore-codespell-words
skip = *.cfg,*.svg,*.excalidraw,*.rst,*/pyavd/_cv/api/*,*/pyavd/_cv/extra_cv_protos/*,*/changelogs/*,*/docs/tables/*.md,*schema.yml,*/docs/plugins/*


================================================
FILE: .devcontainer/devcontainer.json
================================================
{
    "name": "AVD Development",
    "image": "ghcr.io/aristanetworks/avd/dev:python3.11",
    // The AVD collection can also be installed from any git branch.
    // Uncomment the section below if it's required
    //
    // "containerEnv": {
    //     "AVD_GITHUB_REPO": "aristanetworks/avd",
    //     "AVD_BRANCH_NAME": "devel"
    // },
    // Run entrypoint script manually as it's ignored by dev container CLI otherwise.
    // The dev entrypoint is used to install Ansible collections and requirements, as they are not included with the dev version.
    // "true" is required to exit "postStartCommand" without entering ZSH.
    // the script must be executed ONLY if Ansible is not installed
    "postStartCommand": "/bin/entrypoint.sh true",
    "remoteUser": "avd",
    // use .env file to setup dev environment
    "runArgs": ["--env-file", ".vscode/dev_vars.env"],
    "customizations": {
        "vscode": {
            "extensions": [
                "anthropic.claude-code",
                "openai.chatgpt"
            ]
        }
    }
}

================================================
FILE: .find-missing-tables-args
================================================
--root-path
.
--table-files
ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/*.md
ansible_collections/arista/avd/roles/eos_designs/docs/tables/*.md
schemas/cv_deploy/docs/tables/*.md
--global-docs
ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/*.md
ansible_collections/arista/avd/roles/eos_designs/docs/*.md
ansible_collections/arista/avd/roles/cv_deploy/README.md
--ignore-files
ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/role-input-validation.md
ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/service-unsupported-transceiver.md
ansible_collections/arista/avd/roles/eos_designs/docs/tables/custom-node-type-keys.key.md
ansible_collections/arista/avd/roles/eos_designs/docs/tables/design.md
ansible_collections/arista/avd/roles/eos_designs/docs/tables/role-input-validation.md
ansible_collections/arista/avd/roles/eos_designs/docs/tables/unsupported-transceiver.md
ansible_collections/arista/avd/roles/eos_designs/docs/tables/removed-keys.md
schemas/cv_deploy/docs/tables/metadata.md
schemas/cv_deploy/docs/tables/cv_deploy.md


================================================
FILE: .flake8
================================================
[flake8]
# Flake8 has been replaced with Ruff.
# This file should be removed later, but kept here to avoid IDE extensions from messing up the code.
ignore = E402,W503,W504,E741

# Required for compatibility with Black
extend-ignore = E203

max-line-length = 160

exclude =
  # The cv_client api is generated from proto files, so it should not be linted.
  python-avd/pyavd/_cv/api


================================================
FILE: .gitattributes
================================================
# Collapsing generated schemas from PR diff by default
/python-avd/pyavd/_eos_cli_config_gen/schema/eos_cli_config_gen.schema.yml  linguist-generated=true -merge -diff
/python-avd/pyavd/_eos_designs/schema/eos_designs.schema.yml  linguist-generated=true -merge -diff
/python-avd/pyavd/_eos_cli_config_gen/schema/__init__.py  linguist-generated=true -merge -diff
/python-avd/pyavd/_eos_designs/schema/__init__.py linguist-generated=true -merge -diff
/python-avd/pyavd/_eos_designs/eos_designs_facts/schema/protocol.py linguist-generated=true -merge -diff

# Showing generated tables in PR diff by default by count as generated and automatically use the latest file on merge
/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/*  linguist-generated=true -merge diff
/ansible_collections/arista/avd/roles/eos_designs/docs/tables/*  linguist-generated=true -merge diff

# Collapsing generated plugins doc from PR diff by default
/ansible_collections/arista/avd/docs/plugins/*  linguist-generated=true

# debatable maybe only for some scenarios ?
# /ansible_collections/arista/avd/extensions/molecule/*/documentation/*  linguist-generated=true

# Excluding docs from stats for linguist
/ansible_collections/arista/avd/roles/*/docs/*  linguist-documentation
/ansible_collections/arista/avd/docs/*  linguist-documentation

# CV API files are generated from proto files
/python-avd/pyavd/_cv/api  linguist-generated=true


================================================
FILE: .github/CODEOWNERS
================================================
---
# Add all members of the group avd-developers as reviewers on all PRs
*   @aristanetworks/avd-developers @aristanetworks/avd-maintainers


================================================
FILE: .github/ISSUE_TEMPLATE/bug-report.yml
================================================
name: Bug Report
description: Report a bug impacting AVD
title: "Bug Report Title"
labels: ["type: bug", triage]
# TODO: consider adding types here instead of label
body:
  - type: markdown
    attributes:
      value: |
        Thanks for taking the time to fill out this bug report!

  - type: textarea
    id: issue-summary
    attributes:
      label: Issue Summary
      description: Also tell us, what did you expect to happen?
      placeholder: Tell us what you see!
      value: "please detail your issue"
    validations:
      required: true

  - type: dropdown
    id: component
    attributes:
      label: Which components of AVD are impacted
      multiple: true
      options:
        - eos_cli_config_gen
        - eos_designs
        - anta_runner
        - cv_deploy
        - PyAVD
        - others
    validations:
      required: true

  - type: input
    id: avd-version
    attributes:
      label: AVD version
      description: Which AVD version are you using?
    validations:
      required: true

  - type: input
    id: ansible-version
    attributes:
      label: Ansible version
      description: If relevant, provide the Ansible version.

  - type: input
    id: python-version
    attributes:
      label: Python version
      description: If relevant, on which Python version(s) have you found this bug?

  - type: dropdown
    id: runner
    attributes:
      label: How do you run AVD ?
      multiple: false
      options:
        - Ansible CLI (with virtual-env or native python)
        - AVD container
        - RedHat AAP / Ansible execution environments
        - PyAVD
        - CV Workflows
        - Other

  - type: textarea
    id: step-to-reproduce
    attributes:
      label: Steps to reproduce
      description: Please copy and paste any relevant inputs to reproduce your issue.
      render: shell

  - type: textarea
    id: logs
    attributes:
      label: Relevant log output
      description: Please copy and paste any relevant log output. This will be automatically formatted into code.
      render: shell

  - type: checkboxes
    id: terms
    attributes:
      label: Contributing Guide
      description: By submitting this issue, you agree to follow our [Contributing Guide](https://avd.arista.com/devel/docs/contribution/overview.html)
      options:
        - label: I agree to follow this project Code of Conduct
          required: true


================================================
FILE: .github/ISSUE_TEMPLATE/feature-request.yml
================================================
name: Feature Request
description: Ask for new feature or feature enhancement
title: "Feature request Title"
labels: ["type: enhancement", triage]
# TODO: consider adding types here instead of label
body:
  - type: markdown
    attributes:
      value: |
        Thanks for taking the time to fill out this feature request!

  - type: textarea
    id: feature-summary
    attributes:
      label: Enhancement summary
      value: "please detail your feature enhancement"
    validations:
      required: true

  - type: dropdown
    id: component
    attributes:
      label: Which component of AVD is impacted
      multiple: true
      options:
        - eos_cli_config_gen
        - eos_designs
        - anta_runner
        - cv_deploy
        - PyAVD
        - others
    validations:
      required: true

  - type: textarea
    id: feature-use-case
    attributes:
      label: Use case example
      value: "please detail your use case"
    validations:
      required: true

  - type: textarea
    id: expected-solution
    attributes:
      label: Describe the solution you would like
      description: A clear and concise description of what you want to happen.
    validations:
      required: true

  - type: textarea
    id: alternative-solution
    attributes:
      label: Describe alternatives you have considered
      description: A clear and concise description of any alternative solutions or features you have considered.
    validations:
      required: false

  - type: textarea
    id: additional-context
    attributes:
      label: Additional context
      description: Add any other context or screenshots about the feature request here.
    validations:
      required: false

  - type: checkboxes
    id: terms
    attributes:
      label: Contributing Guide
      description: By submitting this issue, you agree to follow our [Contributing Guide](https://avd.arista.com/devel/docs/contribution/overview.html)
      options:
        - label: I agree to follow this project Code of Conduct
          required: true


================================================
FILE: .github/PULL_REQUEST_TEMPLATE/pull_request_template.md
================================================
## Change Summary

<!-- Enter short PR description -->

## Related Issue(s)

Fixes #<ISSUE ID>

## Component(s) name

`arista.avd.<role-name>`

## Proposed changes
<!--- Describe your changes in detail -->
<!--- Describe data model implemented for new features -->

## How to test
<!--- Please describe in detail how you tested your changes. -->
<!--- Include details of your testing environment, and the tests you ran to -->

## Checklist

### User Checklist

<!-- Add your own checklist using MD syntax and by replacing N/A -->
- N/A

### Repository Checklist

<!--- Go over all the following points, and put an `x` in all the boxes that apply. -->
<!--- If you're unsure about any of these, don't hesitate to ask. We're here to help! -->
- [ ] My code has been rebased from devel before I start
- [ ] I have read the [**CONTRIBUTING**](https://avd.arista.com/devel/docs/contribution/overview.html) document.
- [ ] My change requires a change to the documentation and the documentation has been updated accordingly.
- [ ] I have updated [molecule CI](https://github.com/aristanetworks/avd/tree/devel/ansible_collections/arista/avd/extensions/molecule) testing accordingly. (check the box if not applicable)


================================================
FILE: .github/PULL_REQUEST_TEMPLATE/schema_eos_cli_config_gen.md
================================================
## Add schema for data model

<!-- Use this PR Title: Feat(eos_cli_config_gen): Add schema for < data_model_key > -->

## Checklist

### Contributor Checklist

- [ ] Create schema fragment matching data model described in README.md and README_v4.0.md
  - README.md is most complete with all keys. README_v4.0 includes partial data models after conversion to lists.
  - Schema fragment path is `roles/eos_cli_config_gen/schemas/schema_fragments/<data_model_key>.schema.yml`.
  - Copy line 1-5 from another schema (comments and outer type:dict).
  - Refer to [schema documentation](https://avd.arista.com/devel/docs/contribution/input-variable-validation.html) for syntax and/or use YAML Lint plugin from Redhat in VSCode.
  - Use `convert_types` on value that could be mixed type or misinterpreted like integers and numeric strings.
- [ ] If the data model has been converted from wildcard dicts:
  - Add `convert_types: ['dict']` to the schema.
  - Remove `convert_dicts` from the `templates/eos/<>.j2` and `templates/documentation/<>.j2` templates.
- [ ] Run `molecule converge -s build_schemas_and_docs` to update schema and documentation.
- [ ] Test by running `molecule converge -s eos_cli_config_gen` and verify no errors or changes to generated configs/docs.

### Reviewer Checklist

- Reviewer 1:
  - [ ] Verify that data model is fully covered in the described schema. Easiest by looking at the generated documentation.
  - [ ] Verify that `convert_dicts` has been removed from templates as applicable.
  - [ ] Verify no changes to configs/docs on any molecule scenario
  - [ ] Verify that CI pass

- Reviewer 2:
  - [ ] Verify that data model is fully covered in the described schema. Easiest by looking at the generated documentation.
  - [ ] Verify that `convert_dicts` has been removed from templates as applicable.
  - [ ] Verify no changes to configs/docs on any molecule scenario
  - [ ] Verify that CI pass


================================================
FILE: .github/actions/rn-pr-labeler-action/action.yml
================================================
name: "rn-pr-labeler"
author: "@gmuloc"
description: "Parse a conventional commit compliant PR title and add it as a label to the PR with the prefix 'rn: '"
inputs:
  auto_create_label:
    description: "Boolean to indicate if the label should be auto created"
    required: false
    default: false
runs:
  using: "composite"
  steps:
    - name: 'Looking up existing "rn:" label'
      run: |
        echo "OLD_LABEL=$(gh pr view ${{ github.event.pull_request.number }} --json labels -q .labels[].name | grep 'rn: ')" >> $GITHUB_ENV
      shell: bash
    - name: 'Delete existing "rn:" label if found'
      run: gh pr edit ${{ github.event.pull_request.number }} --remove-label "${{ env.OLD_LABEL }}"
      shell: bash
      if: ${{ env.OLD_LABEL }}
    - name: Set Label
      # Using toJSON to support ' and " in commit messages
      # https://stackoverflow.com/questions/73363167/github-actions-how-to-escape-characters-in-commit-message
      run: echo "LABEL=$(echo ${{ toJSON(github.event.pull_request.title) }} | cut -d ':' -f 1 | tr -d ' ' | tr ',' '|')" >> $GITHUB_ENV
      shell: bash
      # an alternative to verifying if the target label already exist is to
      # create the label with --force in the next step, it will keep on changing
      # the color of the label though so it may not be desirable.
    - name: Check if label exist
      run: |
        EXIST=$(gh label list -L 100 --search "rn:" --json name -q '.[] | select(.name=="rn: ${{ env.LABEL }}").name')
        echo "EXIST=$EXIST" >> $GITHUB_ENV
      shell: bash
    - name: Create Label if auto-create and label does not exist already
      run: |
        gh label create "rn: ${{ env.LABEL }}"
      shell: bash
      if: ${{ inputs.auto_create_label  && ! env.EXIST }}
    - name: Labelling PR
      run: |
        gh pr edit ${{ github.event.pull_request.number }} --add-label "rn: ${{ env.LABEL }}"
      shell: bash


================================================
FILE: .github/changelog.sh
================================================
#!/usr/bin/env zsh

##############################
# CHANGELOG SCRIPT CONSTANTS #
##############################

#* Holds the list of valid types recognized in a commit subject
#* and the display string of such type
local -A TYPES
TYPES=(
  BUILD     "Build system"
  CHORE     "Chore"
  CI        "CI"
  CUT       "Features removed"
  DOC       "Documentation"
  FEAT      "Features"
  FIX       "Bug fixes"
  LICENSE   "License update"
  MAKE      "Build system"
  OPTIMIZE  "Code optimization"
  PERF      "Performance"
  REFACTOR  "Code Refactoring"
  REFORMAT  "Code Reformatting"
  REVERT    "Revert"
  TEST      "Testing"
)

#* Types that will be displayed in their own section,
#* in the order specified here.
local -a MAIN_TYPES
MAIN_TYPES=(FEAT FIX PERF REFACTOR DOCS DOC)

#* Types that will be displayed under the category of other changes
local -a OTHER_TYPES
OTHER_TYPES=(MAKE TEST STYLE CI OTHER)

#* Commit types that don't appear in $MAIN_TYPES nor $OTHER_TYPES
#* will not be displayed and will simply be ignored.


############################
# COMMIT PARSING UTILITIES #
############################

function parse-commit {

  # This function uses the following globals as output: commits (A),
  # subjects (A), scopes (A) and breaking (A). All associative arrays (A)
  # have $hash as the key.
  # - commits holds the commit type
  # - subjects holds the commit subject
  # - scopes holds the scope of a commit
  # - breaking holds the breaking change warning if a commit does
  #   make a breaking change

  function commit:type {
    local commit_message="$1"
    local type="$(sed -E 's/^([a-zA-Z_\-]+)(\(.+\))?!?: .+$/\1/' <<< "$commit_message"| tr '[:lower:]' '[:upper:]')"
    # If $type doesn't appear in $TYPES array mark it as 'other'
    if [[ -n "${(k)TYPES[(i)${type}]}" ]]; then
      echo $type
    else
      echo other
    fi
  }

  function commit:scope {
    local scope

    # Try to find scope in "type(<scope>):" format
    # Scope will be formatted in lower cases
    scope=$(sed -nE 's/^[a-zA-Z_\-]+\((.+)\)!?: .+$/\1/p' <<< "$1")
    if [[ -n "$scope" ]]; then
      echo "$scope" | tr '[:upper:]' '[:lower:]'
      return
    fi

    # If no scope found, try to find it in "<scope>:" format
    # Make sure it's not a type before printing it
    scope=$(sed -nE 's/^([a-zA-Z_\-]+): .+$/\1/p' <<< "$1")
    if [[ -z "${(k)TYPES[(i)$scope]}" ]]; then
      echo "$scope"
    fi
  }

  function commit:subject {
    # Only display the relevant part of the commit, i.e. if it has the format
    # type[(scope)!]: subject, where the part between [] is optional, only
    # displays subject. If it doesn't match the format, returns the whole string.
    sed -E 's/^[a-zA-Z_\-]+(\(.+\))?!?: (.+)$/\2/' <<< "$1"
  }

  # Return subject if the body or subject match the breaking change format
  function commit:is-breaking {
    local subject="$1" body="$2" message

    if [[ "$body" =~ "BREAKING CHANGE: (.*)" || \
      "$subject" =~ '^[^ :\)]+\)?!: (.*)$' ]]; then
      message="${match[1]}"
      # remove CR characters (might be inserted in GitHub UI commit description form)
      message="${message//$'\r'/}"
      # skip next paragraphs (separated by two newlines or more)
      message="${message%%$'\n\n'*}"
      # ... and replace newlines with spaces
      echo "${message//$'\n'/ }"
    else
      return 1
    fi
  }

  # Return truncated hash of the reverted commit
  function commit:is-revert {
    local subject="$1" body="$2"

    if [[ "$subject" = Revert* && \
      "$body" =~ "This reverts commit ([^.]+)\." ]]; then
      echo "${match[1]:0:7}"
    else
      return 1
    fi
  }

  # Parse commit with hash $1
  local hash="$1" subject body warning rhash
  subject="$(command git show -s --format=%s $hash)"
  body="$(command git show -s --format=%b $hash)"

  # Commits following Conventional Commits (https://www.conventionalcommits.org/)
  # have the following format, where parts between [] are optional:
  #
  #  type[(scope)][!]: subject
  #
  #  commit body
  #  [BREAKING CHANGE: warning]

  # commits holds the commit type
  commits[$hash]="$(commit:type "$subject")"
  # scopes holds the commit scope
  scopes[$hash]="$(commit:scope "$subject")"
  # subjects holds the commit subject
  subjects[$hash]="$(commit:subject "$subject")"

  # breaking holds whether a commit has breaking changes
  # and its warning message if it does
  if warning=$(commit:is-breaking "$subject" "$body"); then
    breaking[$hash]="$warning"
  fi

  # reverts holds commits reverted in the same release
  if rhash=$(commit:is-revert "$subject" "$body"); then
    reverts[$hash]=$rhash
  fi
}

#############################
# RELEASE CHANGELOG DISPLAY #
#############################

function display-release {

  # This function uses the following globals: output, version,
  # commits (A), subjects (A), scopes (A), breaking (A) and reverts (A).
  #
  # - output is the output format to use when formatting (raw|text|md)
  # - version is the version in which the commits are made
  # - commits, subjects, scopes, breaking, and reverts are associative arrays
  #   with commit hashes as keys

  # Remove commits that were reverted
  local hash rhash
  for hash rhash in ${(kv)reverts}; do
    if (( ${+commits[$rhash]} )); then
      # Remove revert commit
      unset "commits[$hash]" "subjects[$hash]" "scopes[$hash]" "breaking[$hash]"
      # Remove reverted commit
      unset "commits[$rhash]" "subjects[$rhash]" "scopes[$rhash]" "breaking[$rhash]"
    fi
  done

  # If no commits left skip displaying the release
  if (( $#commits == 0 )); then
    return
  fi

  ##* Formatting functions

  # Format the hash according to output format
  # If no parameter is passed, assume it comes from `$hash`
  function fmt:hash {
    #* Uses $hash from outer scope
    local hash="${1:-$hash}"
    case "$output" in
    raw) printf "$hash" ;;
    text) printf "\e[33m$hash\e[0m" ;; # red
    md) printf "[\`$hash\`](https://github.com/aristanetworks/avd/commit/$hash)" ;;
    esac
  }

  # Format headers according to output format
  # Levels 1 to 2 are considered special, the rest are formatted
  # the same, except in md output format.
  function fmt:header {
    local header="$1" level="$2"
    case "$output" in
    raw)
      case "$level" in
      1) printf "$header\n$(printf '%.0s=' {1..${#header}})\n\n" ;;
      2) printf "$header\n$(printf '%.0s-' {1..${#header}})\n\n" ;;
      *) printf "$header:\n\n" ;;
      esac ;;
    text)
      case "$level" in
      1|2) printf "\e[1;4m$header\e[0m\n\n" ;; # bold, underlined
      *) printf "\e[1m$header:\e[0m\n\n" ;; # bold
      esac ;;
    md) printf "$(printf '%.0s#' {1..${level}}) $header\n\n" ;;
    esac
  }

  function fmt:scope {
    #* Uses $scopes (A) and $hash from outer scope
    local scope="${1:-${scopes[$hash]}}"

    # Get length of longest scope for padding
    local max_scope=0 padding=0
    for hash in ${(k)scopes}; do
      max_scope=$(( max_scope < ${#scopes[$hash]} ? ${#scopes[$hash]} : max_scope ))
    done

    # If no scopes, exit the function
    if [[ $max_scope -eq 0 ]]; then
      return
    fi

    # Get how much padding is required for this scope
    padding=$(( max_scope < ${#scope} ? 0 : max_scope - ${#scope} ))
    padding="${(r:$padding:: :):-}"

    # If no scope, print padding and 3 spaces (equivalent to "[] ")
    if [[ -z "$scope" ]]; then
      printf "${padding}   "
      return
    fi

    # Print [scope]
    case "$output" in
    raw|md) printf "[$scope]${padding} " ;;
    text) printf "[\e[38;5;9m$scope\e[0m]${padding} " ;; # red 9
    esac
  }

  # If no parameter is passed, assume it comes from `$subjects[$hash]`
  function fmt:subject {
    #* Uses $subjects (A) and $hash from outer scope
    local subject="${1:-${subjects[$hash]}}"

    # Capitalize first letter of the subject
    subject="${(U)subject:0:1}${subject:1}"

    case "$output" in
    raw) printf "$subject" ;;
    # In text mode, highlight (#<issue>) and dim text between `backticks`
    text) sed -E $'s|#([0-9]+)|\e[32m#\\1\e[0m|g;s|`([^`]+)`|`\e[2m\\1\e[0m`|g' <<< "$subject" ;;
    # In markdown mode, link to (#<issue>) issues
    md) sed -E 's|#([0-9]+)|[#\1](https://github.com/aristanetworks/avd/issues/\1)|g' <<< "$subject" ;;
    esac
  }

  function fmt:type {
    #* Uses $type from outer scope
    local type="${1:-${TYPES[$type]:-${(C)type}}}"
    [[ -z "$type" ]] && return 0
    case "$output" in
    raw|md) printf "$type: " ;;
    text) printf "\e[4m$type\e[24m: " ;; # underlined
    esac
  }

  ##* Section functions

  function display:version {
    fmt:header "$version" 2
  }

  function display:breaking {
    (( $#breaking != 0 )) || return 0

    case "$output" in
    raw) fmt:header "BREAKING CHANGES" 3 ;;
    text|md) fmt:header "⚠ BREAKING CHANGES" 3 ;;
    esac

    local hash subject
    for hash message in ${(kv)breaking}; do
      echo " - $(fmt:hash) $(fmt:scope)$(fmt:subject "${message}")"
    done | sort
    echo
  }

  function display:type {
    local hash type="$1"

    local -a hashes
    hashes=(${(k)commits[(R)$type]})

    # If no commits found of type $type, go to next type
    (( $#hashes != 0 )) || return 0

    fmt:header "${TYPES[$type]}" 3
    for hash in $hashes; do
      echo " - $(fmt:hash) $(fmt:scope)$(fmt:subject)"
    done | sort -k3 # sort by scope
    echo
  }

  function display:others {
    local hash type

    # Commits made under types considered other changes
    local -A changes
    changes=(${(kv)commits[(R)${(j:|:)OTHER_TYPES}]})

    # If no commits found under "other" types, don't display anything
    (( $#changes != 0 )) || return 0

    fmt:header "Other changes" 3
    for hash type in ${(kv)changes}; do
      case "$type" in
      other) echo " - $(fmt:hash) $(fmt:scope)$(fmt:subject)" ;;
      *) echo " - $(fmt:hash) $(fmt:scope)$(fmt:type)$(fmt:subject)" ;;
      esac
    done | sort -k3 # sort by scope
    echo
  }

  ##* Release sections order

  # Display version header
  display:version

  # Display breaking changes first
  display:breaking

  # Display changes for commit types in the order specified
  for type in $MAIN_TYPES; do
    display:type "$type"
  done

  # Display other changes
  display:others
}

function main {
  # $1 = until commit, $2 = since commit
  local until="$1" since="$2"

  # $3 = output format (--text|--raw|--md)
  # --md:   uses markdown formatting
  # --raw:  outputs without style
  # --text: uses ANSI escape codes to style the output
  local output=${${3:-"--text"}#--*}

  if [[ -z "$until" ]]; then
    until=HEAD
  fi

  if [[ -z "$since" ]]; then
    # If $since is not specified:
    # 1) try to find the version used before updating
    # 2) try to find the first version tag before $until
    since=$(command git config --get avd.lastVersion 2>/dev/null) || \
    since=$(command git describe --abbrev=0 --tags "$until^" 2>/dev/null) || \
    unset since
  elif [[ "$since" = --all ]]; then
    unset since
  fi

  # Commit classification arrays
  local -A commits subjects scopes breaking reverts
  local truncate=0 read_commits=0
  local hash version tag

  # Get the first version name:
  # 1) try tag-like version, or
  # 2) try name-rev, or
  # 3) try branch name, or
  # 4) try short hash
  version=$(command git describe --tags $until 2>/dev/null) \
    || version=$(command git name-rev --no-undefined --name-only --exclude="remotes/*" $until 2>/dev/null) \
    || version=$(command git symbolic-ref --quiet --short $until 2>/dev/null) \
    || version=$(command git rev-parse --short $until 2>/dev/null)

  # Get commit list from $until commit until $since commit, or until root
  # commit if $since is unset, in short hash form.
  # --first-parent is used when dealing with merges: it only prints the
  # merge commit, not the commits of the merged branch.
  command git rev-list --first-parent --abbrev-commit --abbrev=7 ${since:+$since..}$until | while read hash; do
    # Truncate list on versions with a lot of commits
    if [[ -z "$since" ]] && (( ++read_commits > 35 )); then
      truncate=1
      break
    fi

    # If we find a new release (exact tag)
    if tag=$(command git describe --exact-match --tags $hash 2>/dev/null); then
      # Output previous release
      display-release
      # Reinitialize commit storage
      commits=()
      subjects=()
      scopes=()
      breaking=()
      reverts=()
      # Start work on next release
      version="$tag"
      read_commits=1
    fi

    parse-commit "$hash"
  done

  display-release

  if (( truncate )); then
    echo " ...more commits omitted"
    echo
  fi
}

# Use raw output if stdout is not a tty
if [[ ! -t 1 && -z "$3" ]]; then
  main "$1" "$2" --raw
else
  main "$@"
fi


================================================
FILE: .github/check-git-status.sh
================================================
#!/bin/bash
#
# Purpose: Molecule runner for github-action
# Author: @titom73
# Date: 2020-12-16
# Version: 1.1
# License: APACHE
# --------------------------------------

echo "Script running from ${PWD}"

# Set default values
INPUT_CHECK_GIT="${INPUT_CHECK_GIT:-true}"
INPUT_CHECK_GIT_ENFORCED="${INPUT_CHECK_GIT_ENFORCED:-true}"

if [ ${INPUT_CHECK_GIT} = "true" ]; then
    git config core.fileMode false
    echo "  * Run Git Verifier because CHECK_GIT is set to ${INPUT_CHECK_GIT}"
    # if git diff-index --quiet HEAD --; then
    GIT_STATUS="$(git status --porcelain)"
    if  [ "$?" -ne "0" ]; then
        echo "'git status --porcelain' failed to run - something is wrong"
        exit 1
    fi
    if [ -n "$GIT_STATUS" ]; then
        # Some changes
        echo 'Some changes'
        echo '------------'
        git --no-pager status --short
        echo ''
        echo 'Diffs are:'
        echo '------------'
        git --no-pager diff
        if [ ${INPUT_CHECK_GIT_ENFORCED} = "true" ]; then
            exit 1
        else
            exit 0
        fi
    else
        # No Changes
        echo '    - No change found after running Molecule'
        exit 0
    fi
    exit 0
else
    echo "  * Git verifier skipped as not set to true"
fi


================================================
FILE: .github/dependabot.yml
================================================
---
version: 2
updates:
  # Maintain dependencies for Python
  - package-ecosystem: "pip"
    versioning-strategy: increase-if-necessary
    directories:
      - "/"
      - "/python-avd/"
    schedule:
      interval: "weekly"
      day: "monday"
    groups:
      prod:
        dependency-type: "production"
      dev:
        dependency-type: "development"
    pull-request-branch-name:
      separator: "/"
    commit-message:
      prefix: "Bump(requirements): "
      prefix-development: "CI(requirements):"
  # Maintain dependencies for GitHub Actions
  - package-ecosystem: "github-actions"
    directory: "/"
    schedule:
      interval: "weekly"
      day: "monday"
    commit-message:
      prefix: "CI: "


================================================
FILE: .github/generate_release.py
================================================
#!/usr/bin/env python
# Copyright (c) 2023-2026 Arista Networks, Inc.
# Use of this source code is governed by the Apache License 2.0
# that can be found in the LICENSE file.
"""
generate_release.py.

This script is used to generate the release.yml file as per
https://docs.github.com/en/repositories/releasing-projects-on-github/automatically-generated-release-notes
"""

from pathlib import Path
from typing import Any

import yaml

SCOPES = [
    "build_output_folders",
    "cv_deploy",
    "eos_cli_config_gen",
    "eos_config_deploy_eapi",
    "eos_designs",
    "eos_snapshot",
    "anta_runner",
    "plugins",
    "requirements",
    "containers",
    # Handle multiple scopes ',' are not supported in Github labels and so replaced with '|' by our action
    "eos_designs|eos_cli_config_gen",
    "eos_cli_config_gen|eos_designs",
    "pyavd",
]

# CI and Test are excluded from Release Notes
CATEGORIES = {
    "Feat": "Features",
    "Fix": "Bug Fixes",
    "Cut": "Cut",
    "Doc": "Documentation",
    # Excluding "CI": "CI",
    "Bump": "Bump",
    # Excluding "Test": "Test",
    "Revert": "Revert",
    "Refactor": "Refactoring",
}


class SafeDumper(yaml.SafeDumper):
    """
    Make yamllint happy.

    https://github.com/yaml/pyyaml/issues/234#issuecomment-765894586
    """

    # pylint: disable=R0901,W0613,W1113

    def increase_indent(self, flow: bool = False, *_args: Any, **_kwargs: Any) -> None:
        return super().increase_indent(flow=flow, indentless=False)


if __name__ == "__main__":
    exclude_list = []
    categories_list = []
    other_scopes = [
        scope
        for scope in SCOPES
        if scope
        not in [
            "eos_cli_config_gen",
            "eos_designs",
            "eos_cli_config_gen|eos_designs",
            "eos_designs|eos_cli_config_gen",
            "anta_runner",
            "pyavd",
        ]
    ]

    # First add exclude labels
    for scope in SCOPES:
        exclude_list.append(f"rn: Test({scope})")
        exclude_list.append(f"rn: CI({scope})")
    exclude_list.extend(["rn: Test", "rn: CI"])

    # Then add the categories
    # First add Breaking Changes EXCEPT `pyavd`
    # TODO: should we consider changing this and adding back pyavd?
    breaking_label_categories = ["Feat", "Fix", "Cut", "Revert", "Refactor", "Bump"]
    breaking_labels = [f"rn: {cc_type}({scope})!" for cc_type in breaking_label_categories for scope in SCOPES if scope != "pyavd"]
    breaking_labels.extend([f"rn: {cc_type}!" for cc_type in breaking_label_categories])

    categories_list.append(
        {
            "title": "Breaking Changes",
            "labels": breaking_labels,
        },
    )
    # Add fixes in eos_cli_config_gen
    categories_list.append(
        {
            "title": "Fixed issues in eos_cli_config_gen",
            "labels": ["rn: Fix(eos_cli_config_gen)"],
        },
    )

    # Add fixes in eos_designs
    categories_list.append(
        {
            "title": "Fixed issues in eos_designs",
            "labels": ["rn: Fix(eos_designs)"],
        },
    )
    # Add fixes in eos_cli_config_gen|eos_designs or eos_designs|eos_cli_config_gen
    categories_list.append(
        {
            "title": "Fixed issues in both eos_designs and eos_cli_config_gen",
            "labels": [
                "rn: Fix(eos_cli_config_gen|eos_designs)",
                "rn: Fix(eos_designs|eos_cli_config_gen)",
            ],
        },
    )

    # Add fixes in anta_runner
    categories_list.append(
        {
            "title": "Fixed issues in anta_runner",
            "labels": ["rn: Fix(anta_runner)"],
        },
    )

    # Add other fixes
    other_fixes_labels = [f"rn: Fix({scope})" for scope in other_scopes]
    other_fixes_labels.append("rn: Fix")

    categories_list.append(
        {
            "title": "Other Fixed issues",
            "labels": other_fixes_labels,
        },
    )

    doc_labels = [f"rn: Doc({scope})" for scope in SCOPES]
    doc_labels.append("rn: Doc")

    categories_list.append(
        {
            "title": "Documentation",
            "labels": doc_labels,
        },
    )

    # Add new features in eos_cli_config_gen
    categories_list.append(
        {
            "title": "New features and enhancements in eos_cli_config_gen",
            "labels": ["rn: Feat(eos_cli_config_gen)"],
        },
    )

    # Add new features in eos_designs
    categories_list.append(
        {
            "title": "New features and enhancements in eos_designs",
            "labels": ["rn: Feat(eos_designs)"],
        },
    )

    # Add new features in both eos_cli_config_gen|eos_designs or eos_designs|eos_cli_config_gen
    categories_list.append(
        {
            "title": "New features and enhancement in both eos_designs and eos_cli_config_gen",
            "labels": [
                "rn: Feat(eos_cli_config_gen|eos_designs)",
                "rn: Feat(eos_designs|eos_cli_config_gen)",
            ],
        },
    )

    # Add new features in anta_runner
    categories_list.append(
        {
            "title": "New features and enhancements in anta_runner",
            "labels": ["rn: Feat(anta_runner)"],
        },
    )

    # Add other new features
    other_feat_labels = [f"rn: Feat({scope})" for scope in other_scopes]
    other_feat_labels.append("rn: Feat")

    categories_list.append(
        {
            "title": "Other new features and enhancements",
            "labels": other_feat_labels,
        },
    )

    # Add all PyAVD changes
    pyavd_labels = [f"rn: {category}(pyavd)" for category in CATEGORIES]
    categories_list.append(
        {
            "title": "PyAVD Changes",
            "labels": pyavd_labels,
        },
    )

    # Add the catch all
    categories_list.append(
        {
            "title": "Other Changes",
            "labels": ["*"],
        },
    )
    with Path("release.yml").open("w", encoding="utf-8") as release_file:
        yaml.dump(
            {
                "changelog": {
                    "exclude": {"labels": exclude_list},
                    "categories": categories_list,
                },
            },
            release_file,
            Dumper=SafeDumper,
            sort_keys=False,
        )


================================================
FILE: .github/ignore-codespell-words
================================================
nd
iif
inout
claus
clos
beed
defauls
toi
pathc
ect
TE
crate


================================================
FILE: .github/ignore-codespell-words.md
================================================
# Codespell ignore file documentation

Ignored words are stored in the `.github/ignore-codespell-words` file. This file
intends to clarify why the words are ignored and if any action is pending

- nd
    Acronym for Neighbor Discovery
- iif
    Used as test data
- inout
    Key name `route_map_inout` in the EOS Config schema
    Maintainer name in some places in the code
- clos
    Used to design CLOS topology in documentation
- beed
    Used as example data
- defauls
    Used as test data
- TOI
    Acronym Transfer of Information
- pathc
    Used as test data
- ect
    Valid value for class_maps.qos.[].ecn in the EOS Config schema
- TE
    Traffic Engineering
- crate
    Name of package for Rust 🦀


================================================
FILE: .github/labeler.yml
================================================
---
"role: build_output_folders":
  - changed-files:
      - any-glob-to-any-file:
          - ansible_collections/arista/avd/roles/build_output_folders/*
          - ansible_collections/arista/avd/roles/build_output_folders/**/*

"role: eos_cli_config_gen":
  - changed-files:
      - any-glob-to-any-file:
          - ansible_collections/arista/avd/roles/eos_cli_config_gen/*
          - ansible_collections/arista/avd/roles/eos_cli_config_gen/**/*

"role: eos_config_deploy_eapi":
  - changed-files:
      - any-glob-to-any-file:
          - ansible_collections/arista/avd/roles/eos_config_deploy_eapi/*
          - ansible_collections/arista/avd/roles/eos_config_deploy_eapi/**/*

"role: eos_designs":
  - changed-files:
      - any-glob-to-any-file:
          - ansible_collections/arista/avd/roles/eos_designs/*
          - ansible_collections/arista/avd/roles/eos_designs/**/*

"role: eos_snapshot":
  - changed-files:
      - any-glob-to-any-file:
          - ansible_collections/arista/avd/roles/eos_snapshot/*
          - ansible_collections/arista/avd/roles/eos_snapshot/**/*

"filter: natural_sort":
  - changed-files:
      - any-glob-to-any-file:
          - ansible_collections/arista/avd/plugins/filter/natural_sort.py

"filter: is_in_filter":
  - changed-files:
      - any-glob-to-any-file:
          - ansible_collections/arista/avd/plugins/filter/is_in_filter.py

"filter: list_compress":
  - changed-files:
      - any-glob-to-any-file:
          - ansible_collections/arista/avd/plugins/filter/list_compress.py

"filter: defined":
  - changed-files:
      - any-glob-to-any-file:
          - ansible_collections/arista/avd/plugins/filter/defined.py

"type: Python filters":
  - changed-files:
      - any-glob-to-any-file:
          - ansible_collections/arista/avd/plugins/filter/*.py

"type: Ansible roles":
  - changed-files:
      - any-glob-to-any-file:
          - ansible_collections/arista/avd/plugins/roles/**/*.yml
          - ansible_collections/arista/avd/plugins/roles/**/*.j2

"state: Documentation role Updated":
  - changed-files:
      - any-glob-to-any-file:
          - 'ansible_collections/arista/avd/roles/**/*.md'

"type: documentation":
  - changed-files:
      - any-glob-to-any-file:
          - README.md
          - contributing.md
          - ansible_collections/arista/avd/*.md
          - ansible_collections/arista/avd/docs/*
          - ansible_collections/arista/avd/docs/**/*

"type: code quality":
  - changed-files:
      - any-glob-to-any-file:
          - .github/labeler.yml
          - .github/*
          - .github/**/*
          - development/docker-compose.yml
          - development/Makefile

"type: dependencies":
  - changed-files:
      - any-glob-to-any-file:
          - ansible_collections/arista/avd/requirements.txt
          - "**/pyproject.toml"

"state: CI Updated":
  - changed-files:
      - any-glob-to-any-file:
          - ansible_collections/arista/avd/extensions/molecule/*
          - ansible_collections/arista/avd/extensions/molecule/**/*


================================================
FILE: .github/pull_request_template.md
================================================
## Change Summary

<!-- Enter short PR description -->

## Related Issue(s)

Fixes #<ISSUE ID>

## Component(s) name

`arista.avd.<role-name>`

## Proposed changes
<!--- Describe your changes in detail -->
<!--- Describe data model implemented for new features -->

## How to test
<!--- Please describe in detail how you tested your changes. -->
<!--- Include details of your testing environment, and the tests you ran to -->

## Checklist

### User Checklist

<!-- Add your own checklist using MD syntax and by replacing N/A -->
- N/A

### Repository Checklist

<!--- Go over all the following points, and put an `x` in all the boxes that apply. -->
<!--- If you're unsure about any of these, don't hesitate to ask. We're here to help! -->
- [ ] My code has been rebased from devel before I start
- [ ] I have read the [**CONTRIBUTING**](https://avd.arista.com/stable/docs/contribution/overview.html) document.
- [ ] My change requires a change to the documentation and documentation have been updated accordingly.
- [ ] I have updated [molecule CI](https://github.com/aristanetworks/avd/tree/devel/ansible_collections/arista/avd/extensions/molecule) testing accordingly. (check the box if not applicable)


================================================
FILE: .github/release.yml
================================================
changelog:
  exclude:
    labels:
      - 'rn: Test(build_output_folders)'
      - 'rn: CI(build_output_folders)'
      - 'rn: Test(cv_deploy)'
      - 'rn: CI(cv_deploy)'
      - 'rn: Test(eos_cli_config_gen)'
      - 'rn: CI(eos_cli_config_gen)'
      - 'rn: Test(eos_config_deploy_eapi)'
      - 'rn: CI(eos_config_deploy_eapi)'
      - 'rn: Test(eos_designs)'
      - 'rn: CI(eos_designs)'
      - 'rn: Test(eos_snapshot)'
      - 'rn: CI(eos_snapshot)'
      - 'rn: Test(anta_runner)'
      - 'rn: CI(anta_runner)'
      - 'rn: Test(plugins)'
      - 'rn: CI(plugins)'
      - 'rn: Test(requirements)'
      - 'rn: CI(requirements)'
      - 'rn: Test(containers)'
      - 'rn: CI(containers)'
      - 'rn: Test(eos_designs|eos_cli_config_gen)'
      - 'rn: CI(eos_designs|eos_cli_config_gen)'
      - 'rn: Test(eos_cli_config_gen|eos_designs)'
      - 'rn: CI(eos_cli_config_gen|eos_designs)'
      - 'rn: Test(pyavd)'
      - 'rn: CI(pyavd)'
      - 'rn: Test'
      - 'rn: CI'
  categories:
    - title: Breaking Changes
      labels:
        - 'rn: Feat(build_output_folders)!'
        - 'rn: Feat(cv_deploy)!'
        - 'rn: Feat(eos_cli_config_gen)!'
        - 'rn: Feat(eos_config_deploy_eapi)!'
        - 'rn: Feat(eos_designs)!'
        - 'rn: Feat(eos_snapshot)!'
        - 'rn: Feat(anta_runner)!'
        - 'rn: Feat(plugins)!'
        - 'rn: Feat(requirements)!'
        - 'rn: Feat(containers)!'
        - 'rn: Feat(eos_designs|eos_cli_config_gen)!'
        - 'rn: Feat(eos_cli_config_gen|eos_designs)!'
        - 'rn: Fix(build_output_folders)!'
        - 'rn: Fix(cv_deploy)!'
        - 'rn: Fix(eos_cli_config_gen)!'
        - 'rn: Fix(eos_config_deploy_eapi)!'
        - 'rn: Fix(eos_designs)!'
        - 'rn: Fix(eos_snapshot)!'
        - 'rn: Fix(anta_runner)!'
        - 'rn: Fix(plugins)!'
        - 'rn: Fix(requirements)!'
        - 'rn: Fix(containers)!'
        - 'rn: Fix(eos_designs|eos_cli_config_gen)!'
        - 'rn: Fix(eos_cli_config_gen|eos_designs)!'
        - 'rn: Cut(build_output_folders)!'
        - 'rn: Cut(cv_deploy)!'
        - 'rn: Cut(eos_cli_config_gen)!'
        - 'rn: Cut(eos_config_deploy_eapi)!'
        - 'rn: Cut(eos_designs)!'
        - 'rn: Cut(eos_snapshot)!'
        - 'rn: Cut(anta_runner)!'
        - 'rn: Cut(plugins)!'
        - 'rn: Cut(requirements)!'
        - 'rn: Cut(containers)!'
        - 'rn: Cut(eos_designs|eos_cli_config_gen)!'
        - 'rn: Cut(eos_cli_config_gen|eos_designs)!'
        - 'rn: Revert(build_output_folders)!'
        - 'rn: Revert(cv_deploy)!'
        - 'rn: Revert(eos_cli_config_gen)!'
        - 'rn: Revert(eos_config_deploy_eapi)!'
        - 'rn: Revert(eos_designs)!'
        - 'rn: Revert(eos_snapshot)!'
        - 'rn: Revert(anta_runner)!'
        - 'rn: Revert(plugins)!'
        - 'rn: Revert(requirements)!'
        - 'rn: Revert(containers)!'
        - 'rn: Revert(eos_designs|eos_cli_config_gen)!'
        - 'rn: Revert(eos_cli_config_gen|eos_designs)!'
        - 'rn: Refactor(build_output_folders)!'
        - 'rn: Refactor(cv_deploy)!'
        - 'rn: Refactor(eos_cli_config_gen)!'
        - 'rn: Refactor(eos_config_deploy_eapi)!'
        - 'rn: Refactor(eos_designs)!'
        - 'rn: Refactor(eos_snapshot)!'
        - 'rn: Refactor(anta_runner)!'
        - 'rn: Refactor(plugins)!'
        - 'rn: Refactor(requirements)!'
        - 'rn: Refactor(containers)!'
        - 'rn: Refactor(eos_designs|eos_cli_config_gen)!'
        - 'rn: Refactor(eos_cli_config_gen|eos_designs)!'
        - 'rn: Bump(build_output_folders)!'
        - 'rn: Bump(cv_deploy)!'
        - 'rn: Bump(eos_cli_config_gen)!'
        - 'rn: Bump(eos_config_deploy_eapi)!'
        - 'rn: Bump(eos_designs)!'
        - 'rn: Bump(eos_snapshot)!'
        - 'rn: Bump(anta_runner)!'
        - 'rn: Bump(plugins)!'
        - 'rn: Bump(requirements)!'
        - 'rn: Bump(containers)!'
        - 'rn: Bump(eos_designs|eos_cli_config_gen)!'
        - 'rn: Bump(eos_cli_config_gen|eos_designs)!'
        - 'rn: Feat!'
        - 'rn: Fix!'
        - 'rn: Cut!'
        - 'rn: Revert!'
        - 'rn: Refactor!'
        - 'rn: Bump!'
    - title: Fixed issues in eos_cli_config_gen
      labels:
        - 'rn: Fix(eos_cli_config_gen)'
    - title: Fixed issues in eos_designs
      labels:
        - 'rn: Fix(eos_designs)'
    - title: Fixed issues in both eos_designs and eos_cli_config_gen
      labels:
        - 'rn: Fix(eos_cli_config_gen|eos_designs)'
        - 'rn: Fix(eos_designs|eos_cli_config_gen)'
    - title: Fixed issues in anta_runner
      labels:
        - 'rn: Fix(anta_runner)'
    - title: Other Fixed issues
      labels:
        - 'rn: Fix(build_output_folders)'
        - 'rn: Fix(cv_deploy)'
        - 'rn: Fix(eos_config_deploy_eapi)'
        - 'rn: Fix(eos_snapshot)'
        - 'rn: Fix(plugins)'
        - 'rn: Fix(requirements)'
        - 'rn: Fix(containers)'
        - 'rn: Fix'
    - title: Documentation
      labels:
        - 'rn: Doc(build_output_folders)'
        - 'rn: Doc(cv_deploy)'
        - 'rn: Doc(eos_cli_config_gen)'
        - 'rn: Doc(eos_config_deploy_eapi)'
        - 'rn: Doc(eos_designs)'
        - 'rn: Doc(eos_snapshot)'
        - 'rn: Doc(anta_runner)'
        - 'rn: Doc(plugins)'
        - 'rn: Doc(requirements)'
        - 'rn: Doc(containers)'
        - 'rn: Doc(eos_designs|eos_cli_config_gen)'
        - 'rn: Doc(eos_cli_config_gen|eos_designs)'
        - 'rn: Doc(pyavd)'
        - 'rn: Doc'
    - title: New features and enhancements in eos_cli_config_gen
      labels:
        - 'rn: Feat(eos_cli_config_gen)'
    - title: New features and enhancements in eos_designs
      labels:
        - 'rn: Feat(eos_designs)'
    - title: New features and enhancement in both eos_designs and eos_cli_config_gen
      labels:
        - 'rn: Feat(eos_cli_config_gen|eos_designs)'
        - 'rn: Feat(eos_designs|eos_cli_config_gen)'
    - title: New features and enhancements in anta_runner
      labels:
        - 'rn: Feat(anta_runner)'
    - title: Other new features and enhancements
      labels:
        - 'rn: Feat(build_output_folders)'
        - 'rn: Feat(cv_deploy)'
        - 'rn: Feat(eos_config_deploy_eapi)'
        - 'rn: Feat(eos_snapshot)'
        - 'rn: Feat(plugins)'
        - 'rn: Feat(requirements)'
        - 'rn: Feat(containers)'
        - 'rn: Feat'
    - title: PyAVD Changes
      labels:
        - 'rn: Feat(pyavd)'
        - 'rn: Fix(pyavd)'
        - 'rn: Cut(pyavd)'
        - 'rn: Doc(pyavd)'
        - 'rn: Bump(pyavd)'
        - 'rn: Revert(pyavd)'
        - 'rn: Refactor(pyavd)'
    - title: Other Changes
      labels:
        - '*'


================================================
FILE: .github/workflows/codecov.yml
================================================
---
name: Publish coverage to CodeCov
"on":
  workflow_call:

jobs:
  codecov:
    name: Upload coverage to CodeCov
    if: github.repository == 'aristanetworks/avd'
    runs-on: ubuntu-latest
    # These permissions are mandatory for OIDC to work
    permissions:
      id-token: write
      contents: read
    steps:
      - name: Checkout Code
        uses: actions/checkout@v6

      - name: Download coverage from pytest
        continue-on-error: true
        uses: actions/download-artifact@v8
        with:
          name: pytest-coverage

      - name: Download coverage from ansible-test units
        continue-on-error: true
        uses: actions/download-artifact@v8
        with:
          name: ansible-test-units-coverage

      - name: Download coverage from ansible-test integration
        continue-on-error: true
        uses: actions/download-artifact@v8
        with:
          name: ansible-test-integration-coverage

      - name: Upload coverage to Codecov
        uses: codecov/codecov-action@57e3a136b779b570ffcdbf80b3bdc90e7fab3de2
        with:
          use_oidc: true
          fail_ci_if_error: false


================================================
FILE: .github/workflows/container_build_base.yml
================================================
---
name: Build base container

"on":
  push:
    branches:
      - devel
    paths:
      - containers/base/**
      - .github/workflows/container_build_template.yml
      - .github/workflows/container_build_base.yml
  workflow_dispatch:
    # TODO: not fixing in my PR but it seems this property is not valid.
    branches:
      - devel

jobs:
  build_base:
    if: github.repository == 'aristanetworks/avd'
    uses: ./.github/workflows/container_build_template.yml
    strategy:
      matrix:
        container_name: [base]
        python_version: ["3.10", "3.11", "3.12", "3.13", "3.14"]
        include:
          - python_version: "3.11"
            container_tags: latest
    with:
      container_name: ${{ matrix.container_name }}
      python_version: ${{ matrix.python_version }}
      container_tags: ${{ matrix.container_tags }}


================================================
FILE: .github/workflows/container_build_dev.yml
================================================
---
name: Build dev container

"on":
  push:
    branches:
      - devel
    paths:
      - containers/dev/**
      - .github/workflows/container_build_template.yml
      - .github/workflows/container_build_dev.yml
  workflow_dispatch:
    branches:
      - devel

jobs:
  build_dev_container:
    if: github.repository == 'aristanetworks/avd'
    uses: ./.github/workflows/container_build_template.yml
    strategy:
      matrix:
        container_name: [dev]
        python_version: ["3.10", "3.11", "3.12", "3.13", "3.14"]
        include:
          - python_version: "3.11"
            container_tags: latest
    with:
      container_name: ${{ matrix.container_name }}
      python_version: ${{ matrix.python_version }}
      container_tags: ${{ matrix.container_tags }}


================================================
FILE: .github/workflows/container_build_fix.yml
================================================
# this workflow can be triggered manually to initiate any build if it fails
name: Manual container build

"on":
  workflow_dispatch:
    inputs:
      container_name:
        type: choice
        required: true
        description: "select image type to build"
        options: [universal, dev, base]
        default: "universal"
      container_tags:
        type: string
        required: false
        description: "container image tags"
        default: "test"  # this is a special tag that can be used for testing
      python_version:
        type: choice
        required: true
        description: "select Python version"
        options: ["3.10", "3.11", "3.12", "3.13", "3.14"]
        default: "3.11"
      github_tag:
        type: string
        required: true
        description: "Github tag/branch that will be used to build the image. For example: devel, v5.3.0"

jobs:
  manual_container_build:
    uses: ./.github/workflows/container_build_template.yml
    with:
      container_name: ${{ inputs.container_name }}
      container_tags: ${{ inputs.container_tags }}
      python_version: ${{ inputs.python_version }}
      github_tag: ${{ inputs.github_tag }}


================================================
FILE: .github/workflows/container_build_template.yml
================================================
---
# This workflow file is the template
# that will be triggered by specific container build workflows.

name: Reusable build container workflow

env:
  # BUILDX_NO_DEFAULT_ATTESTATIONS must be set to build only arm64 and amd64 images.
  # The devcontainers/ci@v0.3 build will fail if this env variable is not set.
  BUILDX_NO_DEFAULT_ATTESTATIONS: 1

"on":
  workflow_call:
    inputs:
      # Container name, e.g. "base", "dev", etc.
      container_name:
        required: true
        type: string
      # Container tags, e.g. "latest,python3.11" or "latest,python3.11-avd4.1.0".
      # Container tags are optional as they are auto-generated if not provided.
      container_tags:
        required: false
        type: string
      # Platform, e.g. "linux/amd64", "linux/arm64/v8".
      # "default" is just fine if there is no intention to release a special build.
      platform:
        required: false
        type: string
        default: linux/arm64/v8,linux/amd64
      # From image, e.g. "python", "alpine", etc.
      # Currently we only support python-slim, so this is a future knob.
      from_image:
        required: false
        type: string
        default: python
      # From variant, e.g. "3.12-slim-bookworm".
      # This is auto-generated for python-slim based builds.
      # Only specify for special builds.
      from_variant:
        required: false
        type: string
      username:
        required: false
        type: string
        default: avd
      user_id:
        required: false
        type: string
        default: 1000
      group_id:
        required: false
        type: string
        default: 1000
      python_version:
        required: true
        type: string
      # github_tag is only required for manual container build
      github_tag:
        required: false
        type: string
        default: ""

jobs:
  build_image:
    runs-on: ubuntu-24.04
    steps:
      - name: Starting container build
        run: echo "Starting container build. Be patient. 🐢"
      - name: Checkout code ✅
        uses: actions/checkout@v6
      # Build image tags based on Python version and AVD version (if defined).
      # If container_tags is not defined, then image_tags will be auto-generated.
      # If container_tags is latest, it will be added to auto-generated image_tags.
      # If container_tags is defined and not latest, it will be used as-is.
      - name: Build image tags 🏷️
        id: build-tags
        run: |
          if [ -z "${{ inputs.container_tags }}" ]; then
            case ${{ inputs.container_name }} in
              base)
                echo "image_tags=python${{ inputs.python_version }}" >> $GITHUB_OUTPUT
                echo "image_version=python${{ inputs.python_version }}" >> $GITHUB_OUTPUT
                ;;
              dev)
                echo "image_tags=python${{ inputs.python_version }}" >> $GITHUB_OUTPUT
                echo "image_version=python${{ inputs.python_version }}" >> $GITHUB_OUTPUT
                ;;
              *)
                echo "image_tags=python${{ inputs.python_version }}-avd-${{ github.ref_name }}" >> $GITHUB_OUTPUT
                echo "image_version=python${{ inputs.python_version }}-avd-${{ github.ref_name }}" >> $GITHUB_OUTPUT
                ;;
            esac
          else
            if [ "${{ inputs.container_tags }}" == "latest" ]; then
              case ${{ inputs.container_name }} in
                base)
                  echo "image_tags=latest,python${{ inputs.python_version }}" >> $GITHUB_OUTPUT
                  echo "image_version=python${{ inputs.python_version }}" >> $GITHUB_OUTPUT
                  ;;
                dev)
                  echo "image_tags=latest,python${{ inputs.python_version }}" >> $GITHUB_OUTPUT
                  echo "image_version=python${{ inputs.python_version }}" >> $GITHUB_OUTPUT
                  ;;
                *)
                  echo "image_tags=latest,python${{ inputs.python_version }}-avd-${{ github.ref_name }}" >> $GITHUB_OUTPUT
                  echo "image_version=python${{ inputs.python_version }}-avd-${{ github.ref_name }}" >> $GITHUB_OUTPUT
                  ;;
              esac
            else
              echo "image_tags=${{ inputs.container_tags }}" >> $GITHUB_OUTPUT
            fi
          fi

      - name: Generate from_image and from_variant parameters 🐍
        id: generate-from-parameters
        # Logic:
        # 1) Only python-slim images are supported at the moment.
        # 2) Base image must be built first from official python image.
        # 3) All other images will be built from the base image.
        # 4) "from_image" and "from_variant" can be passed transparently to the build step,
        #    but that is not implemented currently.
        run: |
          if [ "${{ inputs.from_image }}" == "python" ]; then
            if [ "${{ inputs.container_name }}" == "base" ]; then
              echo "from_image=${{ inputs.from_image }}" >> $GITHUB_OUTPUT
              echo "from_variant=${{ inputs.python_version }}-slim-bookworm" >> $GITHUB_OUTPUT
            else
              echo "from_image=ghcr.io/${{ github.repository }}/base" >> $GITHUB_OUTPUT
              echo "from_variant=python${{ inputs.python_version }}" >> $GITHUB_OUTPUT
            fi
          else
            echo "Only python-slim images are supported at the moment. Exiting."
            exit 1
          fi

      - name: Find ansible and pyavd install location
        id: find-install-locations
        run: |
          if [ -z "${{ inputs.github_tag }}" ]; then
            PYAVD_INSTALL_LOCATION="git+https://github.com/${{ github.repository }}.git@${{ github.ref_name }}#subdirectory=python-avd"
            ANSIBLE_INSTALL_LOCATION="git+https://github.com/${{ github.repository }}.git#/ansible_collections/arista/avd/,${{ github.ref_name }}"
            echo "ansible_install_location=$ANSIBLE_INSTALL_LOCATION" >> $GITHUB_OUTPUT
            echo "pyavd_install_location=$PYAVD_INSTALL_LOCATION" >> $GITHUB_OUTPUT
          else
            PYAVD_INSTALL_LOCATION="git+https://github.com/${{ github.repository }}.git@${{ inputs.github_tag }}#subdirectory=python-avd"
            ANSIBLE_INSTALL_LOCATION="git+https://github.com/${{ github.repository }}.git#/ansible_collections/arista/avd/,${{ inputs.github_tag }}"
            echo "ansible_install_location=$ANSIBLE_INSTALL_LOCATION" >> $GITHUB_OUTPUT
            echo "pyavd_install_location=$PYAVD_INSTALL_LOCATION" >> $GITHUB_OUTPUT
          fi

      # This check is temporarily deactivated, will be rewised in later PRs
      #
      # - name: Check if image is already present
      #   # this step will check if image was already pushed before to avoid re-writing
      #   # also if it's not a base image, this step will verify presence of the corresponding base image
      #   id: check-image-presence
      #   run: |
      #     echo "not_present=0" >> $GITHUB_OUTPUT
      #     for tag in $(echo ${{ steps.build-tags.outputs.image_tags }} | sed "s/,/ /g")
      #     do
      #       ( docker manifest inspect ghcr.io/${{ github.repository }}/${{ inputs.container_name }}:${tag} &>/dev/null ) || echo "not_present=1" >> $GITHUB_OUTPUT
      #     done
      #     # check if base image is present
      #     if [ "${{ inputs.container_name }}" != "base" ]; then
      #       echo "Verifying if base image is present..."
      #       docker manifest inspect ghcr.io/${{ github.repository }}/base:python${{ inputs.python_version }} >/dev/null
      #     fi

      - name: Setup QEMU for multi-arch builds 🏗️
        # if: ${{ steps.check-image-presence.outputs.not_present == '1' }}
        uses: docker/setup-qemu-action@v4
        with:
          platforms: ${{ inputs.platform }}
          image: tonistiigi/binfmt:qemu-v9.2.2-52
          # workaround for Failed to CreateCacheEntry warning
          cache-image: false

      - name: Setup Docker buildX for multi-arch builds 🏗️
        # if: ${{ steps.check-image-presence.outputs.not_present == '1' }}
        uses: docker/setup-buildx-action@v4

      - name: Login to Docker Hub 🗝️
        # if: ${{ steps.check-image-presence.outputs.not_present == '1' }}
        uses: docker/login-action@v4
        with:
          registry: ghcr.io
          username: ${{ github.actor }}
          password: ${{ secrets.GITHUB_TOKEN }}

      - name: Get RFC3339 timestamp for org.opencontainers.image.created label ⌚
        id: rfc3339
        run: echo "timestamp=$(date --rfc-3339=seconds)" >> $GITHUB_OUTPUT

      - name: Pre-build dev container image 🔨
        # if: ${{ steps.check-image-presence.outputs.not_present == '1' }}
        uses: devcontainers/ci@v0.3
        env:
          FROM_IMAGE: ${{ steps.generate-from-parameters.outputs.from_image }}
          FROM_VARIANT: ${{ steps.generate-from-parameters.outputs.from_variant }}
          ANSIBLE_INSTALL_LOCATION: ${{ steps.find-install-locations.outputs.ansible_install_location }}
          PYAVD_INSTALL_LOCATION: ${{ steps.find-install-locations.outputs.pyavd_install_location }}
          USERNAME: ${{ inputs.username }}
          UID: ${{ inputs.user_id }}
          GID: ${{ inputs.group_id }}
          RFC3339_TIMESTAMP: ${{ steps.rfc3339.outputs.timestamp }}
          IMAGE_VERSION: ${{ steps.build-tags.outputs.image_version }}
        with:
          subFolder: containers/${{ inputs.container_name }}
          imageName: ghcr.io/${{ github.repository }}/${{ inputs.container_name }}
          imageTag: ${{ steps.build-tags.outputs.image_tags }}
          platform: ${{ inputs.platform }}
          push: always


================================================
FILE: .github/workflows/container_build_universal.yml
================================================
---
name: Build universal container

"on":
  push:
    branches:
      - devel
    paths:
      - containers/universal/**
      - .github/workflows/container_build_template.yml
      - .github/workflows/container_build_universal.yml
      - ansible_collections/arista/avd/**
  workflow_dispatch:
    branches:
      - devel
  release:
    types: [published]

jobs:
  build_universal_container:
    if: github.repository == 'aristanetworks/avd'
    uses: ./.github/workflows/container_build_template.yml
    strategy:
      matrix:
        container_name: [universal]
        python_version: ["3.10", "3.11", "3.12", "3.13", "3.14"]
        include:
          - python_version: "3.11"
            container_tags: latest
    with:
      container_name: ${{ matrix.container_name }}
      python_version: ${{ matrix.python_version }}
      container_tags: ${{ matrix.container_tags }}


================================================
FILE: .github/workflows/new-cvp-integration.yml
================================================
---
name: "CV integration testing"

# "on": pull_request
"on": workflow_dispatch

concurrency:
  group: ${{ github.workflow }}-${{ github.head_ref }}

env:
  # Set -vvv is ACTIONS_STEP_DEBUG is set
  # Apparently it is set in secrets when running with debug
  ANSIBLE_VERBOSITY: ${{ secrets.ACTIONS_STEP_DEBUG && 3 || 0 }}
  AVD_NEVER_RUN_FROM_SOURCE: 1
  PY_COLORS: 1 # allows molecule colors to be passed to GitHub Actions
  ANSIBLE_FORCE_COLOR: 1 # allows ansible colors to be passed to GitHub Actions

jobs:
  # -------------------------------------- #
  # Build PyAVD wheel and upload artifact
  # -------------------------------------- #
  build_pyavd:
    name: Build pyavd
    runs-on: ubuntu-latest
    outputs:
      wheel_file: ${{ steps.build_step.outputs.wheel_file }}
    steps:
      - uses: actions/checkout@v6
      - uses: actions/setup-python@v6
        with:
          python-version: |
            3.12
      - name: Create pyavd wheel and output wheel path
        id: build_step
        working-directory: ./python-avd
        run: |
          pip install build
          python -m build --wheel
          WHEEL_FILE=$(find ./dist/*.whl -print0 -type f | xargs -0 -n 1 basename)
          echo "wheel_file=/tmp/pyavd/$WHEEL_FILE" >> "$GITHUB_OUTPUT"
      - name: Upload pyavd artifact
        uses: actions/upload-artifact@v7
        with:
          name: pyavd
          path: ./python-avd/dist/*.whl

  # ----------------------------------------------- #
  # CV INTEGRATION MOLECULE TEST FOR CV_WORKFLOW    #
  # ----------------------------------------------- #
  molecule_cv_workflow:
    name: Run molecule test for new cvp integration
    runs-on: ubuntu-latest
    needs: [build_pyavd]
    strategy:
      fail-fast: true
      matrix:
        avd_scenario:
          - "cv_workflow"
        ansible_version:
          - "ansible-core<2.21.0 --upgrade"
    steps:
      - uses: actions/checkout@v6
      - name: Download pyavd Artifact
        uses: actions/download-artifact@v8
        with:
          name: pyavd
          path: /tmp/pyavd/
      - name: Install pyavd and Ansible requirements
        run: |
          python -m pip install "${{ matrix.ansible_version}}" "${{ needs.build_pyavd.outputs.wheel_file }}[ansible-collection]" --group molecule
          ansible-galaxy install -r "ansible_collections/arista/avd/collections.yml"
      - name: Run molecule test
        working-directory: ansible_collections/arista/avd
        run: |
          molecule test --scenario-name ${{ matrix.avd_scenario }}
      - name: Check GIT status
        run: |
          sh .github/check-git-status.sh

  # ------------------------------------------- #
  # CV INTEGRATION MOLECULE TEST FOR CV_DEPLOY  #
  # ------------------------------------------- #
  molecule_cv_deploy:
    name: Run molecule test for new cvp integration
    runs-on: ubuntu-latest
    needs: [build_pyavd]
    strategy:
      fail-fast: true
      matrix:
        avd_scenario:
          - "cv_deploy"
        ansible_version:
          - "ansible-core<2.21.0 --upgrade"
    steps:
      - uses: actions/checkout@v6
      - name: Download pyavd Artifact
        uses: actions/download-artifact@v8
        with:
          name: pyavd
          path: /tmp/pyavd/
      - name: Install pyavd and Ansible requirements
        run: |
          python -m pip install "${{ matrix.ansible_version}}" "${{ needs.build_pyavd.outputs.wheel_file }}[ansible-collection]" --group molecule
          ansible-galaxy install -r "ansible_collections/arista/avd/collections.yml"
      - name: Run molecule test
        working-directory: ansible_collections/arista/avd
        run: |
          molecule test --scenario-name ${{ matrix.avd_scenario }}
      - name: Check GIT status
        run: |-
          sh .github/check-git-status.sh


================================================
FILE: .github/workflows/offline-links-check.yml
================================================
---
name: Check links offline for dead targets

"on":
  # schedule every day at 3 AM on devel
  schedule:
    - cron: "0 3 * * *"
  # Allow for manual trigger on the selected branch in UI
  workflow_dispatch:

concurrency:
  group: ${{ github.workflow }}-${{ github.head_ref }}
  cancel-in-progress: true

jobs:
  offline_link_check:
    name: Validate mkdoc content
    if: github.repository == 'aristanetworks/avd'
    runs-on: ubuntu-latest
    timeout-minutes: 15
    steps:
      - uses: actions/checkout@v6
      - name: Start docker compose stack
        run: |
          docker compose -f development/docker-compose.yml up -d webdoc_avd
          docker compose -f development/docker-compose.yml ps
      - name: "Test connectivity to mkdoc server"
        run: |
          bash -c 'while [[ '$(curl -s -o /dev/null -w ''%{http_code}'' 127.0.0.1:8000)' != '200' ]]; do sleep 5; done'
      - name: Check links for 404
        # TODO: AVD 6.0 - remove avd.arista.com/6.x
        run: |
          docker run --network container:webdoc_avd raviqqe/muffet:2.10.9 http://127.0.0.1:8000/ -f \
            --buffer-size 8192 \
            --exclude '.*fonts.googleapis.com.*' \
            --exclude '.*fonts.gstatic.com.*' \
            --exclude '.*tools.ietf.org.*' \
            --exclude '.*edit.*' \
            --exclude '.*docs.github.com.*' \
            --exclude 'twitter.com' \
            --exclude 'www.docker.com' \
            --exclude 'hub.docker.com' \
            --exclude 'tech-library.arista.com' \
            --exclude 'www.arista.com.*' \
            --exclude 'www.gnu.org' \
            --exclude 'https://developers.redhat.com' \
            --exclude 'https://avd.arista.com/6.x' \
            --max-connections-per-host 30 \
            --max-redirections 3 \
            --rate-limit 1 \
            --timeout 30
      - name: Stop docker-compose stack
        run: |
          docker compose -f development/docker-compose.yml down


================================================
FILE: .github/workflows/pull-request-comment.yml
================================================
---
name: "Pull Request Comment"

"on":
  pull_request_target:
    types:
      - opened

jobs:
  ###################################################
  # Add comment with useful links for the reviewers
  ###################################################

  comment:
    runs-on: ubuntu-latest
    permissions:
      issues: write
      pull-requests: write

    steps:
      - uses: actions/github-script@v9
        env:
          BODY: |
            Review docs on [Read the Docs](https://ansible-avd--${{ github.event.pull_request.number }}.org.readthedocs.build/en/${{ github.event.pull_request.number }}/)

            To test this pull request:

            \`\`\`sh
            # Create virtual environment for this testing below the current directory
            python -m venv test-avd-pr-${{ github.event.pull_request.number }}
            # Activate the virtual environment
            source test-avd-pr-${{ github.event.pull_request.number }}/bin/activate
            # Install all requirements including PyAVD
            pip install "pyavd[ansible] @ git+${{ github.event.pull_request.head.repo.clone_url }}@${{ github.event.pull_request.head.ref }}#subdirectory=python-avd" --force
            # Point Ansible collections path to the Python virtual environment
            export ANSIBLE_COLLECTIONS_PATH=$VIRTUAL_ENV/ansible_collections
            # Install Ansible collection
            python -m ansible.cli.galaxy collection install git+${{ github.event.pull_request.head.repo.clone_url }}#/ansible_collections/arista/avd/,${{ github.event.pull_request.head.ref }} --force
            cd test-avd-pr-${{ github.event.pull_request.number }}
            # Run your playbook using \`python -m ansible.cli.playbook path/to/playbook.yml ...\`
            \`\`\`

            You can also test this PR using AVD playground:
            - Rebase your branch to makes sure it is up-to-date and has latest lab topologies for example inventories
            - Authenticate on [labs.arista.com](https://labs.arista.com/). Use your email! Not login.
            - [Start the playground](https://labs.arista.com/launch?lab_type=avd-playground&origin=tech-lib)
            - In the lab selector UI pick "I want to use a specific AVD fork"
            - Enter following parameters:

            \`\`\`text
            GitHub org: ${{ github.event.pull_request.head.repo.owner.login }}
            Repository name: ${{ github.event.pull_request.head.repo.name }}
            Branch: ${{ github.event.pull_request.head.ref }}
            \`\`\`

            - Select an example inventory to test the PR
            - Once the AVD Playground setup will be finished, type \`make start\` and test anything once the lab is up

        with:
          script: |-
            github.rest.issues.createComment({
              issue_number: context.issue.number,
              owner: context.repo.owner,
              repo: context.repo.repo,
              body: `${{ env.BODY }}`
            })


================================================
FILE: .github/workflows/pull-request-conflict.yml
================================================
name: "PR Conflicts checker"
"on":
  pull_request_target:
    types: [synchronize]

jobs:
  Conflict_Check:
    name: "Check PR status: conflicts and resolution"
    runs-on: ubuntu-latest
    steps:
      - name: Check if PRs are dirty
        uses: eps1lon/actions-label-merge-conflict@releases/2.x
        with:
          dirtyLabel: "state: conflict"
          removeOnDirtyLabel: "state: conflict resolved"
          repoToken: "${{ secrets.GITHUB_TOKEN }}"
          commentOnDirty: "This pull request has conflicts, please resolve those before we can evaluate the pull request."
          commentOnClean: "Conflicts have been resolved. A maintainer will review the pull request shortly."


================================================
FILE: .github/workflows/pull-request-management.yml
================================================
---
name: "Collection code testing"

"on":
  pull_request:
  merge_group:
    types: [checks_requested]

  push:
    branches:
      - devel

concurrency:
  # For PRs the head_ref will be used. For Merge Queues (merge_group) we fallback to run_id.
  group: ${{ github.workflow }}-${{ github.head_ref || github.run_id }}
  cancel-in-progress: true

env:
  # Set -vvv is ACTIONS_STEP_DEBUG is set
  # Apparently it is set in secrets when running with debug
  ANSIBLE_VERBOSITY: ${{ secrets.ACTIONS_STEP_DEBUG && 3 || 0 }}
  AVD_NEVER_RUN_FROM_SOURCE: 1
  PY_COLORS: 1 # allows molecule colors to be passed to GitHub Actions
  ANSIBLE_FORCE_COLOR: 1 # allows ansible colors to be passed to GitHub Actions

jobs:
  required-checks: # Added in github settings as a required check before merge. This ensures that CI finishes before merge queue is merged.
    needs:
      - python_type_checking
      - python_requirements
      - molecule_eos_cli_config_gen
      - molecule_eos_designs
      - molecule_eos_designs_minimum_requirements
      - molecule_anta_runner
      - ansible_test_sanity
      - ansible_test_units
      - ansible_test_integration
      - galaxy_importer
      - ansible_lint
      - test_pyavd
      - codespell
      - j2lint
      - markdownlint
      - check_schema_tables_in_docs
    if: always()
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v6
      - run: echo '${{ toJSON(needs) }}' | jq -e 'to_entries | all(.value.result == "success" or .value.result == "skipped")'

  file-changes:
    runs-on: ubuntu-latest
    outputs:
      eos_design: ${{ steps.filter.outputs.eos_design }}
      config_gen: ${{ steps.filter.outputs.config_gen }}
      pyavd: ${{ steps.filter.outputs.pyavd }}
      requirements: ${{ steps.filter.outputs.requirements }}
      anta_runner: ${{ steps.filter.outputs.anta_runner }}
    steps:
      - uses: actions/checkout@v6
      - uses: dorny/paths-filter@v4
        id: filter
        with:
          filters: |
            eos_design:
              - 'ansible_collections/arista/avd/roles/eos_designs/*'
              - 'ansible_collections/arista/avd/roles/eos_designs/**/*'
              - '.github/workflows/pull-request-management.yml'
              - 'ansible_collections/arista/avd/extensions/molecule/*'
              - 'ansible_collections/arista/avd/extensions/molecule/**/*'
              - 'ansible_collections/arista/avd/examples/*'
              - 'ansible_collections/arista/avd/examples/**/*'
              - 'python-avd/pyavd/_eos_designs/*'
              - 'python-avd/pyavd/_eos_designs/**/*'
            config_gen:
              - 'ansible_collections/arista/avd/roles/eos_cli_config_gen/*'
              - 'ansible_collections/arista/avd/roles/eos_cli_config_gen/**/*'
              - '.github/workflows/pull-request-management.yml'
              - 'ansible_collections/arista/avd/extensions/molecule/eos_cli_config_gen*/*'
              - 'ansible_collections/arista/avd/extensions/molecule/eos_cli_config_gen*/**/*'
              - 'python-avd/pyavd/_eos_cli_config_gen/*'
              - 'python-avd/pyavd/_eos_cli_config_gen/**/*'
            plugins:
              - 'ansible_collections/arista/avd/plugins/filter/**'
              - 'ansible_collections/arista/avd/plugins/test/**'
            requirements:
              - 'ansible_collections/arista/avd/requirements.txt'
              - 'ansible_collections/arista/avd/meta/runtime.yml'
              - 'ansible_collections/arista/avd/requirements.yml'
              - '.github/workflows/pull-request-management.yml'
              - 'sonar-project.properties'
              - '.pre-commit-config.yaml'
            pyavd:
              - 'python-avd/**/*'
            anta_runner:
              - 'ansible_collections/arista/avd/roles/anta_runner/*'
              - 'ansible_collections/arista/avd/roles/anta_runner/**/*'
              - 'python-avd/pyavd/_anta/*'
              - 'python-avd/pyavd/_anta/**/*'
              - 'python-avd/pyavd/api/_anta/*'
              - 'python-avd/pyavd/api/_anta/**/*'
              - 'python-avd/pyavd/get_device_anta_catalog.py'

  # -------------------------------------- #
  # Build PyAVD wheel and upload artifact
  # -------------------------------------- #
  build_pyavd:
    name: Build pyavd
    runs-on: ubuntu-latest
    outputs:
      wheel_file: ${{ steps.build_step.outputs.wheel_file }}
    steps:
      - uses: actions/checkout@v6
      - uses: actions/setup-python@v6
        with:
          python-version: |
            3.12
      - name: Create pyavd wheel and output wheel path
        id: build_step
        working-directory: ./python-avd
        run: |
          pip install build
          python -m build --wheel
          WHEEL_FILE=$(find ./dist/*.whl -print0 -type f | xargs -0 -n 1 basename)
          echo "wheel_file=/tmp/pyavd/$WHEEL_FILE" >> "$GITHUB_OUTPUT"
      - name: Upload pyavd artifact
        uses: actions/upload-artifact@v7
        with:
          name: pyavd
          path: ./python-avd/dist/*.whl

  # -------------------------------------------- #
  # Python type checking not covered in pre-commit
  # -------------------------------------------- #
  python_type_checking:
    name: Python Linting not covered in pre-commit
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v6
      - uses: actions/setup-python@v6
        with:
          python-version: "3.12"
      - name: Install pyavd and Ansible requirements
        run: |
          pip install --group dev --upgrade
      - name: PyRight static type checker
        # Specific SHA as allowed by github org admins
        uses: jakebailey/pyright-action@6cabc0f01c4994be48fd45cd9dbacdd6e1ee6e5e

  # ----------------------------------- #
  # Test Requirements
  # ----------------------------------- #
  python_requirements:
    name: Test Python requirements installation
    runs-on: ubuntu-latest
    needs: [build_pyavd, file-changes]
    if: needs.file-changes.outputs.requirements == 'true'
    strategy:
      fail-fast: true
      matrix:
        python_version:
          - "3.10"
          - "3.11"
          - "3.12"
          - "3.13"
          - "3.14"
    steps:
      - uses: actions/checkout@v6
      - name: Set up Python 3
        uses: actions/setup-python@v6
        with:
          python-version: ${{ matrix.python_version }}
      - name: Download pyavd Artifact
        uses: actions/download-artifact@v8
        with:
          name: pyavd
          path: /tmp/pyavd/
      - name: "Install Python requirements"
        run: |
          pip install "${{ needs.build_pyavd.outputs.wheel_file }}" --group dev --upgrade

  # ----------------------------------- #
  # EOS CLI CONFIG GEN MOLECULE
  # ----------------------------------- #
  molecule_eos_cli_config_gen:
    name: Validate eos_cli_config_gen
    runs-on: ubuntu-latest
    needs: [build_pyavd, file-changes]
    if: |
      needs.file-changes.outputs.config_gen == 'true' ||
      needs.file-changes.outputs.requirements == 'true' ||
      github.event_name == 'merge_group'
    strategy:
      fail-fast: true
      matrix:
        avd_scenario:
          - "eos_cli_config_gen"
          - "eos_cli_config_gen_deprecated_vars"
          - "eos_cli_config_gen_negative_unit_tests"
        ansible_version:
          - "ansible-core<2.21.0"
        python_version:
          - "3.12"
        # Also test minimum ansible version for one scenario.
        include:
          - avd_scenario: "eos_cli_config_gen"
            ansible_version: "ansible-core==2.16.0"
            python_version: "3.11"
    steps:
      - uses: actions/checkout@v6
      - name: Download pyavd Artifact
        uses: actions/download-artifact@v8
        with:
          name: pyavd
          path: /tmp/pyavd/
      - name: Set up Python ${{ matrix.python_version }}
        uses: actions/setup-python@v6
        with:
          python-version: ${{ matrix.python_version }}
      - name: Install pyavd and Ansible requirements
        run: |
          python -m pip install "${{ matrix.ansible_version}}" "${{ needs.build_pyavd.outputs.wheel_file }}[ansible-collection]" --group molecule
      - name: Run molecule test
        working-directory: ansible_collections/arista/avd
        run: |
          molecule test --scenario-name ${{ matrix.avd_scenario }}
      - name: Check GIT status
        run: |
          sh .github/check-git-status.sh

  # ----------------------------------- #
  # EOS Design MOLECULE
  # ----------------------------------- #
  molecule_eos_designs:
    name: Validate eos_designs
    runs-on: ubuntu-latest
    needs: [build_pyavd, file-changes]
    if: |
      needs.file-changes.outputs.eos_design == 'true' ||
      needs.file-changes.outputs.config_gen == 'true' ||
      needs.file-changes.outputs.requirements == 'true' ||
      github.event_name == 'merge_group'
    strategy:
      fail-fast: true
      matrix:
        avd_scenario:
          - "ansible_only"
          - "digital_twin"
          - "eos_designs_deprecated_vars"
          - "eos_designs-l2ls"
          - "eos_designs-mpls-isis-sr-ldp"
          - "eos_designs-twodc-5stage-clos"
          - "eos_designs_unit_tests"
          - "evpn_underlay_ebgp_overlay_ebgp"
          - "evpn_underlay_isis_overlay_ibgp"
          - "evpn_underlay_ospf_overlay_ebgp"
          - "evpn_underlay_rfc5549_overlay_ebgp"
          - "example-campus-fabric"
          - "example-dual-dc-l3ls"
          - "example-isis-ldp-ipvpn"
          - "example-l2ls-fabric"
          - "example-single-dc-l3ls"
          - "example-single-dc-l3ls-ipv6"
          - "example-single-dc-multipod-l3ls"
          - "example-cv-pathfinder"
          - "howto"
          - "eos_designs_negative_unit_tests"
        ansible_version:
          - "ansible-core>=2.16.0,<2.21.0"
        python_version:
          - "3.12"
        include:
          - avd_scenario: "eos_designs_unit_tests"
            ansible_version: "ansible-core<2.17.0"
            python_version: "3.11"
          - avd_scenario: "eos_designs_unit_tests"
            ansible_version: "ansible-core<2.18.0"
            python_version: "3.11"
          - avd_scenario: "eos_designs_unit_tests"
            ansible_version: "ansible-core<2.19.0"
            python_version: "3.11"
          - avd_scenario: "eos_designs_unit_tests"
            ansible_version: "ansible-core<2.20.0"
            python_version: "3.11"
          # Test latest ansible-core with latest Python
          - avd_scenario: "eos_designs_unit_tests"
            ansible_version: "ansible-core<2.21.0"
            python_version: "3.14"
          - avd_scenario: "eos_designs_negative_unit_tests"
            ansible_version: "ansible-core<2.21.0"
            python_version: "3.14"
          # Test ansible-core milestone release
          # We need to ignore requirements checks to avoid raising an error with new ansible versions not officially supported
          - avd_scenario: "eos_designs_unit_tests -- -e avd_ignore_requirements=True"
            ansible_version: "ansible-core @ git+https://github.com/ansible/ansible.git@milestone"
            python_version: "3.14"
          - avd_scenario: "eos_designs_negative_unit_tests -- -e avd_ignore_requirements=True"
            ansible_version: "ansible-core @ git+https://github.com/ansible/ansible.git@milestone"
            python_version: "3.14"

    steps:
      - uses: actions/checkout@v6
      - name: Download pyavd Artifact
        uses: actions/download-artifact@v8
        with:
          name: pyavd
          path: /tmp/pyavd/
      - name: Set up Python ${{ matrix.python_version }}
        uses: actions/setup-python@v6
        with:
          python-version: ${{ matrix.python_version }}
      - name: Install pyavd and Ansible requirements
        run: |
          python -m pip install "${{ matrix.ansible_version}}" "${{ needs.build_pyavd.outputs.wheel_file }}[ansible-collection]" --group molecule
      - name: Run molecule test
        working-directory: ansible_collections/arista/avd
        env:
          ANSIBLE_COLLECTIONS_ON_ANSIBLE_VERSION_MISMATCH: ignore
        run: |
          molecule test --scenario-name ${{ matrix.avd_scenario }}
      - name: Check GIT status
        run: |
          sh .github/check-git-status.sh

  molecule_eos_designs_minimum_requirements:
    name: Validate eos_designs with minimum requirements
    runs-on: ubuntu-latest
    needs: [build_pyavd, file-changes]
    if: needs.file-changes.outputs.eos_design == 'true' || needs.file-changes.outputs.config_gen == 'true' || needs.file-changes.outputs.requirements == 'true' ||
      github.event_name == 'merge_group'
    steps:
      - uses: actions/checkout@v6
      - name: Download pyavd Artifact
        uses: actions/download-artifact@v8
        with:
          name: pyavd
          path: /tmp/pyavd/
      - name: Use Python 3.10 for minimum requirements
        uses: actions/setup-python@v6
        with:
          python-version: |
            3.10
      - name: Install pyavd and Ansible minimum requirements
        # Installing molecule and requirements in different pip command because of jsonschema>=3.2.0 in AVD is incompatible
        # with jsonschema>=4.9.1 in molecule when using pip compile with lowest
        # Need to delete min_requirements afterwards otherwise git status is sad
        # pip upgrade to get dependency groups
        run: |
          pip install uv
          uv pip compile python-avd/pyproject.toml --extra ansible-collection --resolution lowest-direct > /tmp/pyavd/min_requirements.txt
          cat /tmp/pyavd/min_requirements.txt
          pip install pip --upgrade
          python -m pip install --group molecule
          python -m pip install "ansible-core==2.16.0" "${{ needs.build_pyavd.outputs.wheel_file }}[ansible-collection]" -r /tmp/pyavd/min_requirements.txt
      - name: Run molecule test
        working-directory: ansible_collections/arista/avd
        run: |
          molecule test --scenario-name eos_designs_unit_tests
      - name: Check GIT status
        run: |
          sh .github/check-git-status.sh

  # ----------------------------------- #
  # ANTA Runner MOLECULE
  # ----------------------------------- #
  molecule_anta_runner:
    name: Validate anta_runner
    runs-on: ubuntu-latest
    needs: [build_pyavd, file-changes]
    if: |
      needs.file-changes.outputs.eos_design == 'true' ||
      needs.file-changes.outputs.anta_runner == 'true' ||
      needs.file-changes.outputs.requirements == 'true' ||
      github.event_name == 'merge_group'
    strategy:
      fail-fast: true
      matrix:
        avd_scenario:
          - "anta_runner"
        ansible_version:
          - "ansible-core<2.21.0"
        python_version:
          - "3.12"
        include:
          - avd_scenario: "anta_runner"
            ansible_version: "ansible-core==2.16.0"
            python_version: "3.11"
    steps:
      - uses: actions/checkout@v6
      - name: Download pyavd Artifact
        uses: actions/download-artifact@v8
        with:
          name: pyavd
          path: /tmp/pyavd/
      - name: Set up Python ${{ matrix.python_version }}
        uses: actions/setup-python@v6
        with:
          python-version: ${{ matrix.python_version }}
      - name: Install pyavd and Ansible requirements
        run: |
          python -m pip install "${{ matrix.ansible_version}}" "${{ needs.build_pyavd.outputs.wheel_file }}[ansible-collection]" --group molecule
      - name: Run molecule test
        working-directory: ansible_collections/arista/avd
        run: |
          molecule test --scenario-name ${{ matrix.avd_scenario }}
      - name: Check GIT status
        run: |
          sh .github/check-git-status.sh

  # ----------------------------------- #
  # Ansible tests
  # ----------------------------------- #
  ansible_test_sanity:
    name: Run ansible-test sanity validation
    runs-on: ubuntu-latest
    needs: [build_pyavd, file-changes]
    strategy:
      fail-fast: true
      matrix:
        include:
          - ansible_version: first_stable
            pip_installation: "ansible-core<2.17.0"
            python_version: |
              3.10
              3.11
              3.12
          - ansible_version: latest_stable
            pip_installation: "ansible-core<2.21.0"
            python_version: |
              3.12
              3.13
              3.14
          - ansible_version: devel
            pip_installation: "ansible-core @ git+https://github.com/ansible/ansible.git@milestone"
            # Skip ansible-doc due to testing with ansible-core @ devel and raising error on supported Ansible version
            skip_test: "--skip-test ansible-doc"
            python_version: |
              3.14
    steps:
      - uses: actions/checkout@v6
      - name: Set up Python 3
        uses: actions/setup-python@v6
        with:
          python-version: |
            ${{ matrix.python_version }}
      - name: Download pyavd Artifact
        uses: actions/download-artifact@v8
        with:
          name: pyavd
          path: /tmp/pyavd/
      - name: Install pyavd and Ansible requirements
        run: |
          pip install "${{ matrix.pip_installation }}" "${{ needs.build_pyavd.outputs.wheel_file }}[ansible-collection]"
      - name: Run ansible-test sanity
        working-directory: ansible_collections/arista/avd
        run: |
          ansible-test sanity --color yes -v ${{ matrix.skip_test }}

  ansible_test_units:
    name: Run ansible-test units test cases
    runs-on: ubuntu-latest
    needs: [file-changes, build_pyavd]
    steps:
      - uses: actions/checkout@v6
      - name: Set up Python 3
        uses: actions/setup-python@v6
        with:
          python-version: |
            3.12
      - name: Download pyavd Artifact
        uses: actions/download-artifact@v8
        with:
          name: pyavd
          path: /tmp/pyavd/
      - name: Install pyavd and ansible requirements
        run: |
          pip install "ansible-core<2.21.0" "${{ needs.build_pyavd.outputs.wheel_file }}[ansible-collection]"
      - name: Run ansible-test units
        working-directory: ansible_collections/arista/avd
        run: |
          ansible-test units --coverage --requirements -vv
          ansible-test coverage xml
          mv tests/output/reports/coverage.xml ./units-coverage.xml
      - name: Upload coverage from ansible-test units
        uses: actions/upload-artifact@v7
        with:
          name: ansible-test-units-coverage
          path: ansible_collections/arista/avd/units-coverage.xml

  ansible_test_integration:
    name: Run ansible-test integration test cases
    runs-on: ubuntu-latest
    needs: [file-changes]
    steps:
      - uses: actions/checkout@v6
      - name: Set up Python 3
        uses: actions/setup-python@v6
        with:
          # Testing 3.10 to ensure ansible-core < 2.19 still works.
          python-version: |
            3.10
            3.12
            3.13
            3.14
      - name: Install Python requirements
        run: |
          pip install "ansible-core<2.21.0" "./python-avd[ansible-collection]" --upgrade
      - name: Run ansible-test integration test cases
        working-directory: ansible_collections/arista/avd
        run: |
          ansible-test integration --coverage --requirements -vv
          ansible-test coverage xml
          mv tests/output/reports/coverage.xml ./integration-coverage.xml
      - name: Upload coverage from ansible-test integration
        uses: actions/upload-artifact@v7
        with:
          name: ansible-test-integration-coverage
          path: ansible_collections/arista/avd/integration-coverage.xml

  # ----------------------------------- #
  # Build Collection
  # ----------------------------------- #
  build_collection:
    name: Build Ansible collection
    runs-on: ubuntu-latest
    steps:
      - uses: actions/setup-python@v6
        with:
          python-version: |
            3.12
      - uses: actions/checkout@v6
      - name: Install Python & Ansible requirements
        run: |
          # distlib is required when using manifest
          pip install "ansible-core<2.21.0" distlib --upgrade
      - name: Build Ansible collection
        run: |
          ansible-galaxy collection build -vvv --force ansible_collections/arista/avd
      - name: Upload collection
        uses: actions/upload-artifact@v7
        with:
          name: avd-collection
          path: ./arista-avd-*.tar.gz

  # ----------------------------------- #
  # Galaxy Importer
  # ----------------------------------- #
  galaxy_importer:
    name: Test galaxy-importer
    runs-on: ubuntu-latest
    needs: [build_collection]
    steps:
      - uses: actions/setup-python@v6
        with:
          python-version: |
            3.11
      - uses: actions/checkout@v6
      - name: Install Python & Ansible requirements
        run: |
          pip install "ansible-core==2.16.0"
      - name: Download collection
        uses: actions/download-artifact@v8
        with:
          name: avd-collection
      - name: Install galaxy-importer
        # Install the specific version of galaxy-importer used on galaxy.ansible.com
        # The version conflicts with our requirements,
        # so we let the galaxy-importer version resolve remaining requirements.
        run: |
          pip install "galaxy-importer==0.4.31"
      - name: Run galaxy-importer checks
        run: python -m galaxy_importer.main *.tar.gz
      - uses: actions/upload-artifact@v7
        with:
          name: importer-logs
          path: ./importer_result.json

  # ----------------------------------- #
  # Ansible Lint
  # Run on the built collection from Galaxy importer
  # ----------------------------------- #
  ansible_lint:
    name: Run ansible-lint test case
    runs-on: ubuntu-latest
    needs: [file-changes, build_pyavd]
    env:
      ANSIBLE_COLLECTIONS_PATH: ${{ github.workspace }}
    steps:
      - uses: actions/checkout@v6
      - name: Set up Python 3
        uses: actions/setup-python@v6
        with:
          python-version: |
            3.10
            3.11
            3.12
            3.13
            3.14
      - name: Download pyavd Artifact
        uses: actions/download-artifact@v8
        with:
          name: pyavd
          path: /tmp/pyavd/
      - name: Install Python & Ansible requirements
        run: |
          pip install "${{ needs.build_pyavd.outputs.wheel_file }}[ansible-collection]" --group dev --upgrade
      - name: Download collection
        uses: actions/download-artifact@v8
        with:
          name: avd-collection
      - name: Extract collection
        run: |
          mkdir collections
          tar xvzf arista-avd-*.tar.gz -C collections
      - name: Run ansible-lint
        working-directory: collections
        run: |
          ansible-lint --force-color --strict -v

  # ----------------------------------- #
  # Codespell
  # ----------------------------------- #
  codespell:
    name: Check for common misspellings in text files
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v6
      - uses: actions/setup-python@v6
        with:
          python-version: "3.12"
      - name: Install codespell
        run: pip install codespell==2.4.2
      - name: Run codespell
        run: codespell --config .codespellrc

  # ----------------------------------- #
  # j2lint
  # ----------------------------------- #
  j2lint:
    name: Check for linting errors on Jinja2 files
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v6
      - uses: actions/setup-python@v6
        with:
          python-version: "3.12"
      - name: Install j2lint
        run: pip install j2lint==1.2.0
      - name: Run j2lint
        run: j2lint .

  # ----------------------------------- #
  # markdownlint
  # ----------------------------------- #
  markdownlint:
    name: Check for linting errors on Markdown files
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v6
      - name: Install markdownlint-cli2
        run: npm install markdownlint-cli2 --global
      - name: Run markdownlint-cli2
        # Exclusions are configured in .markdownlint-cli2.yaml
        run: markdownlint-cli2 "**/*.md"
      - name: Check GIT status
        run: sh .github/check-git-status.sh

  # ----------------------------------- #
  # Check schema tables in docs
  # ----------------------------------- #
  check_schema_tables_in_docs:
    name: Check for schema tables in documentation
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v6
      - uses: actions/setup-python@v6
        with:
          python-version: "3.12"
      - name: Check for schema tables in documentation
        run: python development/find_missing_tables.py @.find-missing-tables-args

  # ----------------------------------- #
  # Test of pyavd
  # ----------------------------------- #
  test_pyavd:
    name: Test pyavd (Python ${{ matrix.python }}, Suite ${{ matrix.suite.name }})
    runs-on: ubuntu-latest
    needs: [file-changes]
    if: |
      needs.file-changes.outputs.eos_design == 'true' ||
      needs.file-changes.outputs.config_gen == 'true' ||
      needs.file-changes.outputs.pyavd == 'true' ||
      needs.file-changes.outputs.requirements == 'true' ||
      github.event_name == 'merge_group'
    strategy:
      fail-fast: false
      matrix:
        python: ["3.10", "3.11", "3.12", "3.13", "3.14"]
        suite:
          - name: "Main-Tests"
            id: Main-Tests
            pytest_args: >-
              --ignore=python-avd/tests/pyavd/molecule_scenarios/test_get_device_config.py
              --ignore=python-avd/tests/pyavd/molecule_scenarios/test_negative_eos_designs.py
              --ignore=python-avd/tests/schema_tools/metaschema/test_meta_schema_model.py
            upload_compiled_templates: true
          - name: "Excluded-Tests (test_get_device_config and test_meta_schema_model)"
            id: Excluded-test_get_device_config-and-test_meta_schema_model
            pytest_args: >-
              python-avd/tests/pyavd/molecule_scenarios/test_get_device_config.py
              python-avd/tests/schema_tools/metaschema/test_meta_schema_model.py
          - name: "Excluded-Tests (test_negative_eos_designs)"
            id: Excluded-test_negative_eos_designs
            pytest_args: >-
              python-avd/tests/pyavd/molecule_scenarios/test_negative_eos_designs.py
    steps:
      - uses: actions/checkout@v6
      - name: Set up Python 3
        uses: actions/setup-python@v6
        with:
          python-version: ${{ matrix.python }}
      - name: Install tox
        run: |
          pip install tox tox-gh-actions --upgrade
      - name: Run pytest via tox for ${{ matrix.python }}
        run: |
          tox run -- ${{ matrix.suite.pytest_args }}
      - name: Rename the coverage file
        if: matrix.python == '3.11'
        run: |
          mv .coverage coverage-${{ matrix.suite.id }}.dat
      - name: Upload pytest coverage data
        if: matrix.python == '3.11'
        uses: actions/upload-artifact@v7
        with:
          name: coverage-data-${{ matrix.suite.id }}
          path: coverage-${{ matrix.suite.id }}.dat
      - name: Upload eos_designs compiled templates from pytest
        if: matrix.suite.upload_compiled_templates == true && matrix.python == '3.11'
        uses: actions/upload-artifact@v7
        with:
          name: pytest-eos-designs-compiled-templates
          path: python-avd/pyavd/_eos_designs/j2templates/compiled_templates/
      - name: Upload eos_cli_config_gen compiled templates from pytest
        if: matrix.suite.upload_compiled_templates == true && matrix.python == '3.11'
        uses: actions/upload-artifact@v7
        with:
          name: pytest-eos-cli-config-gen-compiled-templates
          path: python-avd/pyavd/_eos_cli_config_gen/j2templates/compiled_templates/

  generate_pyavd_coverage_report:
    name: Test pyavd python 3.11 coverage report
    runs-on: ubuntu-latest
    needs: [test_pyavd]
    steps:
      - uses: actions/checkout@v6
      - name: Set up Python 3.11
        uses: actions/setup-python@v6
        with:
          python-version: "3.11"
      - name: Install coverage
        run: pip install --group coverage
      - name: Download coverage artifacts
        uses: actions/download-artifact@v8
        with:
          pattern: coverage-data-*
          merge-multiple: true
      - name: Download eos_designs compiled templates artifact
        uses: actions/download-artifact@v8
        with:
          name: pytest-eos-designs-compiled-templates
          path: python-avd/pyavd/_eos_designs/j2templates/compiled_templates/
      - name: Download eos_cli_config_gen compiled templates artifact
        uses: actions/download-artifact@v8
        with:
          name: pytest-eos-cli-config-gen-compiled-templates
          path: python-avd/pyavd/_eos_cli_config_gen/j2templates/compiled_templates/
      - name: Combine and report test coverage
        run: |
          set -ex
          coverage combine coverage-*.dat
          coverage report
          coverage xml
      - name: Upload pytest coverage report
        uses: actions/upload-artifact@v7
        with:
          name: pytest-coverage
          path: coverage.xml

  codecov:
    name: Upload coverage to codecov
    needs:
      - ansible_test_units
      - ansible_test_integration
      - generate_pyavd_coverage_report
    if: github.repository == 'aristanetworks/avd'
    uses: ./.github/workflows/codecov.yml


================================================
FILE: .github/workflows/pull-request-rn-labeler.yml
================================================
# This workflow is triggered after a PR is merged or when the title of a PR is
# changed post merge
name: "Label for Release Notes"

"on":
  pull_request_target:
    types:
      - closed
      - edited # interested in post merge title changes

jobs:
  ###################################################
  # Assign labels on merge to generate Release Notes
  # https://docs.github.com/en/actions/using-workflows/events-that-trigger-workflows#running-your-workflow-when-a-pull-request-merges
  ###################################################
  if_merged:
    name: "PR was merged"
    if: (github.event.pull_request.merged == true) && ( github.event.action == 'closed' || (github.event.action == 'edited' && github.event.changes.title != null) )
    runs-on: ubuntu-latest
    env:
      GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
    steps:
      - uses: actions/checkout@v6
      - uses: ./.github/actions/rn-pr-labeler-action
        with:
          auto_create_label: true


================================================
FILE: .github/workflows/pull-request-triage.yml
================================================
---
name: "Pull Request Triage"

"on":
  pull_request_target:
    types:
      - opened
      - edited
      - synchronize
      - ready_for_review

jobs:
  ###################################################
  # Basic Triage
  ###################################################
  pr_triage:
    name: "PR Labeller"
    # https://github.com/actions/labeler
    runs-on: ubuntu-latest
    permissions:
      contents: read
      pull-requests: write
    steps:
      - uses: actions/labeler@v6
        with:
          repo-token: "${{ secrets.GITHUB_TOKEN }}"
          configuration-path: '.github/labeler.yml'
          sync-labels: true
  assign_author:
    name: "Assign Author to PR"
    # https://github.com/marketplace/actions/auto-author-assign
    runs-on: ubuntu-latest
    steps:
      - uses: toshimaru/auto-author-assign@v3.0.2
        with:
          repo-token: "${{ secrets.GITHUB_TOKEN }}"

  ###################################################
  # Check Conventional Commit Syntax
  ###################################################
  Check_PR_semantic:
    runs-on: ubuntu-latest
    steps:
      # Please look up the latest version from
      # https://github.com/amannn/action-semantic-pull-request/releases
      - uses: amannn/action-semantic-pull-request@v6
        env:
          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
        with:
          # Configure which types are allowed.
          # Default: https://github.com/commitizen/conventional-commit-types
          # Updated as part of PR 1930
          types: |
            Feat
            Fix
            Cut
            Doc
            CI
            Bump
            Test
            Refactor
            Revert
          # Configure which scopes are allowed.
          scopes: |
            anta_runner
            build_output_folders
            cv_deploy
            eos_cli_config_gen
            eos_config_deploy_eapi
            eos_designs
            eos_snapshot
            plugins
            requirements
            pyavd
            containers
          # Configure that a scope must always be provided.
          requireScope: false
          # Configure additional validation for the subject based on a regex.
          # This example ensures the subject doesn't start with an uppercase character.
          # subjectPattern: ^(?![A-Z]).+$
          # If `subjectPattern` is configured, you can use this property to override
          # the default error message that is shown when the pattern doesn't match.
          # The variables `subject` and `title` can be used within the message.
          subjectPatternError: |
            The subject "{subject}" found in the pull request title "{title}"
            didn't match the configured pattern. Please ensure that the subject
            doesn't start with an uppercase character.
          # When using "Squash and merge" on a PR with only one commit, GitHub
          # will suggest using that commit message instead of the PR title for the
          # merge commit, and it's easy to commit this by mistake. Enable this option
          # to also validate the commit message for one commit PRs.
          # Update 13-Jul-2022 CH: GitHub now offers a toggle for this behavior.
          # We have set that to always use the PR title, so this check is no longer needed.
          validateSingleCommit: false


================================================
FILE: .github/workflows/release-schema.yml
================================================
---
name: "Upload schemas.json.gz on release"

"on":
  release:
    types: [published]
  workflow_dispatch:
    inputs:
      tag:
        description: Release tag to upload schemas.json.gz to (e.g. v6.1.0)
        required: true

jobs:
  upload-schema:
    runs-on: ubuntu-latest
    permissions:
      contents: write
    steps:
      - uses: actions/checkout@v6
        with:
          ref: refs/tags/${{ inputs.tag || github.event.release.tag_name }}

      - name: Set up Python 3.12
        uses: actions/setup-python@v6
        with:
          python-version: "3.12"

      - name: Install dependencies
        run: pip install --group dev --upgrade

      - name: Generate schemas.json.gz
        run: scripts/build_schemas.py
        working-directory: python-avd

      - name: Upload schemas.json.gz to release
        run: gh release upload ${{ inputs.tag || github.event.release.tag_name }} python-avd/pyavd/_schema/schemas.json.gz
        env:
          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}


================================================
FILE: .github/workflows/sonar.yml
================================================
---
name: Analysis with Sonarlint and publish to SonarCloud
"on":
  workflow_run:
    workflows: ["Collection code testing"]
    types: [completed]

jobs:
  sonarcloud:
    name: Run Sonarlint analysis and upload to SonarCloud.
    if: github.repository == 'aristanetworks/avd' && github.event.workflow_run.conclusion == 'success'
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v6
        with:
          ref: ${{ github.event.workflow_run.head_sha }}
          fetch-depth: 0 # Shallow clones should be disabled for a better relevancy of analysis

      - name: Download coverage from ansible-test units
        continue-on-error: true
        uses: actions/download-artifact@v8
        with:
          name: ansible-test-units-coverage
          github-token: ${{ secrets.GITHUB_TOKEN }}
          run-id: ${{ github.event.workflow_run.id }}
          path: ansible_collections/arista/avd/
          merge-multiple: true

      - name: Download coverage from ansible-test integration
        continue-on-error: true
        uses: actions/download-artifact@v8
        with:
          name: ansible-test-integration-coverage
          github-token: ${{ secrets.GITHUB_TOKEN }}
          run-id: ${{ github.event.workflow_run.id }}
          path: ansible_collections/arista/avd/
          merge-multiple: true

      - name: Download coverage from pytest
        continue-on-error: true
        uses: actions/download-artifact@v8
        with:
          name: pytest-coverage
          github-token: ${{ secrets.GITHUB_TOKEN }}
          run-id: ${{ github.event.workflow_run.id }}
          merge-multiple: true

      - name: Download eos_designs compiled templates from pytest
        continue-on-error: true
        uses: actions/download-artifact@v8
        with:
          name: pytest-eos-designs-compiled-templates
          github-token: ${{ secrets.GITHUB_TOKEN }}
          run-id: ${{ github.event.workflow_run.id }}
          path: python-avd/pyavd/_eos_designs/j2templates/compiled_templates/
          merge-multiple: true

      - name: Download eos_cli_config_gen compiled templates from pytest
        continue-on-error: true
        uses: actions/download-artifact@v8
        with:
          name: pytest-eos-cli-config-gen-compiled-templates
          github-token: ${{ secrets.GITHUB_TOKEN }}
          run-id: ${{ github.event.workflow_run.id }}
          path: python-avd/pyavd/_eos_cli_config_gen/j2templates/compiled_templates/
          merge-multiple: true

      - name: Get PR context
        # Source: https://github.com/orgs/community/discussions/25220#discussioncomment-11316244
        id: pr-context
        if: github.event.workflow_run.event == 'pull_request'
        env:
          # Token required for GH CLI:
          GH_TOKEN: ${{ github.token }}
          # Best practice for scripts is to reference via ENV at runtime. Avoid using the expression syntax in the script content directly:
          PR_TARGET_REPO: ${{ github.repository }}
          # If the PR is from a fork, prefix it with `<owner-login>:`, otherwise only the PR branch name is relevant:
          PR_BRANCH: |-
            ${{
              (github.event.workflow_run.head_repository.owner.login != github.event.workflow_run.repository.owner.login)
                && format('{0}:{1}', github.event.workflow_run.head_repository.owner.login, github.event.workflow_run.head_branch)
                || github.event.workflow_run.head_branch
            }}
        # Query the PR number by repo + branch, then assign to step output:
        run: |
          gh pr view --repo "${PR_TARGET_REPO}" "${PR_BRANCH}" \
             --json 'number,baseRefName' --jq '"number=\(.number)\nbase_ref=\(.baseRefName)"' \
             >> "${GITHUB_OUTPUT}"
          echo "pr_branch=${PR_BRANCH}" >> "${GITHUB_OUTPUT}"

      - name: SonarQube Scan
        uses: SonarSource/sonarqube-scan-action@v8.0.0
        env:
          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
          SONAR_TOKEN: ${{ secrets.SONAR_TOKEN }}
        with:
          # Using ACTION_STEP_DEBUG to trigger verbose when debugging in Github Action
          args: >-
            -Dsonar.scm.revision=${{ github.event.workflow_run.head_sha }}
            -Dsonar.pullrequest.key=${{ steps.pr-context.outputs.number }}
            -Dsonar.pullrequest.branch=${{ steps.pr-context.outputs.pr_branch }}
            -Dsonar.pullrequest.base=${{ steps.pr-context.outputs.base_ref }}
            -Dsonar.verbose=${{ secrets.ACTIONS_STEP_DEBUG }}


================================================
FILE: .github/workflows/stale.yml
================================================
name: "Issue and PR stale management"
"on":
  schedule:
    - cron: "0 0 * * *"

jobs:
  stale:
    runs-on: ubuntu-latest
    if: github.repository == 'aristanetworks/avd'
    steps:
      # Issue stale management
      - uses: actions/stale@v10
        with:
          repo-token: ${{ secrets.GITHUB_TOKEN }}
          days-before-stale: 90
          days-before-close: -1
          stale-issue-message: 'This issue is stale because it has been open 90 days with no activity. The issue will be reviewed by a maintainer and may be closed'
          stale-issue-label: 'state: stale'
          exempt-issue-labels: 'state: accepted, state: in-progress'
          stale-pr-message: 'This PR is stale because it has been open 30 days with no activity. The PR will be reviewed by a maintainer and may be closed'
          stale-pr-label: 'state: stale'
          exempt-pr-labels: 'state: accepted, state: in-progress'


================================================
FILE: .github/yamllintrc
================================================
---
# Used by pre-commit. There is a similar file under the Ansible collection used by ansible-lint.
extends: default

yaml-files:
  - '*.yaml'
  - '*.yml'
  - '.yamllint'

rules:
  braces:
    min-spaces-inside: 0
    max-spaces-inside: 1
    level: error
  brackets:
    max-spaces-inside: 1
    level: error
  colons:
    max-spaces-after: -1
    level: error
  commas:
    max-spaces-after: -1
    level: error
  comments:
    # prettier compatibility
    min-spaces-from-content: 1
    level: error
  comments-indentation: false
  document-start: disable
  empty-lines:
    max: 1
    level: error
    ignore:
      - /python-avd/pyavd/**/schema/*.schema.yml
      - /python-avd/tests/pyavd/schema/
      - /python-avd/tests/schema_tools/artifacts/*.schema.yml
  hyphens:
    level: error
  key-duplicates:
    forbid-duplicated-merge-keys: true
  line-length:
    max: 160
    ignore:
      - /ansible_collections/arista/avd/extensions/molecule/**/intended/structured_configs/
      - /ansible_collections/arista/avd/extensions/molecule/**/intended/structured_configs/cvp/
      - /ansible_collections/arista/avd/examples/**/intended/structured_configs/cvp/
      - /ansible_collections/arista/avd/changelogs/fragments_backup/
      - /ansible_collections/arista/avd/tests/inventory/**/expected_output/
      - /python-avd/pyavd/**/schema/
      - /python-avd/tests/**/artifacts/
      - /.github/workflows/
  new-lines:
    type: unix
  indentation:
    level: error
    indent-sequences: true
    ignore:
      - /ansible_collections/arista/avd/**/intended/structured_configs/ # Auto generated
      - /ansible_collections/arista/avd/tests/inventory/**/expected_output/ # Need to compare with auto generated structure config
      - /ansible_collections/arista/avd/extensions/molecule/**/digital_twin/documentation/ # Auto generated topology files
      - /python-avd/tests/**/artifacts/ # Need to compare with auto generated structure config
      - /python-avd/pyavd/**/schema/eos_*.schema.yml # Auto generated
  octal-values:
    forbid-implicit-octal: true
    forbid-explicit-octal: true
  trailing-spaces:
    ignore:
      /python-avd/pyavd/**/schema/*.schema.yml
  new-line-at-end-of-file:
    ignore:
      /python-avd/pyavd/**/schema/*.schema.yml


================================================
FILE: .gitignore
================================================
# Byte-compiled / optimized / DLL files
__pycache__/
*.py[cod]
*.py-e
*$py.class
.j2cache/
*.log
*.pickle
.mypy_cache/
.coverage
coverage.xml
*.so

# Ignore cloned cloudvision-python repo created during generation of _cv/api
/python-avd/pyavd/_cv/cloudvision-apis/

# top level installers
/*.tar.gz
## Ansible galaxy-importer
/importer_result.json
## ansible-builder
/_build

# mkdocs
/site

# ansible-lint cache and .ansible/.lock file
.ansible/

# Development
build/
dist/
*.egg-info/
.tox/
.pytest_cache/
## pyenv
.python-version
## direnv
.envrc
## pyenv
uv.lock
## .vscode/*
.vscode/

# OSX
*.DS_Store

# Checksum of schemas
*schema.sha1

# Temporary files creating during CI workflow
/tmp-requirements-minimum.txt

# Hash files created when running pyavd from source
python-avd/pyavd/*/j2templates/.hash
python-avd/pyavd/*/schema/schema_fragments/.hash
schemas/*/schema_fragments/.hash

# gz of schema store
python-avd/pyavd/_schema/schemas.json.gz

# Dynamically-created molecule artifacts
ansible_collections/arista/avd/extensions/molecule/cv_deploy/intended/structured_configs/test_duplicated_devices_configs/

### Rust development

# Generated by Cargo
# will have compiled files and executables
Cargo.lock
/target/
/debug/
/rust/**/debug/
/rust/**/target/

# These are backup files generated by rustfmt
*.rs.bk

# MSVC Windows builds of rustc generate these, which store debugging information
*.pdb

# Coverage
/lcov.info

# AI configs, skills, etc.
.codex/*
.claude/*
!.claude/skills
!.agents/skills


================================================
FILE: .markdownlint-cli2.yaml
================================================
# Fix any fixable errors
fix: true

# Define glob expressions to ignore
ignores:
  - python-avd/tests/pyavd/j2filters/toc_files/*
  # TODO: Excluding anta-reports till we clear the errors in anta repo
  - ansible_collections/arista/avd/extensions/molecule/anta_runner/anta/reports/**

# Disable banner message on stdout (only valid at root)
noBanner: true
# Disable progress on stdout (only valid at root)
noProgress: true
# Show found files on stdout (only valid at root)
showFound: true

config:
  # markdownlint configuration
  # the definitive list of rules for markdownlint can be found:
  # https://github.com/DavidAnson/markdownlint/blob/main/doc/Rules.md
  #
  # only deviations from the defaults are noted here or where there's an opinion
  # being expressed.

  # default state for all rules
  default: true

  # heading style
  MD003:
    style: "atx"

  # unordered list style
  MD004:
    style: "dash"

  # unorderd list indentation (2-spaces)
  # keep it tight yo!
  MD007:
    indent: 2

  # line length
  MD013: false
    # a lot of debate whether to wrap or not wrap

  # multiple headings with the same content
  # siblings_only is set here to allow for common header values in structured
  # documents
  MD024:
    siblings_only: true

  # Multiple top-level headings in the same document
  MD025:
    front_matter_title: ""

  # MD029/ol-prefix - Ordered list item prefix
  MD029:
    # List style
    style: "ordered"

  # fenced code  should be surrounded by blank lines default: true
  MD031: true

  # lists should be surrounded by blank lines default: true
  MD032: true

  # MD033/no-inline-html - Inline HTML
  MD033: false

  # bare URL - bare URLs should be wrapped in angle brackets
  # <https://eos.arista.com>
  MD034: false

  # horizontal rule style default: consistent
  MD035:
    style: "---"

  # MD037/no-space-in-emphasis - Spaces inside emphasis markers
  # This incorrectly catches stars used in table contents, so *foo | *bar is triggered to remove the space between | and *bar.
  MD037: false

  # first line in a file to be a top-level heading
  # since we're using front-matter, this
  MD041: false

  # proper-names - proper names to have the correct capitalization
  # probably not entirely helpful in a technical writing environment.
  MD044: false

  # block style - disabled to allow for admonitions
  MD046: false

  # MD048/code-fence-style - Code fence style
  MD048:
    # Code fence style
    style: "backtick"

  # MD049/Emphasis style should be consistent
  MD049:
    # Emphasis style should be consistent
    style: "asterisk"

  # MD050/Strong style should be consistent
  MD050:
    # Strong style should be consistent
    style: "asterisk"

  # MD059/descriptive-link-text
  # Link text should be descriptive - by default this rule flags when a link text is "here"
  MD059: false


================================================
FILE: .pre-commit-config.yaml
================================================
---
# See https://pre-commit.com for more information
# See https://pre-commit.com/hooks.html for more hooks
ci:
  autoupdate_commit_msg: "CI: pre-commit autoupdate"
  skip: [pyright, codespell, j2lint, markdownlint-cli2, check-schema-tables-in-docs]

repos:
  - repo: https://github.com/pre-commit/pre-commit-hooks
    rev: v6.0.0
    hooks:
      - id: trailing-whitespace
        name: Trims trailing whitespace.
        exclude: ansible_collections/arista/avd/extensions/molecule
      - id: end-of-file-fixer
        name: Ensures that a file is either empty, or ends with one newline.
        exclude_types: [svg, json]
        exclude: ansible_collections/arista/avd/extensions/molecule
      - id: check-added-large-files
        name: Prevents giant files from being committed.
        exclude: >-
          (?x)
          (ansible_collections/arista/avd/extensions/molecule
          |pickle$
          |python-avd/pyavd/_(eos_cli_config_gen|eos_designs)/schema/__init__.py
          |python-avd/pyavd/_eos_designs/eos_designs_facts/schema/protocol.py
          )
      - id: check-merge-conflict
        name: Checks for files that contain merge conflict strings.
        exclude: ansible_collections/arista/avd/extensions/molecule

  - repo: https://github.com/Lucas-C/pre-commit-hooks
    rev: v1.5.6
    hooks:
      - id: insert-license
        name: Check and insert license on Python files.
        exclude: ansible_collections/arista/avd/(plugins/module_utils|tests/unit(/module_utils|/modules|))/__init__.py
        files: .*\.pyi?$
        args:
          - --license-filepath
          - development/license-short.txt
          - --use-current-year
          - --allow-past-years
          - --fuzzy-match-generates-todo
          - --no-extra-eol

      - id: insert-license
        name: Check and insert license on select YAML files.
        files: >-
          (?x)
          (ansible_collections/arista/avd/roles/.*/(handlers|tasks)/.*\.yml
          |python-avd/pyavd/_(eos_cli_config_gen|eos_designs)/schema/.*\.yml
          |python-avd/pyavd/_eos_designs/eos_designs_facts/schema/.*\.yml
          |schemas/.*/.*\.yml
          )

        args:
          - --license-filepath
          - development/license-short.txt
          - --use-current-year
          - --allow-past-years
          - --fuzzy-match-generates-todo
          - --no-extra-eol

      - id: insert-license
        name: Check and insert license on Jinja2 files.
        files: .*\.j2$
        exclude: ansible_collections/arista/avd/extensions/molecule.*
        args:
          - --license-filepath
          - development/license-short.txt
          - --use-current-year
          - --allow-past-years
          - --fuzzy-match-generates-todo
          - --comment-style
          - '{#||#}'
          - --no-extra-eol

      - id: insert-license
        name: Check and insert license on Markdown files.
        files: .*\.md$
        exclude: >-
          (?x)
          (ansible_collections/arista/avd/extensions/molecule
          |.github
          |ansible_collections/arista/avd/examples/.+/documentation/
          |python-avd/tests/pyavd/examples/simple/docs/
          )
        args:
          - --license-filepath
          - development/license-short.txt
          - --use-current-year
          - --allow-past-years
          - --fuzzy-match-generates-todo
          - --detect-license-in-X-top-lines
          - '10'
          - --comment-style
          - '<!--|  ~|  -->'

      - name: Check and insert license on Rust files
        id: insert-license
        files: .*\.rs$
        args:
          - --license-filepath
          - development/license-short.txt
          - --use-current-year
          - --allow-past-years
          - --fuzzy-match-generates-todo
          - --comment-style
          - "//"

  - repo: https://github.com/astral-sh/ruff-pre-commit
    # Ruff version.
    rev: v0.15.13
    hooks:
      # Run the linter.
      - id: ruff
        args:
          - --fix
      # Run the formatter.
      - id: ruff-format

  - repo: https://github.com/RobertCraigie/pyright-python
    rev: v1.1.409
    hooks:
      - id: pyright
        name: PyRight static type checker
        types: [python]
        # TODO: One day when we can have recent enough pip version
        # use --group dev or some othergroup to avoid maintaining this here
        # as well.
        additional_dependencies:
          - 'ansible-core>=2.16.0,<2.21.0'
          - 'anta==1.8.0'
          - 'deepmerge>=1.1.0'
          - 'jsonschema-rs>=0.24'
          - 'pyavd-utils==0.0.5'
          - 'pydantic>=2.3.0'
          - 'pytest>=8.2.0'
          - 'pyyaml>=6.0.0'
          - 'referencing>=0.35.0'
          - 'ruff==0.11.11'

  - repo: https://github.com/pycqa/pylint
    rev: "v4.0.5"
    hooks:
      - id: pylint # Use pylintrc file in repository
        name: Check for Linting errors on Python files outside the Ansible collection.
        description: This hook runs pylint.
        types: [python]
      - id: pylint # Use pylintrc-ansible file for Ansible collection
        name: Check for Linting errors on Python files in the Ansible collection.
        description: This hook runs pylint.
        types: [python]
        files: ansible_collections/arista/avd/
        args:
          - --rcfile=pylintrc-ansible

  - repo: https://github.com/adrienverge/yamllint.git
    rev: "v1.38.0"
    hooks:
      - id: yamllint
        name: Check for Linting errors on YAML files with settings defined in `.github/yamllintrc`.
        description: This hook runs yamllint.
        entry: yamllint
        language: python
        types: [file, yaml]
        args: [--strict, -c=.github/yamllintrc]

  - repo: https://github.com/aristanetworks/j2lint.git
    rev: "v1.2.0"
    hooks:
      - id: j2lint
        name: Check for Linting errors on Jinja2 files

  - repo: https://github.com/codespell-project/codespell
    rev: v2.4.2
    hooks:
      - id: codespell
        name: Check for common misspellings in text files.
        args: [--config, .codespellrc]

  - repo: https://github.com/pdm-project/pdm
    rev: "2.26.9"
    hooks:
      - id: pdm-export
        name: Extract requirements from pyavd/pyproject.toml to requirements.txt
        entry: pdm export -p python-avd -o ansible_collections/arista/avd/requirements.txt --without-hashes -G ansible-collection -G self --pyproject
        language: python
        files: python-avd/pyproject.toml
        pass_filenames: false
      - id: pdm-export
        name: Extract requirements from pyavd/pyproject.toml to docs/requirements.txt
        entry: pdm export -p python-avd -o docs/requirements.txt --without-hashes -G ansible -G self --pyproject
        language: python
        files: python-avd/pyproject.toml
        pass_filenames: false

  - repo: local
    hooks:

      - id: docs-plugin-modules
        name: Build documentation for collection modules and action plugins.
        entry: >-
          ansible-doc-extractor --template docs/templates/plugin-docs.j2
          --markdown "docs/plugins/Modules_and_action_plugins/"
        language: python
        types: [python]
        # Issue with Ansible 2.19 and the doc extractor.
        additional_dependencies: ['ansible-doc-extractor>=0.1.10', 'ansible-core>=2.16.0,<2.19.0']
        files: ansible_collections/arista/avd/plugins/modules/

      - id: docs-plugin-filter
        name: Build documentation for collection filter plugins.
        entry: >-
          ansible-doc-extractor --template docs/templates/plugin-docs.j2
          --markdown "docs/plugins/Filter_plugins/"
        language: python
        types_or: [python, yaml]
        additional_dependencies: ['ansible-doc-extractor>=0.1.10', 'ansible-core>=2.16.0,<2.19.0']
        files: ansible_collections/arista/avd/plugins/filter/
        exclude: ^(ansible_collections/arista/avd/plugins/filter/deprecated_filters.py)$

      - id: docs-plugin-lookup
        name: Build documentation for collection lookup plugins.
        entry: >-
          ansible-doc-extractor --template docs/templates/plugin-docs.j2
          --markdown "docs/plugins/Lookup_plugins/"
        language: python
        types: [python]
        additional_dependencies: ['ansible-doc-extractor>=0.1.10', 'ansible-core>=2.16.0,<2.19.0']
        files: ansible_collections/arista/avd/plugins/lookup/

      - id: docs-plugin-test
        name: Build documentation for collection test plugins.
        entry: >-
          ansible-doc-extractor --template docs/templates/plugin-docs.j2
          --markdown "docs/plugins/Test_plugins/"
        language: python
        types: [python]
        additional_dependencies: ['ansible-doc-extractor>=0.1.10', 'ansible-core>=2.16.0,<2.19.0']
        files: ansible_collections/arista/avd/plugins/test/

      - id: docs-plugin-vars
        name: Build documentation for collection var plugins.
        entry: >-
          ansible-doc-extractor --template docs/templates/plugin-docs.j2
          --markdown "docs/plugins/Vars_plugins/"
        language: python
        types: [python]
        additional_dependencies: ['ansible-doc-extractor>=0.1.10', 'ansible-core>=2.16.0,<2.19.0']
        files: ansible_collections/arista/avd/plugins/vars/

      - id: schemas
        name: Build AVD schemas and documentation.
        entry: sh -c 'exec python-avd/scripts/build_schemas.py'
        language: python
        files: (python-avd/pyavd/[a-z_]+/schema|schemas/[a-z_]+)
        pass_filenames: false
        additional_dependencies: ['deepmerge>=1.1.0', 'PyYAML>=6.0.0', 'pydantic>=2.3.0', 'jsonschema-rs>=0.24', 'referencing>=0.35.0', 'ruff==0.7.2']

      - id: check-schema-tables-in-docs
        name: Check for schema tables in documentation.
        entry: python development/find_missing_tables.py @.find-missing-tables-args
        language: python
        pass_filenames: false

      - id: sort-hosts-yml
        name: Auto-sort host names in Ansible inventory hosts.yml files.
        entry: development/sort_hosts_yml.py
        language: python
        # Matches hosts.yml in: eos_cli_config_gen*, eos_designs*
        files: >-
          (?x)
          ^ansible_collections/arista/avd/extensions/molecule/
          (eos_cli_config_gen.*|
          eos_designs_unit_tests|
          eos_designs_negative_unit_tests|
          eos_designs_deprecated_vars|
          ansible_only
          )
          /inventory/hosts.yml$
        additional_dependencies: ['Jinja2>=3.0.0', 'pyavd-utils==0.0.5', 'deepmerge>=1.1.0']

      - id: templates
        name: Precompile Jinja2 templates
        entry: sh -c 'python-avd/scripts/compile_templates.py'
        language: python
        files: python-avd/pyavd/(_eos_cli_config_gen|_eos_designs)/j2templates/
        pass_filenames: false
        additional_dependencies: ['Jinja2>=3.0.0', 'pyavd-utils==0.0.5', 'deepmerge>=1.1.0']

  - repo: https://github.com/DavidAnson/markdownlint-cli2
    rev: v0.22.1
    hooks:
      - id: markdownlint-cli2
        name: Check for Linting errors on Markdown files with settings defined in `.github/.markdownlint.yaml`.
        # Exclusions are configured in .markdownlint-cli2.yaml


================================================
FILE: .readthedocs.yaml
================================================
---
# .readthedocs.yaml
# Read the Docs configuration file
# See https://docs.readthedocs.io/en/stable/config-file/v2.html for details

# Required
version: 2

build:
  os: ubuntu-22.04
  tools:
    python: "3.13"
  jobs:
    install:
      # Since the install step is overridden, pip is no longer updated automatically.
      - pip install --upgrade pip
      - pip install --group 'doc'

# Build documentation with mkdocs
mkdocs:
  configuration: mkdocs.yml
  fail_on_warning: false


================================================
FILE: .sonarlint/connectedMode.json
================================================
{
    "sonarCloudOrganization": "aristanetworks-1",
    "projectKey": "aristanetworks_avd"
}

================================================
FILE: LICENSE
================================================
                                 Apache License
                           Version 2.0, January 2004
                        http://www.apache.org/licenses/

   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION

   1. Definitions.

      "License" shall mean the terms and conditions for use, reproduction,
      and distribution as defined by Sections 1 through 9 of this document.

      "Licensor" shall mean the copyright owner or entity authorized by
      the copyright owner that is granting the License.

      "Legal Entity" shall mean the union of the acting entity and all
      other entities that control, are controlled by, or are under common
      control with that entity. For the purposes of this definition,
      "control" means (i) the power, direct or indirect, to cause the
      direction or management of such entity, whether by contract or
      otherwise, or (ii) ownership of fifty percent (50%) or more of the
      outstanding shares, or (iii) beneficial ownership of such entity.

      "You" (or "Your") shall mean an individual or Legal Entity
      exercising permissions granted by this License.

      "Source" form shall mean the preferred form for making modifications,
      including but not limited to software source code, documentation
      source, and configuration files.

      "Object" form shall mean any form resulting from mechanical
      transformation or translation of a Source form, including but
      not limited to compiled object code, generated documentation,
      and conversions to other media types.

      "Work" shall mean the work of authorship, whether in Source or
      Object form, made available under the License, as indicated by a
      copyright notice that is included in or attached to the work
      (an example is provided in the Appendix below).

      "Derivative Works" shall mean any work, whether in Source or Object
      form, that is based on (or derived from) the Work and for which the
      editorial revisions, annotations, elaborations, or other modifications
      represent, as a whole, an original work of authorship. For the purposes
      of this License, Derivative Works shall not include works that remain
      separable from, or merely link (or bind by name) to the interfaces of,
      the Work and Derivative Works thereof.

      "Contribution" shall mean any work of authorship, including
      the original version of the Work and any modifications or additions
      to that Work or Derivative Works thereof, that is intentionally
      submitted to Licensor for inclusion in the Work by the copyright owner
      or by an individual or Legal Entity authorized to submit on behalf of
      the copyright owner. For the purposes of this definition, "submitted"
      means any form of electronic, verbal, or written communication sent
      to the Licensor or its representatives, including but not limited to
      communication on electronic mailing lists, source code control systems,
      and issue tracking systems that are managed by, or on behalf of, the
      Licensor for the purpose of discussing and improving the Work, but
      excluding communication that is conspicuously marked or otherwise
      designated in writing by the copyright owner as "Not a Contribution."

      "Contributor" shall mean Licensor and any individual or Legal Entity
      on behalf of whom a Contribution has been received by Licensor and
      subsequently incorporated within the Work.

   2. Grant of Copyright License. Subject to the terms and conditions of
      this License, each Contributor hereby grants to You a perpetual,
      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
      copyright license to reproduce, prepare Derivative Works of,
      publicly display, publicly perform, sublicense, and distribute the
      Work and such Derivative Works in Source or Object form.

   3. Grant of Patent License. Subject to the terms and conditions of
      this License, each Contributor hereby grants to You a perpetual,
      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
      (except as stated in this section) patent license to make, have made,
      use, offer to sell, sell, import, and otherwise transfer the Work,
      where such license applies only to those patent claims licensable
      by such Contributor that are necessarily infringed by their
      Contribution(s) alone or by combination of their Contribution(s)
      with the Work to which such Contribution(s) was submitted. If You
      institute patent litigation against any entity (including a
      cross-claim or counterclaim in a lawsuit) alleging that the Work
      or a Contribution incorporated within the Work constitutes direct
      or contributory patent infringement, then any patent licenses
      granted to You under this License for that Work shall terminate
      as of the date such litigation is filed.

   4. Redistribution. You may reproduce and distribute copies of the
      Work or Derivative Works thereof in any medium, with or without
      modifications, and in Source or Object form, provided that You
      meet the following conditions:

      (a) You must give any other recipients of the Work or
          Derivative Works a copy of this License; and

      (b) You must cause any modified files to carry prominent notices
          stating that You changed the files; and

      (c) You must retain, in the Source form of any Derivative Works
          that You distribute, all copyright, patent, trademark, and
          attribution notices from the Source form of the Work,
          excluding those notices that do not pertain to any part of
          the Derivative Works; and

      (d) If the Work includes a "NOTICE" text file as part of its
          distribution, then any Derivative Works that You distribute must
          include a readable copy of the attribution notices contained
          within such NOTICE file, excluding those notices that do not
          pertain to any part of the Derivative Works, in at least one
          of the following places: within a NOTICE text file distributed
          as part of the Derivative Works; within the Source form or
          documentation, if provided along with the Derivative Works; or,
          within a display generated by the Derivative Works, if and
          wherever such third-party notices normally appear. The contents
          of the NOTICE file are for informational purposes only and
          do not modify the License. You may add Your own attribution
          notices within Derivative Works that You distribute, alongside
          or as an addendum to the NOTICE text from the Work, provided
          that such additional attribution notices cannot be construed
          as modifying the License.

      You may add Your own copyright statement to Your modifications and
      may provide additional or different license terms and conditions
      for use, reproduction, or distribution of Your modifications, or
      for any such Derivative Works as a whole, provided Your use,
      reproduction, and distribution of the Work otherwise complies with
      the conditions stated in this License.

   5. Submission of Contributions. Unless You explicitly state otherwise,
      any Contribution intentionally submitted for inclusion in the Work
      by You to the Licensor shall be under the terms and conditions of
      this License, without any additional terms or conditions.
      Notwithstanding the above, nothing herein shall supersede or modify
      the terms of any separate license agreement you may have executed
      with Licensor regarding such Contributions.

   6. Trademarks. This License does not grant permission to use the trade
      names, trademarks, service marks, or product names of the Licensor,
      except as required for reasonable and customary use in describing the
      origin of the Work and reproducing the content of the NOTICE file.

   7. Disclaimer of Warranty. Unless required by applicable law or
      agreed to in writing, Licensor provides the Work (and each
      Contributor provides its Contributions) on an "AS IS" BASIS,
      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
      implied, including, without limitation, any warranties or conditions
      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
      PARTICULAR PURPOSE. You are solely responsible for determining the
      appropriateness of using or redistributing the Work and assume any
      risks associated with Your exercise of permissions under this License.

   8. Limitation of Liability. In no event and under no legal theory,
      whether in tort (including negligence), contract, or otherwise,
      unless required by applicable law (such as deliberate and grossly
      negligent acts) or agreed to in writing, shall any Contributor be
      liable to You for damages, including any direct, indirect, special,
      incidental, or consequential damages of any character arising as a
      result of this License or out of the use or inability to use the
      Work (including but not limited to damages for loss of goodwill,
      work stoppage, computer failure or malfunction, or any and all
      other commercial damages or losses), even if such Contributor
      has been advised of the possibility of such damages.

   9. Accepting Warranty or Additional Liability. While redistributing
      the Work or Derivative Works thereof, You may choose to offer,
      and charge a fee for, acceptance of support, warranty, indemnity,
      or other liability obligations and/or rights consistent with this
      License. However, in accepting such obligations, You may act only
      on Your own behalf and on Your sole responsibility, not on behalf
      of any other Contributor, and only if You agree to indemnify,
      defend, and hold each Contributor harmless for any liability
      incurred by, or claims asserted against, such Contributor by reason
      of your accepting any such warranty or additional liability.

   END OF TERMS AND CONDITIONS

   APPENDIX: How to apply the Apache License to your work.

      To apply the Apache License to your work, attach the following
      boilerplate notice, with the fields enclosed by brackets "[]"
      replaced with your own identifying information. (Don't include
      the brackets!)  The text should be enclosed in the appropriate
      comment syntax for the file format. We also recommend that a
      file or class name and description of purpose be included on the
      same "printed page" as the copyright notice for easier
      identification within third-party archives.

   Copyright 2019 Arista Networks
   Licensed under the Apache License, Version 2.0 (the "License");
   you may not use this file except in compliance with the License.
   You may obtain a copy of the License at

       http://www.apache.org/licenses/LICENSE-2.0

   Unless required by applicable law or agreed to in writing, software
   distributed under the License is distributed on an "AS IS" BASIS,
   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
   See the License for the specific language governing permissions and
   limitations under the License.


================================================
FILE: Makefile
================================================
CURRENT_DIR = $(shell pwd)
# option to run ansible-test sanity: must be either venv or docker (default is venv)
ANSIBLE_TEST_MODE ?= venv
MUFFET_TIMEOUT ?= 60

.PHONY: help
help: ## Display help message
	@grep -E '^[0-9a-zA-Z_-]+\.*[0-9a-zA-Z_-]+:.*?## .*$$' $(MAKEFILE_LIST) | sort | awk 'BEGIN {FS = ":.*?## "}; {printf "\033[36m%-30s\033[0m %s\n", $$1, $$2}'

#########################################
# Ansible Collection actions            #
#########################################
.PHONY: collection-build
collection-build: ## Build arista.avd collection locally.
	ansible-galaxy collection build --force ansible_collections/arista/avd

#########################################
# pyavd actions                         #
#########################################
.PHONY: pyavd-build
pyavd-build: ## Build PyAVD Python package locally.
	cd python-avd && $(MAKE) build

.PHONY: uv-pyavd-build
uv-pyavd-build: ## Build PyAVD Python package locally.
	cd python-avd && $(MAKE) uv-build

.PHONY: pyavd-test
pyavd-test: ## Test PyAVD Python code with tox.
	tox run -r

.PHONY: pyavd-publish
pyavd-publish: ## Build and publish PyAVD Python package.
	cd python-avd && $(MAKE) build publish

.PHONY: uv-pyavd-publish
uv-pyavd-publish: ## Build and publish PyAVD Python package.
	cd python-avd && $(MAKE) uv-build uv-publish

.PHONY: pyavd-install
pyavd-install: pyavd-build ## Build and install PyAVD Python package.
	pip install python-avd/dist/* --force-reinstall

# The editable_mode=compat is required for pylance to pick up the editable install.
.PHONY: pyavd-editable-install
pyavd-editable-install: ## Build and install PyAVD as editable
	pip install -e python-avd --config-settings editable_mode=compat --force-reinstall

.PHONY: uv-pyavd-install
uv-pyavd-install: pyavd-build ## Build and install PyAVD Python package.
	uv pip install python-avd/dist/* --force-reinstall

# The editable_mode=compat is required for pylance to pick up the editable install.
.PHONY: uv-pyavd-editable-install
uv-pyavd-editable-install: ## Build and install PyAVD as editable
	uv pip install -e python-avd --config-settings editable_mode=compat --force-reinstall

#########################################
# Code Validation using ansible-test 	#
#########################################

.PHONY: sanity
sanity: sanity-info sanity-lint sanity-import ## Run ansible-test sanity validation.

.PHONY: sanity-info
sanity-info: ## Show information about ansible-test.
	cd ansible_collections/arista/avd/ ; ansible-test env

.PHONY: sanity-lint
sanity-lint: ## Run ansible-test sanity for code sanity. Specify `ANSIBLE_TEST_MODE=<venv|docker>` (default: `venv`).
	cd ansible_collections/arista/avd/ ; \
	ansible-test sanity --requirements --$(ANSIBLE_TEST_MODE) --skip-test import

.PHONY: sanity-import
sanity-import: ## Run ansible-test sanity for code import. Specify `ANSIBLE_TEST_MODE=<venv|docker>` (default: `venv`).
	cd ansible_collections/arista/avd/ ; \
	ansible-test sanity --requirements --$(ANSIBLE_TEST_MODE) --test import

.PHONY: galaxy-importer
galaxy-importer:  ## Run galaxy importer tests.
	rm -f *.tar.gz && \
	ansible-galaxy collection build --force ansible_collections/arista/avd && \
	python -m galaxy_importer.main *.tar.gz

#############################################
# Run unit test cases using ansible-test    #
#############################################

.PHONY: unit-tests
unit-tests: ## Run unit test cases using ansible-test. Specify `ANSIBLE_TEST_MODE=<venv|docker>` (default: `venv`).
	cd ansible_collections/arista/avd/ ; \
	ansible-test units --requirements --$(ANSIBLE_TEST_MODE) -vv

###################################################
# Run integration test cases using ansible-test   #
###################################################

.PHONY: integration-tests
integration-tests: ## Run integration test cases using ansible-test. Specify `ANSIBLE_TEST_MODE=<venv|docker>` (default: `venv`).
	cd ansible_collections/arista/avd/ ; \
	ansible-test integration --requirements --$(ANSIBLE_TEST_MODE)

################
# Bump version #
################

.PHONY: bump-dev
bump-dev: ## Bump dev release. 6.0.0-dev0 -> 6.0.0-dev1
	bump-my-version bump pre_n

.PHONY: bump-release
bump-release: ## Bump from dev to final release. 6.2.0-dev2 -> 6.2.0
	bump-my-version bump pre_l

.PHONY: bump-minor
bump-minor: ## Bump minor release. 6.1.4 -> 6.2.0-dev0
	bump-my-version bump minor

.PHONY: bump-major
bump-major: ## Bump major release. 6.2.4 -> 7.0.0-dev0
	bump-my-version bump major

.PHONY: bump-patch
bump-patch: ## Bump patch release. 6.2.4 -> 6.2.5-dev0
	bump-my-version bump patch

####################
# Random shortcuts #
####################

.PHONY: config-diff
config-diff: ## Run git diff comparing molecule configs with 'devel' using our special config diff ignoring reordering of config lines.
	@GIT_EXTERNAL_DIFF=development/compare.py git diff devel --ext-diff -- **/configs/*.cfg


================================================
FILE: README.md
================================================
<!--
  ~ Copyright (c) 2023-2026 Arista Networks, Inc.
  ~ Use of this source code is governed by the Apache License 2.0
  ~ that can be found in the LICENSE file.
  -->

# Arista AVD - Architect, Validate, Deploy

![Arista AVD](https://img.shields.io/badge/Arista-AVD%20Automation-blue) ![collection version](https://img.shields.io/github/v/release/aristanetworks/avd) ![License](https://img.shields.io/github/license/aristanetworks/avd)

<img src="docs/_media/avd-logo.png" alt="Arista AVD" width="150"/>

Arista AVD is an extensible data model that defines Arista's Unified Cloud Network architecture as "code".

AVD Documentation:

- [Stable version](https://avd.arista.com/stable/)
- [Development version](https://avd.arista.com/devel/)

## Support

- AVD is an open-source project maintained by a dedicated Arista engineering team. Customers can purchase TAC support for AVD through the [A-Care Service contract](./docs/support/support_overview.md). TAC support for AVD must be purchased separately.
- Without a support contract AVD code can be used as-is, without any warranty and with best-effort problem resolution via [GitHub discussions board](https://github.com/aristanetworks/avd/discussions).

## Features

- **Flexibility with Open Data Models:** Extensible fabric-wide network models, simplifying configuration, delivering consistency, and reducing errors
- **Simplification through Multi-Domain Automation:** A framework that can automate the data center, campus or wide area network, enabled by a consistent EOS software image and management platform
- **Comprehensive Workflows:** Automating the full life cycle of network provisioning from config generation to pre- and post-deployment validation, and self-documentation of the network

## Reference designs

- [L3LS VXLAN-EVPN, L2LS, MPLS and WAN](https://avd.arista.com/stable/ansible_collections/arista/avd/roles/eos_designs/index.html#reference-designs)

## AVD Ansible Collection

[Arista Networks](https://www.arista.com/) supports Ansible for managing devices running Arista's **Extensible Operating System (EOS)** natively through its **EOS API (eAPI)** or [**CloudVision Portal (CVP)**](https://www.arista.com/en/products/eos/eos-cloudvision). The collection includes a set of Ansible roles and modules to help kick-start your automation with Arista. The various roles and templates provided are designed to be customized and extended to your needs.

### Examples

- [Getting started](https://avd.arista.com/stable/docs/getting-started/intro-to-ansible-and-avd.html)
- [Examples](https://avd.arista.com/stable/ansible_collections/arista/avd/examples/single-dc-l3ls/index.html)

## Additional resources

- Ansible [EOS modules](https://docs.ansible.com/ansible/latest/collections/arista/eos/index.html) on Ansible documentation
- [CloudVision Portal](https://www.arista.com/en/products/eos/eos-cloudvision)
- [Arista Design and Deployment Guides](https://www.arista.com/en/solutions/design-guides)
- [Arista Tech Library](https://tech-library.arista.com/)

## Contributing

Contributing pull requests are gladly welcomed for this repository. If you are planning a big change, please start a discussion first to make sure we'll be able to merge it. Please see the [contribution guide](https://avd.arista.com/stable/docs/contribution/overview.html) for additional details.

You can also open an [issue](https://github.com/aristanetworks/avd/issues) to report any problems or submit enhancements.

## License

Copyright (c) 2019-2026 Arista Networks, Inc.

The project is published under [Apache 2.0 License](LICENSE)


================================================
FILE: ansible_collections/arista/avd/.ansible-lint
================================================
---
profile: production

skip_list:
  - var-naming[no-role-prefix] # TODO: Fix internal variable names as a breaking change for AVD 6.0.0
mock_modules:
  # The following task files depend on other collections and ansible-lint is running in offline mode on galaxy/automation hub
  # so need to mock the modules or ignore the files.
  # mocking the module is better as we can catch other issues in them.
  # - roles/eos_config_deploy_eapi/tasks/main.yml
  - arista.eos.eos_config
  # - roles/eos_snapshot/tasks/main.yml
  - arista.eos.eos_command
kinds:
  - yaml: "**/extensions/molecule/eos_cli_config_gen/inventory/host_vars/host1/roles.yml"
  - yaml: "**/extensions/molecule/howto/artifacts.yml"


================================================
FILE: ansible_collections/arista/avd/.yamllint
================================================
---
# Based on ansible-lint config - https://ansible.readthedocs.io/projects/lint/rules/yaml/#yamllint-configuration
extends: default

rules:
  comments:
    # https://github.com/prettier/prettier/issues/6780
    min-spaces-from-content: 1
    level: error
  # https://github.com/adrienverge/yamllint/issues/384
  comments-indentation: false
  document-start: disable
  # We are adding an extra space inside braces as that's how prettier does it
  # and we are trying not to fight other linters.
  line-length:
    max: 160
    # TODO: See how we can fix this going forward
    ignore:
      - /extensions/molecule/**/intended/structured_configs/
      - /changelogs/fragments_backup/
  braces:
    min-spaces-inside: 0 # yamllint defaults to 0
    max-spaces-inside: 1 # yamllint defaults to 0
    level: error
  octal-values:
    forbid-implicit-octal: true # yamllint defaults to false
    forbid-explicit-octal: true # yamllint defaults to false
  #######################################################################
  # AVD Extra checks as compared to default ansible-lint configuration  #
  #     in most cases we are stricter so this is not conflicting except #
  #     for the indentation rule where we are more flexible.            #
  #######################################################################
  colons:
    max-spaces-after: -1
    level: error
  commas:
    max-spaces-after: -1
    level: error
  empty-lines:
    max: 1
    level: error
  hyphens:
    level: error
  key-duplicates:
    forbid-duplicated-merge-keys: true
  new-lines:
    type: unix
  indentation:
    level: error
    # TODO: Here we diverge from the ansible-lint default configuration
    #       and this is causing issues when running ansible-lint without
    #       out custom configuration.
    #       because the .yamllint is not included in the collection manifest
    #       this could lead to errors in CI that would be unobservable locally
    indent-sequences: consistent
    ignore:
      - /tests/output/**


================================================
FILE: ansible_collections/arista/avd/CHANGELOG.rst
================================================
========================
Arista.Avd Release Notes
========================

.. contents:: Topics

v6.1.0
======

Release Summary
---------------

Release 6.1.0 - See documentation on avd.arista.com for details.

Minor Changes
-------------

- Bump: ANTA requirements to v1.8.0 by @carl-baillargeon in https://github.com/aristanetworks/avd/pull/6690
- Bump: Pre-release 6.1.0-dev1 by @carlbuchmann in https://github.com/aristanetworks/avd/pull/6666
- Bump: grpclib>=0.4.8 by @carlbuchmann in https://github.com/aristanetworks/avd/pull/6590
- Doc(eos_designs): Add lab topologies for all examples by @ankudinov in https://github.com/aristanetworks/avd/pull/6483
- Doc(eos_designs): Fix rendering  MD Format `<nn>:<nn>.` is shown as `Format :.` in the description by @Vibhu-gslab in https://github.com/aristanetworks/avd/pull/6706
- Doc(eos_designs,eos_cli_config_gen): New section for Latency Analyzer by @carlbuchmann in https://github.com/aristanetworks/avd/pull/6704
- Doc: Cleanup stale artifacts by @JulioPDX in https://github.com/aristanetworks/avd/pull/6600
- Doc: Move the fabric_ip_addressing.loopback.ipv6_prefix_length to Fabric IP Addressing table by @Shivani-gslab in https://github.com/aristanetworks/avd/pull/6685
- Doc: collections install path is incorrect/updated by @fatpelt in https://github.com/aristanetworks/avd/pull/6577
- Doc: disable word wrap in mermaid graphs by @noredistribution in https://github.com/aristanetworks/avd/pull/6580
- Doc: fixing the link in readme by @ankudinov in https://github.com/aristanetworks/avd/pull/6644
- Doc: small add-ons to AVD playground documentation by @ankudinov in https://github.com/aristanetworks/avd/pull/6696
- Doc: user manual navigation refactor by @joelbreton2 in https://github.com/aristanetworks/avd/pull/6598
- Feat(cv_deploy): Process GRPC exceptions received during deployment of Static Studio Configlets by @alexeygorbunov in https://github.com/aristanetworks/avd/pull/6681
- Feat(eos_cli_config_gen): Add VRF support for anycast_rps by @stiltzkin10 in https://github.com/aristanetworks/avd/pull/6689
- Feat(eos_cli_config_gen): Add ipv6_nd support to ethernet_interfaces by @Vibhu-gslab in https://github.com/aristanetworks/avd/pull/6617
- Feat(eos_cli_config_gen): Add ipv6_nd support to management_interfaces by @Shivani-gslab in https://github.com/aristanetworks/avd/pull/6593
- Feat(eos_cli_config_gen): Add ipv6_nd support to port_channel_interfaces by @Vibhu-gslab in https://github.com/aristanetworks/avd/pull/6628
- Feat(eos_cli_config_gen): Add ipv6_nd support to tunnel_interfaces by @Shivani-gslab in https://github.com/aristanetworks/avd/pull/6680
- Feat(eos_cli_config_gen): Add management api http session timeout by @tkrenn-hc in https://github.com/aristanetworks/avd/pull/6614
- Feat(eos_cli_config_gen): Add support for 'spanning-tree link-type' by @vitthalmagadum in https://github.com/aristanetworks/avd/pull/6574
- Feat(eos_cli_config_gen): Add support for EVPN remote domain VRF by @xaviramon in https://github.com/aristanetworks/avd/pull/6529
- Feat(eos_cli_config_gen): Add support for latest style of description in `monitor_connectivity` data model by @laxmikantchintakindi in https://github.com/aristanetworks/avd/pull/6671
- Feat(eos_cli_config_gen): Added the support of dhcp client accept default-route under management interface by @MaheshGSLAB in https://github.com/aristanetworks/avd/pull/6558
- Feat(eos_cli_config_gen): Router multicast ipv6 improvements by @colinmacgiolla in https://github.com/aristanetworks/avd/pull/6579
- Feat(eos_cli_config_gen): Support RCF function with BGP network statement by @RestlessWanderer in https://github.com/aristanetworks/avd/pull/6599
- Feat(eos_cli_config_gen): Support for BGP Auto-RD by @Vibhu-gslab in https://github.com/aristanetworks/avd/pull/6518
- Feat(eos_cli_config_gen): Support for cv_loss_timeout flag by @vitthalmagadum in https://github.com/aristanetworks/avd/pull/6654
- Feat(eos_cli_config_gen, eos_designs): Add ipv6_nd support to vlan_interfaces  by @Vibhu-gslab in https://github.com/aristanetworks/avd/pull/6682
- Feat(eos_cli_config_gen, eos_designs): IPv6 SLAAC support for all interfaces (ipv6_address_auto_config and ipv6_addresses) by @Shivani-gslab in https://github.com/aristanetworks/avd/pull/6559
- Feat(eos_designs): 6.0.0+ workaround for the switch.vlans fact  by @alexeygorbunov in https://github.com/aristanetworks/avd/pull/6524
- Feat(eos_designs): Add new igmp_snooping model under network_services by @Shivani-gslab in https://github.com/aristanetworks/avd/pull/6712
- Feat(eos_designs): Add support for 'spanning-tree link-type <>' on connected_endpoints and network_ports by @vitthalmagadum in https://github.com/aristanetworks/avd/pull/6692
- Feat(eos_designs): Add support for TACACS Server timeout in aaa_settings.tacacs.servers by @Shivani-gslab in https://github.com/aristanetworks/avd/pull/6699
- Feat(eos_designs): Add support for `domain_list` in `dns_settings` by @laxmikantchintakindi in https://github.com/aristanetworks/avd/pull/6688
- Feat(eos_designs): Add support for interface_defaults.ethernet.shutdown by @laxmikantchintakindi in https://github.com/aristanetworks/avd/pull/6560
- Feat(eos_designs): Added the support for arp static entries into network services by @MaheshGSLAB in https://github.com/aristanetworks/avd/pull/6544
- Feat(eos_designs): Added the support of arp persistent, arp aging and ip icmp redirect under general settings by @MaheshGSLAB in https://github.com/aristanetworks/avd/pull/6521
- Feat(eos_designs): IPv6 addressing support for core_interfaces and l3_edge by @emilarista in https://github.com/aristanetworks/avd/pull/6193
- Feat(pyavd): Add allow_with_new_key field to deprecation metaschema by @gmuloc in https://github.com/aristanetworks/avd/pull/6596
- Refactor(eos_cli_config_gen): Fix the deprecation warning for IP RADIUS and TACACS source interface data model by @MaheshGSLAB in https://github.com/aristanetworks/avd/pull/6683
- Refactor(eos_cli_config_gen): Removing the templates for the 6.0 removed key ip_name_servers by @Shivani-gslab in https://github.com/aristanetworks/avd/pull/6697
- Refactor(eos_cli_config_gen, eos_designs): Add support of new ip tacacs data model by @MaheshGSLAB in https://github.com/aristanetworks/avd/pull/6651
- Refactor(eos_cli_config_gen, eos_designs): Added the support of new ip radius source interface data model by @MaheshGSLAB in https://github.com/aristanetworks/avd/pull/6506
- Refactor(eos_designs): Centralize parent interface generation for subinterfaces by @gmuloc in https://github.com/aristanetworks/avd/pull/6594
- Refactor(eos_designs): Move the dpath_enabled and domain ids under evpn gateway by @MaheshGSLAB in https://github.com/aristanetworks/avd/pull/6591
- Refactor(eos_designs): Relax the requirement for ip_address for main interface port-channels for nodes.l3_port_channels and nodes.l3_interfaces by @gmuloc in https://github.com/aristanetworks/avd/pull/6633
- Refactor(eos_designs): Remove redundant command no neighbor activate when no bgp default ipv4-unicast is configured by @MaheshGSLAB in https://github.com/aristanetworks/avd/pull/6404
- Refactor(eos_designs): Use `avd_design_future` key instead of `avd_7_behaviors` by @laxmikantchintakindi in https://github.com/aristanetworks/avd/pull/6655
- Refactor(pyavd): Add AVDTemplar to avoid accessing private Ansible Templar attributes and triggering deprecation by @gmuloc in https://github.com/aristanetworks/avd/pull/6658

Bugfixes
--------

- Fix(cv_deploy): Properly clean-up unused AVD-managed container assignments by @carl-baillargeon in https://github.com/aristanetworks/avd/pull/6650
- Fix(cv_deploy): Use standard 600s timeout for get_tags and delete_tags calls by @alexeygorbunov in https://github.com/aristanetworks/avd/pull/6678
- Fix(cv_deploy): Wait until new Workspace is ready before trying to use it by @alexeygorbunov in https://github.com/aristanetworks/avd/pull/6670
- Fix(eos_cli_config_gen): Fix typo in router multicast template by @Shivani-gslab in https://github.com/aristanetworks/avd/pull/6631
- Fix(eos_designs): Add support to set IGMP fast_leave without setting evpn_l2_multicast.enabled: true by @Shivani-gslab in https://github.com/aristanetworks/avd/pull/6626
- Fix(eos_designs): Address template values being None for custom template for ansible-core >= 2.19 by @gmuloc in https://github.com/aristanetworks/avd/pull/6663
- Fix(eos_designs): Allow VRF across multiple tenants with MLAG IBGP peering  by @gmuloc in https://github.com/aristanetworks/avd/pull/6646
- Fix(eos_designs): Fix EOS Config warning message by @carl-baillargeon in https://github.com/aristanetworks/avd/pull/6637
- Fix(eos_designs): Fix missing source interface for sflow_settings.export_to_cloudvision by @ClausHolbechArista in https://github.com/aristanetworks/avd/pull/6610
- Fix(plugins): Make ansible global_vars work for ansible-core>=2.19 by @gmuloc in https://github.com/aristanetworks/avd/pull/6619

v6.0.1
======

Release Summary
---------------

Release 6.0.1 - See documentation on avd.arista.com for details.

Minor Changes
-------------

- Bump: grpclib>=0.4.8 (#6590) by @ClausHolbechArista in https://github.com/aristanetworks/avd/pull/6605

v6.0.0
======

Release Summary
---------------

Release 6.0.0 - See documentation on avd.arista.com for details.

Minor Changes
-------------

- Bump(pyavd): Make pyavd-utils a proper dependency by @gmuloc in https://github.com/aristanetworks/avd/pull/6171
- Bump: ANTA requirements to v1.7.0 by @carl-baillargeon in https://github.com/aristanetworks/avd/pull/6268
- Bump: Add cryptography>=43.0.0 as a direct requirement of pyavd by @gmuloc in https://github.com/aristanetworks/avd/pull/5939
- Bump: Add support for ansible-core 2.20 by @gmuloc in https://github.com/aristanetworks/avd/pull/6397
- Bump: Update pyavd-utils to 0.0.2 by @gmuloc in https://github.com/aristanetworks/avd/pull/6527
- Cut(eos_designs): Remove evpn_bgp_gateway_inter_domain key because it is not used by @carl-baillargeon in https://github.com/aristanetworks/avd/pull/5869
- Cut(eos_designs, eos_cli_config_gen): Removing all keys marked as removed in 5.x by @Vibhu-gslab in https://github.com/aristanetworks/avd/pull/5798
- Cut: Remove pyavd-utils and rust from main AVD repo by @gmuloc in https://github.com/aristanetworks/avd/pull/6216
- Cut: Remove the file ansible_collections/arista/avd/collections.yml by @gmuloc in https://github.com/aristanetworks/avd/pull/5944
- Doc(anta_runner): Added how-to guide to migrate from eos_validate_state to anta_runner by @carl-baillargeon in https://github.com/aristanetworks/avd/pull/6465
- Doc(anta_runner): Improve anta_runner role documentation with latest changes by @carl-baillargeon in https://github.com/aristanetworks/avd/pull/6446
- Doc(anta_runner): Update VerifyReachability and VerifyLLDPNeighbors configuration source for inputs by @vitthalmagadum in https://github.com/aristanetworks/avd/pull/6074
- Doc(anta_runner): Updating role diagrams by @JulioPDX in https://github.com/aristanetworks/avd/pull/6475
- Doc(cv_deploy): Updating role diagram by @JulioPDX in https://github.com/aristanetworks/avd/pull/6542
- Doc(cv_deploy): cv_deploy migration documentation update by @philippebureau in https://github.com/aristanetworks/avd/pull/6117
- Doc(eos_cli_config_gen): Update diagram for eos_cli_config_gen workflow by @JulioPDX in https://github.com/aristanetworks/avd/pull/6471
- Doc(eos_cli_config_gen): fix deprecated eos_cli_config_gen key  by @joelbreton2 in https://github.com/aristanetworks/avd/pull/6415
- Doc(eos_config_deploy_eapi): Updating diagrams by @JulioPDX in https://github.com/aristanetworks/avd/pull/6477
- Doc(eos_designs): Fix incorrect variable name for mlag description in custom interface description example by @panagiotisevaggelou in https://github.com/aristanetworks/avd/pull/6293
- Doc(eos_designs): Fix level of New devices models by @carlbuchmann in https://github.com/aristanetworks/avd/pull/6462
- Doc(eos_designs): Fix wrong indentation for prefix-list catalog by @gmuloc in https://github.com/aristanetworks/avd/pull/6553
- Doc(eos_designs): How-to Guide - Connected Endpoint and Node Types by @joelbreton2 in https://github.com/aristanetworks/avd/pull/5882
- Doc(eos_designs): How-to Guide - Network Services by @JulioPDX in https://github.com/aristanetworks/avd/pull/6367
- Doc(eos_designs): How-to: Fabric Topology by @JulioPDX in https://github.com/aristanetworks/avd/pull/6382
- Doc(eos_designs): How-to: IP Addressing by @JulioPDX in https://github.com/aristanetworks/avd/pull/6416
- Doc(eos_designs): Remove duplicate mgmt interface-table by @joelbreton2 in https://github.com/aristanetworks/avd/pull/6366
- Doc(eos_designs): Update diagram for eos_designs role by @JulioPDX in https://github.com/aristanetworks/avd/pull/6470
- Doc(eos_designs): Update the section about `is_deployed : false` devices by @carl-baillargeon in https://github.com/aristanetworks/avd/pull/5863
- Doc(eos_designs): separate management settings tables by @joelbreton2 in https://github.com/aristanetworks/avd/pull/6305
- Doc(eos_designs): separate platform settings tables by @joelbreton2 in https://github.com/aristanetworks/avd/pull/6357
- Doc(eos_designs,eos_cli_config_gen): Update roles documentation by @carl-baillargeon in https://github.com/aristanetworks/avd/pull/6464
- Doc(eos_snapshot): Updating diagrams by @JulioPDX in https://github.com/aristanetworks/avd/pull/6478
- Doc(pyavd): Add porting guide for breaking pyavd changes by @ClausHolbechArista in https://github.com/aristanetworks/avd/pull/6442
- Doc: 6.0.0 Porting guides updates by @carlbuchmann in https://github.com/aristanetworks/avd/pull/6513
- Doc: Add Ansible usage patterns by @gmuloc in https://github.com/aristanetworks/avd/pull/6445
- Doc: Add Redhat AAP support text to Collection documentation by @carlbuchmann in https://github.com/aristanetworks/avd/pull/6062
- Doc: Add failure message to help migrate for removed roles by @gmuloc in https://github.com/aristanetworks/avd/pull/6468
- Doc: Add new PyAVD python requirement "python-socks[asyncio]" to release notes by @carlbuchmann in https://github.com/aristanetworks/avd/pull/5977
- Doc: Add sticky banner for EOS Config by @joelbreton2 in https://github.com/aristanetworks/avd/pull/6430
- Doc: Clarify error message for verify requirements by @Shivani-gslab in https://github.com/aristanetworks/avd/pull/6297
- Doc: Document schema naming changes in AVD 6.0.0 by @gmuloc in https://github.com/aristanetworks/avd/pull/6554
- Doc: Fix `flow_tracker_type` description by @carl-baillargeon in https://github.com/aristanetworks/avd/pull/6328
- Doc: Fix wrong docstring for secure_hash j2filter by @gmuloc in https://github.com/aristanetworks/avd/pull/6255
- Doc: Improve default interface usages in examples by @carlbuchmann in https://github.com/aristanetworks/avd/pull/6033
- Doc: Improve installation workflow by @carlbuchmann in https://github.com/aristanetworks/avd/pull/6484
- Doc: Missing rack in list of variables for dynamic assignment by @JulioPDX in https://github.com/aristanetworks/avd/pull/6455
- Doc: Reference port-channels instead of ethernet interfaces when they belong to a port channel by @Shivani-gslab in https://github.com/aristanetworks/avd/pull/6105
- Doc: Remove eos_config_deploy_cvp from examples by @joelbreton2 in https://github.com/aristanetworks/avd/pull/5868
- Doc: Remove eos_config_deploy_cvp objects in examples by @joelbreton2 in https://github.com/aristanetworks/avd/pull/6474
- Doc: Remove howto artifacts with destroy sequence by @JulioPDX in https://github.com/aristanetworks/avd/pull/6532
- Doc: Removing documentation generation from how-tos by @JulioPDX in https://github.com/aristanetworks/avd/pull/6368
- Doc: Rename leaves to leafs by @JulioPDX in https://github.com/aristanetworks/avd/pull/6493
- Doc: Rename migrate to cv_deploy guide by @joelbreton2 in https://github.com/aristanetworks/avd/pull/6472
- Doc: Update Dual DC l3ls example by @joelbreton2 in https://github.com/aristanetworks/avd/pull/5848
- Doc: Update Navigation by @JulioPDX in https://github.com/aristanetworks/avd/pull/6360
- Doc: Update PyAVD documentation by @carlbuchmann in https://github.com/aristanetworks/avd/pull/6201
- Doc: Update porting guide entries for removed keys by @Shivani-gslab in https://github.com/aristanetworks/avd/pull/6426
- Doc: Update removal versions in runtime.yml by @laxmikantchintakindi in https://github.com/aristanetworks/avd/pull/6467
- Doc: Update support documentation for 6.0.0 release by @carlbuchmann in https://github.com/aristanetworks/avd/pull/6420
- Doc: Update terminology for Arista AVD data models by @carlbuchmann in https://github.com/aristanetworks/avd/pull/6202
- Doc: Updating porting guide by @MaheshGSLAB in https://github.com/aristanetworks/avd/pull/6425
- Doc: how to connected endpoints minor fix by @joelbreton2 in https://github.com/aristanetworks/avd/pull/6388
- Doc: review examples for 6.0 by @joelbreton2 in https://github.com/aristanetworks/avd/pull/6311
- Feat(anta_runner): Add ANTA VerifyInventory test by @vitthalmagadum in https://github.com/aristanetworks/avd/pull/5937
- Feat(anta_runner): Add VTEP routing table tests by @carl-baillargeon in https://github.com/aristanetworks/avd/pull/6043
- Feat(anta_runner): Add VerifyOSPFMaxLSA, VerifyOSPFNeighborState ospf tests by @vitthalmagadum in https://github.com/aristanetworks/avd/pull/6057
- Feat(anta_runner): Add VerifyTransceiversManufacturers by @vitthalmagadum in https://github.com/aristanetworks/avd/pull/6153
- Feat(anta_runner): Add WAN routers DPS-to-DPS reachability test by @carl-baillargeon in https://github.com/aristanetworks/avd/pull/6412
- Feat(anta_runner): Add an option to enable running custom user tests by @vitthalmagadum in https://github.com/aristanetworks/avd/pull/6203
- Feat(anta_runner): Add inband management reachability tests by @carl-baillargeon in https://github.com/aristanetworks/avd/pull/6419
- Feat(anta_runner): Add input factory to VerifyLoggingErrors to support a configured period by @carl-baillargeon in https://github.com/aristanetworks/avd/pull/6098
- Feat(anta_runner): Add support for expanded results in Markdown by @carl-baillargeon in https://github.com/aristanetworks/avd/pull/6365
- Feat(anta_runner): Add the "Hitless reload requested by the user" cause to the VerifyReloadCause inputs by @carl-baillargeon in https://github.com/aristanetworks/avd/pull/6187
- Feat(anta_runner): New reachability tests by @carl-baillargeon in https://github.com/aristanetworks/avd/pull/6339
- Feat(anta_runner): Report should not report a fail when no tests are run by @vitthalmagadum in https://github.com/aristanetworks/avd/pull/5973
- Feat(anta_runner): Validate minimum number of power supplies by @vitthalmagadum in https://github.com/aristanetworks/avd/pull/6155
- Feat(anta_runner): Vxlan1 being down is failing VerifyInterfacesStatus when no tenants are defined by @vitthalmagadum in https://github.com/aristanetworks/avd/pull/6005
- Feat(anta_runner, eos_designs, eos_cli_config_gen): Add support to disable hardware tests by @carl-baillargeon in https://github.com/aristanetworks/avd/pull/6186
- Feat(cv_deploy): Expose list of targeted inactive devices if Workspace submission failed due to inactive devices by @alexeygorbunov in https://github.com/aristanetworks/avd/pull/4990
- Feat(cv_deploy): Proxy support by @alexeygorbunov in https://github.com/aristanetworks/avd/pull/5806
- Feat(eos_cli_config_gen): Add BGP large communities support by @tkrenn-hc in https://github.com/aristanetworks/avd/pull/6313
- Feat(eos_cli_config_gen): Add `ssm_range` under router pim sparse VRFs by @vitthalmagadum in https://github.com/aristanetworks/avd/pull/5910
- Feat(eos_cli_config_gen): Add new valid value to ipv6_dhcp_relay.option.remote_id_format by @gmuloc in https://github.com/aristanetworks/avd/pull/6409
- Feat(eos_cli_config_gen): Add new vrfs data model under ip_name_server_groups by @Shivani-gslab in https://github.com/aristanetworks/avd/pull/6007
- Feat(eos_cli_config_gen): Add packet type match criteria support in traffic_policies by @Vibhu-gslab in https://github.com/aristanetworks/avd/pull/6050
- Feat(eos_cli_config_gen): Add support for IP locking disablement on Port-channels by @ctyrider in https://github.com/aristanetworks/avd/pull/6139
- Feat(eos_cli_config_gen): Add support for Monitor link flap by @colinmacgiolla in https://github.com/aristanetworks/avd/pull/6275
- Feat(eos_cli_config_gen): Add support for logging local-interface by @laxmikantchintakindi in https://github.com/aristanetworks/avd/pull/6479
- Feat(eos_cli_config_gen): Add support for monitor loop-protection by @dmilyt in https://github.com/aristanetworks/avd/pull/6226
- Feat(eos_cli_config_gen): Add support for register local-interface for pim sparse mode by @Vibhu-gslab in https://github.com/aristanetworks/avd/pull/6086
- Feat(eos_cli_config_gen): Add support for type 8a ospf keys by @Shivani-gslab in https://github.com/aristanetworks/avd/pull/6081
- Feat(eos_cli_config_gen): Add support for vxlan interface shutdown option by @vitthalmagadum in https://github.com/aristanetworks/avd/pull/5996
- Feat(eos_cli_config_gen): Add support to disable EAP logoff on VLAN change in dot1x by @Shivani-gslab in https://github.com/aristanetworks/avd/pull/6144
- Feat(eos_cli_config_gen): Add support to render empty ACLs (with no ACEs) by @Shivani-gslab in https://github.com/aristanetworks/avd/pull/5844
- Feat(eos_cli_config_gen): Add traffic_policy under vlan_interfaces by @Shivani-gslab in https://github.com/aristanetworks/avd/pull/6051
- Feat(eos_cli_config_gen): Added support for DHCP Server TFTP Options 66 & 150 under subnets by @ernestoherrerab in https://github.com/aristanetworks/avd/pull/6145
- Feat(eos_cli_config_gen): Added support for DHCP Server TFTP Options 66 and 150 by @MaheshGSLAB in https://github.com/aristanetworks/avd/pull/5849
- Feat(eos_cli_config_gen): Added support to call an RCF function with aggregate-addresses by @RestlessWanderer in https://github.com/aristanetworks/avd/pull/6148
- Feat(eos_cli_config_gen): Added the support for 8a type bgp password by @MaheshGSLAB in https://github.com/aristanetworks/avd/pull/6182
- Feat(eos_cli_config_gen): Added the support of icmpv6 type under traffic policies by @MaheshGSLAB in https://github.com/aristanetworks/avd/pull/6019
- Feat(eos_cli_config_gen): Enhance transceiver data model for 400G  by @RestlessWanderer in https://github.com/aristanetworks/avd/pull/6207
- Feat(eos_designs):  Add cleartext options for enable password and user password by @MaheshGSLAB in https://github.com/aristanetworks/avd/pull/6281
- Feat(eos_designs): Add `dot1x_settings` - Part 1 by @carl-baillargeon in https://github.com/aristanetworks/avd/pull/6150
- Feat(eos_designs): Add connected_endpoints key and custom type for each endpoint by @ClausHolbechArista in https://github.com/aristanetworks/avd/pull/5974
- Feat(eos_designs): Add default platform_settings profiles for 7388X5 and 7060X5 by @alexeygorbunov in https://github.com/aristanetworks/avd/pull/6306
- Feat(eos_designs): Add dot1x_settings - Part 2 by @alexeygorbunov in https://github.com/aristanetworks/avd/pull/6389
- Feat(eos_designs): Add hostname as a property to pyavd.api.interface_descriptions InterfaceDescriptionData by @Shivani-gslab in https://github.com/aristanetworks/avd/pull/6107
- Feat(eos_designs): Add mgmt interface for local interface in flow tracking exporters by @Vibhu-gslab in https://github.com/aristanetworks/avd/pull/6184
- Feat(eos_designs): Add option to set `evpn_vlan_bundle` per VRF by @ClausHolbechArista in https://github.com/aristanetworks/avd/pull/6302
- Feat(eos_designs): Add support for ptp command 'no ptp free-running' under ptp_settings by @Shivani-gslab in https://github.com/aristanetworks/avd/pull/6285
- Feat(eos_designs): Add support for regex pattern for platform_settings[].platforms by @laxmikantchintakindi in https://github.com/aristanetworks/avd/pull/5725
- Feat(eos_designs): Add support to use regex for network services `bgp_peers.nodes` by @laxmikantchintakindi in https://github.com/aristanetworks/avd/pull/5747
- Feat(eos_designs): Add the ability in ssh_settings to explicitly enable or disable management ssh by @carlbuchmann in https://github.com/aristanetworks/avd/pull/6039
- Feat(eos_designs): Add use_local_interface_cli option to logging_settings  by @gmuloc in https://github.com/aristanetworks/avd/pull/6541
- Feat(eos_designs): Added support for IGMP snooping querier source interface as vrf_router_id by @MaheshGSLAB in https://github.com/aristanetworks/avd/pull/5782
- Feat(eos_designs): Added support for IPv6 ND prefix support for SVIs by @MaheshGSLAB in https://github.com/aristanetworks/avd/pull/5873
- Feat(eos_designs): Added support for TLS in aaa_settings.radius.servers by @MaheshGSLAB in https://github.com/aristanetworks/avd/pull/6135
- Feat(eos_designs): Added the support for flow tracking export_to_cloudvision by @Vibhu-gslab in https://github.com/aristanetworks/avd/pull/6238
- Feat(eos_designs): Added the support for router_id as ptp source_ip by @MaheshGSLAB in https://github.com/aristanetworks/avd/pull/6361
- Feat(eos_designs): Added the support to export the sflow setting vrf to cloudvision by @MaheshGSLAB in https://github.com/aristanetworks/avd/pull/6191
- Feat(eos_designs): Adding support for link-tracking downlinks on l3leaf to l2leaf by @Shivani-gslab in https://github.com/aristanetworks/avd/pull/5918
- Feat(eos_designs): Allow to customise SNMP Location using snmp_settings.location_template by @Vibhu-gslab in https://github.com/aristanetworks/avd/pull/5927
- Feat(eos_designs): Emit warning when detecting eos_cli_config_gen keys while validating eos_designs by @gmuloc in https://github.com/aristanetworks/avd/pull/6403
- Feat(eos_designs): Introduce as-path-based route filtering for evpn_prevent_readvertise_to_server by @alexeygorbunov in https://github.com/aristanetworks/avd/pull/5965
- Feat(eos_designs): Make as_path_acl default mode for evpn_prevent_readvertise_to_server by @alexeygorbunov in https://github.com/aristanetworks/avd/pull/5992
- Feat(eos_designs): Move wan_use_agent_env_var_for_kernel_software_forwarding_ecmp to platform setting by @Shivani-gslab in https://github.com/aristanetworks/avd/pull/6061
- Feat(eos_designs): PREVIEW - Add new `devices` and `device_profiles` models by @ClausHolbechArista in https://github.com/aristanetworks/avd/pull/6093
- Feat(eos_designs): Preview: Digital Twin for ACT. Automatically adjust OOB mgmt interface. by @alexeygorbunov in https://github.com/aristanetworks/avd/pull/5681
- Feat(eos_designs): update feature support - 7358 by @colinmacgiolla in https://github.com/aristanetworks/avd/pull/6319
- Feat(eos_designs, eos_cli_config_gen): Add Serial number if document in YMLs to Fabric-topology and fabric-p2ps CSV and eos_cli_config_gen documentation by @Shivani-gslab in https://github.com/aristanetworks/avd/pull/5929
- Feat(eos_designs, eos_cli_config_gen): Added support for hardware requirements under platform settings by @MaheshGSLAB in https://github.com/aristanetworks/avd/pull/6079
- Feat(eos_designs, eos_cli_config_gen): Added the support of exclude_as_extra_fabric_validation_target by @MaheshGSLAB in https://github.com/aristanetworks/avd/pull/6120
- Feat(eos_designs, eos_cli_config_gen): Added the support of validate_no_errors_period under metadata by @MaheshGSLAB in https://github.com/aristanetworks/avd/pull/6085
- Feat(eos_designs, eos_cli_config_gen): Added the support to enable or disable bgp peer validation in vrf by @MaheshGSLAB in https://github.com/aristanetworks/avd/pull/6071
- Feat(eos_designs, eos_cli_config_gen): Adding support for ip_address_secondaries in SVI/L3Po by @Shivani-gslab in https://github.com/aristanetworks/avd/pull/5874
- Feat(eos_designs,eos_cli_config_gen): Add role variables to keep temporary files by @carl-baillargeon in https://github.com/aristanetworks/avd/pull/6492
- Feat(eos_designs,eos_cli_config_gen): Expose avd_tmp_dir to eos_designs and eos_cli_config_gen roles by @carl-baillargeon in https://github.com/aristanetworks/avd/pull/6438
- Feat(plugins):  Add support for arista.avd.secure_hash to hash local_user passwords by @davidhayes9 in https://github.com/aristanetworks/avd/pull/4768
- Feat(plugins): New action plugin to template and validate AVD inputs by @carl-baillargeon in https://github.com/aristanetworks/avd/pull/6190
- Feat(pyavd): Add possibility to combine nested schema object by @gmuloc in https://github.com/aristanetworks/avd/pull/5485
- Feat: Encrypt temporary files when vault is enabled by @gmuloc in https://github.com/aristanetworks/avd/pull/6463
- Refactor(anta_runner): Enable LLDP validation for external (non-AVD) peers by @MaheshGSLAB in https://github.com/aristanetworks/avd/pull/6083
- Refactor(anta_runner): Refactor input factories to use generators and eliminate duplicate logging by @carl-baillargeon in https://github.com/aristanetworks/avd/pull/6189
- Refactor(eos_cli_config_gen): Add required: true in schemas part2 by @laxmikantchintakindi in https://github.com/aristanetworks/avd/pull/6080
- Refactor(eos_cli_config_gen): Add restrictions in schema part 3 by @laxmikantchintakindi in https://github.com/aristanetworks/avd/pull/6104
- Refactor(eos_cli_config_gen): Changed the input data model from ip_tftp_client_source_interfaces to ip_tftp_client by @MaheshGSLAB in https://github.com/aristanetworks/avd/pull/6237
- Refactor(eos_cli_config_gen): EOS cli config order changes as per 4.35.0F part5 by @Shivani-gslab in https://github.com/aristanetworks/avd/pull/6220
- Refactor(eos_cli_config_gen): EOS cli config order changes as per 4.35.0F part6 by @Shivani-gslab in https://github.com/aristanetworks/avd/pull/6239
- Refactor(eos_cli_config_gen): Ensure correct access to variables for custom_templates by @ClausHolbechArista in https://github.com/aristanetworks/avd/pull/6396
- Refactor(eos_cli_config_gen): Fix j2 template for mac_access_list.entries by @laxmikantchintakindi in https://github.com/aristanetworks/avd/pull/6289
- Refactor(eos_cli_config_gen): Fixing Cli order for policy_maps.qos by @Vibhu-gslab in https://github.com/aristanetworks/avd/pull/6283
- Refactor(eos_cli_config_gen): Need to fix the blank table rendering for prefix_lists by @Shivani-gslab in https://github.com/aristanetworks/avd/pull/6341
- Refactor(eos_cli_config_gen): Re sort priority-flow-control as per EOS by @Shivani-gslab in https://github.com/aristanetworks/avd/pull/6460
- Refactor(eos_cli_config_gen): Rearrange eos_cli as per EOS 4.35.0F part 12 by @vitthalmagadum in https://github.com/aristanetworks/avd/pull/6336
- Refactor(eos_cli_config_gen): Rearrange eos_cli as per EOS 4.35.0F part 13 by @vitthalmagadum in https://github.com/aristanetworks/avd/pull/6356
- Refactor(eos_cli_config_gen): Rearrange eos_cli as per EOS 4.35.0F part 14 by @MaheshGSLAB in https://github.com/aristanetworks/avd/pull/6401
- Refactor(eos_cli_config_gen): Rearrange eos_cli as per EOS 4.35.0F part 15 by @MaheshGSLAB in https://github.com/aristanetworks/avd/pull/6452
- Refactor(eos_cli_config_gen): Rearrange eos_cli as per EOS 4.35.0F part 7 by @laxmikantchintakindi in https://github.com/aristanetworks/avd/pull/6241
- Refactor(eos_cli_config_gen): Rearrange eos_cli as per EOS 4.35.0F part 8 by @MaheshGSLAB in https://github.com/aristanetworks/avd/pull/6296
- Refactor(eos_cli_config_gen): Rearrange eos_cli as per EOS4.35.0F part16 by @laxmikantchintakindi in https://github.com/aristanetworks/avd/pull/6461
- Refactor(eos_cli_config_gen): Rearrange eos_cli_config_gen config order as per EOS 4.35.0F part 11 by @Shivani-gslab in https://github.com/aristanetworks/avd/pull/6318
- Refactor(eos_cli_config_gen): Rearrange eos_cli_config_gen config order as per EOS 4.35.0F part 9 by @Shivani-gslab in https://github.com/aristanetworks/avd/pull/6307
- Refactor(eos_cli_config_gen): Remove default-gateway key for dhcp server IPv6 subnet by @Shivani-gslab in https://github.com/aristanetworks/avd/pull/6217
- Refactor(eos_cli_config_gen): Remove unused command `switchport tool port dzgre preserve` by @laxmikantchintakindi in https://github.com/aristanetworks/avd/pull/6466
- Refactor(eos_cli_config_gen): Updated the valid values for errordisable recovery and detect cause by @MaheshGSLAB in https://github.com/aristanetworks/avd/pull/6210
- Refactor(eos_cli_config_gen,eos_designs): Migrate metadata tenant to tenants by @gmuloc in https://github.com/aristanetworks/avd/pull/6431
- Refactor(eos_designs): Add additional support for ISIS advertise passive only by @gmuloc in https://github.com/aristanetworks/avd/pull/6378
- Refactor(eos_designs): Add use_default_mgmt_method_vrf for sflow_settings by @MaheshGSLAB in https://github.com/aristanetworks/avd/pull/6177
- Refactor(eos_designs): Allow vtep:true without vtep_loopback_ipv4_pool when loopback0 is used as VTEP interface by @laxmikantchintakindi in https://github.com/aristanetworks/avd/pull/5762
- Refactor(eos_designs): Improve handling of accepted_vlans in filtered_tenants by @gmuloc in https://github.com/aristanetworks/avd/pull/6342
- Refactor(eos_designs): Make id primary_key for message_digest_keys in OSPF by @laxmikantchintakindi in https://github.com/aristanetworks/avd/pull/5946
- Refactor(eos_designs): Move kernel_ecmp_cli to node_type by @laxmikantchintakindi in https://github.com/aristanetworks/avd/pull/6256
- Refactor(eos_designs): Move platform_settings.validate_hardware to validation_profiles  by @MaheshGSLAB in https://github.com/aristanetworks/avd/pull/6258
- Refactor(eos_designs): Optimize downstream_switch_endpoint_vlans_and_trunk_groups in eos_designs_facts by @gmuloc in https://github.com/aristanetworks/avd/pull/6343
- Refactor(eos_designs): Refactor schema and code for ntp_settings by @laxmikantchintakindi in https://github.com/aristanetworks/avd/pull/6008
- Refactor(eos_designs): Remove null values from schema by @ClausHolbechArista in https://github.com/aristanetworks/avd/pull/6146
- Refactor(eos_designs): p2p_links list keys `nodes`, `ip`, `interfaces` and `descriptions` accepts a minimum and maximum of two entries by @vitthalmagadum in https://github.com/aristanetworks/avd/pull/5970
- Refactor(eos_designs): uplink_interfaces, uplink_switches and uplink_switch_interfaces length check by @Vibhu-gslab in https://github.com/aristanetworks/avd/pull/6354
- Refactor(eos_designs, eos_cli_config_gen): Adding new model ip_http_client and ip_ssh_client in place of ip_http_client_source_interfaces and ip_ssh_client_source_interfaces respectively by @Vibhu-gslab in https://github.com/aristanetworks/avd/pull/6228
- Refactor(plugins): Add AvdActionPlugin class with logging config for action plugins by @carl-baillargeon in https://github.com/aristanetworks/avd/pull/5615
- Refactor(pyavd)!: Make sort_key mandatory in natural_sort when sorting list of dictionaries by @gmuloc in https://github.com/aristanetworks/avd/pull/6273
- Refactor(pyavd)!: Refactor `get_device_test_catalog` to support a dataclass for fabric-wide data by @carl-baillargeon in https://github.com/aristanetworks/avd/pull/6087
- Refactor(pyavd)!: Remove keep_extra_keys option for custom keys in AVD inputs by @Shivani-gslab in https://github.com/aristanetworks/avd/pull/5877
- Refactor(pyavd): Add support for dataclasses input models in CVClient tag methods by @carl-baillargeon in https://github.com/aristanetworks/avd/pull/5916
- Refactor(pyavd): Address pyright errors for python-avd/pyavd/schema_tools/ by @Shivani-gslab in https://github.com/aristanetworks/avd/pull/6168
- Refactor(pyavd): Ensure the primary-key is first in AvdModel under an AvdIndexedList by @ClausHolbechArista in https://github.com/aristanetworks/avd/pull/6344
- Refactor(pyavd): Improve typing for python-avd/pyavd/_schema/ by @Vibhu-gslab in https://github.com/aristanetworks/avd/pull/6152
- Refactor(pyavd): Improve typing for python-avd/pyavd/api by @Vibhu-gslab in https://github.com/aristanetworks/avd/pull/5976
- Refactor(pyavd): Improve typing for python-avd/pyavd/schema_tools/generate_classes by @Vibhu-gslab in https://github.com/aristanetworks/avd/pull/6219
- Refactor(pyavd): Refactor backend ANTA code of PyAVD by @carl-baillargeon in https://github.com/aristanetworks/avd/pull/6262
- Refactor(pyavd): Rename ANTA-related classes and modules to follow codebase conventions by @carl-baillargeon in https://github.com/aristanetworks/avd/pull/6498
- Refactor(pyavd): use pyavd utils for validation by @ClausHolbechArista in https://github.com/aristanetworks/avd/pull/6167
- Refactor(pyavd,eos_designs)!: Use the same structured_config across all eos_designs modules by @gmuloc in https://github.com/aristanetworks/avd/pull/5981
- Refactor: Correct AVD meta schema location by @carlbuchmann in https://github.com/aristanetworks/avd/pull/5902
- Refactor: Fix deprecation warning in global_vars for ansible-core >= 2.19 by @gmuloc in https://github.com/aristanetworks/avd/pull/6437
- Refactor: Fixing pyright errors for python/avdutils/tests by @Vibhu-gslab in https://github.com/aristanetworks/avd/pull/5993
- Refactor: Support ansible-core 2.19 by @ClausHolbechArista in https://github.com/aristanetworks/avd/pull/5666

Breaking Changes / Porting Guide
--------------------------------

- Cut!: Remove ansible.utils collection from arista.avd Ansible collection requirements by @gmuloc in https://github.com/aristanetworks/avd/pull/5958
- Cut!: Remove arista.cvp from collection requirements by @gmuloc in https://github.com/aristanetworks/avd/pull/5943
- Cut!: Remove cvp_configlet_upload role and configlet_build_config module by @carl-baillargeon in https://github.com/aristanetworks/avd/pull/5930
- Cut!: Remove eos_validate_state by @carl-baillargeon in https://github.com/aristanetworks/avd/pull/5856
- Cut!: Remove inventory_to_container module by @gmuloc in https://github.com/aristanetworks/avd/pull/5938
- Cut!: Remove the arista.avd.dhcp_provisioner role by @ClausHolbechArista in https://github.com/aristanetworks/avd/pull/5907
- Cut!: Remove the arista.avd.eos_config_deploy_cvp role by @ClausHolbechArista in https://github.com/aristanetworks/avd/pull/5912
- Cut!: Remove unused python requirements following ansible-cvp removal by @gmuloc in https://github.com/aristanetworks/avd/pull/5945
- Cut(eos_cli_config_gen)!: Remove deprecated key vlan_interfaces[].vrrp_ids[].ipv6.address by @Shivani-gslab in https://github.com/aristanetworks/avd/pull/5810
- Cut(eos_cli_config_gen)!: Remove deprecated keys for ethernet_interfaces by @Shivani-gslab in https://github.com/aristanetworks/avd/pull/5788
- Cut(eos_cli_config_gen)!: Remove deprecated keys for ip_name_server_groups by @Vibhu-gslab in https://github.com/aristanetworks/avd/pull/5802
- Cut(eos_cli_config_gen)!: Remove deprecated keys for management_ssh by @Shivani-gslab in https://github.com/aristanetworks/avd/pull/5809
- Cut(eos_cli_config_gen)!: Remove deprecated keys for router_path_selection by @Vibhu-gslab in https://github.com/aristanetworks/avd/pull/5808
- Cut(eos_cli_config_gen)!: Remove deprecated keys from `static_routes` and `ipv6_static_routes` by @laxmikantchintakindi in https://github.com/aristanetworks/avd/pull/5807
- Cut(eos_cli_config_gen)!: Remove deprecated keys from port channel interfaces by @laxmikantchintakindi in https://github.com/aristanetworks/avd/pull/5819
- Cut(eos_cli_config_gen)!: Remove deprecated keys generate_default_config and generate_device_documentation by @Shivani-gslab in https://github.com/aristanetworks/avd/pull/5805
- Cut(eos_cli_config_gen)!: Remove the logic for counter creation under traffic-policies.j2 by @Vibhu
Download .txt
Showing preview only (452K chars total). Download the full file or copy to clipboard to get everything.
gitextract_o4fy4adq/

├── .arista/
│   └── secret_allowlist.yaml
├── .codecov.yml
├── .codespellrc
├── .devcontainer/
│   └── devcontainer.json
├── .find-missing-tables-args
├── .flake8
├── .gitattributes
├── .github/
│   ├── CODEOWNERS
│   ├── ISSUE_TEMPLATE/
│   │   ├── bug-report.yml
│   │   └── feature-request.yml
│   ├── PULL_REQUEST_TEMPLATE/
│   │   ├── pull_request_template.md
│   │   └── schema_eos_cli_config_gen.md
│   ├── actions/
│   │   └── rn-pr-labeler-action/
│   │       └── action.yml
│   ├── changelog.sh
│   ├── check-git-status.sh
│   ├── dependabot.yml
│   ├── generate_release.py
│   ├── ignore-codespell-words
│   ├── ignore-codespell-words.md
│   ├── labeler.yml
│   ├── pull_request_template.md
│   ├── release.yml
│   ├── workflows/
│   │   ├── codecov.yml
│   │   ├── container_build_base.yml
│   │   ├── container_build_dev.yml
│   │   ├── container_build_fix.yml
│   │   ├── container_build_template.yml
│   │   ├── container_build_universal.yml
│   │   ├── new-cvp-integration.yml
│   │   ├── offline-links-check.yml
│   │   ├── pull-request-comment.yml
│   │   ├── pull-request-conflict.yml
│   │   ├── pull-request-management.yml
│   │   ├── pull-request-rn-labeler.yml
│   │   ├── pull-request-triage.yml
│   │   ├── release-schema.yml
│   │   ├── sonar.yml
│   │   └── stale.yml
│   └── yamllintrc
├── .gitignore
├── .markdownlint-cli2.yaml
├── .pre-commit-config.yaml
├── .readthedocs.yaml
├── .sonarlint/
│   └── connectedMode.json
├── LICENSE
├── Makefile
├── README.md
├── ansible_collections/
│   └── arista/
│       └── avd/
│           ├── .ansible-lint
│           ├── .yamllint
│           ├── CHANGELOG.rst
│           ├── CNAME
│           ├── LICENSE
│           ├── README.md
│           ├── bindep.txt
│           ├── changelogs/
│           │   ├── .plugin-cache.yaml
│           │   ├── README.md
│           │   ├── changelog.yaml
│           │   ├── config.yaml
│           │   ├── fragments/
│           │   │   └── .gitkeep
│           │   └── fragments_backup/
│           │       ├── v3.6.0.yml
│           │       ├── v3.7.0.yml
│           │       ├── v3.8.0.yml
│           │       ├── v4.0.0.yml
│           │       ├── v4.1.0.yml
│           │       ├── v4.10.0.yml
│           │       ├── v4.2.0.yml
│           │       ├── v4.3.0.yml
│           │       ├── v4.4.0.yml
│           │       ├── v4.5.0.yml
│           │       ├── v4.6.0.yml
│           │       ├── v4.7.0.yml
│           │       ├── v4.7.1.yml
│           │       ├── v4.8.0.yml
│           │       ├── v4.9.0.yml
│           │       ├── v5.0.0.yml
│           │       ├── v5.1.0.yml
│           │       ├── v5.2.0.yml
│           │       ├── v5.3.0.yml
│           │       ├── v5.4.0.yml
│           │       ├── v5.5.0.yml
│           │       ├── v5.6.0.yml
│           │       ├── v5.7.0.yml
│           │       ├── v6.0.0.yml
│           │       ├── v6.0.1.yml
│           │       └── v6.1.0.yml
│           ├── examples/
│           │   ├── README.md
│           │   ├── campus-fabric/
│           │   │   ├── README.md
│           │   │   ├── ansible.cfg
│           │   │   ├── build.yml
│           │   │   ├── deploy.yml
│           │   │   ├── documentation/
│           │   │   │   ├── devices/
│           │   │   │   │   ├── LEAF1A.md
│           │   │   │   │   ├── LEAF1B.md
│           │   │   │   │   ├── LEAF2A.md
│           │   │   │   │   ├── LEAF3A.md
│           │   │   │   │   ├── LEAF3B.md
│           │   │   │   │   ├── LEAF3C.md
│           │   │   │   │   ├── LEAF3D.md
│           │   │   │   │   ├── LEAF3E.md
│           │   │   │   │   ├── SPINE1.md
│           │   │   │   │   └── SPINE2.md
│           │   │   │   └── fabric/
│           │   │   │       └── DC1_FABRIC-documentation.md
│           │   │   ├── group_vars/
│           │   │   │   ├── DC1.yml
│           │   │   │   ├── DC1_FABRIC.yml
│           │   │   │   ├── DC1_LEAFS.yml
│           │   │   │   ├── DC1_NETWORK_PORTS.yml
│           │   │   │   ├── DC1_NETWORK_SERVICES.yml
│           │   │   │   └── DC1_SPINES.yml
│           │   │   ├── intended/
│           │   │   │   ├── configs/
│           │   │   │   │   ├── LEAF1A.cfg
│           │   │   │   │   ├── LEAF1B.cfg
│           │   │   │   │   ├── LEAF2A.cfg
│           │   │   │   │   ├── LEAF3A.cfg
│           │   │   │   │   ├── LEAF3B.cfg
│           │   │   │   │   ├── LEAF3C.cfg
│           │   │   │   │   ├── LEAF3D.cfg
│           │   │   │   │   ├── LEAF3E.cfg
│           │   │   │   │   ├── SPINE1.cfg
│           │   │   │   │   └── SPINE2.cfg
│           │   │   │   └── structured_configs/
│           │   │   │       ├── LEAF1A.yml
│           │   │   │       ├── LEAF1B.yml
│           │   │   │       ├── LEAF2A.yml
│           │   │   │       ├── LEAF3A.yml
│           │   │   │       ├── LEAF3B.yml
│           │   │   │       ├── LEAF3C.yml
│           │   │   │       ├── LEAF3D.yml
│           │   │   │       ├── LEAF3E.yml
│           │   │   │       ├── SPINE1.yml
│           │   │   │       └── SPINE2.yml
│           │   │   ├── inventory.yml
│           │   │   └── switch-basic-configurations/
│           │   │       ├── LEAF1A.cfg
│           │   │       ├── LEAF1B.cfg
│           │   │       ├── LEAF2A.cfg
│           │   │       ├── LEAF3A.cfg
│           │   │       ├── LEAF3B.cfg
│           │   │       ├── LEAF3C.cfg
│           │   │       ├── LEAF3D.cfg
│           │   │       ├── LEAF3E.cfg
│           │   │       ├── SPINE1.cfg
│           │   │       └── SPINE2.cfg
│           │   ├── common/
│           │   │   ├── example-installation.md
│           │   │   └── start-avd-playground.md
│           │   ├── cv-pathfinder/
│           │   │   ├── .vault
│           │   │   ├── README.md
│           │   │   ├── ansible.cfg
│           │   │   ├── build.yml
│           │   │   ├── deploy.yml
│           │   │   ├── documentation/
│           │   │   │   ├── devices/
│           │   │   │   │   ├── inet-cloud.md
│           │   │   │   │   ├── mpls-cloud.md
│           │   │   │   │   ├── pf1.md
│           │   │   │   │   ├── pf2.md
│           │   │   │   │   ├── site1-border1.md
│           │   │   │   │   ├── site1-border2.md
│           │   │   │   │   ├── site1-wan1.md
│           │   │   │   │   ├── site1-wan2.md
│           │   │   │   │   ├── site2-leaf1.md
│           │   │   │   │   ├── site2-leaf2.md
│           │   │   │   │   ├── site2-wan1.md
│           │   │   │   │   ├── site2-wan2.md
│           │   │   │   │   ├── site3-leaf1.md
│           │   │   │   │   ├── site3-wan1.md
│           │   │   │   │   ├── site4-border1.md
│           │   │   │   │   ├── site4-border2.md
│           │   │   │   │   └── site4-wan1.md
│           │   │   │   └── fabric/
│           │   │   │       ├── WAN-documentation.md
│           │   │   │       ├── WAN-p2p-links.csv
│           │   │   │       └── WAN-topology.csv
│           │   │   ├── group_vars/
│           │   │   │   ├── PATHFINDERS.yml
│           │   │   │   ├── SITE1.yml
│           │   │   │   ├── SITE2.yml
│           │   │   │   ├── SITE3.yml
│           │   │   │   ├── SITE4.yml
│           │   │   │   ├── TRANSPORTS.yml
│           │   │   │   ├── WAN/
│           │   │   │   │   ├── cv_pathfinder_settings.yml
│           │   │   │   │   ├── l3_interface_profiles.yml
│           │   │   │   │   ├── management.yml
│           │   │   │   │   └── tenants.yml
│           │   │   │   └── all.yml
│           │   │   ├── host_vars/
│           │   │   │   └── inet-cloud.yml
│           │   │   ├── intended/
│           │   │   │   ├── configs/
│           │   │   │   │   ├── inet-cloud.cfg
│           │   │   │   │   ├── mpls-cloud.cfg
│           │   │   │   │   ├── pf1.cfg
│           │   │   │   │   ├── pf2.cfg
│           │   │   │   │   ├── site1-border1.cfg
│           │   │   │   │   ├── site1-border2.cfg
│           │   │   │   │   ├── site1-wan1.cfg
│           │   │   │   │   ├── site1-wan2.cfg
│           │   │   │   │   ├── site2-leaf1.cfg
│           │   │   │   │   ├── site2-leaf2.cfg
│           │   │   │   │   ├── site2-wan1.cfg
│           │   │   │   │   ├── site2-wan2.cfg
│           │   │   │   │   ├── site3-leaf1.cfg
│           │   │   │   │   ├── site3-wan1.cfg
│           │   │   │   │   ├── site4-border1.cfg
│           │   │   │   │   ├── site4-border2.cfg
│           │   │   │   │   └── site4-wan1.cfg
│           │   │   │   └── structured_configs/
│           │   │   │       ├── inet-cloud.yml
│           │   │   │       ├── mpls-cloud.yml
│           │   │   │       ├── pf1.yml
│           │   │   │       ├── pf2.yml
│           │   │   │       ├── site1-border1.yml
│           │   │   │       ├── site1-border2.yml
│           │   │   │       ├── site1-wan1.yml
│           │   │   │       ├── site1-wan2.yml
│           │   │   │       ├── site2-leaf1.yml
│           │   │   │       ├── site2-leaf2.yml
│           │   │   │       ├── site2-wan1.yml
│           │   │   │       ├── site2-wan2.yml
│           │   │   │       ├── site3-leaf1.yml
│           │   │   │       ├── site3-wan1.yml
│           │   │   │       ├── site4-border1.yml
│           │   │   │       ├── site4-border2.yml
│           │   │   │       └── site4-wan1.yml
│           │   │   ├── inventory.yml
│           │   │   └── switch-basic-configurations/
│           │   │       ├── inet-cloud-basic-configuration.txt
│           │   │       ├── mpls-cloud-basic-configuration.txt
│           │   │       ├── pf1-basic-configuration.txt
│           │   │       ├── pf2-basic-configuration.txt
│           │   │       ├── site1-border1-basic-configuration.txt
│           │   │       ├── site1-border2-basic-configuration.txt
│           │   │       ├── site1-wan1-basic-configuration.txt
│           │   │       ├── site1-wan2-basic-configuration.txt
│           │   │       ├── site2-leaf1-basic-configuration.txt
│           │   │       ├── site2-leaf2-basic-configuration.txt
│           │   │       ├── site2-wan1-basic-configuration.txt
│           │   │       ├── site2-wan2-basic-configuration.txt
│           │   │       ├── site3-leaf1-basic-configuration.txt
│           │   │       └── site3-wan1-basic-configuration.txt
│           │   ├── dual-dc-l3ls/
│           │   │   ├── Makefile
│           │   │   ├── README.md
│           │   │   ├── ansible.cfg
│           │   │   ├── build.yml
│           │   │   ├── clab/
│           │   │   │   ├── init-configs/
│           │   │   │   │   ├── dc1-leaf1-server1.cfg
│           │   │   │   │   ├── dc1-leaf1a.cfg
│           │   │   │   │   ├── dc1-leaf1b.cfg
│           │   │   │   │   ├── dc1-leaf1c.cfg
│           │   │   │   │   ├── dc1-leaf2-server1.cfg
│           │   │   │   │   ├── dc1-leaf2a.cfg
│           │   │   │   │   ├── dc1-leaf2b.cfg
│           │   │   │   │   ├── dc1-leaf2c.cfg
│           │   │   │   │   ├── dc1-spine1.cfg
│           │   │   │   │   ├── dc1-spine2.cfg
│           │   │   │   │   ├── dc2-leaf1-server1.cfg
│           │   │   │   │   ├── dc2-leaf1a.cfg
│           │   │   │   │   ├── dc2-leaf1b.cfg
│           │   │   │   │   ├── dc2-leaf1c.cfg
│           │   │   │   │   ├── dc2-leaf2-server1.cfg
│           │   │   │   │   ├── dc2-leaf2a.cfg
│           │   │   │   │   ├── dc2-leaf2b.cfg
│           │   │   │   │   ├── dc2-leaf2c.cfg
│           │   │   │   │   ├── dc2-spine1.cfg
│           │   │   │   │   └── dc2-spine2.cfg
│           │   │   │   ├── interface_mapping.json
│           │   │   │   └── topology.clab.yml
│           │   │   ├── deploy.yml
│           │   │   ├── documentation/
│           │   │   │   ├── devices/
│           │   │   │   │   ├── dc1-leaf1a.md
│           │   │   │   │   ├── dc1-leaf1b.md
│           │   │   │   │   ├── dc1-leaf1c.md
│           │   │   │   │   ├── dc1-leaf2a.md
│           │   │   │   │   ├── dc1-leaf2b.md
│           │   │   │   │   ├── dc1-leaf2c.md
│           │   │   │   │   ├── dc1-spine1.md
│           │   │   │   │   ├── dc1-spine2.md
│           │   │   │   │   ├── dc2-leaf1a.md
│           │   │   │   │   ├── dc2-leaf1b.md
│           │   │   │   │   ├── dc2-leaf1c.md
│           │   │   │   │   ├── dc2-leaf2a.md
│           │   │   │   │   ├── dc2-leaf2b.md
│           │   │   │   │   ├── dc2-leaf2c.md
│           │   │   │   │   ├── dc2-spine1.md
│           │   │   │   │   └── dc2-spine2.md
│           │   │   │   └── fabric/
│           │   │   │       ├── FABRIC-documentation.md
│           │   │   │       ├── FABRIC-p2p-links.csv
│           │   │   │       └── FABRIC-topology.csv
│           │   │   ├── group_vars/
│           │   │   │   ├── CONNECTED_ENDPOINTS.yml
│           │   │   │   ├── DC1.yml
│           │   │   │   ├── DC1_L2_LEAFS.yml
│           │   │   │   ├── DC1_L3_LEAFS.yml
│           │   │   │   ├── DC1_SPINES.yml
│           │   │   │   ├── DC2.yml
│           │   │   │   ├── DC2_L2_LEAFS.yml
│           │   │   │   ├── DC2_L3_LEAFS.yml
│           │   │   │   ├── DC2_SPINES.yml
│           │   │   │   ├── FABRIC.yml
│           │   │   │   └── NETWORK_SERVICES.yml
│           │   │   ├── intended/
│           │   │   │   ├── configs/
│           │   │   │   │   ├── dc1-leaf1a.cfg
│           │   │   │   │   ├── dc1-leaf1b.cfg
│           │   │   │   │   ├── dc1-leaf1c.cfg
│           │   │   │   │   ├── dc1-leaf2a.cfg
│           │   │   │   │   ├── dc1-leaf2b.cfg
│           │   │   │   │   ├── dc1-leaf2c.cfg
│           │   │   │   │   ├── dc1-spine1.cfg
│           │   │   │   │   ├── dc1-spine2.cfg
│           │   │   │   │   ├── dc2-leaf1a.cfg
│           │   │   │   │   ├── dc2-leaf1b.cfg
│           │   │   │   │   ├── dc2-leaf1c.cfg
│           │   │   │   │   ├── dc2-leaf2a.cfg
│           │   │   │   │   ├── dc2-leaf2b.cfg
│           │   │   │   │   ├── dc2-leaf2c.cfg
│           │   │   │   │   ├── dc2-spine1.cfg
│           │   │   │   │   └── dc2-spine2.cfg
│           │   │   │   └── structured_configs/
│           │   │   │       ├── dc1-leaf1a.yml
│           │   │   │       ├── dc1-leaf1b.yml
│           │   │   │       ├── dc1-leaf1c.yml
│           │   │   │       ├── dc1-leaf2a.yml
│           │   │   │       ├── dc1-leaf2b.yml
│           │   │   │       ├── dc1-leaf2c.yml
│           │   │   │       ├── dc1-spine1.yml
│           │   │   │       ├── dc1-spine2.yml
│           │   │   │       ├── dc2-leaf1a.yml
│           │   │   │       ├── dc2-leaf1b.yml
│           │   │   │       ├── dc2-leaf1c.yml
│           │   │   │       ├── dc2-leaf2a.yml
│           │   │   │       ├── dc2-leaf2b.yml
│           │   │   │       ├── dc2-leaf2c.yml
│           │   │   │       ├── dc2-spine1.yml
│           │   │   │       └── dc2-spine2.yml
│           │   │   ├── inventory.yml
│           │   │   └── switch-basic-configurations/
│           │   │       ├── dc1-leaf1a-basic-configuration.txt
│           │   │       ├── dc1-leaf1b-basic-configuration.txt
│           │   │       ├── dc1-leaf1c-basic-configuration.txt
│           │   │       ├── dc1-leaf2a-basic-configuration.txt
│           │   │       ├── dc1-leaf2b-basic-configuration.txt
│           │   │       ├── dc1-leaf2c-basic-configuration.txt
│           │   │       ├── dc1-spine1-basic-configuration.txt
│           │   │       ├── dc1-spine2-basic-configuration.txt
│           │   │       ├── dc2-leaf1a-basic-configuration.txt
│           │   │       ├── dc2-leaf1b-basic-configuration.txt
│           │   │       ├── dc2-leaf1c-basic-configuration.txt
│           │   │       ├── dc2-leaf2a-basic-configuration.txt
│           │   │       ├── dc2-leaf2b-basic-configuration.txt
│           │   │       ├── dc2-leaf2c-basic-configuration.txt
│           │   │       ├── dc2-spine1-basic-configuration.txt
│           │   │       └── dc2-spine2-basic-configuration.txt
│           │   ├── isis-ldp-ipvpn/
│           │   │   ├── Makefile
│           │   │   ├── README.md
│           │   │   ├── ansible.cfg
│           │   │   ├── build.yml
│           │   │   ├── clab/
│           │   │   │   ├── init-configs/
│           │   │   │   │   ├── agg.cfg
│           │   │   │   │   ├── cu1cpe1.cfg
│           │   │   │   │   ├── cu1cpe2.cfg
│           │   │   │   │   ├── cu2cpe1.cfg
│           │   │   │   │   ├── cu2cpe2.cfg
│           │   │   │   │   ├── p1.cfg
│           │   │   │   │   ├── p2.cfg
│           │   │   │   │   ├── p3.cfg
│           │   │   │   │   ├── p4.cfg
│           │   │   │   │   ├── pe1.cfg
│           │   │   │   │   ├── pe2.cfg
│           │   │   │   │   ├── pe3.cfg
│           │   │   │   │   ├── rr1.cfg
│           │   │   │   │   └── rr2.cfg
│           │   │   │   ├── interface_mapping.json
│           │   │   │   └── topology.clab.yml
│           │   │   ├── deploy.yml
│           │   │   ├── documentation/
│           │   │   │   ├── devices/
│           │   │   │   │   ├── p1.md
│           │   │   │   │   ├── p2.md
│           │   │   │   │   ├── p3.md
│           │   │   │   │   ├── p4.md
│           │   │   │   │   ├── pe1.md
│           │   │   │   │   ├── pe2.md
│           │   │   │   │   ├── pe3.md
│           │   │   │   │   ├── rr1.md
│           │   │   │   │   └── rr2.md
│           │   │   │   └── fabric/
│           │   │   │       ├── FABRIC-documentation.md
│           │   │   │       ├── FABRIC-p2p-links.csv
│           │   │   │       └── FABRIC-topology.csv
│           │   │   ├── group_vars/
│           │   │   │   ├── FABRIC.yml
│           │   │   │   ├── NETWORK_SERVICES.yml
│           │   │   │   ├── WAN1.yml
│           │   │   │   ├── WAN1_PE_ROUTERS.yml
│           │   │   │   ├── WAN1_P_ROUTERS.yml
│           │   │   │   └── WAN1_RR_ROUTERS.yml
│           │   │   ├── intended/
│           │   │   │   ├── configs/
│           │   │   │   │   ├── p1.cfg
│           │   │   │   │   ├── p2.cfg
│           │   │   │   │   ├── p3.cfg
│           │   │   │   │   ├── p4.cfg
│           │   │   │   │   ├── pe1.cfg
│           │   │   │   │   ├── pe2.cfg
│           │   │   │   │   ├── pe3.cfg
│           │   │   │   │   ├── rr1.cfg
│           │   │   │   │   └── rr2.cfg
│           │   │   │   └── structured_configs/
│           │   │   │       ├── p1.yml
│           │   │   │       ├── p2.yml
│           │   │   │       ├── p3.yml
│           │   │   │       ├── p4.yml
│           │   │   │       ├── pe1.yml
│           │   │   │       ├── pe2.yml
│           │   │   │       ├── pe3.yml
│           │   │   │       ├── rr1.yml
│           │   │   │       └── rr2.yml
│           │   │   ├── inventory.yml
│           │   │   └── switch-basic-configurations/
│           │   │       ├── p1-basic-configuration.txt
│           │   │       ├── p2-basic-configuration.txt
│           │   │       ├── p3-basic-configuration.txt
│           │   │       ├── p4-basic-configuration.txt
│           │   │       ├── pe1-basic-configuration.txt
│           │   │       ├── pe2-basic-configuration.txt
│           │   │       ├── pe3-basic-configuration.txt
│           │   │       ├── rr1-basic-configuration.txt
│           │   │       └── rr2-basic-configuration.txt
│           │   ├── l2ls-fabric/
│           │   │   ├── Makefile
│           │   │   ├── README.md
│           │   │   ├── ansible.cfg
│           │   │   ├── build.yml
│           │   │   ├── clab/
│           │   │   │   ├── init-configs/
│           │   │   │   │   ├── FW.cfg
│           │   │   │   │   ├── HostA.cfg
│           │   │   │   │   ├── HostB.cfg
│           │   │   │   │   ├── HostC.cfg
│           │   │   │   │   ├── HostD.cfg
│           │   │   │   │   ├── LEAF1.cfg
│           │   │   │   │   ├── LEAF2.cfg
│           │   │   │   │   ├── LEAF3.cfg
│           │   │   │   │   ├── LEAF4.cfg
│           │   │   │   │   ├── SPINE1.cfg
│           │   │   │   │   └── SPINE2.cfg
│           │   │   │   ├── interface_mapping.json
│           │   │   │   └── topology.clab.yml
│           │   │   ├── deploy.yml
│           │   │   ├── documentation/
│           │   │   │   ├── devices/
│           │   │   │   │   ├── LEAF1.md
│           │   │   │   │   ├── LEAF2.md
│           │   │   │   │   ├── LEAF3.md
│           │   │   │   │   ├── LEAF4.md
│           │   │   │   │   ├── SPINE1.md
│           │   │   │   │   └── SPINE2.md
│           │   │   │   └── fabric/
│           │   │   │       └── DC1-documentation.md
│           │   │   ├── group_vars/
│           │   │   │   ├── DC1.yml
│           │   │   │   ├── DC1_ENDPOINTS.yml
│           │   │   │   ├── DC1_LEAFS.yml
│           │   │   │   ├── DC1_NETWORK_SERVICES.yml
│           │   │   │   ├── DC1_SPINES.yml
│           │   │   │   └── FABRIC.yml
│           │   │   ├── intended/
│           │   │   │   ├── configs/
│           │   │   │   │   ├── LEAF1.cfg
│           │   │   │   │   ├── LEAF2.cfg
│           │   │   │   │   ├── LEAF3.cfg
│           │   │   │   │   ├── LEAF4.cfg
│           │   │   │   │   ├── SPINE1.cfg
│           │   │   │   │   └── SPINE2.cfg
│           │   │   │   └── structured_configs/
│           │   │   │       ├── LEAF1.yml
│           │   │   │       ├── LEAF2.yml
│           │   │   │       ├── LEAF3.yml
│           │   │   │       ├── LEAF4.yml
│           │   │   │       ├── SPINE1.yml
│           │   │   │       └── SPINE2.yml
│           │   │   ├── inventory.yml
│           │   │   └── switch-basic-configurations/
│           │   │       ├── FIREWALL.cfg
│           │   │       ├── LEAF1.cfg
│           │   │       ├── LEAF2.cfg
│           │   │       ├── LEAF3.cfg
│           │   │       ├── LEAF4.cfg
│           │   │       ├── SPINE1.cfg
│           │   │       └── SPINE2.cfg
│           │   ├── single-dc-l3ls/
│           │   │   ├── Makefile
│           │   │   ├── README.md
│           │   │   ├── ansible.cfg
│           │   │   ├── build.yml
│           │   │   ├── clab/
│           │   │   │   ├── init-configs/
│           │   │   │   │   ├── dc1-leaf1-server1.cfg
│           │   │   │   │   ├── dc1-leaf1a.cfg
│           │   │   │   │   ├── dc1-leaf1b.cfg
│           │   │   │   │   ├── dc1-leaf1c.cfg
│           │   │   │   │   ├── dc1-leaf2-server1.cfg
│           │   │   │   │   ├── dc1-leaf2a.cfg
│           │   │   │   │   ├── dc1-leaf2b.cfg
│           │   │   │   │   ├── dc1-leaf2c.cfg
│           │   │   │   │   ├── dc1-spine1.cfg
│           │   │   │   │   └── dc1-spine2.cfg
│           │   │   │   ├── interface_mapping.json
│           │   │   │   └── topology.clab.yml
│           │   │   ├── deploy-cvp.yml
│           │   │   ├── deploy.yml
│           │   │   ├── documentation/
│           │   │   │   ├── devices/
│           │   │   │   │   ├── dc1-leaf1a.md
│           │   │   │   │   ├── dc1-leaf1b.md
│           │   │   │   │   ├── dc1-leaf1c.md
│           │   │   │   │   ├── dc1-leaf2a.md
│           │   │   │   │   ├── dc1-leaf2b.md
│           │   │   │   │   ├── dc1-leaf2c.md
│           │   │   │   │   ├── dc1-spine1.md
│           │   │   │   │   └── dc1-spine2.md
│           │   │   │   └── fabric/
│           │   │   │       ├── FABRIC-documentation.md
│           │   │   │       ├── FABRIC-p2p-links.csv
│           │   │   │       └── FABRIC-topology.csv
│           │   │   ├── group_vars/
│           │   │   │   ├── CONNECTED_ENDPOINTS/
│           │   │   │   │   └── connected_endpoints.yml
│           │   │   │   ├── DC1/
│           │   │   │   │   └── dc1.yml
│           │   │   │   ├── DC1_L2_LEAVES/
│           │   │   │   │   └── l2_leaves.yml
│           │   │   │   ├── DC1_L3_LEAVES/
│           │   │   │   │   └── l3_leaves.yml
│           │   │   │   ├── DC1_SPINES/
│           │   │   │   │   └── spines.yml
│           │   │   │   ├── FABRIC/
│           │   │   │   │   ├── fabric_ansible_connectivity.yml
│           │   │   │   │   └── fabric_variables.yml
│           │   │   │   └── NETWORK_SERVICES/
│           │   │   │       └── network_services.yml
│           │   │   ├── intended/
│           │   │   │   ├── configs/
│           │   │   │   │   ├── dc1-leaf1a.cfg
│           │   │   │   │   ├── dc1-leaf1b.cfg
│           │   │   │   │   ├── dc1-leaf1c.cfg
│           │   │   │   │   ├── dc1-leaf2a.cfg
│           │   │   │   │   ├── dc1-leaf2b.cfg
│           │   │   │   │   ├── dc1-leaf2c.cfg
│           │   │   │   │   ├── dc1-spine1.cfg
│           │   │   │   │   └── dc1-spine2.cfg
│           │   │   │   └── structured_configs/
│           │   │   │       ├── dc1-leaf1a.yml
│           │   │   │       ├── dc1-leaf1b.yml
│           │   │   │       ├── dc1-leaf1c.yml
│           │   │   │       ├── dc1-leaf2a.yml
│           │   │   │       ├── dc1-leaf2b.yml
│           │   │   │       ├── dc1-leaf2c.yml
│           │   │   │       ├── dc1-spine1.yml
│           │   │   │       └── dc1-spine2.yml
│           │   │   ├── inventory.yml
│           │   │   ├── inventory_without_ip.yml
│           │   │   └── switch-basic-configurations/
│           │   │       ├── dc1-leaf1a-basic-configuration.txt
│           │   │       ├── dc1-leaf1b-basic-configuration.txt
│           │   │       ├── dc1-leaf1c-basic-configuration.txt
│           │   │       ├── dc1-leaf2a-basic-configuration.txt
│           │   │       ├── dc1-leaf2b-basic-configuration.txt
│           │   │       ├── dc1-leaf2c-basic-configuration.txt
│           │   │       ├── dc1-spine1-basic-configuration.txt
│           │   │       └── dc1-spine2-basic-configuration.txt
│           │   ├── single-dc-l3ls-ipv6/
│           │   │   ├── Makefile
│           │   │   ├── README.md
│           │   │   ├── ansible.cfg
│           │   │   ├── build.yml
│           │   │   ├── clab/
│           │   │   │   ├── init-configs/
│           │   │   │   │   ├── dc1-leaf1-server1.cfg
│           │   │   │   │   ├── dc1-leaf1a.cfg
│           │   │   │   │   ├── dc1-leaf1b.cfg
│           │   │   │   │   ├── dc1-leaf1c.cfg
│           │   │   │   │   ├── dc1-leaf2-server1.cfg
│           │   │   │   │   ├── dc1-leaf2a.cfg
│           │   │   │   │   ├── dc1-leaf2b.cfg
│           │   │   │   │   ├── dc1-leaf2c.cfg
│           │   │   │   │   ├── dc1-spine1.cfg
│           │   │   │   │   └── dc1-spine2.cfg
│           │   │   │   ├── interface_mapping.json
│           │   │   │   └── topology.clab.yml
│           │   │   ├── deploy-cvp.yml
│           │   │   ├── deploy.yml
│           │   │   ├── documentation/
│           │   │   │   ├── devices/
│           │   │   │   │   ├── dc1-leaf1a.md
│           │   │   │   │   ├── dc1-leaf1b.md
│           │   │   │   │   ├── dc1-leaf1c.md
│           │   │   │   │   ├── dc1-leaf2a.md
│           │   │   │   │   ├── dc1-leaf2b.md
│           │   │   │   │   ├── dc1-leaf2c.md
│           │   │   │   │   ├── dc1-spine1.md
│           │   │   │   │   └── dc1-spine2.md
│           │   │   │   └── fabric/
│           │   │   │       ├── FABRIC-documentation.md
│           │   │   │       ├── FABRIC-p2p-links.csv
│           │   │   │       └── FABRIC-topology.csv
│           │   │   ├── group_vars/
│           │   │   │   ├── CONNECTED_ENDPOINTS/
│           │   │   │   │   └── connected_endpoints.yml
│           │   │   │   ├── DC1/
│           │   │   │   │   └── dc1.yml
│           │   │   │   ├── DC1_L2_LEAVES/
│           │   │   │   │   └── l2_leaves.yml
│           │   │   │   ├── DC1_L3_LEAVES/
│           │   │   │   │   └── l3_leaves.yml
│           │   │   │   ├── DC1_SPINES/
│           │   │   │   │   └── spines.yml
│           │   │   │   ├── FABRIC/
│           │   │   │   │   ├── fabric_ansible_connectivity.yml
│           │   │   │   │   └── fabric_variables.yml
│           │   │   │   └── NETWORK_SERVICES/
│           │   │   │       └── network_services.yml
│           │   │   ├── intended/
│           │   │   │   ├── configs/
│           │   │   │   │   ├── dc1-leaf1a.cfg
│           │   │   │   │   ├── dc1-leaf1b.cfg
│           │   │   │   │   ├── dc1-leaf1c.cfg
│           │   │   │   │   ├── dc1-leaf2a.cfg
│           │   │   │   │   ├── dc1-leaf2b.cfg
│           │   │   │   │   ├── dc1-leaf2c.cfg
│           │   │   │   │   ├── dc1-spine1.cfg
│           │   │   │   │   └── dc1-spine2.cfg
│           │   │   │   └── structured_configs/
│           │   │   │       ├── dc1-leaf1a.yml
│           │   │   │       ├── dc1-leaf1b.yml
│           │   │   │       ├── dc1-leaf1c.yml
│           │   │   │       ├── dc1-leaf2a.yml
│           │   │   │       ├── dc1-leaf2b.yml
│           │   │   │       ├── dc1-leaf2c.yml
│           │   │   │       ├── dc1-spine1.yml
│           │   │   │       └── dc1-spine2.yml
│           │   │   ├── inventory.yml
│           │   │   ├── inventory_without_ip.yml
│           │   │   └── switch-basic-configurations/
│           │   │       ├── dc1-leaf1a-basic-configuration.txt
│           │   │       ├── dc1-leaf1b-basic-configuration.txt
│           │   │       ├── dc1-leaf1c-basic-configuration.txt
│           │   │       ├── dc1-leaf2a-basic-configuration.txt
│           │   │       ├── dc1-leaf2b-basic-configuration.txt
│           │   │       ├── dc1-leaf2c-basic-configuration.txt
│           │   │       ├── dc1-spine1-basic-configuration.txt
│           │   │       └── dc1-spine2-basic-configuration.txt
│           │   └── single-dc-multipod-l3ls/
│           │       ├── Makefile
│           │       ├── README.md
│           │       ├── ansible.cfg
│           │       ├── build.yml
│           │       ├── clab/
│           │       │   ├── init-configs/
│           │       │   │   ├── dc1-leaf1a.cfg
│           │       │   │   ├── dc1-leaf1b.cfg
│           │       │   │   ├── dc1-leaf2a.cfg
│           │       │   │   ├── dc1-leaf2b.cfg
│           │       │   │   ├── dc1-spine1.cfg
│           │       │   │   ├── dc1-spine2.cfg
│           │       │   │   ├── dc1-spine3.cfg
│           │       │   │   ├── dc1-spine4.cfg
│           │       │   │   ├── dc1-ss1.cfg
│           │       │   │   ├── dc1-ss2.cfg
│           │       │   │   ├── host1.cfg
│           │       │   │   └── host2.cfg
│           │       │   ├── interface_mapping.json
│           │       │   └── topology.clab.yml
│           │       ├── deploy.yml
│           │       ├── documentation/
│           │       │   ├── devices/
│           │       │   │   ├── dc1-leaf1a.md
│           │       │   │   ├── dc1-leaf1b.md
│           │       │   │   ├── dc1-leaf2a.md
│           │       │   │   ├── dc1-leaf2b.md
│           │       │   │   ├── dc1-spine1.md
│           │       │   │   ├── dc1-spine2.md
│           │       │   │   ├── dc1-spine3.md
│           │       │   │   ├── dc1-spine4.md
│           │       │   │   ├── dc1-ss1.md
│           │       │   │   └── dc1-ss2.md
│           │       │   └── fabric/
│           │       │       ├── FABRIC-documentation.md
│           │       │       ├── FABRIC-p2p-links.csv
│           │       │       └── FABRIC-topology.csv
│           │       ├── group_vars/
│           │       │   ├── CONNECTED_ENDPOINTS/
│           │       │   │   └── endpoints.yml
│           │       │   ├── EVPN_SERVICES/
│           │       │   │   └── evpn_services.yml
│           │       │   ├── FABRIC/
│           │       │   │   ├── fabric_ansible_connectivity.yml
│           │       │   │   └── fabric_variables.yml
│           │       │   ├── POD1/
│           │       │   │   └── pod1.yml
│           │       │   ├── POD2/
│           │       │   │   └── pod2.yml
│           │       │   └── SUPERSPINES/
│           │       │       └── superspines.yml
│           │       ├── intended/
│           │       │   ├── configs/
│           │       │   │   ├── dc1-leaf1a.cfg
│           │       │   │   ├── dc1-leaf1b.cfg
│           │       │   │   ├── dc1-leaf2a.cfg
│           │       │   │   ├── dc1-leaf2b.cfg
│           │       │   │   ├── dc1-spine1.cfg
│           │       │   │   ├── dc1-spine2.cfg
│           │       │   │   ├── dc1-spine3.cfg
│           │       │   │   ├── dc1-spine4.cfg
│           │       │   │   ├── dc1-ss1.cfg
│           │       │   │   └── dc1-ss2.cfg
│           │       │   └── structured_configs/
│           │       │       ├── dc1-leaf1a.yml
│           │       │       ├── dc1-leaf1b.yml
│           │       │       ├── dc1-leaf2a.yml
│           │       │       ├── dc1-leaf2b.yml
│           │       │       ├── dc1-spine1.yml
│           │       │       ├── dc1-spine2.yml
│           │       │       ├── dc1-spine3.yml
│           │       │       ├── dc1-spine4.yml
│           │       │       ├── dc1-ss1.yml
│           │       │       └── dc1-ss2.yml
│           │       ├── inventory.yml
│           │       └── validate.yml
│           ├── extensions/
│           │   ├── molecule/
│           │   │   ├── MOLECULE_SCENARIOS.txt
│           │   │   ├── Makefile
│           │   │   ├── README.md
│           │   │   ├── ansible_only/
│           │   │   │   ├── converge.yml
│           │   │   │   ├── create.yml
│           │   │   │   ├── custom_templates/
│           │   │   │   │   ├── empty.j2
│           │   │   │   │   ├── interface_descriptions/
│           │   │   │   │   │   ├── connected_endpoints/
│           │   │   │   │   │   │   ├── ethernet-interfaces.j2
│           │   │   │   │   │   │   └── port-channel-interfaces.j2
│           │   │   │   │   │   ├── loopbacks/
│           │   │   │   │   │   │   ├── router-id-loopback.j2
│           │   │   │   │   │   │   └── vtep-loopback.j2
│           │   │   │   │   │   ├── mlag/
│           │   │   │   │   │   │   ├── ethernet-interfaces.j2
│           │   │   │   │   │   │   └── port-channel-interfaces.j2
│           │   │   │   │   │   └── underlay/
│           │   │   │   │   │       ├── ethernet-interfaces.j2
│           │   │   │   │   │       └── port-channel-interfaces.j2
│           │   │   │   │   └── ip_addressing/
│           │   │   │   │       ├── mlag-ibgp-peering-ip-primary.j2
│           │   │   │   │       ├── mlag-ibgp-peering-ip-secondary.j2
│           │   │   │   │       ├── mlag-ip-primary.j2
│           │   │   │   │       ├── mlag-ip-secondary.j2
│           │   │   │   │       ├── mlag-l3-ip-primary.j2
│           │   │   │   │       ├── mlag-l3-ip-secondary.j2
│           │   │   │   │       ├── p2p-uplinks-ip.j2
│           │   │   │   │       ├── p2p-uplinks-peer-ip.j2
│           │   │   │   │       ├── router-id-ipv6.j2
│           │   │   │   │       ├── router-id.j2
│           │   │   │   │       ├── vtep-ip-mlag.j2
│           │   │   │   │       └── vtep-ip.j2
│           │   │   │   ├── destroy.yml
│           │   │   │   ├── intended/
│           │   │   │   │   ├── configs/
│           │   │   │   │   │   ├── custom-templates-l2leaf1a.cfg
│           │   │   │   │   │   ├── custom-templates-l2leaf1b.cfg
│           │   │   │   │   │   ├── custom-templates-l3leaf1a.cfg
│           │   │   │   │   │   ├── custom-templates-l3leaf1b.cfg
│           │   │   │   │   │   ├── custom-templates-spine1.cfg
│           │   │   │   │   │   ├── dc1-bl1a.cfg
│           │   │   │   │   │   ├── dc1-bl1b.cfg
│           │   │   │   │   │   ├── dc1-spine1.cfg
│           │   │   │   │   │   ├── l3-edge.cfg
│           │   │   │   │   │   ├── node-type-l3-interfaces-portchannels-custom-template.cfg
│           │   │   │   │   │   ├── rd-rt-admin-subfield-l3leaf.cfg
│           │   │   │   │   │   └── string-set-as-play-var.cfg
│           │   │   │   │   └── structured_configs/
│           │   │   │   │       ├── custom-templates-l2leaf1a.yml
│           │   │   │   │       ├── custom-templates-l2leaf1b.yml
│           │   │   │   │       ├── custom-templates-l3leaf1a.yml
│           │   │   │   │       ├── custom-templates-l3leaf1b.yml
│           │   │   │   │       ├── custom-templates-spine1.yml
│           │   │   │   │       ├── dc1-bl1a.yml
│           │   │   │   │       ├── dc1-bl1b.yml
│           │   │   │   │       ├── dc1-spine1.yml
│           │   │   │   │       ├── l3-edge.yml
│           │   │   │   │       ├── node-type-l3-interfaces-portchannels-custom-template.yml
│           │   │   │   │       ├── rd-rt-admin-subfield-l3leaf.yml
│           │   │   │   │       └── string-set-as-play-var.yml
│           │   │   │   ├── inventory/
│           │   │   │   │   ├── group_vars/
│           │   │   │   │   │   ├── CUSTOM_TEMPLATES_L2LEAFS.yml
│           │   │   │   │   │   ├── CUSTOM_TEMPLATES_L3LEAFS.yml
│           │   │   │   │   │   ├── CUSTOM_TEMPLATES_SPINES.yml
│           │   │   │   │   │   ├── CUSTOM_TEMPLATES_TESTS.yml
│           │   │   │   │   │   ├── DC1_BL1.yml
│           │   │   │   │   │   ├── DC1_FABRIC.yml
│           │   │   │   │   │   ├── DC1_SPINES.yml
│           │   │   │   │   │   ├── EOS_DESIGNS_UNIT_TESTS.yml
│           │   │   │   │   │   └── all.yml
│           │   │   │   │   ├── host_vars/
│           │   │   │   │   │   ├── dc1-bl1a.yml
│           │   │   │   │   │   ├── l3-edge.yml
│           │   │   │   │   │   ├── node-type-l3-interfaces-portchannels-custom-template.yml
│           │   │   │   │   │   ├── rd-rt-admin-subfield-l3leaf.yml
│           │   │   │   │   │   └── string-set-as-play-var.yml
│           │   │   │   │   └── hosts.yml
│           │   │   │   ├── molecule.yml
│           │   │   │   └── verify.yml
│           │   │   ├── anta_runner/
│           │   │   │   ├── anta/
│           │   │   │   │   ├── avd_catalogs/
│           │   │   │   │   │   ├── default_run/
│           │   │   │   │   │   │   ├── dc1-leaf1a.json
│           │   │   │   │   │   │   ├── dc1-leaf1b.json
│           │   │   │   │   │   │   ├── dc1-leaf1c.json
│           │   │   │   │   │   │   ├── dc1-leaf2a.json
│           │   │   │   │   │   │   ├── dc1-leaf2c.json
│           │   │   │   │   │   │   ├── dc1-spine1.json
│           │   │   │   │   │   │   ├── dc1-spine2.json
│           │   │   │   │   │   │   ├── dc1-svc-leaf1a.json
│           │   │   │   │   │   │   ├── dc1-svc-leaf1b.json
│           │   │   │   │   │   │   ├── dc1-wan1.json
│           │   │   │   │   │   │   ├── dc1-wan2.json
│           │   │   │   │   │   │   ├── dc1-wan3.json
│           │   │   │   │   │   │   ├── dc2-leaf1a.json
│           │   │   │   │   │   │   ├── dc2-leaf1b.json
│           │   │   │   │   │   │   ├── dc2-leaf1c.json
│           │   │   │   │   │   │   ├── dc2-leaf2a.json
│           │   │   │   │   │   │   ├── dc2-leaf2b.json
│           │   │   │   │   │   │   ├── dc2-leaf3a.arista.com.json
│           │   │   │   │   │   │   ├── dc2-leaf3b.arista.com.json
│           │   │   │   │   │   │   ├── dc2-leaf3c.json
│           │   │   │   │   │   │   ├── dc2-spine1.json
│           │   │   │   │   │   │   └── dc2-spine2.json
│           │   │   │   │   │   ├── default_run_filtered_report/
│           │   │   │   │   │   │   ├── dc1-leaf1a.json
│           │   │   │   │   │   │   ├── dc1-leaf1b.json
│           │   │   │   │   │   │   ├── dc1-leaf1c.json
│           │   │   │   │   │   │   ├── dc1-leaf2a.json
│           │   │   │   │   │   │   ├── dc1-leaf2c.json
│           │   │   │   │   │   │   ├── dc1-spine1.json
│           │   │   │   │   │   │   ├── dc1-spine2.json
│           │   │   │   │   │   │   ├── dc1-svc-leaf1a.json
│           │   │   │   │   │   │   ├── dc1-svc-leaf1b.json
│           │   │   │   │   │   │   ├── dc1-wan1.json
│           │   │   │   │   │   │   ├── dc1-wan2.json
│           │   │   │   │   │   │   ├── dc1-wan3.json
│           │   │   │   │   │   │   ├── dc2-leaf1a.json
│           │   │   │   │   │   │   ├── dc2-leaf1b.json
│           │   │   │   │   │   │   ├── dc2-leaf1c.json
│           │   │   │   │   │   │   ├── dc2-leaf2a.json
│           │   │   │   │   │   │   ├── dc2-leaf2b.json
│           │   │   │   │   │   │   ├── dc2-leaf3a.arista.com.json
│           │   │   │   │   │   │   ├── dc2-leaf3b.arista.com.json
│           │   │   │   │   │   │   ├── dc2-leaf3c.json
│           │   │   │   │   │   │   ├── dc2-spine1.json
│           │   │   │   │   │   │   └── dc2-spine2.json
│           │   │   │   │   │   ├── default_run_sorted_report/
│           │   │   │   │   │   │   ├── dc1-leaf1a.json
│           │   │   │   │   │   │   ├── dc1-leaf1b.json
│           │   │   │   │   │   │   ├── dc1-leaf1c.json
│           │   │   │   │   │   │   ├── dc1-leaf2a.json
│           │   │   │   │   │   │   ├── dc1-leaf2c.json
│           │   │   │   │   │   │   ├── dc1-spine1.json
│           │   │   │   │   │   │   ├── dc1-spine2.json
│           │   │   │   │   │   │   ├── dc1-svc-leaf1a.json
│           │   │   │   │   │   │   ├── dc1-svc-leaf1b.json
│           │   │   │   │   │   │   ├── dc1-wan1.json
│           │   │   │   │   │   │   ├── dc1-wan2.json
│           │   │   │   │   │   │   ├── dc1-wan3.json
│           │   │   │   │   │   │   ├── dc2-leaf1a.json
│           │   │   │   │   │   │   ├── dc2-leaf1b.json
│           │   │   │   │   │   │   ├── dc2-leaf1c.json
│           │   │   │   │   │   │   ├── dc2-leaf2a.json
│           │   │   │   │   │   │   ├── dc2-leaf2b.json
│           │   │   │   │   │   │   ├── dc2-leaf3a.arista.com.json
│           │   │   │   │   │   │   ├── dc2-leaf3b.arista.com.json
│           │   │   │   │   │   │   ├── dc2-leaf3c.json
│           │   │   │   │   │   │   ├── dc2-spine1.json
│           │   │   │   │   │   │   └── dc2-spine2.json
│           │   │   │   │   │   └── filtered_run/
│           │   │   │   │   │       ├── dc1-leaf1a.json
│           │   │   │   │   │       ├── dc1-leaf1b.json
│           │   │   │   │   │       ├── dc1-leaf1c.json
│           │   │   │   │   │       ├── dc1-leaf2a.json
│           │   │   │   │   │       ├── dc1-leaf2c.json
│           │   │   │   │   │       ├── dc1-spine1.json
│           │   │   │   │   │       ├── dc1-spine2.json
│           │   │   │   │   │       ├── dc1-svc-leaf1a.json
│           │   │   │   │   │       ├── dc1-svc-leaf1b.json
│           │   │   │   │   │       ├── dc1-wan1.json
│           │   │   │   │   │       ├── dc1-wan2.json
│           │   │   │   │   │       ├── dc1-wan3.json
│           │   │   │   │   │       ├── dc2-leaf1a.json
│           │   │   │   │   │       ├── dc2-leaf1b.json
│           │   │   │   │   │       ├── dc2-leaf1c.json
│           │   │   │   │   │       ├── dc2-leaf2a.json
│           │   │   │   │   │       ├── dc2-leaf2b.json
│           │   │   │   │   │       ├── dc2-leaf3a.arista.com.json
│           │   │   │   │   │       ├── dc2-leaf3b.arista.com.json
│           │   │   │   │   │       ├── dc2-leaf3c.json
│           │   │   │   │   │       ├── dc2-spine1.json
│           │   │   │   │   │       └── dc2-spine2.json
│           │   │   │   │   ├── reports/
│           │   │   │   │   │   ├── default_run/
│           │   │   │   │   │   │   ├── anta_report.csv
│           │   │   │   │   │   │   ├── anta_report.json
│           │   │   │   │   │   │   └── anta_report.md
│           │   │   │   │   │   ├── default_run_filtered_report/
│           │   │   │   │   │   │   ├── anta_report.csv
│           │   │   │   │   │   │   ├── anta_report.json
│           │   │   │   │   │   │   └── anta_report.md
│           │   │   │   │   │   ├── default_run_sorted_report/
│           │   │   │   │   │   │   ├── anta_report.csv
│           │   │   │   │   │   │   ├── anta_report.json
│           │   │   │   │   │   │   └── anta_report.md
│           │   │   │   │   │   ├── filtered_run/
│           │   │   │   │   │   │   ├── anta_report.csv
│           │   │   │   │   │   │   ├── anta_report.json
│           │   │   │   │   │   │   └── anta_report.md
│           │   │   │   │   │   ├── user_defined_catalogs_run/
│           │   │   │   │   │   │   ├── anta_report.csv
│           │   │   │   │   │   │   ├── anta_report.json
│           │   │   │   │   │   │   └── anta_report.md
│           │   │   │   │   │   └── user_defined_catalogs_with_tags_run/
│           │   │   │   │   │       ├── anta_report.csv
│           │   │   │   │   │       ├── anta_report.json
│           │   │   │   │   │       └── anta_report.md
│           │   │   │   │   └── user_catalogs/
│           │   │   │   │       ├── software.yml
│           │   │   │   │       └── vxlan.yml
│           │   │   │   ├── converge.yml
│           │   │   │   ├── create.yml
│           │   │   │   ├── destroy.yml
│           │   │   │   ├── intended/
│           │   │   │   │   └── structured_configs/
│           │   │   │   │       ├── dc1-leaf1a.yml
│           │   │   │   │       ├── dc1-leaf1b.yml
│           │   │   │   │       ├── dc1-leaf1c.yml
│           │   │   │   │       ├── dc1-leaf2a.yml
│           │   │   │   │       ├── dc1-leaf2b.yml
│           │   │   │   │       ├── dc1-leaf2c.yml
│           │   │   │   │       ├── dc1-spine1.yml
│           │   │   │   │       ├── dc1-spine2.yml
│           │   │   │   │       ├── dc1-svc-leaf1a.yml
│           │   │   │   │       ├── dc1-svc-leaf1b.yml
│           │   │   │   │       ├── dc1-wan1.yml
│           │   │   │   │       ├── dc1-wan2.yml
│           │   │   │   │       ├── dc1-wan3.yml
│           │   │   │   │       ├── dc2-leaf1a.yml
│           │   │   │   │       ├── dc2-leaf1b.yml
│           │   │   │   │       ├── dc2-leaf1c.yml
│           │   │   │   │       ├── dc2-leaf2a.yml
│           │   │   │   │       ├── dc2-leaf2b.yml
│           │   │   │   │       ├── dc2-leaf2c.yml
│           │   │   │   │       ├── dc2-leaf3a.arista.com.yml
│           │   │   │   │       ├── dc2-leaf3b.arista.com.yml
│           │   │   │   │       ├── dc2-leaf3c.yml
│           │   │   │   │       ├── dc2-spine1.yml
│           │   │   │   │       └── dc2-spine2.yml
│           │   │   │   ├── inventory/
│           │   │   │   │   ├── group_vars/
│           │   │   │   │   │   ├── CONNECTED_ENDPOINTS.yml
│           │   │   │   │   │   ├── DC1.yml
│           │   │   │   │   │   ├── DC1_L2_LEAVES.yml
│           │   │   │   │   │   ├── DC1_L3_LEAVES.yml
│           │   │   │   │   │   ├── DC1_SPINES.yml
│           │   │   │   │   │   ├── DC1_SVC_LEAVES.yml
│           │   │   │   │   │   ├── DC1_WAN.yml
│           │   │   │   │   │   ├── DC2.yml
│           │   │   │   │   │   ├── DC2_L2_LEAVES.yml
│           │   │   │   │   │   ├── DC2_L3_LEAVES.yml
│           │   │   │   │   │   ├── DC2_SPINES.yml
│           │   │   │   │   │   ├── FABRIC.yml
│           │   │   │   │   │   ├── NETWORK_SERVICES.yml
│           │   │   │   │   │   └── WAN.yml
│           │   │   │   │   ├── host_vars/
│           │   │   │   │   │   ├── dc1-leaf1a.yml
│           │   │   │   │   │   ├── dc1-leaf1c.yaml
│           │   │   │   │   │   ├── dc1-leaf3a.yml
│           │   │   │   │   │   ├── dc1-svc-leaf1b.yml
│           │   │   │   │   │   ├── dc1-wan1.yml
│           │   │   │   │   │   ├── dc2-leaf2c.yml
│           │   │   │   │   │   ├── dc2-leaf3a.arista.com.yml
│           │   │   │   │   │   ├── dc2-leaf3b.arista.com.yml
│           │   │   │   │   │   └── dc2-leaf3c.yml
│           │   │   │   │   └── hosts.yml
│           │   │   │   └── molecule.yml
│           │   │   ├── cv_deploy/
│           │   │   │   ├── README.md
│           │   │   │   ├── cc_false.yml
│           │   │   │   ├── cc_requested_state.yml
│           │   │   │   ├── cleanup.yml
│           │   │   │   ├── converge.yml
│           │   │   │   ├── cv_deploy.yml
│           │   │   │   ├── cv_deploy_hostvars.yml
│           │   │   │   ├── cv_deploy_manifest_only.yml
│           │   │   │   ├── cv_deploy_use_manifest_hybrid.yml
│           │   │   │   ├── cv_deploy_with_manifest.yml
│           │   │   │   ├── duplicated_devices.yml
│           │   │   │   ├── duplicated_devices_strict_system_mac.yml
│           │   │   │   ├── intended/
│           │   │   │   │   ├── configlets/
│           │   │   │   │   │   ├── test_manifest_access_lists.txt
│           │   │   │   │   │   └── test_manifest_alias.txt
│           │   │   │   │   ├── configs/
│           │   │   │   │   │   ├── base_configs/
│           │   │   │   │   │   │   ├── avd-ci-core1.cfg
│           │   │   │   │   │   │   ├── avd-ci-leaf1.cfg
│           │   │   │   │   │   │   ├── avd-ci-leaf2.cfg
│           │   │   │   │   │   │   ├── avd-ci-leaf3.cfg
│           │   │   │   │   │   │   ├── avd-ci-leaf4.cfg
│           │   │   │   │   │   │   ├── avd-ci-spine1.cfg
│           │   │   │   │   │   │   └── avd-ci-spine2.cfg
│           │   │   │   │   │   ├── test_configs/
│           │   │   │   │   │   │   ├── avd-ci-core1.cfg
│           │   │   │   │   │   │   ├── avd-ci-leaf1-missing.cfg
│           │   │   │   │   │   │   ├── avd-ci-leaf1.cfg
│           │   │   │   │   │   │   ├── avd-ci-leaf2.cfg
│           │   │   │   │   │   │   ├── avd-ci-leaf3.cfg
│           │   │   │   │   │   │   ├── avd-ci-leaf4.cfg
│           │   │   │   │   │   │   ├── avd-ci-spine1.cfg
│           │   │   │   │   │   │   └── avd-ci-spine2.cfg
│           │   │   │   │   │   └── test_invalid_configs/
│           │   │   │   │   │       ├── avd-ci-core1.cfg
│           │   │   │   │   │       ├── avd-ci-leaf1-missing.cfg
│           │   │   │   │   │       ├── avd-ci-leaf1.cfg
│           │   │   │   │   │       ├── avd-ci-leaf2.cfg
│           │   │   │   │   │       ├── avd-ci-leaf3.cfg
│           │   │   │   │   │       ├── avd-ci-leaf4.cfg
│           │   │   │   │   │       ├── avd-ci-spine1.cfg
│           │   │   │   │   │       └── avd-ci-spine2.cfg
│           │   │   │   │   └── structured_configs/
│           │   │   │   │       ├── base_configs/
│           │   │   │   │       │   └── avd-ci-leaf1.yml
│           │   │   │   │       ├── test_configs/
│           │   │   │   │       │   ├── avd-ci-core1.yml
│           │   │   │   │       │   ├── avd-ci-leaf1.yml
│           │   │   │   │       │   ├── avd-ci-leaf2.yml
│           │   │   │   │       │   ├── avd-ci-leaf3.yml
│           │   │   │   │       │   ├── avd-ci-leaf4.yml
│           │   │   │   │       │   ├── avd-ci-missing.yml
│           │   │   │   │       │   ├── avd-ci-spine1.yml
│           │   │   │   │       │   └── avd-ci-spine2.yml
│           │   │   │   │       ├── test_invalid_configs/
│           │   │   │   │       │   ├── avd-ci-leaf1.yml
│           │   │   │   │       │   └── avd-ci-missing.yml
│           │   │   │   │       └── test_use_manifest_hybrid_configs/
│           │   │   │   │           ├── avd-ci-leaf1.yml
│           │   │   │   │           ├── avd-ci-leaf2.yml
│           │   │   │   │           ├── avd-ci-leaf3.yml
│           │   │   │   │           ├── avd-ci-leaf4.yml
│           │   │   │   │           ├── avd-ci-spine1.yml
│           │   │   │   │           └── avd-ci-spine2.yml
│           │   │   │   ├── invalid_config.yml
│           │   │   │   ├── inventory/
│           │   │   │   │   ├── host_vars/
│           │   │   │   │   │   └── avd-ci-leaf1.yml
│           │   │   │   │   └── hosts.yml
│           │   │   │   ├── molecule.yml
│           │   │   │   ├── no_duplicated_devices.yml
│           │   │   │   ├── workspace_force_false.yml
│           │   │   │   ├── workspace_force_true.yml
│           │   │   │   ├── workspace_id.yml
│           │   │   │   ├── workspace_pending.yml
│           │   │   │   └── workspace_requested_state.yml
│           │   │   ├── cv_workflow/
│           │   │   │   ├── README.md
│           │   │   │   ├── cleanup.yml
│           │   │   │   ├── converge.yml
│           │   │   │   ├── intended/
│           │   │   │   │   ├── configs/
│           │   │   │   │   │   ├── base_configs/
│           │   │   │   │   │   │   ├── ci-s1-leaf1.cfg
│           │   │   │   │   │   │   ├── ci-s1-leaf2.cfg
│           │   │   │   │   │   │   ├── ci-s1-leaf3.cfg
│           │   │   │   │   │   │   ├── ci-s1-leaf4.cfg
│           │   │   │   │   │   │   ├── ci-s1-spine1.cfg
│           │   │   │   │   │   │   └── ci-s1-spine2.cfg
│           │   │   │   │   │   ├── change_tags/
│           │   │   │   │   │   │   └── ci-s1-leaf1.cfg
│           │   │   │   │   │   ├── dotted_hostname/
│           │   │   │   │   │   │   ├── reset_dotted_hostname/
│           │   │   │   │   │   │   │   └── ci-s1-leaf.1.cfg
│           │   │   │   │   │   │   ├── set_dotted_hostname/
│           │   │   │   │   │   │   │   └── ci-s1-leaf1.cfg
│           │   │   │   │   │   │   └── test_dotted_hostname/
│           │   │   │   │   │   │       └── ci-s1-leaf.1.cfg
│           │   │   │   │   │   ├── strict_tags/
│           │   │   │   │   │   │   └── ci-s1-leaf1.cfg
│           │   │   │   │   │   └── test_configs/
│           │   │   │   │   │       ├── ci-s1-leaf1.cfg
│           │   │   │   │   │       ├── ci-s1-leaf2.cfg
│           │   │   │   │   │       ├── ci-s1-leaf3.cfg
│           │   │   │   │   │       ├── ci-s1-leaf4.cfg
│           │   │   │   │   │       ├── ci-s1-missing.cfg
│           │   │   │   │   │       ├── ci-s1-spine1.cfg
│           │   │   │   │   │       └── ci-s1-spine2.cfg
│           │   │   │   │   └── structured_configs/
│           │   │   │   │       ├── base_configs/
│           │   │   │   │       │   ├── ci-s1-leaf1.yml
│           │   │   │   │       │   ├── ci-s1-leaf2.yml
│           │   │   │   │       │   ├── ci-s1-leaf3.yml
│           │   │   │   │       │   ├── ci-s1-leaf4.yml
│           │   │   │   │       │   ├── ci-s1-spine1.yml
│           │   │   │   │       │   └── ci-s1-spine2.yml
│           │   │   │   │       ├── change_tags/
│           │   │   │   │       │   └── ci-s1-leaf1.yml
│           │   │   │   │       ├── dotted_hostname/
│           │   │   │   │       │   ├── reset_dotted_hostname/
│           │   │   │   │       │   │   └── ci-s1-leaf.1.yml
│           │   │   │   │       │   ├── set_dotted_hostname/
│           │   │   │   │       │   │   └── ci-s1-leaf1.yml
│           │   │   │   │       │   └── test_dotted_hostname/
│           │   │   │   │       │       └── ci-s1-leaf.1.yml
│           │   │   │   │       ├── strict_tags/
│           │   │   │   │       │   └── ci-s1-leaf1.yml
│           │   │   │   │       └── test_configs/
│           │   │   │   │           ├── ci-s1-leaf1.yml
│           │   │   │   │           ├── ci-s1-leaf2.yml
│           │   │   │   │           ├── ci-s1-leaf3.yml
│           │   │   │   │           ├── ci-s1-leaf4.yml
│           │   │   │   │           ├── ci-s1-missing.yml
│           │   │   │   │           ├── ci-s1-spine1.yml
│           │   │   │   │           └── ci-s1-spine2.yml
│           │   │   │   ├── inventory/
│           │   │   │   │   └── hosts.yml
│           │   │   │   └── molecule.yml
│           │   │   ├── default/
│           │   │   │   └── molecule.yml
│           │   │   ├── digital_twin/
│           │   │   │   ├── converge.yml
│           │   │   │   ├── create.yml
│           │   │   │   ├── destroy.yml
│           │   │   │   ├── digital_twin/
│           │   │   │   │   ├── documentation/
│           │   │   │   │   │   ├── devices/
│           │   │   │   │   │   │   ├── digital-twin-adjust-oob-mgmt-1.md
│           │   │   │   │   │   │   ├── digital-twin-adjust-oob-mgmt-2.md
│           │   │   │   │   │   │   ├── digital-twin-adjust-oob-mgmt-3.md
│           │   │   │   │   │   │   ├── digital-twin-adjust-oob-mgmt-4.md
│           │   │   │   │   │   │   ├── digital-twin-default-interfaces-digital-twin-platform.md
│           │   │   │   │   │   │   ├── digital-twin-default-interfaces-original-platform.md
│           │   │   │   │   │   │   ├── digital-twin-enforce-eapi-1.md
│           │   │   │   │   │   │   ├── digital-twin-enforce-eapi-2.md
│           │   │   │   │   │   │   ├── digital-twin-enforce-eapi-3.md
│           │   │   │   │   │   │   ├── digital-twin-enforce-eapi-4.md
│           │   │   │   │   │   │   ├── digital-twin-ethernet-ports-1.md
│           │   │   │   │   │   │   ├── digital-twin-ethernet-ports-3.md
│           │   │   │   │   │   │   └── digital.twin.ethernet.ports.2.md
│           │   │   │   │   │   └── fabric/
│           │   │   │   │   │       ├── DIGITAL_TWIN-documentation.md
│           │   │   │   │   │       ├── DIGITAL_TWIN-topology.yml
│           │   │   │   │   │       └── DIGITAL_TWIN_SINGLE_SWITCH_FABRIC-topology.yml
│           │   │   │   │   └── intended/
│           │   │   │   │       ├── configs/
│           │   │   │   │       │   ├── digital-twin-adjust-oob-mgmt-1.cfg
│           │   │   │   │       │   ├── digital-twin-adjust-oob-mgmt-2.cfg
│           │   │   │   │       │   ├── digital-twin-adjust-oob-mgmt-3.cfg
│           │   │   │   │       │   ├── digital-twin-adjust-oob-mgmt-4.cfg
│           │   │   │   │       │   ├── digital-twin-default-interfaces-digital-twin-platform.cfg
│           │   │   │   │       │   ├── digital-twin-default-interfaces-original-platform.cfg
│           │   │   │   │       │   ├── digital-twin-enforce-eapi-1.cfg
│           │   │   │   │       │   ├── digital-twin-enforce-eapi-2.cfg
│           │   │   │   │       │   ├── digital-twin-enforce-eapi-3.cfg
│           │   │   │   │       │   ├── digital-twin-enforce-eapi-4.cfg
│           │   │   │   │       │   ├── digital-twin-ethernet-ports-1.cfg
│           │   │   │   │       │   ├── digital-twin-ethernet-ports-3.cfg
│           │   │   │   │       │   └── digital.twin.ethernet.ports.2.cfg
│           │   │   │   │       └── structured_configs/
│           │   │   │   │           ├── digital-twin-adjust-oob-mgmt-1.yml
│           │   │   │   │           ├── digital-twin-adjust-oob-mgmt-2.yml
│           │   │   │   │           ├── digital-twin-adjust-oob-mgmt-3.yml
│           │   │   │   │           ├── digital-twin-adjust-oob-mgmt-4.yml
│           │   │   │   │           ├── digital-twin-default-interfaces-digital-twin-platform.yml
│           │   │   │   │           ├── digital-twin-default-interfaces-original-platform.yml
│           │   │   │   │           ├── digital-twin-enforce-eapi-1.yml
│           │   │   │   │           ├── digital-twin-enforce-eapi-2.yml
│           │   │   │   │           ├── digital-twin-enforce-eapi-3.yml
│           │   │   │   │           ├── digital-twin-enforce-eapi-4.yml
│           │   │   │   │           ├── digital-twin-ethernet-ports-1.yml
│           │   │   │   │           ├── digital-twin-ethernet-ports-3.yml
│           │   │   │   │           ├── digital-twin-single-switch-fabric-1.yml
│           │   │   │   │           └── digital.twin.ethernet.ports.2.yml
│           │   │   │   ├── documentation/
│           │   │   │   │   ├── devices/
│           │   │   │   │   │   ├── digital-twin-adjust-oob-mgmt-1.md
│           │   │   │   │   │   ├── digital-twin-adjust-oob-mgmt-2.md
│           │   │   │   │   │   ├── digital-twin-adjust-oob-mgmt-3.md
│           │   │   │   │   │   ├── digital-twin-adjust-oob-mgmt-4.md
│           │   │   │   │   │   ├── digital-twin-default-interfaces-digital-twin-platform.md
│           │   │   │   │   │   ├── digital-twin-default-interfaces-original-platform.md
│           │   │   │   │   │   ├── digital-twin-enforce-eapi-1.md
│           │   │   │   │   │   ├── digital-twin-enforce-eapi-2.md
│           │   │   │   │   │   ├── digital-twin-enforce-eapi-3.md
│           │   │   │   │   │   ├── digital-twin-enforce-eapi-4.md
│           │   │   │   │   │   ├── digital-twin-ethernet-ports-1.md
│           │   │   │   │   │   ├── digital-twin-ethernet-ports-3.md
│           │   │   │   │   │   └── digital.twin.ethernet.ports.2.md
│           │   │   │   │   └── fabric/
│           │   │   │   │       └── DIGITAL_TWIN-documentation.md
│           │   │   │   ├── intended/
│           │   │   │   │   ├── configs/
│           │   │   │   │   │   ├── digital-twin-adjust-oob-mgmt-1.cfg
│           │   │   │   │   │   ├── digital-twin-adjust-oob-mgmt-2.cfg
│           │   │   │   │   │   ├── digital-twin-adjust-oob-mgmt-3.cfg
│           │   │   │   │   │   ├── digital-twin-adjust-oob-mgmt-4.cfg
│           │   │   │   │   │   ├── digital-twin-default-interfaces-digital-twin-platform.cfg
│           │   │   │   │   │   ├── digital-twin-default-interfaces-original-platform.cfg
│           │   │   │   │   │   ├── digital-twin-enforce-eapi-1.cfg
│           │   │   │   │   │   ├── digital-twin-enforce-eapi-2.cfg
│           │   │   │   │   │   ├── digital-twin-enforce-eapi-3.cfg
│           │   │   │   │   │   ├── digital-twin-enforce-eapi-4.cfg
│           │   │   │   │   │   ├── digital-twin-ethernet-ports-1.cfg
│           │   │   │   │   │   ├── digital-twin-ethernet-ports-3.cfg
│           │   │   │   │   │   └── digital.twin.ethernet.ports.2.cfg
│           │   │   │   │   └── structured_configs/
│           │   │   │   │       ├── digital-twin-adjust-oob-mgmt-1.yml
│           │   │   │   │       ├── digital-twin-adjust-oob-mgmt-2.yml
│           │   │   │   │       ├── digital-twin-adjust-oob-mgmt-3.yml
│           │   │   │   │       ├── digital-twin-adjust-oob-mgmt-4.yml
│           │   │   │   │       ├── digital-twin-default-interfaces-digital-twin-platform.yml
│           │   │   │   │       ├── digital-twin-default-interfaces-original-platform.yml
│           │   │   │   │       ├── digital-twin-enforce-eapi-1.yml
│           │   │   │   │       ├── digital-twin-enforce-eapi-2.yml
│           │   │   │   │       ├── digital-twin-enforce-eapi-3.yml
│           │   │   │   │       ├── digital-twin-enforce-eapi-4.yml
│           │   │   │   │       ├── digital-twin-ethernet-ports-1.yml
│           │   │   │   │       ├── digital-twin-ethernet-ports-3.yml
│           │   │   │   │       └── digital.twin.ethernet.ports.2.yml
│           │   │   │   ├── inventory/
│           │   │   │   │   ├── group_vars/
│           │   │   │   │   │   ├── DIGITAL_TWIN.yml
│           │   │   │   │   │   ├── DIGITAL_TWIN_DEFAULT_INTERFACES.yml
│           │   │   │   │   │   ├── DIGITAL_TWIN_ETHERNET_PORTS.yml
│           │   │   │   │   │   ├── DIGITAL_TWIN_SINGLE_SWITCH_FABRIC.yml
│           │   │   │   │   │   └── all.yml
│           │   │   │   │   ├── host_vars/
│           │   │   │   │   │   ├── all.yml
│           │   │   │   │   │   ├── digital-twin-adjust-oob-mgmt-1.yml
│           │   │   │   │   │   ├── digital-twin-adjust-oob-mgmt-2.yml
│           │   │   │   │   │   ├── digital-twin-adjust-oob-mgmt-3.yml
│           │   │   │   │   │   ├── digital-twin-adjust-oob-mgmt-4.yml
│           │   │   │   │   │   ├── digital-twin-enforce-eapi-1.yml
│           │   │   │   │   │   ├── digital-twin-enforce-eapi-2.yml
│           │   │   │   │   │   ├── digital-twin-enforce-eapi-3.yml
│           │   │   │   │   │   └── digital-twin-enforce-eapi-4.yml
│           │   │   │   │   └── hosts.yml
│           │   │   │   ├── molecule.yml
│           │   │   │   └── verify.yml
│           │   │   ├── eos_cli_config_gen/
│           │   │   │   ├── converge.yml
│           │   │   │   ├── create.yml
│           │   │   │   ├── custom_templates/
│           │   │   │   │   ├── test-template-1.j2
│           │   │   │   │   ├── test-template-2.j2
│           │   │   │   │   └── test-template-3.j2
│           │   │   │   ├── destroy.yml
│           │   │   │   ├── documentation/
│           │   │   │   │   └── devices/
│           │   │   │   │       ├── host-inline-jinja.md
│           │   │   │   │       ├── host1.md
│           │   │   │   │       ├── host2.md
│           │   │   │   │       ├── host3.md
│           │   │   │   │       ├── host4.md
│           │   │   │   │       ├── host5.md
│           │   │   │   │       └── host6.md
│           │   │   │   ├── files/
│           │   │   │   │   └── TCAM_TRAFFIC_POLICY.conf
│           │   │   │   ├── intended/
│           │   │   │   │   └── configs/
│           │   │   │   │       ├── host-inline-jinja.cfg
│           │   │   │   │       ├── host1.cfg
│           │   │   │   │       ├── host2.cfg
│           │   │   │   │       ├── host3.cfg
│           │   │   │   │       ├── host4.cfg
│           │   │   │   │       ├── host5.cfg
│           │   │   │   │       └── host6.cfg
│           │   │   │   ├── inventory/
│           │   │   │   │   ├── group_vars/
│           │   │   │   │   │   └── all.yml
│           │   │   │   │   ├── host_vars/
│           │   │   │   │   │   ├── host-inline-jinja/
│           │   │   │   │   │   │   ├── custom-templates.yml
│           │   │   │   │   │   │   ├── local-users.yml
│           │   │   │   │   │   │   ├── tacacs-servers.yml
│           │   │   │   │   │   │   └── tcam-profile.yml
│           │   │   │   │   │   ├── host1/
│           │   │   │   │   │   │   ├── aaa-accounting.yml
│           │   │   │   │   │   │   ├── aaa-authentication.yml
│           │   │   │   │   │   │   ├── aaa-authorization.yml
│           │   │   │   │   │   │   ├── aaa-root.yml
│           │   │   │   │   │   │   ├── aaa-server-groups.yml
│           │   │   │   │   │   │   ├── address-locking.yml
│           │   │   │   │   │   │   ├── agents.yml
│           │   │   │   │   │   │   ├── aliases.yml
│           │   │   │   │   │   │   ├── application-traffic-recognition.yml
│           │   │   │   │   │   │   ├── arp.yml
│           │   │   │   │   │   │   ├── as-path.yml
│           │   │   │   │   │   │   ├── banners_without_eof.yml
│           │   │   │   │   │   │   ├── bgp-groups.yml
│           │   │   │   │   │   │   ├── boot.yml
│           │   │   │   │   │   │   ├── cfm.yml
│           │   │   │   │   │   │   ├── class-maps.yml
│           │   │   │   │   │   │   ├── clock.yml
│           │   │   │   │   │   │   ├── config-comment.yml
│           │   │   │   │   │   │   ├── cvx.yml
│           │   │   │   │   │   │   ├── daemon-terminattr.yml
│           │   │   │   │   │   │   ├── daemons.yml
│           │   │   │   │   │   │   ├── dhcp-relay.yml
│           │   │   │   │   │   │   ├── dhcp-servers.yml
│           │   │   │   │   │   │   ├── dns-domain.yml
│           │   │   │   │   │   │   ├── domain-list.yml
│           │   │   │   │   │   │   ├── dot1x.yml
│           │   │   │   │   │   │   ├── dps-interfaces.yml
│           │   │   │   │   │   │   ├── dynamic-prefix-lists.yml
│           │   │   │   │   │   │   ├── enable-password.yml
│           │   │   │   │   │   │   ├── eos-cli-config-gen-configuration.yml
│           │   │   │   │   │   │   ├── eos-cli-config-gen-documentation.yml
│           │   │   │   │   │   │   ├── eos-cli.yml
│           │   │   │   │   │   │   ├── eos-config-future.yml
│           │   │   │   │   │   │   ├── errdisable.yml
│           │   │   │   │   │   │   ├── ethernet-interfaces.yml
│           │   │   │   │   │   │   ├── event-handlers.yml
│           │   │   │   │   │   │   ├── event-monitor.yml
│           │   │   │   │   │   │   ├── flow-tracking.yml
│           │   │   │   │   │   │   ├── hardware-counter.yml
│           │   │   │   │   │   │   ├── hardware.yml
│           │   │   │   │   │   │   ├── hostname.yml
│           │   │   │   │   │   │   ├── interface-defaults.yml
│           │   │   │   │   │   │   ├── interface-groups.yml
│           │   │   │   │   │   │   ├── interface-profiles.yml
│           │   │   │   │   │   │   ├── ip-access-lists.yml
│           │   │   │   │   │   │   ├── ip-community-lists.yml
│           │   │   │   │   │   │   ├── ip-dhcp-relay.yml
│           │   │   │   │   │   │   ├── ip-dhcp-snooping.yml
│           │   │   │   │   │   │   ├── ip-domain-lookup.yml
│           │   │   │   │   │   │   ├── ip-extended-community-lists-regexp.yml
│           │   │   │   │   │   │   ├── ip-extended-community-lists.yml
│           │   │   │   │   │   │   ├── ip-ftp-client-source-interfaces.yml
│           │   │   │   │   │   │   ├── ip-hardware.yml
│           │   │   │   │   │   │   ├── ip-hosts.yml
│           │   │   │   │   │   │   ├── ip-http-client.yml
│           │   │   │   │   │   │   ├── ip-igmp-snooping.yml
│           │   │   │   │   │   │   ├── ip-large-community-lists.yml
│           │   │   │   │   │   │   ├── ip-name-server-groups.yml
│           │   │   │   │   │   │   ├── ip-name-server.yml
│           │   │   │   │   │   │   ├── ip-nat.yml
│           │   │   │   │   │   │   ├── ip-ospf-router-id-output-format-hostnames.yml
│           │   │   │   │   │   │   ├── ip-radius-source-interface.yml
│           │   │   │   │   │   │   ├── ip-routing-ipv6-interfaces.yml
│           │   │   │   │   │   │   ├── ip-routing.yml
│           │   │   │   │   │   │   ├── ip-security.yml
│           │   │   │   │   │   │   ├── ip-ssh-client.yml
│           │   │   │   │   │   │   ├── ip-tacacs-source-interface.yml
│           │   │   │   │   │   │   ├── ip-telnet-client-source-interfaces.yml
│           │   │   │   │   │   │   ├── ip-tftp-client-source-interfaces.yml
│           │   │   │   │   │   │   ├── ip-virtual-router-mac-address-advertisement-interval.yml
│           │   │   │   │   │   │   ├── ip-virtual-router-mac-address-mlag-peer.yml
│           │   │   │   │   │   │   ├── ip-virtual-router-mac-address.yml
│           │   │   │   │   │   │   ├── ipv6-access-lists.yml
│           │   │   │   │   │   │   ├── ipv6-dhcp-relay.yml
│           │   │   │   │   │   │   ├── ipv6-hardware.yml
│           │   │   │   │   │   │   ├── ipv6-neighbors.yml
│           │   │   │   │   │   │   ├── ipv6-prefix-lists.yml
│           │   │   │   │   │   │   ├── ipv6-router-ospf.yml
│           │   │   │   │   │   │   ├── ipv6-standard-acl.yml
│           │   │   │   │   │   │   ├── ipv6-static-routes.yml
│           │   │   │   │   │   │   ├── ipv6-unicast-routing.yml
│           │   │   │   │   │   │   ├── kernel.yml
│           │   │   │   │   │   │   ├── l2-protocol-forwarding.yml
│           │   │   │   │   │   │   ├── lacp.yml
│           │   │   │   │   │   │   ├── link-tracking-groups.yml
│           │   │   │   │   │   │   ├── lldp.yml
│           │   │   │   │   │   │   ├── load-balance.yml
│           │   │   │   │   │   │   ├── load-interval.yml
│           │   │   │   │   │   │   ├── local-users.yml
│           │   │   │   │   │   │   ├── logging.yml
│           │   │   │   │   │   │   ├── loopbacks-interfaces.yml
│           │   │   │   │   │   │   ├── mac-access-lists.yml
│           │   │   │   │   │   │   ├── mac-address-table.yml
│           │   │   │   │   │   │   ├── mac-security-eth-po-entropy.yml
│           │   │   │   │   │   │   ├── maintenance.yml
│           │   │   │   │   │   │   ├── management-accounts.yml
│           │   │   │   │   │   │   ├── management-api-gnmi.yml
│           │   │   │   │   │   │   ├── management-api-http.yml
│           │   │   │   │   │   │   ├── management-api-models.yml
│           │   │   │   │   │   │   ├── management-console.yml
│           │   │   │   │   │   │   ├── management-cvx.yml
│           │   │   │   │   │   │   ├── management-defaults.yml
│           │   │   │   │   │   │   ├── management-interfaces.yml
│           │   │   │   │   │   │   ├── management-security.yml
│           │   │   │   │   │   │   ├── management-ssh.yml
│           │   │   │   │   │   │   ├── management-tech-support.yml
│           │   │   │   │   │   │   ├── match-lists.yml
│           │   │   │   │   │   │   ├── mcs-client.yml
│           │   │   │   │   │   │   ├── mlag-configuration.yml
│           │   │   │   │   │   │   ├── monitor-connectivity.yml
│           │   │   │   │   │   │   ├── monitor-layer1.yml
│           │   │   │   │   │   │   ├── monitor-link-flap-policy.yml
│           │   │   │   │   │   │   ├── monitor-loop-protection.yml
│           │   │   │   │   │   │   ├── monitor-server-radius.yml
│           │   │   │   │   │   │   ├── monitor-session-default-encapsulation-gre.yml
│           │   │   │   │   │   │   ├── monitor-sessions.yml
│           │   │   │   │   │   │   ├── monitor-telemetry-influx.yml
│           │   │   │   │   │   │   ├── monitor-telemetry-postcard-policy.yml
│           │   │   │   │   │   │   ├── monitor-twamp.yml
│           │   │   │   │   │   │   ├── mpls.yml
│           │   │   │   │   │   │   ├── none_configuration.yml
│           │   │   │   │   │   │   ├── ntp.yml
│           │   │   │   │   │   │   ├── object-tracking.yml
│           │   │   │   │   │   │   ├── patch-panel.yml
│           │   │   │   │   │   │   ├── peer-filters.yml
│           │   │   │   │   │   │   ├── platform.yml
│           │   │   │   │   │   │   ├── poe.yml
│           │   │   │   │   │   │   ├── policy-maps.yml
│           │   │   │   │   │   │   ├── port-channel-interfaces.yml
│           │   │   │   │   │   │   ├── port-channel.yml
│           │   │   │   │   │   │   ├── prefix-lists.yml
│           │   │   │   │   │   │   ├── priority-flow-control.yml
│           │   │   │   │   │   │   ├── prompt.yml
│           │   │   │   │   │   │   ├── ptp.yml
│           │   │   │   │   │   │   ├── qos-profiles.yml
│           │   │   │   │   │   │   ├── qos.yml
│           │   │   │   │   │   │   ├── queue-monitor-length.yml
│           │   │   │   │   │   │   ├── queue-monitor-streaming.yml
│           │   │   │   │   │   │   ├── radius-proxy.yml
│           │   │   │   │   │   │   ├── radius-server.yml
│           │   │   │   │   │   │   ├── redundancy.yml
│           │   │   │   │   │   │   ├── roles.yml
│           │   │   │   │   │   │   ├── route-maps.yml
│           │   │   │   │   │   │   ├── router-adaptive-virtual-topology.yml
│           │   │   │   │   │   │   ├── router-bfd.yml
│           │   │   │   │   │   │   ├── router-bgp.yml
│           │   │   │   │   │   │   ├── router-general.yml
│           │   │   │   │   │   │   ├── router-igmp.yml
│           │   │   │   │   │   │   ├── router-internet-exit.yml
│           │   │   │   │   │   │   ├── router-isis.yml
│           │   │   │   │   │   │   ├── router-l2-vpn.yml
│           │   │   │   │   │   │   ├── router-msdp.yml
│           │   │   │   │   │   │   ├── router-multicast.yml
│           │   │   │   │   │   │   ├── router-ospf.yml
│           │   │   │   │   │   │   ├── router-path-selection.yml
│           │   │   │   │   │   │   ├── router-pim-sparse-mode.yml
│           │   │   │   │   │   │   ├── router-rip.yml
│           │   │   │   │   │   │   ├── router-segment-security.yml
│           │   │   │   │   │   │   ├── router-service-insertion.yml
│           │   │   │   │   │   │   ├── router-traffic-engineering.yml
│           │   │   │   │   │   │   ├── serial_number.yml
│           │   │   │   │   │   │   ├── service-routing-configuration-bgp.yml
│           │   │   │   │   │   │   ├── service-routing-protocols-model.yml
│           │   │   │   │   │   │   ├── sflow.yml
│           │   │   │   │   │   │   ├── snmp-server.yml
│           │   │   │   │   │   │   ├── spanning-tree.yml
│           │   │   │   │   │   │   ├── standard-acl.yml
│           │   │   │   │   │   │   ├── static-routes.yml
│           │   │   │   │   │   │   ├── stun.yml
│           │   │   │   │   │   │   ├── switchport-default.yml
│           │   │   │   │   │   │   ├── switchport-port-security.yml
│           │   │   │   │   │   │   ├── sync-e.yml
│           │   │   │   │   │   │   ├── system.yml
│           │   │   │   │   │   │   ├── tacacs-servers.yml
│           │   │   │   │   │   │   ├── tap-aggregation.yml
│           │   │   │   │   │   │   ├── tcam-profile.yml
│           │   │   │   │   │   │   ├── terminal.yml
│           │   │   │   │   │   │   ├── traffic-policies.yml
│           │   │   │   │   │   │   ├── transceiver.yml
│           │   │   │   │   │   │   ├── transceiver_qsfp_default_mode_4x10_false.yml
│           │   │   │   │   │   │   ├── tunnel-interfaces.yml
│           │   │   │   │   │   │   ├── unsupported-transceiver.yml
│           │   │   │   │   │   │   ├── virtual-source-nat.yml
│           │   │   │   │   │   │   ├── vlan-interfaces.yml
│           │   │   │   │   │   │   ├── vlan-internal-order.yml
│           │   │   │   │   │   │   ├── vlans.yml
│           │   │   │   │   │   │   ├── vmtracer-sessions.yml
│           │   │   │   │   │   │   ├── vrf-instances.yml
│           │   │   │   │   │   │   └── vxlan-interface.yml
│           │   │   │   │   │   ├── host2/
│           │   │   │   │   │   │   ├── aaa-accounting.yml
│           │   │   │   │   │   │   ├── aaa-authentication.yml
│           │   │   │   │   │   │   ├── aaa-authorization.yml
│           │   │   │   │   │   │   ├── application-traffic-recognition.yml
│           │   │   │   │   │   │   ├── arp.yml
│           │   │   │   │   │   │   ├── as-path.yml
│           │   │   │   │   │   │   ├── banners.yml
│           │   │   │   │   │   │   ├── boot.yml
│           │   │   │   │   │   │   ├── cvx.yml
│           │   │   │   │   │   │   ├── daemon-terminattr.yml
│           │   │   │   │   │   │   ├── dhcp-relay.yml
│           │   │   │   │   │   │   ├── dot1x.yml
│           │   │   │   │   │   │   ├── dps-interfaces.yml
│           │   │   │   │   │   │   ├── enable-password.yml
│           │   │   │   │   │   │   ├── errdisable.yml
│           │   │   │   │   │   │   ├── flow-tracking.yml
│           │   │   │   │   │   │   ├── interface-defaults.yml
│           │   │   │   │   │   │   ├── ip-dhcp-relay.yml
│           │   │   │   │   │   │   ├── ip-dhcp-snooping.yml
│           │   │   │   │   │   │   ├── ip-icmp-redirect.yml
│           │   │   │   │   │   │   ├── ip-igmp-snooping.yml
│           │   │   │   │   │   │   ├── ip-nat.yml
│           │   │   │   │   │   │   ├── ip-radius-source-interface.yml
│           │   │   │   │   │   │   ├── ip-routing.yml
│           │   │   │   │   │   │   ├── ip-tacacs-source-interface.yml
│           │   │   │   │   │   │   ├── ipv6-dhcp-relay.yml
│           │   │   │   │   │   │   ├── ipv6-icmp-redirect.yml
│           │   │   │   │   │   │   ├── lacp.yml
│           │   │   │   │   │   │   ├── lldp.yml
│           │   │   │   │   │   │   ├── load-balance.yml
│           │   │   │   │   │   │   ├── logging.yml
│           │   │   │   │   │   │   ├── mac-address-table.yml
│           │   │   │   │   │   │   ├── mac-security.yml
│           │   │   │   │   │   │   ├── management-api-gnmi.yml
│           │   │   │   │   │   │   ├── management-api-http.yml
│           │   │   │   │   │   │   ├── management-cvx.yml
│           │   │   │   │   │   │   ├── management-security.yml
│           │   │   │   │   │   │   ├── management-ssh.yml
│           │   │   │   │   │   │   ├── mcs-client.yml
│           │   │   │   │   │   │   ├── monitor-connectivity.yml
│           │   │   │   │   │   │   ├── monitor-layer1.yml
│           │   │   │   │   │   │   ├── monitor-loop-protection.yml
│           │   │   │   │   │   │   ├── monitor-server-radius.yml
│           │   │   │   │   │   │   ├── monitor-telemetry-postcard-policy.yml
│           │   │   │   │   │   │   ├── mpls.yml
│           │   │   │   │   │   │   ├── ntp.yml
│           │   │   │   │   │   │   ├── platform.yml
│           │   │   │   │   │   │   ├── policy-maps-pbr.yml
│           │   │   │   │   │   │   ├── priority-flow-control.yml
│           │   │   │   │   │   │   ├── prompt.yml
│           │   │   │   │   │   │   ├── ptp.yml
│           │   │   │   │   │   │   ├── qos.yml
│           │   │   │   │   │   │   ├── queue-monitor-length-notifying.yml
│           │   │   │   │   │   │   ├── queue-monitor-streaming.yml
│           │   │   │   │   │   │   ├── radius-server.yml
│           │   │   │   │   │   │   ├── router-adaptive-virtual-topology.yml
│           │   │   │   │   │   │   ├── router-bfd.yml
│           │   │   │   │   │   │   ├── router-bgp.yml
│           │   │   │   │   │   │   ├── router-isis.yml
│           │   │   │   │   │   │   ├── router-l2-vpn.yml
│           │   │   │   │   │   │   ├── router-multicast.yml
│           │   │   │   │   │   │   ├── router-path-selection.yml
│           │   │   │   │   │   │   ├── router-pim-sparse-mode.yml
│           │   │   │   │   │   │   ├── service-routing-configuration-bgp.yml
│           │   │   │   │   │   │   ├── service-routing-protocols-model.yml
│           │   │   │   │   │   │   ├── sflow.yml
│           │   │   │   │   │   │   ├── snmp-server.yml
│           │   │   │   │   │   │   ├── spanning-tree.yml
│           │   │   │   │   │   │   ├── stun.yml
│           │   │   │   │   │   │   ├── switchport-default.yml
│           │   │   │   │   │   │   ├── switchport-port-security.yml
│           │   │   │   │   │   │   ├── tacacs-servers.yml
│           │   │   │   │   │   │   ├── tap-aggregation.yml
│           │   │   │   │   │   │   ├── tcam_profile.yml
│           │   │   │   │   │   │   ├── traffic-policies.yml
│           │   │   │   │   │   │   ├── transceiver.yml
│           │   │   │   │   │   │   └── vxlan-interface.yml
│           │   │   │   │   │   ├── host3/
│           │   │   │   │   │   │   ├── aaa-accounting.yml
│           │   │   │   │   │   │   ├── cvx.yml
│           │   │   │   │   │   │   ├── daemon-terminattr.yml
│           │   │   │   │   │   │   ├── eos-cli-config-gen-documentation.yml
│           │   │   │   │   │   │   ├── errdisable.yml
│           │   │   │   │   │   │   ├── ipv6-dhcp-relay.yml
│           │   │   │   │   │   │   ├── logging.yml
│           │   │   │   │   │   │   ├── management-ssh.yml
│           │   │   │   │   │   │   ├── mcs-client.yml
│           │   │   │   │   │   │   ├── mpls.yml
│           │   │   │   │   │   │   ├── ntp.yml
│           │   │   │   │   │   │   ├── ptp.yml
│           │   │   │   │   │   │   ├── router-bgp.yml
│           │   │   │   │   │   │   ├── router-isis.yml
│           │   │   │   │   │   │   ├── router-multicast.yml
│           │   │   │   │   │   │   ├── spanning-tree.yml
│           │   │   │   │   │   │   └── traffic-policies.yml
│           │   │   │   │   │   ├── host4/
│           │   │   │   │   │   │   ├── daemon-terminattr.yml
│           │   │   │   │   │   │   ├── router-bgp.yml
│           │   │   │   │   │   │   ├── router-isis.yml
│           │   │   │   │   │   │   └── router-multicast.yml
│           │   │   │   │   │   ├── host5/
│           │   │   │   │   │   │   ├── daemon-terminattr.yml
│           │   │   │   │   │   │   └── router-multicast.yml
│           │   │   │   │   │   └── host6/
│           │   │   │   │   │       ├── eos-cli-config-gen-configuration.yml
│           │   │   │   │   │       ├── eos-cli-config-gen-documentation.yml
│           │   │   │   │   │       ├── eos-config-future.yml
│           │   │   │   │   │       ├── snmp-server.yml
│           │   │   │   │   │       └── vrf-instances.yml
│           │   │   │   │   └── hosts.yml
│           │   │   │   └── molecule.yml
│           │   │   ├── eos_cli_config_gen_deprecated_vars/
│           │   │   │   ├── converge.yml
│           │   │   │   ├── create.yml
│           │   │   │   ├── destroy.yml
│           │   │   │   ├── documentation/
│           │   │   │   │   └── devices/
│           │   │   │   │       └── host1.md
│           │   │   │   ├── intended/
│           │   │   │   │   └── configs/
│           │   │   │   │       └── host1.cfg
│           │   │   │   ├── inventory/
│           │   │   │   │   ├── group_vars/
│           │   │   │   │   │   └── all.yml
│           │   │   │   │   ├── host_vars/
│           │   │   │   │   │   ├── README.txt
│           │   │   │   │   │   └── host1/
│           │   │   │   │   │       ├── access-lists.yml
│           │   │   │   │   │       ├── ethernet-interface-ipv6-nd.yml
│           │   │   │   │   │       ├── ethernet-interfaces.yml
│           │   │   │   │   │       ├── ip-access-lists.yml
│           │   │   │   │   │       ├── ip-name-server-groups.yml
│           │   │   │   │   │       ├── ip-radius-source-interface.yml
│           │   │   │   │   │       ├── ip-tacacs-source-interface.yml
│           │   │   │   │   │       ├── ipv6-access-lists.yml
│           │   │   │   │   │       ├── loopback-interfaces.yml
│           │   │   │   │   │       ├── management-interfaces.yml
│           │   │   │   │   │       ├── port-channel-interfaces-ipv6-nd.yml
│           │   │   │   │   │       ├── port-channel-interfaces.yml
│           │   │   │   │   │       ├── standard-acls.yml
│           │   │   │   │   │       ├── tunnel-interfaces.yml
│           │   │   │   │   │       └── vlan-interfaces.yml
│           │   │   │   │   └── hosts.yml
│           │   │   │   └── molecule.yml
│           │   │   ├── eos_cli_config_gen_negative_unit_tests/
│           │   │   │   ├── converge.yml
│           │   │   │   ├── create.yml
│           │   │   │   ├── destroy.yml
│           │   │   │   ├── inventory/
│           │   │   │   │   ├── group_vars/
│           │   │   │   │   │   ├── EOS_CLI_CONFIG_GEN_NEGATIVE_TESTS.yml
│           │   │   │   │   │   └── all.yml
│           │   │   │   │   ├── host_vars/
│           │   │   │   │   │   ├── conflicting-deprecated-and-new-keys.yml
│           │   │   │   │   │   ├── router-bfd-dangerous-interval-false.yml
│           │   │   │   │   │   └── router-bfd-dangerous-interval-not-set.yml
│           │   │   │   │   └── hosts.yml
│           │   │   │   └── molecule.yml
│           │   │   ├── eos_designs-l2ls/
│           │   │   │   ├── converge.yml
│           │   │   │   ├── create.yml
│           │   │   │   ├── destroy.yml
│           │   │   │   ├── documentation/
│           │   │   │   │   ├── devices/
│           │   │   │   │   │   ├── BGP-LEAF1.md
│           │   │   │   │   │   ├── BGP-LEAF2.md
│           │   │   │   │   │   ├── BGP-LEAF3.md
│           │   │   │   │   │   ├── BGP-SPINE1.md
│           │   │   │   │   │   ├── BGP-SPINE2.md
│           │   │   │   │   │   ├── ISIS-LEAF1.md
│           │   │   │   │   │   ├── ISIS-SPINE1.md
│           │   │   │   │   │   ├── L2ONLY-LEAF1.md
│           │   │   │   │   │   ├── L2ONLY-LEAF2.md
│           │   │   │   │   │   ├── L2ONLY-SPINE1.md
│           │   │   │   │   │   ├── L2ONLY-SPINE2.md
│           │   │   │   │   │   ├── OSPF-LEAF1.md
│           │   │   │   │   │   ├── OSPF-LEAF2.md
│           │   │   │   │   │   ├── OSPF-SPINE1.md
│           │   │   │   │   │   └── OSPF-SPINE2.md
│           │   │   │   │   └── fabric/
│           │   │   │   │       ├── L2LS-documentation.md
│           │   │   │   │       ├── L2LS-p2p-links.csv
│           │   │   │   │       └── L2LS-topology.csv
│           │   │   │   ├── intended/
│           │   │   │   │   ├── configs/
│           │   │   │   │   │   ├── BGP-LEAF1.cfg
│           │   │   │   │   │   ├── BGP-LEAF2.cfg
│           │   │   │   │   │   ├── BGP-LEAF3.cfg
│           │   │   │   │   │   ├── BGP-SPINE1.cfg
│           │   │   │   │   │   ├── BGP-SPINE2.cfg
│           │   │   │   │   │   ├── ISIS-LEAF1.cfg
│           │   │   │   │   │   ├── ISIS-SPINE1.cfg
│           │   │   │   │   │   ├── L2ONLY-LEAF1.cfg
│           │   │   │   │   │   ├── L2ONLY-LEAF2.cfg
│           │   │   │   │   │   ├── L2ONLY-SPINE1.cfg
│           │   │   │   │   │   ├── L2ONLY-SPINE2.cfg
│           │   │   │   │   │   ├── OSPF-LEAF1.cfg
│           │   │   │   │   │   ├── OSPF-LEAF2.cfg
│           │   │   │   │   │   ├── OSPF-SPINE1.cfg
│           │   │   │   │   │   └── OSPF-SPINE2.cfg
│           │   │   │   │   └── structured_configs/
│           │   │   │   │       ├── BGP-LEAF1.yml
│           │   │   │   │       ├── BGP-LEAF2.yml
│           │   │   │   │       ├── BGP-LEAF3.yml
│           │   │   │   │       ├── BGP-SPINE1.yml
│           │   │   │   │       ├── BGP-SPINE2.yml
│           │   │   │   │       ├── ISIS-LEAF1.yml
│           │   │   │   │       ├── ISIS-SPINE1.yml
│           │   │   │   │       ├── L2ONLY-LEAF1.yml
│           │   │   │   │       ├── L2ONLY-LEAF2.yml
│           │   │   │   │       ├── L2ONLY-SPINE1.yml
│           │   │   │   │       ├── L2ONLY-SPINE2.yml
│           │   │   │   │       ├── OSPF-LEAF1.yml
│           │   │   │   │       ├── OSPF-LEAF2.yml
│           │   │   │   │       ├── OSPF-SPINE1.yml
│           │   │   │   │       └── OSPF-SPINE2.yml
│           │   │   │   ├── inventory/
│           │   │   │   │   ├── group_vars/
│           │   │   │   │   │   ├── BGP_LEAFS.yml
│           │   │   │   │   │   ├── BGP_SPINES.yml
│           │   │   │   │   │   ├── ISIS_LEAFS.yml
│           │   │   │   │   │   ├── ISIS_SPINES.yml
│           │   │   │   │   │   ├── L2LS.yml
│           │   │   │   │   │   ├── L2LS_BGP.yml
│           │   │   │   │   │   ├── L2LS_ISIS.yml
│           │   │   │   │   │   ├── L2LS_L2ONLY.yml
│           │   │   │   │   │   ├── L2LS_OSPF.yml
│           │   │   │   │   │   ├── L2ONLY_LEAFS.yml
│           │   │   │   │   │   ├── L2ONLY_SPINES.yml
│           │   │   │   │   │   ├── OSPF_LEAFS.yml
│           │   │   │   │   │   ├── OSPF_SPINES.yml
│           │   │   │   │   │   └── all.yml
│           │   │   │   │   ├── host_vars/
│           │   │   │   │   │   └── all.yml
│           │   │   │   │   └── hosts.yml
│           │   │   │   ├── molecule.yml
│           │   │   │   └── verify.yml
│           │   │   ├── eos_designs-mpls-isis-sr-ldp/
│           │   │   │   ├── converge.yml
│           │   │   │   ├── create.yml
│           │   │   │   ├── destroy.yml
│           │   │   │   ├── documentation/
│           │   │   │   │   ├── devices/
│           │   │   │   │   │   ├── SITE1-LER1.md
│           │   │   │   │   │   ├── SITE1-LER2.md
│           │   │   │   │   │   ├── SITE1-LSR1.md
│           │   │   │   │   │   ├── SITE1-LSR2.md
│           │   │   │   │   │   ├── SITE1-RR1.md
│           │   │   │   │   │   ├── SITE2-LER1.md
│           │   │   │   │   │   ├── SITE2-LSR1.md
│           │   │   │   │   │   ├── SITE2-LSR2.md
│           │   │   │   │   │   ├── SITE2-RR1.md
│           │   │   │   │   │   ├── SITE3-LER1.md
│           │   │   │   │   │   └── SITE3-RR1.md
│           │   │   │   │   └── fabric/
│           │   │   │   │       ├── MPLS_CORE-documentation.md
│           │   │   │   │       ├── MPLS_CORE-p2p-links.csv
│           │   │   │   │       └── MPLS_CORE-topology.csv
│           │   │   │   ├── intended/
│           │   │   │   │   ├── configs/
│           │   │   │   │   │   ├── SITE1-LER1.cfg
│           │   │   │   │   │   ├── SITE1-LER2.cfg
│           │   │   │   │   │   ├── SITE1-LSR1.cfg
│           │   │   │   │   │   ├── SITE1-LSR2.cfg
│           │   │   │   │   │   ├── SITE1-RR1.cfg
│           │   │   │   │   │   ├── SITE2-LER1.cfg
│           │   │   │   │   │   ├── SITE2-LSR1.cfg
│           │   │   │   │   │   ├── SITE2-LSR2.cfg
│           │   │   │   │   │   ├── SITE2-RR1.cfg
│           │   │   │   │   │   ├── SITE3-LER1.cfg
│           │   │   │   │   │   └── SITE3-RR1.cfg
│           │   │   │   │   └── structured_configs/
│           │   │   │   │       ├── SITE1-LER1.yml
│           │   │   │   │       ├── SITE1-LER2.yml
│           │   │   │   │       ├── SITE1-LSR1.yml
│           │   │   │   │       ├── SITE1-LSR2.yml
│           │   │   │   │       ├── SITE1-RR1.yml
│           │   │   │   │       ├── SITE2-LER1.yml
│           │   │   │   │       ├── SITE2-LSR1.yml
│           │   │   │   │       ├── SITE2-LSR2.yml
│           │   │   │   │       ├── SITE2-RR1.yml
│           │   │   │   │       ├── SITE3-LER1.yml
│           │   │   │   │       └── SITE3-RR1.yml
│           │   │   │   ├── inventory/
│           │   │   │   │   ├── group_vars/
│           │   │   │   │   │   ├── MPLS_CORE.yml
│           │   │   │   │   │   ├── MPLS_TENANTS_NETWORKS.yml
│           │   │   │   │   │   ├── SITE1_CONNECTED_ENDPOINTS.yml
│           │   │   │   │   │   ├── SITE2_CONNECTED_ENDPOINTS.yml
│           │   │   │   │   │   ├── SITE2_P_ROUTERS.yml
│           │   │   │   │   │   └── all.yml
│           │   │   │   │   ├── host_vars/
│           │   │   │   │   │   └── SITE1-LER2.yml
│           │   │   │   │   └── hosts.yml
│           │   │   │   ├── molecule.yml
│           │   │   │   └── verify.yml
│           │   │   ├── eos_designs-twodc-5stage-clos/
│           │   │   │   ├── converge.yml
│           │   │   │   ├── create.yml
│           │   │   │   ├── custom_templates/
│           │   │   │   │   └── ip_addressing/
│           │   │   │   │       ├── avd-v2-spine-p2p-uplinks-ip.j2
│           │   │   │   │       └── avd-v2-spine-p2p-uplinks-peer-ip.j2
│           │   │   │   ├── destroy.yml
│           │   │   │   ├── digital_twin/
│           │   │   │   │   ├── documentation/
│           │   │   │   │   │   ├── devices/
│           │   │   │   │   │   │   ├── DC1-POD1-L2LEAF1A.md
│           │   │   │   │   │   │   ├── DC1-POD1-L2LEAF2A.md
│           │   │   │   │   │   │   ├── DC1-POD1-L2LEAF2B.md
│           │   │   │   │   │   │   ├── DC1-POD1-LEAF1A.md
│           │   │   │   │   │   │   ├── DC1-POD1-LEAF1B.md
│           │   │   │   │   │   │   ├── DC1-POD1-LEAF2B.md
│           │   │   │   │   │   │   ├── DC1-POD1-SPINE1.md
│           │   │   │   │   │   │   ├── DC1-POD1-SPINE2.md
│           │   │   │   │   │   │   ├── DC1-POD2-LEAF1A.md
│           │   │   │   │   │   │   ├── DC1-POD2-SPINE1.md
│           │   │   │   │   │   │   ├── DC1-POD2-SPINE2.md
│           │   │   │   │   │   │   ├── DC1-RS1.md
│           │   │   │   │   │   │   ├── DC1-RS2.md
│           │   │   │   │   │   │   ├── DC1-SUPER-SPINE1.md
│           │   │   │   │   │   │   ├── DC1-SUPER-SPINE2.md
│           │   │   │   │   │   │   ├── DC1.POD1.LEAF2A.md
│           │   │   │   │   │   │   ├── DC2-POD1-L2LEAF1A.md
│           │   │   │   │   │   │   ├── DC2-POD1-L2LEAF2A.md
│           │   │   │   │   │   │   ├── DC2-POD1-LEAF1A.md
│           │   │   │   │   │   │   ├── DC2-POD1-LEAF2A.md
│           │   │   │   │   │   │   ├── DC2-POD1-SPINE1.md
│           │   │   │   │   │   │   ├── DC2-POD1-SPINE2.md
│           │   │   │   │   │   │   ├── DC2-RS1.md
│           │   │   │   │   │   │   ├── DC2-RS2.md
│           │   │   │   │   │   │   ├── DC2-SUPER-SPINE1.md
│           │   │   │   │   │   │   └── DC2-SUPER-SPINE2.md
│           │   │   │   │   │   └── fabric/
│           │   │   │   │   │       ├── TWODC_5STAGE_CLOS-documentation.md
│           │   │   │   │   │       ├── TWODC_5STAGE_CLOS-p2p-links.csv
│           │   │   │   │   │       ├── TWODC_5STAGE_CLOS-topology.csv
│           │   │   │   │   │       └── TWODC_5STAGE_CLOS-topology.yml
│           │   │   │   │   └── intended/
│           │   │   │   │       ├── configs/
│           │   │   │   │       │   ├── DC1-POD1-L2LEAF1A.cfg
│           │   │   │   │       │   ├── DC1-POD1-L2LEAF2A.cfg
│           │   │   │   │       │   ├── DC1-POD1-L2LEAF2B.cfg
│           │   │   │   │       │   ├── DC1-POD1-LEAF1A.cfg
│           │   │   │   │       │   ├── DC1-POD1-LEAF1B.cfg
│           │   │   │   │       │   ├── DC1-POD1-LEAF2B.cfg
│           │   │   │   │       │   ├── DC1-POD1-SPINE1.cfg
│           │   │   │   │       │   ├── DC1-POD1-SPINE2.cfg
│           │   │   │   │       │   ├── DC1-POD2-LEAF1A.cfg
│           │   │   │   │       │   ├── DC1-POD2-SPINE1.cfg
│           │   │   │   │       │   ├── DC1-POD2-SPINE2.cfg
│           │   │   │   │       │   ├── DC1-RS1.cfg
│           │   │   │   │       │   ├── DC1-RS2.cfg
│           │   │   │   │       │   ├── DC1-SUPER-SPINE1.cfg
│           │   │   │   │       │   ├── DC1-SUPER-SPINE2.cfg
│           │   │   │   │       │   ├── DC1.POD1.LEAF2A.cfg
│           │   │   │   │       │   ├── DC2-POD1-L2LEAF1A.cfg
│           │   │   │   │       │   ├── DC2-POD1-L2LEAF2A.cfg
│           │   │   │   │       │   ├── DC2-POD1-LEAF1A.cfg
│           │   │   │   │       │   ├── DC2-POD1-LEAF2A.cfg
│           │   │   │   │       │   ├── DC2-POD1-SPINE1.cfg
│           │   │   │   │       │   ├── DC2-POD1-SPINE2.cfg
│           │   │   │   │       │   ├── DC2-RS1.cfg
│           │   │   │   │       │   ├── DC2-RS2.cfg
│           │   │   │   │       │   ├── DC2-SUPER-SPINE1.cfg
│           │   │   │   │       │   └── DC2-SUPER-SPINE2.cfg
│           │   │   │   │       └── structured_configs/
│           │   │   │   │           ├── DC1-POD1-L2LEAF1A.yml
│           │   │   │   │           ├── DC1-POD1-L2LEAF2A.yml
│           │   │   │   │           ├── DC1-POD1-L2LEAF2B.yml
│           │   │   │   │           ├── DC1-POD1-LEAF1A.yml
│           │   │   │   │           ├── DC1-POD1-LEAF1B.yml
│           │   │   │   │           ├── DC1-POD1-LEAF2B.yml
│           │   │   │   │           ├── DC1-POD1-SPINE1.yml
│           │   │   │   │           ├── DC1-POD1-SPINE2.yml
│           │   │   │   │           ├── DC1-POD2-LEAF1A.yml
│           │   │   │   │           ├── DC1-POD2-SPINE1.yml
│           │   │   │   │           ├── DC1-POD2-SPINE2.yml
│           │   │   │   │           ├── DC1-RS1.yml
│           │   │   │   │           ├── DC1-RS2.yml
│           │   │   │   │           ├── DC1-SUPER-SPINE1.yml
│           │   │   │   │           ├── DC1-SUPER-SPINE2.yml
│           │   │   │   │           ├── DC1.POD1.LEAF2A.yml
│           │   │   │   │           ├── DC2-POD1-L2LEAF1A.yml
│           │   │   │   │           ├── DC2-POD1-L2LEAF2A.yml
│           │   │   │   │           ├── DC2-POD1-LEAF1A.yml
│           │   │   │   │           ├── DC2-POD1-LEAF2A.yml
│           │   │   │   │           ├── DC2-POD1-SPINE1.yml
│           │   │   │   │           ├── DC2-POD1-SPINE2.yml
│           │   │   │   │           ├── DC2-RS1.yml
│           │   │   │   │           ├── DC2-RS2.yml
│           │   │   │   │           ├── DC2-SUPER-SPINE1.yml
│           │   │   │   │           └── DC2-SUPER-SPINE2.yml
│           │   │   │   ├── documentation/
│           │   │   │   │   ├── devices/
│           │   │   │   │   │   ├── DC1-POD1-L2LEAF1A.md
│           │   │   │   │   │   ├── DC1-POD1-L2LEAF2A.md
│           │   │   │   │   │   ├── DC1-POD1-L2LEAF2B.md
│           │   │   │   │   │   ├── DC1-POD1-LEAF1A.md
│           │   │   │   │   │   ├── DC1-POD1-LEAF1B.md
│           │   │   │   │   │   ├── DC1-POD1-LEAF2B.md
│           │   │   │   │   │   ├── DC1-POD1-SPINE1.md
│           │   │   │   │   │   ├── DC1-POD1-SPINE2.md
│           │   │   │   │   │   ├── DC1-POD2-LEAF1A.md
│           │   │   │   │   │   ├── DC1-POD2-SPINE1.md
│           │   │   │   │   │   ├── DC1-POD2-SPINE2.md
│           │   │   │   │   │   ├── DC1-RS1.md
│           │   │   │   │   │   ├── DC1-RS2.md
│           │   │   │   │   │   ├── DC1-SUPER-SPINE1.md
│           │   │   │   │   │   ├── DC1-SUPER-SPINE2.md
│           │   │   │   │   │   ├── DC1.POD1.LEAF2A.md
│           │   │   │   │   │   ├── DC2-POD1-L2LEAF1A.md
│           │   │   │   │   │   ├── DC2-POD1-L2LEAF2A.md
│           │   │   │   │   │   ├── DC2-POD1-LEAF1A.md
│           │   │   │   │   │   ├── DC2-POD1-LEAF2A.md
│           │   │   │   │   │   ├── DC2-POD1-SPINE1.md
│           │   │   │   │   │   ├── DC2-POD1-SPINE2.md
│           │   │   │   │   │   ├── DC2-RS1.md
│           │   │   │   │   │   ├── DC2-RS2.md
│           │   │   │   │   │   ├── DC2-SUPER-SPINE1.md
│           │   │   │   │   │   └── DC2-SUPER-SPINE2.md
│           │   │   │   │   └── fabric/
│           │   │   │   │       ├── TWODC_5STAGE_CLOS-documentation.md
│           │   │   │   │       ├── TWODC_5STAGE_CLOS-p2p-links.csv
│           │   │   │   │       └── TWODC_5STAGE_CLOS-topology.csv
│           │   │   │   ├── intended/
│           │   │   │   │   ├── configs/
│           │   │   │   │   │   ├── DC1-POD1-L2LEAF1A.cfg
│           │   │   │   │   │   ├── DC1-POD1-L2LEAF2A.cfg
│           │   │   │   │   │   ├── DC1-POD1-L2LEAF2B.cfg
│           │   │   │   │   │   ├── DC1-POD1-LEAF1A.cfg
│           │   │   │   │   │   ├── DC1-POD1-LEAF1B.cfg
│           │   │   │   │   │   ├── DC1-POD1-LEAF2B.cfg
│           │   │   │   │   │   ├── DC1-POD1-SPINE1.cfg
│           │   │   │   │   │   ├── DC1-POD1-SPINE2.cfg
│           │   │   │   │   │   ├── DC1-POD2-LEAF1A.cfg
│           │   │   │   │   │   ├── DC1-POD2-SPINE1.cfg
│           │   │   │   │   │   ├── DC1-POD2-SPINE2.cfg
│           │   │   │   │   │   ├── DC1-RS1.cfg
│           │   │   │   │   │   ├── DC1-RS2.cfg
│           │   │   │   │   │   ├── DC1-SUPER-SPINE1.cfg
│           │   │   │   │   │   ├── DC1-SUPER-SPINE2.cfg
│           │   │   │   │   │   ├── DC1.POD1.LEAF2A.cfg
│           │   │   │   │   │   ├── DC2-POD1-L2LEAF1A.cfg
│           │   │   │   │   │   ├── DC2-POD1-L2LEAF2A.cfg
│           │   │   │   │   │   ├── DC2-POD1-LEAF1A.cfg
│           │   │   │   │   │   ├── DC2-POD1-LEAF2A.cfg
│           │   │   │   │   │   ├── DC2-POD1-SPINE1.cfg
│           │   │   │   │   │   ├── DC2-POD1-SPINE2.cfg
│           │   │   │   │   │   ├── DC2-RS1.cfg
│           │   │   │   │   │   ├── DC2-RS2.cfg
│           │   │   │   │   │   ├── DC2-SUPER-SPINE1.cfg
│           │   │   │   │   │   └── DC2-SUPER-SPINE2.cfg
│           │   │   │   │   ├── data/
│           │   │   │   │   │   └── test-ids.yml
│           │   │   │   │   └── structured_configs/
│           │   │   │   │       ├── DC1-POD1-L2LEAF1A.yml
│           │   │   │   │       ├── DC1-POD1-L2LEAF2A.yml
│           │   │   │   │       ├── DC1-POD1-L2LEAF2B.yml
│           │   │   │   │       ├── DC1-POD1-LEAF1A.yml
│           │   │   │   │       ├── DC1-POD1-LEAF1B.yml
│           │   │   │   │       ├── DC1-POD1-LEAF2B.yml
│           │   │   │   │       ├── DC1-POD1-SPINE1.yml
│           │   │   │   │       ├── DC1-POD1-SPINE2.yml
│           │   │   │   │       ├── DC1-POD2-LEAF1A.yml
│           │   │   │   │       ├── DC1-POD2-SPINE1.yml
│           │   │   │   │       ├── DC1-POD2-SPINE2.yml
│           │   │   │   │       ├── DC1-RS1.yml
│           │   │   │   │       ├── DC1-RS2.yml
│           │   │   │   │       ├── DC1-SUPER-SPINE1.yml
│           │   │   │   │       ├── DC1-SUPER-SPINE2.yml
│           │   │   │   │       ├── DC1.POD1.LEAF2A.yml
│           │   │   │   │       ├── DC2-POD1-L2LEAF1A.yml
│           │   │   │   │       ├── DC2-POD1-L2LEAF2A.yml
│           │   │   │   │       ├── DC2-POD1-LEAF1A.yml
│           │   │   │   │       ├── DC2-POD1-LEAF2A.yml
│           │   │   │   │       ├── DC2-POD1-SPINE1.yml
│           │   │   │   │       ├── DC2-POD1-SPINE2.yml
│           │   │   │   │       ├── DC2-RS1.yml
│           │   │   │   │       ├── DC2-RS2.yml
│           │   │   │   │       ├── DC2-SUPER-SPINE1.yml
│           │   │   │   │       └── DC2-SUPER-SPINE2.yml
│           │   │   │   ├── inventory/
│           │   │   │   │   ├── group_vars/
│           │   │   │   │   │   ├── DC1.yml
│           │   │   │   │   │   ├── DC1_POD1.yml
│           │   │   │   │   │   ├── DC1_POD2.yml
│           │   │   │   │   │   ├── DC2.yml
│           │   │   │   │   │   ├── DC2_POD1.yml
│           │   │   │   │   │   ├── SERVERS.yml
│           │   │   │   │   │   ├── TENANTS_NETWORKS.yml
│           │   │   │   │   │   ├── TWODC_5STAGE_CLOS.yml
│           │   │   │   │   │   └── all.yml
│           │   │   │   │   ├── host_vars/
│           │   │   │   │   │   ├── DC1-POD1-LEAF2B.yml
│           │   │   │   │   │   ├── DC1-POD1-SPINE1.yml
│           │   │   │   │   │   ├── DC1-RS1.yml
│           │   │   │   │   │   ├── DC1.POD1.LEAF2A.yml
│           │   │   │   │   │   └── all.yml
│           │   │   │   │   └── hosts.yml
│           │   │   │   ├── molecule.yml
│           │   │   │   └── verify.yml
│           │   │   ├── eos_designs_deprecated_vars/
│           │   │   │   ├── converge.yml
│           │   │   │   ├── create.yml
│           │   │   │   ├── destroy.yml
│           │   │   │   ├── intended/
│           │   │   │   │   ├── configs/
│           │   │   │   │   │   ├── host1.cfg
│           │   │   │   │   │   ├── host2.cfg
│           │   │   │   │   │   └── host_ansible_only.cfg
│           │   │   │   │   └── structured_configs/
│           │   │   │   │       ├── host1.yml
│           │   │   │   │       ├── host2.yml
│           │   │   │   │       └── host_ansible_only.yml
│           │   │   │   ├── inventory/
│           │   │   │   │   ├── group_vars/
│           │   │   │   │   │   └── all.yml
│           │   │   │   │   ├── host_vars/
│           │   │   │   │   │   ├── host1/
│           │   │   │   │   │   │   ├── evpn_l2_multicast_fast_leave.yml
│           │   │   │   │   │   │   ├── igmp_snooping.yml
│           │   │   │   │   │   │   ├── ipv4_acls.yml
│           │   │   │   │   │   │   └── node_type.yml
│           │   │   │   │   │   ├── host2/
│           │   │   │   │   │   │   ├── mgmt.yml
│           │   │   │   │   │   │   └── node_type.yml
│           │   │   │   │   │   └── host_ansible_only/
│           │   │   │   │   │       └── node_type.yml
│           │   │   │   │   └── hosts.yml
│           │   │   │   ├── molecule.yml
│           │   │   │   └── verify.yml
│           │   │   ├── eos_designs_negative_unit_tests/
│           │   │   │   ├── converge.yml
│           │   │   │   ├── create.yml
│           │   │   │   ├── destroy.yml
│           │   │   │   ├── inventory/
│           │   │   │   │   ├── group_vars/
│           │   │   │   │   │   ├── DUPLICATE_IP_ADDRESS_ROUTER_BGP.yml
│           │   │   │   │   │   ├── DUPLICATE_VLANS_MLAG.yml
│           │   │   │   │   │   ├── EOS_DESIGNS_FAILURES.yml
│           │   │   │   │   │   ├── FABRIC_DOWNLINK_INTERFACES_TOO_SMALL.yml
│           │   │   │   │   │   ├── FABRIC_DOWNLINK_POOLS_DUPLICATE.yml
│           │   │   │   │   │   ├── FABRIC_DOWNLINK_POOLS_MISSING.yml
│           │   │   │   │   │   ├── FABRIC_DOWNLINK_POOLS_MISSING_IPV6.yml
│           │   │   │   │   │   ├── FABRIC_ID_STATIC_AND_POOL_MANAGER_COLLISION.yml
│           │   │   │   │   │   ├── FABRIC_INCORRECT_UPLINK_PORT_CHANNEL_ID.yml
│           │   │   │   │   │   ├── FABRIC_INVALID_UPLINK_PORT_CHANNEL_ID_1.yml
│           │   │   │   │   │   ├── FABRIC_INVALID_UPLINK_PORT_CHANNEL_ID_2.yml
│           │   │   │   │   │   ├── FABRIC_INVALID_UPLINK_PORT_CHANNEL_ID_3.yml
│           │   │   │   │   │   ├── FABRIC_IP_ADDRESSING_MLAG_ODD_ID.yml
│           │   │   │   │   │   ├── FABRIC_MISSING_BGP_AS_ON_UPLINK_SWITCH.yml
│           │   │   │   │   │   ├── FABRIC_MISSING_CV_TOPOLOGY_DEFAULT_MLAG_INTERFACEES.yml
│           │   │   │   │   │   ├── FABRIC_MISSING_DOWNLINK_INTERFACES.yml
│           │   │   │   │   │   ├── FABRIC_MISSING_ID_FOR_MLAG.yml
│           │   │   │   │   │   ├── FABRIC_MISSING_ID_FOR_SECONDARY_MLAG.yml
│           │   │   │   │   │   ├── FABRIC_MISSING_ID_UPLINK_SWITCH_INTERFACES.yml
│           │   │   │   │   │   ├── FABRIC_MISSING_IP_ADDRESS_ON_WAN_LAN_HA_UPLINK.yml
│           │   │   │   │   │   ├── FABRIC_MISSING_MLAG_INTERFACES.yml
│           │   │   │   │   │   ├── FABRIC_MISSING_MLAG_PEER_IPV4_POOL.yml
│           │   │   │   │   │   ├── FABRIC_MISSING_MLAG_PEER_IPV6_POOL.yml
│           │   │   │   │   │   ├── FABRIC_MISSING_MLAG_PEER_L3_IPV4_POOL.yml
│           │   │   │   │   │   ├── FABRIC_MISSING_MLAG_PEER_L3_IPV6_POOL.yml
│           │   │   │   │   │   ├── FABRIC_MISSING_UNDERLAY_ROUTER_AND_NETWORK_SERVICES_FOR_UPLINK_TYPE_LAN.yml
│           │   │   │   │   │   ├── FABRIC_MISSING_VTEP_LOOPBACK_IPV6_POOL.yml
│           │   │   │   │   │   ├── FABRIC_MLAG_DUAL_PRIMARY_DHCP_MGMT_IP.yml
│           │   │   │   │   │   ├── FABRIC_MULTIPLE_UPLINK_INTERFACES_FOR_UPLINK_TYPE_LAN.yml
│           │   │   │   │   │   ├── FABRIC_SMALL_BGP_AS_RANGE_ON_UPLINK_SWITCH.yml
│           │   │   │   │   │   ├── FABRIC_UPLINK_TESTS_1.yml
│           │   │   │   │   │   ├── FABRIC_UPLINK_TESTS_2.yml
│           │   │   │   │   │   ├── FABRIC_UPLINK_TESTS_3.yml
│           │   │   │   │   │   ├── INVALID_DUAL_ROUTER_WAN_EVPN_GW.yml
│           │   │   │   │   │   ├── SMALL_BGP_AS_RANGE.yml
│           │   │   │   │   │   ├── VRF_BGP_VTEP_ROUTER_ID.yml
│           │   │   │   │   │   ├── VRF_OSPF_MISSING_PROCESS_ID.yml
│           │   │   │   │   │   ├── VRF_OSPF_VTEP_ROUTER_ID.yml
│           │   │   │   │   │   └── all.yml
│           │   │   │   │   ├── host_vars/
│           │   │   │   │   │   ├── address-locking-missing-dhcp-server-ip-and-locked-address-ipv4-enforcement-disabled.yml
│           │   │   │   │   │   ├── address-locking-missing-dhcp-server-ip-and-locked-address-ipv6-enforcement-disabled.yml
│           │   │   │   │   │   ├── all-wan-ha-interfaces-are-not-uplink-interfaces.yml
│           │   │   │   │   │   ├── conflict-underlay-ospf-with-network-services.yml
│           │   │   │   │   │   ├── connected-endpoints-invalid-access-vlan-ethernet.yml
│           │   │   │   │   │   ├── connected-endpoints-invalid-access-vlan-port-channel.yml
│           │   │   │   │   │   ├── connected-endpoints-mismatched-descriptions.yml
│           │   │   │   │   │   ├── connected-endpoints-missing-profile-lacp-fallback.yml
│           │   │   │   │   │   ├── connected-endpoints-monitor-session-connected-endpoint-acl.yml
│           │   │   │   │   │   ├── connected-endpoints-monitor-session-network-port-acl.yml
│           │   │   │   │   │   ├── connected-endpoints-monitor-sessions-mismatch-direction.yml
│           │   │   │   │   │   ├── connected-endpoints-phone-vlan-mode.yml
│           │   │   │   │   │   ├── connected-endpoints-phone-vlan-vlans.yml
│           │   │   │   │   │   ├── connected-endpoints-short-esi-single-homed.yml
│           │   │   │   │   │   ├── connected-endpoints-wrong-profile-lacp-fallback.yml
│           │   │   │   │   │   ├── core-interfaces-ipv6-only-include-in-underlay-protocol.yml
│           │   │   │   │   │   ├── core-interfaces-missing-id-with-channel-id-algorithm.yml
│           │   │   │   │   │   ├── core-interfaces-p2p-links-as.yml
│           │   │   │   │   │   ├── core-interfaces-p2p-ospf-auth-global-config-missing.yml
│           │   │   │   │   │   ├── dhcp-mgmt-ip-cvx-server-1.yml
│           │   │   │   │   │   ├── dhcp-mgmt-ip-cvx-server-2.yml
│           │   │   │   │   │   ├── dhcp-mgmt-ip-overlay-cvx-servers.yml
│           │   │   │   │   │   ├── digital-twin-act-dhcp-ip-addr.yml
│           │   │   │   │   │   ├── digital-twin-act-missing-ip-addr.yml
│           │   │   │   │   │   ├── digital-twin-act-missing-node-type.yml
│           │   │   │   │   │   ├── dns-settings-missing-inband-mgmt.yml
│           │   │   │   │   │   ├── dns-settings-missing-mgmt-ip.yml
│           │   │   │   │   │   ├── dns-settings-missing-vrf.yml
│           │   │   │   │   │   ├── dot1x-aaa-accounting-radius-groups-not-defined.yml
│           │   │   │   │   │   ├── dot1x-aaa-authentication-radius-groups-not-defined.yml
│           │   │   │   │   │   ├── dot1x-aaa-authentication-radius-servers-not-defined.yml
│           │   │   │   │   │   ├── dot1x-aaa-authorization-dynamic-radius-groups-not-defined.yml
│           │   │   │   │   │   ├── dot1x-connected-endpoints-not-globally-enabled.yml
│           │   │   │   │   │   ├── dot1x-network-ports-not-globally-enabled.yml
│           │   │   │   │   │   ├── duplicate-auto-generated-parent-network-services-point-to-point.yml
│           │   │   │   │   │   ├── duplicate-flow-tracking-hardware-cloudvision-exporter.yml
│           │   │   │   │   │   ├── duplicate-flow-tracking-sampled-cloudvision-exporter.yml
│           │   │   │   │   │   ├── duplicate-interface-l3-edge.yml
│           │   │   │   │   │   ├── duplicate-interfaces-connected-endpoints.yml
│           │   │   │   │   │   ├── duplicate-interfaces-core-interfaces-with-port-channel.yml
│           │   │   │   │   │   ├── duplicate-interfaces-core-interfaces.yml
│           │   │   │   │   │   ├── duplicate-interfaces-network-ports-with-port-channel.yml
│           │   │   │   │   │   ├── duplicate-interfaces-point-to-point-services-1.yml
│           │   │   │   │   │   ├── duplicate-interfaces-point-to-point-services-2.yml
│           │   │   │   │   │   ├── duplicate-interfaces-point-to-point-services-3.yml
│           │   │   │   │   │   ├── duplicate-interfaces-point-to-point-services-4.yml
│           │   │   │   │   │   ├── duplicate-interfaces-underlay.yml
│           │   │   │   │   │   ├── duplicate-ip-address-uplink-switch-router-bgp.yml
│           │   │   │   │   │   ├── duplicate-l3-interfaces-network-services.yml
│           │   │   │   │   │   ├── duplicate-neighbors-l3-edge.yml
│           │   │   │   │   │   ├── duplicate-peer-ip-address-network-services.yml
│           │   │   │   │   │   ├── duplicate-tunnel-interface-internet-exit.yml
│           │   │   │   │   │   ├── duplicate-vlans-l2vlans.yml
│           │   │   │   │   │   ├── duplicate-vlans-svi-id.yml
│           │   │   │   │   │   ├── duplicate-vni-l2vlans-vxlan-interface.yml
│           │   │   │   │   │   ├── duplicate-vni-l3-interfaces-in-vxlan-interface.yml
│           │   │   │   │   │   ├── duplicate-vni-vxlan-interface.yml
│           │   │   │   │   │   ├── duplicate-vrfs-duplicate-svi-name-conflict.yml
│           │   │   │   │   │   ├── duplicate-vrfs-id-conflict.yml
│           │   │   │   │   │   ├── duplicate-vrfs-tenant-igmp-snooping-conflict.yml
│           │   │   │   │   │   ├── duplicate-vrfs-vni-conflict.yml
│           │   │   │   │   │   ├── duplication-checks-across-models.yml
│           │   │   │   │   │   ├── evpn-multicast-missing-underlay-multicast.yml
│           │   │   │   │   │   ├── failure-adapter-ptp-profile-does-not-exist.yml
│           │   │   │   │   │   ├── failure-connected-endpoint-parent-port-profile-does-not-exist.yml
│           │   │   │   │   │   ├── failure-connected-endpoint-port-profile-does-not-exist-in-facts.yml
│           │   │   │   │   │   ├── failure-connected-endpoint-port-profile-does-not-exist.yml
│           │   │   │   │   │   ├── failure-cv-topology-uplink-interfaces.yml
│           │   │   │   │   │   ├── failure-devices-and-node-key-1.yml
│           │   │   │   │   │   ├── failure-devices-and-node-key-2.yml
│           │   │   │   │   │   ├── failure-devices-mlag-group.yml
│           │   │   │   │   │   ├── failure-duplicate-evpn-vlan-bundle-name.yml
│           │   │   │   │   │   ├── failure-evpn-gateway-aa-mh-gw-interdomain-conflict.yml
│           │   │   │   │   │   ├── failure-evpn-gateway-aa-mh-gw-ipvpngw-conflict.yml
│           │   │   │   │   │   ├── failure-evpn-gateway-aa-mh-gw-mlag-conflict.yml
│           │   │   │   │   │   ├── failure-evpn-gateway-aa-mh-gw-platform-conflict.yml
│           │   │   │   │   │   ├── failure-evpn-gateway-l3-rd-rt-rewrite-platform-conflict.yml
│           │   │   │   │   │   ├── failure-l2leaf-l2vlan-igmp-querier-no-router-id.yml
│           │   │   │   │   │   ├── failure-l2leaf-svi-igmp-querier-no-router-id.yml
│           │   │   │   │   │   ├── failure-l2vlan-igmp-snooping-querier-source-address-resolve.yml
│           │   │   │   │   │   ├── failure-l2vlan-parent-profile-does-not-exist.yml
│           │   │   │   │   │   ├── failure-l2vlan-profile-does-not-exist.yml
│           │   │   │   │   │   ├── failure-l3-interface-profile-does-not-exist.yml
│           │   │   │   │   │   ├── failure-missing-evpn-multicast-l3-with-pim.yml
│           │   │   │   │   │   ├── failure-missing-evpn-multicast-peg-rps.yml
│           │   │   │   │   │   ├── failure-missing-evpn-multicast-with-pim.yml
│           │   │   │   │   │   ├── failure-missing-evpn-vlan-bundle-svi.yml
│           │   │   │   │   │   ├── failure-missing-evpn-vlan-bundle.yml
│           │   │   │   │   │   ├── failure-network-port-ptp-profile-does-not-exist.yml
│           │   │   │   │   │   ├── failure-no-local-path-group-in-default-policy.yml
│           │   │   │   │   │   ├── failure-p2p-links-ptp-profile-does-not-exist.yml
│           │   │   │   │   │   ├── failure-port-channel.yml
│           │   │   │   │   │   ├── failure-ptp-profile-does-not-exist.yml
│           │   │   │   │   │   ├── failure-svi-grandparent-profile-does-not-exist.yml
│           │   │   │   │   │   ├── failure-svi-igmp-snooping-querier-source-address-for-diagnostic-loopback.yml
│           │   │   │   │   │   ├── failure-svi-igmp-snooping-querier-source-address-resolve.yml
│           │   │   │   │   │   ├── failure-svi-parent-profile-does-not-exist.yml
│           │   │   │   │   │   ├── flood-multicast-missing-1a.yml
│           │   │   │   │   │   ├── flood-multicast-missing-underlay-multicast-1a.yml
│           │   │   │   │   │   ├── flow-tracking-missing-tracker.yml
│           │   │   │   │   │   ├── id-static-and-pool-manager-invalid.yml
│           │   │   │   │   │   ├── inband-mgmt-missing-id-with-ipv6-subnet.yml
│           │   │   │   │   │   ├── inband-mgmt-missing-id-with-subnet.yml
│           │   │   │   │   │   ├── incorrect-downlink-link-tracking-group.yml
│           │   │   │   │   │   ├── invalid-admin-subfield.yml
│           │   │   │   │   │   ├── invalid-generate-cv-device-tags-data-path.yml
│           │   │   │   │   │   ├── invalid-generate-cv-device-tags.yml
│           │   │   │   │   │   ├── invalid-generate-cv-interface-tags-data-path.yml
│           │   │   │   │   │   ├── invalid-ptp-source-ip-address.yml
│           │   │   │   │   │   ├── invalid-schema-connected-endpoints.yml
│           │   │   │   │   │   ├── invalid-schema.yml
│           │   │   │   │   │   ├── invalid-uplink-type-p2p-vrfs-underlay-router-false.yml
│           │   │   │   │   │   ├── invalid-value-bgp-as-asdot-notation.yml
│           │   │   │   │   │   ├── invalid-value-bgp-as-asplain-notation.yml
│           │   │   │   │   │   ├── ipv4-acl-in-missing-on-l3-port-channel-wan-interface.yml
│           │   │   │   │   │   ├── ipv4-acl-in-missing-on-wan-interface.yml
│           │   │   │   │   │   ├── ipv4-acls-internet-exit-access-lists.yml
│           │   │   │   │   │   ├── ipv4-acls-zscaler-internet-exit-access-lists.yml
│           │   │   │   │   │   ├── ipv4-acls.yml
│           │   │   │   │   │   ├── ipv6-acls-missing-acl.yml
│           │   │   │   │   │   ├── ipv6-acls-missing-entry-destination.yml
│           │   │   │   │   │   ├── ipv6-acls-missing-entry-source.yml
│           │   │   │   │   │   ├── ipv6-acls-missing-interface-ip.yml
│           │   │   │   │   │   ├── isis-system-id-format-missing-node-id.yml
│           │   │   │   │   │   ├── l3-edge-ipv6-only-include-in-underlay-protocol.yml
│           │   │   │   │   │   ├── l3-edge-p2p-ospf-auth-global-disabled.yml
│           │   │   │   │   │   ├── l3-port-channel-no-ip-address-subif.yml
│           │   │   │   │   │   ├── l3-port-channel-sub-interface-with-member-interfaces.yml
│           │   │   │   │   │   ├── l3-port-channel-sub-interface-with-mode.yml
│           │   │   │   │   │   ├── l3-port-channel-without-member-interfaces.yml
│           │   │   │   │   │   ├── management-eapi-vrf-name-use-inband-mgmt-vrf.yml
│           │   │   │   │   │   ├── missing-application-classification-application-profile.yml
│           │   │   │   │   │   ├── missing-application-classification-category.yml
│           │   │   │   │   │   ├── missing-application-classification-port-set.yml
│           │   │   │   │   │   ├── missing-application-classification-prefix-set.yml
│           │   │   │   │   │   ├── missing-avt-id-cv-pathfinder.yml
│           │   │   │   │   │   ├── missing-bgp-as-with-l3-interfaces-bgp-peers.yml
│           │   │   │   │   │   ├── missing-bgp-wan-overlay-peers-listen-range-prefixes.yml
│           │   │   │   │   │   ├── missing-control-plane-virtual-topology-path-groups.yml
│           │   │   │   │   │   ├── missing-cv-pathfinder-internet-exit-policy-configured-under-l3-interface.yml
│           │   │   │   │   │   ├── missing-cv-pathfinder-path-group-with-preferred.yml
│           │   │   │   │   │   ├── missing-cv-pathfinder-region-name-under-cv-pathfinder-regions.yml
│           │   │   │   │   │   ├── missing-cv-pathfinder-region.yml
│           │   │   │   │   │   ├── missing-cv-pathfinder-regions.yml
│           │   │   │   │   │   ├── missing-cv-pathfinder-site-name-under-cv-pathfinder-regions-sites.yml
│           │   │   │   │   │   ├── missing-cv-pathfinder-site-under-cv-pathfinder-global-sites.yml
│           │   │   │   │   │   ├── missing-cv-pathfinder-site.yml
│           │   │   │   │   │   ├── missing-cv-settings-for-flow-tracking-cloudvision-vrf.yml
│           │   │   │   │   │   ├── missing-cv-settings-for-sflow-export-cloudvision-vrf.yml
│           │   │   │   │   │   ├── missing-cv-topology-default-uplink-interfaces.yml
│           │   │   │   │   │   ├── missing-cv-topology-levels-type.yml
│           │   │   │   │   │   ├── missing-cv-topology-levels.yml
│           │   │   │   │   │   ├── missing-cv-topology.yml
│           │   │   │   │   │   ├── missing-data-plane-cpu-allocation-max.yml
│           │   │   │   │   │   ├── missing-dc-name-for-overlay-her-flood-list-scope-dc.yml
│           │   │   │   │   │   ├── missing-default-policy-wan-control-load-balance-policy.yml
│           │   │   │   │   │   ├── missing-default-virtual-topology-path-group.yml
│           │   │   │   │   │   ├── missing-devices-parent-profile.yml
│           │   │   │   │   │   ├── missing-devices-profile.yml
│           │   │   │   │   │   ├── missing-devices-type.yml
│           │   │   │   │   │   ├── missing-dns-settings-when-cv-server-set-as-dns-name-cvaas.yml
│           │   │   │   │   │   ├── missing-dns-settings-when-cv-server-set-as-dns-name-onprem.yml
│           │   │   │   │   │   ├── missing-dot1q-encapsulation-vlan-ethernet-subinterface.yml
│           │   │   │   │   │   ├── missing-dot1q-encapsulation-vlan-port-channel-subinterface.yml
│           │   │   │   │   │   ├── missing-evpn-underlay-l3-multicast-group-ipv4-pool.yml
│           │   │   │   │   │   ├── missing-generated-cv-device-tags-value-and-data-paths.yml
│           │   │   │   │   │   ├── missing-generated-cv-interface-tags-value-and-data-paths.yml
│           │   │   │   │   │   ├── missing-id-for-ptp-priority2.yml
│           │   │   │   │   │   ├── missing-id-for-vrf-loopback-ipv6.yml
│           │   │   │   │   │   ├── missing-id-for-vrf-loopback.yml
│           │   │   │   │   │   ├── missing-inband-mgmt-interface.yml
│           │   │   │   │   │   ├── missing-internet-exit-policy-direct-wan-interface-dhcp-ip.yml
│           │   │   │   │   │   ├── missing-internet-exit-policy-direct-wan-interface-peer-ip.yml
│           │   │   │   │   │   ├── missing-internet-exit-policy-zscaler-wan-interface-peer-ip.yml
│           │   │   │   │   │   ├── missing-internet-exit-policy-zscaler-wan-interface-tunnels-id.yml
│           │   │   │   │   │   ├── missing-internet-exit-policy.yml
│           │   │   │   │   │   ├── missing-ip-address-on-uplink-used-as-wan-lan-ha.yml
│           │   │   │   │   │   ├── missing-ip-address-on-wan-lan-ha-uplink-for-peer.yml
│           │   │   │   │   │   ├── missing-key-evpn-gateway-remote-peer.yml
│           │   │   │   │   │   ├── missing-local-user-password-or-no-password-true.yml
│           │   │   │   │   │   ├── missing-loopback-ipv4-pool.yml
│           │   │   │   │   │   ├── missing-loopback-ipv6-pool.yml
│           │   │   │   │   │   ├── missing-mac-vrf-vni-base.yml
│           │   │   │   │   │   ├── missing-mgmt-ip-cvx-servers.yml
│           │   │   │   │   │   ├── missing-mgmt-ip-ipv6-mgmt-ip.yml
│           │   │   │   │   │   ├── missing-mgmt-ip-overlay-cvx-servers.yml
│           │   │   │   │   │   ├── missing-mlag-peer.yml
│           │   │   │   │   │   ├── missing-network-services-l3-interface-ospf-authentication-key.yaml
│           │   │   │   │   │   ├── missing-network-services-l3-interface-ospf-authentication-message-digest-key.yaml
│           │   │   │   │   │   ├── missing-network-services-l3-port-channel-ospf-authentication-key.yaml
│           │   │   │   │   │   ├── missing-network-services-l3-port-channel-ospf-authentication-message-digest-key.yaml
│           │   │   │   │   │   ├── missing-network-services-svi-ospf-authentication-key.yaml
│           │   │   │   │   │   ├── missing-network-services-svi-ospf-authentication-message-digest-key.yaml
│           │   │   │   │   │   ├── missing-ntp-authentication-key.yml
│           │   │   │   │   │   ├── missing-ntp-settings-when-cv-server-is-set.yml
│           │   │   │   │   │   ├── missing-overlay-cvx-servers.yml
│           │   │   │   │   │   ├── missing-parent-of-l3-port-channel-sub-interface.yml
│           │   │   │   │   │   ├── missing-peer-ip-l3-interface.yml
│           │   │   │   │   │   ├── missing-peer-router-id-for-router-pim-sparse-mode.yml
│           │   │   │   │   │   ├── missing-peer-wan-router-server-path-groups-not-found-under-inventory.yml
│           │   │   │   │   │   ├── missing-peering-address-under-evpn-gateway-remote-peers.yml
│           │   │   │   │   │   ├── missing-prefix-list-definition-cv-pathfinder.yml
│           │   │   │   │   │   ├── missing-prefix-list-in-cv-pathfinder.yml
│           │   │   │   │   │   ├── missing-radius-server-key-and-cleartext-key.yml
│           │   │   │   │   │   ├── missing-router-id-for-ptp-source-ip.yml
│           │   │   │   │   │   ├── missing-router-id-pool.yml
│           │   │   │   │   │   ├── missing-sflow-setting-destination-vrf.yml
│           │   │   │   │   │   ├── missing-system-mac-address-in-snmp-settings.yml
│           │   │   │   │   │   ├── missing-tacacs-server-key-and-cleartext-key.yml
│           │   │   │   │   │   ├── missing-underlay-ipv6.yml
│           │   │   │   │   │   ├── missing-underlay-l2-multicast-group-ipv4-pool.yml
│           │   │   │   │   │   ├── missing-valid-ipv4-address-ntp-servers-spine.yml
│           │   │   │   │   │   ├── missing-validation-parent-profile.yml
│           │   │   │   │   │   ├── missing-validation-profile.yml
│           │   │   │   │   │   ├── missing-virtual-router-mac-address.yml
│           │   │   │   │   │   ├── missing-vlan-id-on-ethernet-subinterface.yml
│           │   │   │   │   │   ├── missing-vlan-id-on-port-channel-subinterface.yml
│           │   │   │   │   │   ├── missing-vrf-vtep-diagnostic-loopback.yml
│           │   │   │   │   │   ├── missing-vtep-ip-for-peer-cv-pathfinder.yml
│           │   │   │   │   │   ├── missing-vtep-ip-wan-server-not-found-in-the-inventory.yml
│           │   │   │   │   │   ├── missing-vtep-loopback-ipv4-pool.yml
│           │   │   │   │   │   ├── missing-wan-carriers.yml
│           │   │   │   │   │   ├── missing-wan-control-load-balance-policy.yml
│           │   │   │   │   │   ├── missing-wan-ha-ipv4-pool.yml
│           │   │   │   │   │   ├── missing-wan-interfaces-ip-address.yml
│           │   │   │   │   │   ├── missing-wan-interfaces.yml
│           │   │   │   │   │   ├── missing-wan-ipsec-profiles-control-plane-key.yml
│           │   │   │   │   │   ├── missing-wan-ipsec-profiles-data-plane-key.yml
│           │   │   │   │   │   ├── missing-wan-ipsec-profiles.yml
│           │   │   │   │   │   ├── missing-wan-path-groups-for-peer-cv-pathfinder.yml
│           │   │   │   │   │   ├── missing-wan-policy-in-traffic-vrfs.yml
│           │   │   │   │   │   ├── missing-wan-route-servers-with-cv-pathfinder-mode.yml
│           │   │   │   │   │   ├── missing-wan-router-vtep-ip-in-route-reflector-listen-range-prefixes.yml
│           │   │   │   │   │   ├── mlag-dhcp-mgmt-ip-1.yml
│           │   │   │   │   │   ├── mlag-dhcp-mgmt-ip-2.yml
│           │   │   │   │   │   ├── monitor-connectivity-host-local-interfaces-not-in-interface-sets.yml
│           │   │   │   │   │   ├── monitor-connectivity-local-interfaces-not-in-interface-sets.yml
│           │   │   │   │   │   ├── monitor-connectivity-vrf-host-local-interfaces-not-in-interface-sets.yml
│           │   │   │   │   │   ├── monitor-connectivity-vrf-local-interfaces-not-in-interface-sets.yml
│           │   │   │   │   │   ├── net-srv-l3-po-sub-interface-with-members.yml
│           │   │   │   │   │   ├── net-srv-l3-po-sub-interface-with-mode.yml
│           │   │   │   │   │   ├── net-srv-l3-po-sub-interface-with-mtu.yml
│           │   │   │   │   │   ├── net-srv-l3-po-sub-interface-without-ip.yml
│           │   │   │   │   │   ├── net-srv-l3-po-sub-interface-without-main-po.yml
│           │   │   │   │   │   ├── net-srv-l3-po-without-member-interfaces.yml
│           │   │   │   │   │   ├── network-services-l2vlan-pvlan-missing-primary.yml
│           │   │   │   │   │   ├── network-services-l2vlan-pvlan-platform-disabled.yml
│           │   │   │   │   │   ├── ntp-settings-server-vrf-missing-inband-mgmt-interface.yml
│           │   │   │   │   │   ├── ntp-settings-server-vrf-missing-mgmt-ip.yml
│           │   │   │   │   │   ├── ospf-enabled-on-svi-not-on-vrf.yml
│           │   │   │   │   │   ├── overlay-routing-protocol-address-family-ipv6.yml
│           │   │   │   │   │   ├── p2p-links-missing-ip-subnet-ip-pool.yml
│           │   │   │   │   │   ├── parent-ethernet-interface-switchport-enabled-with-subinterface.yml
│           │   │   │   │   │   ├── parent-port-channel-interface-switchport-enabled-with-subinterface.yml
│           │   │   │   │   │   ├── set-both-all-active-multihoming-and-d-path-keys.yml
│           │   │   │   │   │   ├── sfe-interface-profile-duplicate-interface-members.yml
│           │   │   │   │   │   ├── sfe-interface-profile-exceed-max-rx-queue-cnt.yml
│           │   │   │   │   │   ├── sfe-interface-profile-worker-id-exceed-max.yml
│           │   │   │   │   │   ├── sflow-settings-missing-destinations.yml
│           │   │   │   │   │   ├── sflow-settings-missing-inband-mgmt-interface.yml
│           │   │   │   │   │   ├── sflow-settings-missing-mgmt-ip.yml
│           │   │   │   │   │   ├── snmp-settings-missing-inband-mgmt.yml
│           │   │   │   │   │   ├── snmp-settings-missing-ip.yml
│           │   │   │   │   │   ├── snmp-settings-missing-mgmt-ip.yml
│           │   │   │   │   │   ├── snmp-settings-missing-system-mac-address-rfc3411-type3.yml
│           │   │   │   │   │   ├── source-interface-conflict-in-logging-vrf-config.yml
│           │   │   │   │   │   ├── source-interfaces-http-client-duplicate-vrf.yml
│           │   │   │   │   │   ├── source-interfaces-http-client-missing-inband-mgmt-interface.yml
│           │   │   │   │   │   ├── source-interfaces-http-client-missing-mgmt-ip.yml
│           │   │   │   │   │   ├── source-interfaces-ssh-client-duplicate-vrf.yml
│           │   │   │   │   │   ├── source-interfaces-ssh-client-missing-inband-mgmt-interface.yml
│           │   │   │   │   │   ├── source-interfaces-ssh-client-missing-mgmt-ip.yml
│           │   │   │   │   │   ├── ul-filter-evpn-default-vrf-services.yml
│           │   │   │   │   │   ├── undefined-peer-facts.yml
│           │   │   │   │   │   ├── underlay-ospf-process-id-is-same-as-ospf-process-id-under-vrf.yml
│           │   │   │   │   │   ├── underlay-router-with-port-channel-uplink.yml
│           │   │   │   │   │   ├── unsupported-inband-ztp-ip-underlay-ipv6-numbered.yml
│           │   │   │   │   │   ├── unsupported-non-ebgp-underlay-routing-protocol-ip-underlay-ipv6-numbered.yml
│           │   │   │   │   │   ├── unsupported-rfc5549-underlay-ipv6-numbered.yml
│           │   │   │   │   │   ├── unsupported-underlay-multicast-underlay-ipv6-numbered.yml
│           │   │   │   │   │   ├── unsupported-vtep-vvtep-ip-underlay-ipv6-numbered.yml
│           │   │   │   │   │   ├── unsupported-wan-router-underlay-ipv6-numbered.yml
│           │   │   │   │   │   ├── wan-carriers-path-group-is-missing-in-wan-path-groups.yml
│           │   │   │   │   │   ├── wan-router-l3-interfaces-unsupported-rxtx-for-subinterface.yml
│           │   │   │   │   │   ├── wan-router-policy-unmatched.yml
│           │   │   │   │   │   ├── wan-server-bgp-as-different-from-own.yml
│           │   │   │   │   │   ├── wan-server-with-interfaces-as-dhcp-address.yml
│           │   │   │   │   │   └── wan-unsupported-platform.yml
│           │   │   │   │   └── hosts.yml
│           │   │   │   └── molecule.yml
│           │   │   ├── eos_designs_unit_tests/
│           │   │   │   ├── converge.yml
│           │   │   │   ├── create.yml
│           │   │   │   ├── custom_modules/
│           │   │   │   │   ├── custom_interface_descriptions_with_data.py
│           │   │   │   │   └── custom_ip_addressing.py
│           │   │   │   ├── destroy.yml
│           │   │   │   ├── extra_python_paths
│           │   │   │   ├── intended/
│           │   │   │   │   ├── configs/
│           │   │   │   │   │   ├── 7010tx-leaf1.cfg
│           │   │   │   │   │   ├── 7010tx-leaf2.cfg
│           │   │   │   │   │   ├── 7020tx-leaf1.cfg
│           │   │   │   │   │   ├── aaa-settings-1.cfg
│           │   │   │   │   │   ├── aaa-settings-2.cfg
│           │   │   │   │   │   ├── aaa-settings-3.cfg
│           │   │   │   │   │   ├── add-subnets-to-redistribution-in-default-vrf-with-sequence30.cfg
│           │   │   │   │   │   ├── address-locking-2.cfg
│           │   │   │   │   │   ├── address-locking-3.cfg
│           │   │   │   │   │   ├── address-locking-4.cfg
│           │   │   │   │   │   ├── address-locking.cfg
│           │   │   │   │   │   ├── always-configure-ip-routing.cfg
│           │   │   │   │   │   ├── asdot-for-wan-ha-leaf11.cfg
│           │   │   │   │   │   ├── asdot-for-wan-ha-transit1a1.cfg
│           │   │   │   │   │   ├── asdot-for-wan-ha-transit1b1.cfg
│           │   │   │   │   │   ├── auto-bgp-asn-leaf1a.cfg
│           │   │   │   │   │   ├── auto-bgp-asn-leaf1b.cfg
│           │   │   │   │   │   ├── auto-bgp-asn-leaf2.cfg
│           │   │   │   │   │   ├── auto-bgp-asn-leaf3a.cfg
│           │   │   │   │   │   ├── auto-bgp-asn-leaf3b.cfg
│           │   │   │   │   │   ├── auto-bgp-asn-leaf4a.cfg
│           │   │   │   │   │   ├── auto-bgp-asn-leaf4b.cfg
│           │   │   │   │   │   ├── auto-bgp-asn-leaf5a.cfg
│           │   │   │   │   │   ├── auto-bgp-asn-leaf7a.cfg
│           │   │   │   │   │   ├── auto-bgp-asn-leaf7b.cfg
│           │   │   │   │   │   ├── auto-bgp-asn-leaf8a.cfg
│           │   │   │   │   │   ├── auto-bgp-asn-leaf8b.cfg
│           │   │   │   │   │   ├── auto-bgp-ungrouped-leaf6.cfg
│           │   │   │   │   │   ├── auto-node-type-leaf01.cfg
│           │   │   │   │   │   ├── auto-node-type-spine01.cfg
│           │   │   │   │   │   ├── auto-node-type-spine02.cfg
│           │   │   │   │   │   ├── auto-node-type-ungrouped-leaf02.cfg
│           │   │   │   │   │   ├── bgp-cleartext-passwords.cfg
│           │   │   │   │   │   ├── bgp-from-network-services-1.cfg
│           │   │   │   │   │   ├── bgp-from-network-services-11.cfg
│           │   │   │   │   │   ├── bgp-from-network-services-12.cfg
│           │   │   │   │   │   ├── bgp-from-network-services-2.cfg
│           │   │   │   │   │   ├── bgp-from-network-services-21.cfg
│           │   │   │   │   │   ├── bgp-from-network-services-22.cfg
│           │   │   │   │   │   ├── bgp-from-network-services-31.cfg
│           │   │   │   │   │   ├── bgp-from-network-services-32.cfg
│           │   │   │   │   │   ├── bgp-from-network-services-41.cfg
│           │   │   │   │   │   ├── bgp-options.cfg
│           │   │   │   │   │   ├── bgp-peer-groups-1.cfg
│           │   │   │   │   │   ├── bgp-peer-groups-2.cfg
│           │   │   │   │   │   ├── bgp-peer-groups-3.cfg
│           │   │   │   │   │   ├── bgp-peer-groups-4.cfg
│           │   │   │   │   │   ├── bgp-peer-groups-ipv6-1.cfg
│           │   │   │   │   │   ├── bgp-preencrypted-passwords.cfg
│           │   │   │   │   │   ├── connected-endpoints-no-network-services.cfg
│           │   │   │   │   │   ├── connected-endpoints-only-defined-vlans.cfg
│           │   │   │   │   │   ├── connected-endpoints.cfg
│           │   │   │   │   │   ├── core-1-isis-sr-ldp.cfg
│           │   │   │   │   │   ├── core-2-ospf-ldp.cfg
│           │   │   │   │   │   ├── core-3-isis-sr-ldp.cfg
│           │   │   │   │   │   ├── core-4-multicast.cfg
│           │   │   │   │   │   ├── core-5-isis-sr-ldp.cfg
│           │   │   │   │   │   ├── core-6-isis-ldp.cfg
│           │   │   │   │   │   ├── custom-ptp-profile.cfg
│           │   │   │   │   │   ├── custom-python-modules-l3leaf1a.cfg
│           │   │   │   │   │   ├── custom-python-modules-l3leaf1b.cfg
│           │   │   │   │   │   ├── custom-python-modules-l3leaf2.cfg
│           │   │   │   │   │   ├── custom-python-modules-spine1.cfg
│           │   │   │   │   │   ├── custom-structured-configuration.cfg
│           │   │   │   │   │   ├── cv-mlag-ospf-l3leaf1a.cfg
│           │   │   │   │   │   ├── cv-mlag-ospf-l3leaf1b.cfg
│           │   │   │   │   │   ├── cv-pathfinder-custom-control-plane-policy-edge-1.cfg
│           │   │   │   │   │   ├── cv-pathfinder-custom-control-plane-policy-edge-2.cfg
│           │   │   │   │   │   ├── cv-pathfinder-custom-control-plane-policy-edge-3.cfg
│           │   │   │   │   │   ├── cv-pathfinder-custom-control-plane-policy-pathfinder-1.cfg
│           │   │   │   │   │   ├── cv-pathfinder-edge-custom-default-policy.cfg
│           │   │   │   │   │   ├── cv-pathfinder-edge-no-default-policy.cfg
│           │   │   │   │   │   ├── cv-pathfinder-edge-no-ipsec-for-wan-path-group.cfg
│           │   │   │   │   │   ├── cv-pathfinder-edge-wan-gateway-spine-uplink.cfg
│           │   │   │   │   │   ├── cv-pathfinder-edge-wan-use-evpn-on-lan-no-overlay-on-lan.cfg
│           │   │   │   │   │   ├── cv-pathfinder-edge-wan-use-evpn-on-lan.cfg
│           │   │   │   │   │   ├── cv-pathfinder-edge.cfg
│           │   │   │   │   │   ├── cv-pathfinder-edge1.cfg
│           │   │   │   │   │   ├── cv-pathfinder-edge2a.cfg
│           │   │   │   │   │   ├── cv-pathfinder-edge2b.cfg
│           │   │   │   │   │   ├── cv-pathfinder-edge3a.cfg
│           │   │   │   │   │   ├── cv-pathfinder-edge3b.cfg
│           │   │   │   │   │   ├── cv-pathfinder-edge4a.cfg
│           │   │   │   │   │   ├── cv-pathfinder-edge4b.cfg
│           │   │   │   │   │   ├── cv-pathfinder-metadata-with-no-default-vrf-in-wan-virtual-topologies.cfg
│           │   │   │   │   │   ├── cv-pathfinder-pathfinder.cfg
│           │   │   │   │   │   ├── cv-pathfinder-pathfinder1.cfg
│           │   │   │   │   │   ├── cv-pathfinder-pathfinder2.cfg
│           │   │   │   │   │   ├── cv-pathfinder-spine1.cfg
│           │   │   │   │   │   ├── cv-pathfinder-transit1a.cfg
│           │   │   │   │   │   ├── cv-pathfinder-transit1b.cfg
│           │   │   │   │   │   ├── cv-settings.cfg
│           │   │   │   │   │   ├── cv-topology-leaf3a.cfg
│           │   │   │   │   │   ├── cv-topology-leaf3b.cfg
│           │   │   │   │   │   ├── dc1-bl1a.cfg
│           │   │   │   │   │   ├── dc1-bl1b.cfg
│           │   │   │   │   │   ├── dc1-bl2a.cfg
│           │   │   │   │   │   ├── dc1-bl2b.cfg
│           │   │   │   │   │   ├── dc1-cl1a.cfg
│           │   │   │   │   │   ├── dc1-cl1b.cfg
│           │   │   │   │   │   ├── dc1-l2leaf1a.cfg
│           │   │   │   │   │   ├── dc1-l2leaf1b.cfg
│           │   │   │   │   │   ├── dc1-l2leaf2a.cfg
│           │   │   │   │   │   ├── dc1-l2leaf2b.cfg
│           │   │   │   │   │   ├── dc1-l2leaf3a.cfg
│           │   │   │   │   │   ├── dc1-l2leaf4a.cfg
│           │   │   │   │   │   ├── dc1-leaf1a.cfg
│           │   │   │   │   │   ├── dc1-leaf2a.cfg
│           │   │   │   │   │   ├── dc1-leaf2b.cfg
│           │   │   │   │   │   ├── dc1-spine1.cfg
│           │   │   │   │   │   ├── dc1-spine2.cfg
│           │   │   │   │   │   ├── dc1-spine3.cfg
│           │   │   │   │   │   ├── dc1-spine4.cfg
│           │   │   │   │   │   ├── dc1-svc3a.cfg
│           │   │   │   │   │   ├── dc1-svc3b.cfg
│           │   │   │   │   │   ├── dc1-undeployed-leaf1a.cfg
│           │   │   │   │   │   ├── dc1-undeployed-leaf1b.cfg
│           │   │   │   │   │   ├── dc1.l2leaf5a.cfg
│           │   │   │   │   │   ├── dc1.l2leaf5b.cfg
│           │   │   │   │   │   ├── dc1.l2leaf6a.cfg
│           │   │   │   │   │   ├── dc1.l2leaf6b.cfg
│           │   │   │   │   │   ├── dc1.l2leaf7a.cfg
│           │   │   │   │   │   ├── default-interface-mtu-hostvars.cfg
│           │   │   │   │   │   ├── default-interface-mtu-platform.cfg
│           │   │   │   │   │   ├── default-overlay-protocol-cvx.cfg
│           │   │   │   │   │   ├── default-overlay-protocol-her.cfg
│           │   │   │   │   │   ├── device.with.dots.in.hostname.cfg
│           │   │   │   │   │   ├── devices-l2leaf1.cfg
│           │   │   │   │   │   ├── devices-leaf1a.cfg
│           │   │   │   │   │   ├── devices-leaf1b.cfg
│           │   │   │   │   │   ├── devices-leaf2a.cfg
│           │   │   │   │   │   ├── devices-leaf2b.cfg
│           │   │   │   │   │   ├── dhcp-relay-option-82-non-vtep.cfg
│           │   │   │   │   │   ├── dhcp-relay-option-82.cfg
│           │   │   │   │   │   ├── dhcp-relay-vtep-mlag-1.cfg
│           │   │   │   │   │   ├── dhcp-relay-vtep-mlag-2.cfg
│           │   │   │   │   │   ├── dhcp-relay-vtep-mlag-link-only-1.cfg
│           │   │   │   │   │   ├── dhcp-relay-vtep-mlag-link-only-2.cfg
│           │   │   │   │   │   ├── dhcp-relay-vtep.cfg
│           │   │   │   │   │   ├── dns-settings-1.cfg
│           │   │   │   │   │   ├── dns-settings-2.cfg
│           │   │   │   │   │   ├── dns-settings-3.cfg
│           │   │   │   │   │   ├── dot1x-settings-1.cfg
│           │   │   │   │   │   ├── dot1x-settings-2.cfg
│           │   │   │   │   │   ├── dot1x-settings-3.cfg
│           │   │   │   │   │   ├── dot1x-settings-4.cfg
│           │   │   │   │   │   ├── downlink-pools-l3leaf1.cfg
│           │   │   │   │   │   ├── downlink-pools-l3leaf2.cfg
│           │   │   │   │   │   ├── downlink-pools-l3leaf3.cfg
│           │   │   │   │   │   ├── downlink-pools-l3leaf4.cfg
│           │   │   │   │   │   ├── downlink-pools-spine1.cfg
│           │   │   │   │   │   ├── downlink-pools-spine2.cfg
│           │   │   │   │   │   ├── dup-leaf1.cfg
│           │   │   │   │   │   ├── dup-leaf2.cfg
│           │   │   │   │   │   ├── duplicate-vrfs.cfg
│           │   │   │   │   │   ├── ebgp-overlay-address-families-vpn-ipv4.cfg
│           │   │   │   │   │   ├── eos-cli.cfg
│           │   │   │   │   │   ├── evpn-gateway-all-active-mh-gw-enabled-d-path-false.cfg
│           │   │   │   │   │   ├── evpn-gateway-all-active-mh-gw.cfg
│           │   │   │   │   │   ├── evpn-gateway-l2-evpn-role-server.cfg
│           │   │   │   │   │   ├── evpn-gateway-l2-l3-disabled.cfg
│           │   │   │   │   │   ├── evpn-gateway-l3-rd-rt-rewrite.cfg
│           │   │   │   │   │   ├── evpn-l2-multi-domain.cfg
│           │   │   │   │   │   ├── evpn-multicast-disabled.cfg
│           │   │   │   │   │   ├── evpn-multicast-l2leaf1a.cfg
│           │   │   │   │   │   ├── evpn-multicast-l3leaf1a.cfg
│           │   │   │   │   │   ├── evpn-multicast-l3leaf1b.cfg
│           │   │   │   │   │   ├── evpn-multicast-l3leaf2a.cfg
│           │   │   │   │   │   ├── evpn-multicast-l3leaf3a.cfg
│           │   │   │   │   │   ├── evpn-multicast-l3leaf3b.cfg
│           │   │   │   │   │   ├── evpn-multicast-spine1.cfg
│           │   │   │   │   │   ├── evpn-overlay-mpls-route-reflectors-ibgp.cfg
│           │   │   │   │   │   ├── evpn-overlay-mpls-route-reflectors2-ibgp.cfg
│           │   │   │   │   │   ├── evpn-overlay-mpls-route-reflectors3-ibgp.cfg
│           │   │   │   │   │   ├── evpn-prevent-readvertise-to-server-1.cfg
│           │   │   │   │   │   ├── evpn-prevent-readvertise-to-server-2.cfg
│           │   │   │   │   │   ├── evpn-prevent-readvertise-to-server-3.cfg
│           │   │   │   │   │   ├── evpn-prevent-readvertise-to-server-4.cfg
│           │   │   │   │   │   ├── evpn-prevent-readvertise-to-server-5.cfg
│           │   │   │   │   │   ├── evpn-prevent-readvertise-to-server-6.cfg
│           │   │   │   │   │   ├── evpn-prevent-readvertise-to-server-8.cfg
│           │   │   │   │   │   ├── evpn-role-server-overlay-vxlan-ibgp.cfg
│           │   │   │   │   │   ├── evpn-services-l2-only-false.cfg
│           │   │   │   │   │   ├── evpn-services-l2-only-true.cfg
│           │   │   │   │   │   ├── evpn-to-ipvpn-gateway.cfg
│           │   │   │   │   │   ├── evpn-vlan-bundle-svi-l2vlan.cfg
│           │   │   │   │   │   ├── evpn-vlan-bundle.cfg
│           │   │   │   │   │   ├── evpn-vtep-with-default-vrf-not-evpn.cfg
│           │   │   │   │   │   ├── exclude-as-extra-fabric-validation-target.cfg
│           │   │   │   │   │   ├── fabric-numbering-node-id.cfg
│           │   │   │   │   │   ├── filter.only-vlans-in-use.cfg
│           │   │   │   │   │   ├── filter.vrfs.cfg
│           │   │   │   │   │   ├── flow-tracking-tests-l2-leaf1.cfg
│           │   │   │   │   │   ├── flow-tracking-tests-l2-leaf2.cfg
│           │   │   │   │   │   ├── flow-tracking-tests-l2-leaf3.cfg
│           │   │   │   │   │   ├── flow-tracking-tests-l2-leaf4.cfg
│           │   │   │   │   │   ├── flow-tracking-tests-leaf1.cfg
│           │   │   │   │   │   ├── flow-tracking-tests-leaf2.cfg
│           │   │   │   │   │   ├── flow-tracking-tests-leaf3.cfg
│           │   │   │   │   │   ├── flow-tracking-tests-leaf4.cfg
│           │   │   │   │   │   ├── flow-tracking-tests-spine1.cfg
│           │   │   │   │   │   ├── flow-tracking-tests-spine2.cfg
│           │   │   │   │   │   ├── general-settings.cfg
│           │   │   │   │   │   ├── generate-cv-tags-1.cfg
│           │   │   │   │   │   ├── generate-cv-tags-2.cfg
│           │   │   │   │   │   ├── hardware-counters.cfg
│           │   │   │   │   │   ├── hardware-feature-sflow-subinterface-1.cfg
│           │   │   │   │   │   ├── hardware-features-720xp.cfg
│           │   │   │   │   │   ├── hardware-features-7280r.cfg
│           │   │   │   │   │   ├── hardware-features-ceos-lab.cfg
│           │   │   │   │   │   ├── hardware-features-cloudeos-2.cfg
│           │   │   │   │   │   ├── hardware-features-cloudeos.cfg
│           │   │   │   │   │   ├── hardware-features-custom-platform.cfg
│           │   │   │   │   │   ├── hardware-features-veos-lab.cfg
│           │   │   │   │   │   ├── igmp-querier-l2leaf1a.cfg
│           │   │   │   │   │   ├── igmp-querier-l3leaf1a.cfg
│           │   │   │   │   │   ├── ignore-custom-keys-in-data-models.cfg
│           │   │   │   │   │   ├── inband-mgmt-dualstack-ips.cfg
│           │   │   │   │   │   ├── inband-mgmt-dualstack-subnets.cfg
│           │   │   │   │   │   ├── inband-mgmt-ip.cfg
│           │   │   │   │   │   ├── inband-mgmt-ipv6-only-vrf.cfg
│           │   │   │   │   │   ├── inband-mgmt-ipv6-only.cfg
│           │   │   │   │   │   ├── inband-mgmt-ipv6-with-address.cfg
│           │   │   │   │   │   ├── inband-mgmt-mlag-a.cfg
│           │   │   │   │   │   ├── inband-mgmt-mlag-b.cfg
│           │   │   │   │   │   ├── inband-mgmt-parent-dualstack1.cfg
│           │   │   │   │   │   ├── inband-mgmt-parent-dualstack2.cfg
│           │   │   │   │   │   ├── inband-mgmt-parent-ipv6-1.cfg
│           │   │   │   │   │   ├── inband-mgmt-parent-ipv6-2.cfg
│           │   │   │   │   │   ├── inband-mgmt-parent-ipv6-3.cfg
│           │   │   │   │   │   ├── inband-mgmt-parent-vrf.cfg
│           │   │   │   │   │   ├── inband-mgmt-parent.cfg
│           │   │   │   │   │   ├── inband-mgmt-per-interface-mtu-false.cfg
│           │   │   │   │   │   ├── inband-mgmt-spine1-ztp.cfg
│           │   │   │   │   │   ├── inband-mgmt-spine2-ztp.cfg
│           │   │   │   │   │   ├── inband-mgmt-subnet-vrf.cfg
│           │   │   │   │   │   ├── inband-mgmt-subnet.cfg
│           │   │   │   │   │   ├── inband-ztp-without-ntp-leaf.cfg
│           │   │   │   │   │   ├── inband-ztp-without-ntp-spine.cfg
│           │   │   │   │   │   ├── ipv4-acls.cfg
│           │   │   │   │   │   ├── ipv6-downlink-pools-leaf1a.cfg
│           │   │   │   │   │   ├── ipv6-downlink-pools-spine.cfg
│           │   │   │   │   │   ├── ipv6-numbered-leaf1a.cfg
│           │   │   │   │   │   ├── ipv6-numbered-leaf1b.cfg
│           │   │   │   │   │   ├── ipv6-numbered-leaf2a.cfg
│           │   │   │   │   │   ├── ipv6-numbered-spine1.cfg
│           │   │   │   │   │   ├── ipv6-numbered-spine2.cfg
│           │   │   │   │   │   ├── ipv6-numbered-vtep-loopback0-leaf1a.cfg
│           │   │   │   │   │   ├── ipv6-numbered-vtep-loopback0-leaf1b.cfg
│           │   │   │   │   │   ├── ipv6-numbered-vtep-loopback0-spine.cfg
│           │   │   │   │   │   ├── isis-cleartext-keys-leaf1.cfg
│           │   │   │   │   │   ├── isis-cleartext-keys-leaf2.cfg
│           │   │   │   │   │   ├── isis-system-id-format-using-node-id.cfg
│           │   │   │   │   │   ├── isis-system-id-format-using-underlay-loopback.cfg
│           │   │   │   │   │   ├── l2vlan-profiles.cfg
│           │   │   │   │   │   ├── l3-edge-bgp.cfg
│           │   │   │   │   │   ├── l3-edge-isis.cfg
│           │   │   │   │   │   ├── l3-edge-multicast.cfg
│           │   │   │   │   │   ├── l3-edge-ospf-auth.cfg
│           │   │   │   │   │   ├── l3-edge-ospf.cfg
│           │   │   │   │   │   ├── l3-edge-rfc5549.cfg
│           │   │   │   │   │   ├── leaf-wan-use-evpn-on-lan.cfg
│           │   │   │   │   │   ├── leaf1-dot1x-evpn-redistribution-enabled-vlan-aware-bundles.cfg
│           │   │   │   │   │   ├── leaf1-dot1x-evpn-redistribution-enabled.cfg
│           │   │   │   │   │   ├── leaf2-dot1x-evpn-redistribution-disabled-vlan-aware-bundles.cfg
│           │   │   │   │   │   ├── leaf2-dot1x-evpn-redistribution-disabled.cfg
│           │   │   │   │   │   ├── legacy-autovpn-cv-interface-tags-test.cfg
│           │   │   │   │   │   ├── legacy-autovpn-edge-no-default-policy.cfg
│           │   │   │   │   │   ├── legacy-autovpn-edge.cfg
│           │   │   │   │   │   ├── legacy-autovpn-empty-load-balance-policy.cfg
│           │   │   │   │   │   ├── legacy-autovpn-rr1.cfg
│           │   │   │   │   │   ├── legacy-autovpn-rr2.cfg
│           │   │   │   │   │   ├── logging-settings-local-interface.cfg
│           │   │   │   │   │   ├── logging-settings.cfg
│           │   │   │   │   │   ├── management-eapi-vrfs-2.cfg
│           │   │   │   │   │   ├── management-eapi-vrfs-3.cfg
│           │   │   │   │   │   ├── management-eapi-vrfs.cfg
│           │   │   │   │   │   ├── management-settings-console.cfg
│           │   │   │   │   │   ├── management-settings-login-banner.cfg
│           │   │   │   │   │   ├── management-settings-motd-banner.cfg
│           │   │   │   │   │   ├── management-settings.cfg
│           │   │   │   │   │   ├── mgmt-interface-default.cfg
│           │   │   │   │   │   ├── mgmt-interface-description.cfg
│           │   │   │   │   │   ├── mgmt-interface-dhcp-with-accept-default-route-false.cfg
│           │   │   │   │   │   ├── mgmt-interface-dhcp.cfg
│           │   │   │   │   │   ├── mgmt-interface-dualstack.cfg
│           │   │   │   │   │   ├── mgmt-interface-fabric.cfg
│           │   │   │   │   │   ├── mgmt-interface-host.cfg
│           │   │   │   │   │   ├── mgmt-interface-ipv6.cfg
│           │   │   │   │   │   ├── mgmt-interface-platform.cfg
│           │   │   │   │   │   ├── mgmt-interface-settings-1.cfg
│           │   │   │   │   │   ├── mgmt-interface-settings-2.cfg
│           │   │   │   │   │   ├── mh-l2leaf1a.cfg
│           │   │   │   │   │   ├── mh-leaf1a.cfg
│           │   │   │   │   │   ├── mh-leaf1b.cfg
│           │   │   │   │   │   ├── mh-leaf2a.cfg
│           │   │   │   │   │   ├── mlag-bgp-different-as-notation-1.cfg
│           │   │   │   │   │   ├── mlag-bgp-different-as-notation-2.cfg
│           │   │   │   │   │   ├── mlag-ipv6-l3leaf1a.cfg
│           │   │   │   │   │   ├── mlag-ipv6-l3leaf1b.cfg
│           │   │   │   │   │   ├── mlag-isis-l3leaf1a.cfg
│           │   │   │   │   │   ├── mlag-isis-l3leaf1b.cfg
│           │   │   │   │   │   ├── mlag-isis-spine.cfg
│           │   │   │   │   │   ├── mlag-odd-id-l3leaf1a.cfg
│           │   │   │   │   │   ├── mlag-odd-id-l3leaf1b.cfg
│           │   │   │   │   │   ├── mlag-ospf-l3leaf1a.cfg
│           │   │   │   │   │   ├── mlag-ospf-l3leaf1b.cfg
│           │   │   │   │   │   ├── mlag-same-subnet-l3leaf1a.cfg
│           │   │   │   │   │   ├── mlag-same-subnet-l3leaf1b.cfg
│           │   │   │   │   │   ├── mlag-same-subnet-l3leaf2a.cfg
│           │   │   │   │   │   ├── mlag-same-subnet-l3leaf2b.cfg
│           │   │   │   │   │   ├── monitor-combined-settings.cfg
│           │   │   │   │   │   ├── monitor-connectivity-settings.cfg
│           │   │   │   │   │   ├── monitor-layer1-minimal.cfg
│           │   │   │   │   │   ├── monitor-layer1-settings.cfg
│           │   │   │   │   │   ├── network-ports-tests-2.cfg
│           │   │   │   │   │   ├── network-ports-tests.1.cfg
│           │   │   │   │   │   ├── network-services-arp-static-entries.cfg
│           │   │   │   │   │   ├── network-services-l2vlan-private-vlan.cfg
│           │   │   │   │   │   ├── network-services-l3-port-channels.cfg
│           │   │   │   │   │   ├── network-services-point-to-point.cfg
│           │   │   │   │   │   ├── network-services-static-routes.cfg
│           │   │   │   │   │   ├── no-mgmt-gateway.cfg
│           │   │   │   │   │   ├── no-mgmt-interface.cfg
│           │   │   │   │   │   ├── node-type-l3-interfaces-bgp.cfg
│           │   │   │   │   │   ├── node-type-l3-interfaces.cfg
│           │   │   │   │   │   ├── node-type-l3-port-channels-subinterfaces.cfg
│           │   │   │   │   │   ├── node-type-l3-port-channels.cfg
│           │   │   │   │   │   ├── ntp-settings-1.cfg
│           │   │   │   │   │   ├── ntp-settings-2.cfg
│           │   │   │   │   │   ├── only-connected-endpoints.cfg
│           │   │   │   │   │   ├── ospf-cleartext-passwords.cfg
│           │   │   │   │   │   ├── ospf-preencrypted-passwords.cfg
│           │   │   │   │   │   ├── overlay-routing-protocol-cvx-l3leaf1.cfg
│           │   │   │   │   │   ├── overlay-routing-protocol-cvx-l3leaf2.cfg
│           │   │   │   │   │   ├── overlay-routing-protocol-cvx-server1.cfg
│           │   │   │   │   │   ├── overlay-routing-protocol-cvx-server2.cfg
│           │   │   │   │   │   ├── overlay-routing-protocol-cvx-server3.cfg
│           │   │   │   │   │   ├── overlay-routing-protocol-her-l3leaf1.cfg
│           │   │   │   │   │   ├── overlay-routing-protocol-her-l3leaf2.cfg
│           │   │   │   │   │   ├── overlay-routing-protocol-her-l3leaf3a.cfg
│           │   │   │   │   │   ├── overlay-routing-protocol-her-l3leaf3b.cfg
│           │   │   │   │   │   ├── overlay-routing-protocol-her-l3leaf4.cfg
│           │   │   │   │   │   ├── override-uplink-type-d.cfg
│           │   │   │   │   │   ├── override-uplink-type-u.cfg
│           │   │   │   │   │   ├── override-vtep-l3leaf1a.cfg
│           │   │   │   │   │   ├── override-vtep-l3leaf1b.cfg
│           │   │   │   │   │   ├── p2p-uplinks-ipv4-prefix-length.cfg
│           │   │   │   │   │   ├── platform-7358x4.cfg
│           │   │   │   │   │   ├── platform-settings.cfg
│           │   │   │   │   │   ├── ptp-tests-l2leaf1-ptp-disabled.cfg
│           │   │   │   │   │   ├── ptp-tests-l2leaf2-ptp-enabled-uplink-disabled.cfg
│           │   │   │   │   │   ├── ptp-tests-l2leaf2-ptp-enabled.cfg
│           │   │   │   │   │   ├── ptp-tests-leaf1.cfg
│           │   │   │   │   │   ├── ptp-tests-leaf2.cfg
│           │   │   │   │   │   ├── ptp-tests-leaf3.cfg
│           │   │   │   │   │   ├── ptp-tests-leaf4.cfg
│           │   │   │   │   │   ├── ptp-tests-leaf5.cfg
│           │   │   │   │   │   ├── ptp-tests-leaf6.cfg
│           │   │   │   │   │   ├── ptp-tests-spine1.cfg
│           │   │   │   │   │   ├── ptp-tests-spine2.cfg
│           │   │   │   │   │   ├── ptp-tests-spine3.cfg
│           │   │   │   │   │   ├── rd-rt-admin-subfield-l3leaf1.cfg
│           │   │   │   │   │   ├── rd-rt-admin-subfield-l3leaf10.cfg
│           │   │   │   │   │   ├── rd-rt-admin-subfield-l3leaf2.cfg
│           │   │   │   │   │   ├── rd-rt-admin-subfield-l3leaf3.cfg
│           │   │   │   │   │   ├── rd-rt-admin-subfield-l3leaf4.cfg
│           │   │   │   │   │   ├── rd-rt-admin-subfield-l3leaf5.cfg
│           │   │   │   │   │   ├── rd-rt-admin-subfield-l3leaf6.cfg
│           │   │   │   │   │   ├── rd-rt-admin-subfield-l3leaf7.cfg
│           │   │   │   │   │   ├── rd-rt-admin-subfield-l3leaf9.cfg
│           │   │   │   │   │   ├── relaxed-structured-config-validation.cfg
│           │   │   │   │   │   ├── sfe-interface-profile-options.cfg
│           │   │   │   │   │   ├── sflow-settings-1.cfg
│           │   │   │   │   │   ├── sflow-settings-2.cfg
│           │   │   │   │   │   ├── sflow-tests-l2-leaf1.cfg
│           │   │   │   │   │   ├── sflow-tests-l2-leaf2.cfg
│           │   │   │   │   │   ├── sflow-tests-leaf1.cfg
│           │   │   │   │   │   ├── sflow-tests-leaf2.cfg
│           │   │   │   │   │   ├── sflow-tests-leaf3.cfg
│           │   │   │   │   │   ├── sflow-tests-leaf4.cfg
│           │   │   │   │   │   ├── sflow-tests-spine1.cfg
│           │   │   │   │   │   ├── sflow-tests-spine2.cfg
│           │   │   │   │   │   ├── site-ha-disabled-leaf.cfg
│           │   │   │   │   │   ├── site-ha-enabled-leaf1.cfg
│           │   │   │   │   │   ├── site-ha-enabled-leaf2a.cfg
│           │   │   │   │   │   ├── site-ha-enabled-leaf2b.cfg
│           │   │   │   │   │   ├── sl-leaf0a.cfg
│           │   │   │   │   │   ├── sl-leaf0b.cfg
│           │   │   │   │   │   ├── sl-leaf1a.cfg
│           │   │   │   │   │   ├── sl-leaf1b.cfg
│           │   │   │   │   │   ├── sl-leaf2a.cfg
│           │   │   │   │   │   ├── sl-leaf2b.cfg
│           │   │   │   │   │   ├── sl-mleaf1.cfg
│           │   │   │   │   │   ├── snmp-autogen-engineid-hostname-and-ip-inband.cfg
│           │   │   │   │   │   ├── snmp-autogen-engineid-hostname-ip-dhcp.cfg
│           │   │   │   │   │   ├── snmp-autogen-engineid-hostname-ip-oob.cfg
│           │   │   │   │   │   ├── snmp-autogen-engineid-rfc3411-hostname-default-mgmt-inband.cfg
│           │   │   │   │   │   ├── snmp-autogen-engineid-rfc3411-hostname-default-mgmt-oob.cfg
│           │   │   │   │   │   ├── snmp-autogen-engineid-rfc3411-hostname-dhcp.cfg
│           │   │   │   │   │   ├── snmp-autogen-engineid-rfc3411-hostname-inband-ip.cfg
│           │   │   │   │   │   ├── snmp-autogen-engineid-rfc3411-hostname-oob-ip.cfg
│           │   │   │   │   │   ├── snmp-autogen-engineid-rfc3411-hostname-oob-ipv6.cfg
│           │   │   │   │   │   ├── snmp-autogen-engineid-rfc3411-hostname-specific-ip.cfg
│           │   │   │   │   │   ├── snmp-autogen-engineid-rfc3411-type3.cfg
│           │   │   │   │   │   ├── snmp-settings-1.cfg
│           │   │   │   │   │   ├── snmp-settings-2.cfg
│           │   │   │   │   │   ├── snmp-system-mac-engineid-1.cfg
│           │   │   │   │   │   ├── snmp-system-mac-engineid-2.cfg
│           │   │   │   │   │   ├── source-interfaces-1.cfg
│           │   │   │   │   │   ├── source-interfaces.cfg
│           │   │   │   │   │   ├── spanning-tree-mode-rapid-pvst.cfg
│           │   │   │   │   │   ├── ssh-settings-1.cfg
│           │   │   │   │   │   ├── ssh-settings-2.cfg
│           │   │   │   │   │   ├── ssh-settings-3.cfg
│           │   │   │   │   │   ├── svi-profile-node-1.cfg
│           │   │   │   │   │   ├── svi-profile-node-2.cfg
│           │   │   │   │   │   ├── tenant-default-vrf-settings.cfg
│           │   │   │   │   │   ├── tenant-default-vrf-with-loopbacks.cfg
│           │   │   │   │   │   ├── test-mgmt-gateway-in-node-group.cfg
│           │   │   │   │   │   ├── trunk-group-tests-l2leaf1a.cfg
│           │   │   │   │   │   ├── trunk-group-tests-l2leaf1b.cfg
│           │   │   │   │   │   ├── trunk-group-tests-l2leaf3.cfg
│           │   │   │   │   │   ├── trunk-group-tests-l2leaf4.cfg
│           │   │   │   │   │   ├── trunk-group-tests-l3leaf1a.cfg
│           │   │   │   │   │   ├── trunk-group-tests-l3leaf1b.cfg
│           │   │   │   │   │   ├── trunk-group-tests-l3leaf2a.cfg
│           │   │   │   │   │   ├── trunk-group-tests-l3leaf2b.cfg
│           │   │   │   │   │   ├── underlay-filter-peer-as-evpn-1.cfg
│           │   │   │   │   │   ├── underlay-filter-peer-as-evpn-2.cfg
│           │   │   │   │   │   ├── underlay-filter-peer-as-evpn-3.cfg
│           │   │   │   │   │   ├── underlay-filter-peer-as-l3leaf1.cfg
│           │   │   │   │   │   ├── underlay-filter-peer-as-spine1.cfg
│           │   │   │   │   │   ├── underlay-filter-peer-as-spine2.cfg
│           │   │   │   │   │   ├── underlay-filter-redistribute-connected-false-svi.cfg
│           │   │   │   │   │   ├── underlay-filter-redistribute-connected-to-bgp-without-route-map.cfg
│           │   │   │   │   │   ├── underlay-multicast-l2leaf1a.cfg
│           │   │   │   │   │   ├── underlay-multicast-l3leaf1a.cfg
│           │   │   │   │   │   ├── underlay-multicast-l3leaf1b.cfg
│           │   │   │   │   │   ├── underlay-multicast-l3leaf2a.cfg
│           │   │   │   │   │   ├── underlay-multicast-l3leaf2b.cfg
│           │   │   │   │   │   ├── underlay-multicast-l3leaf3a.cfg
│           │   │   │   │   │   ├── underlay-multicast-l3leaf3b.cfg
│           │   │   │   │   │   ├── underlay-multicast-leaf1.cfg
│           │   │   │   │   │   ├── underlay-multicast-spine1.cfg
│           │   │   │   │   │   ├── underlay-multicast-spine2.cfg
│           │   │   │   │   │   ├── underlay-ospf-process-id-same-as-ospf-process-id-with-vrf-default.cfg
│           │   │   │   │   │   ├── uplink-lan-l2leaf.cfg
│           │   │   │   │   │   ├── uplink-lan-wan-router1.cfg
│           │   │   │   │   │   ├── uplink-lan-wan-router2.cfg
│           │   │   │   │   │   ├── uplink-mlag-structured-config-l2leaf1a.cfg
│           │   │   │   │   │   ├── uplink-mlag-structured-config-l2leaf1b.cfg
│           │   │   │   │   │   ├── uplink-mlag-structured-config-l3leaf1a.cfg
│           │   │   │   │   │   ├── uplink-mlag-structured-config-l3leaf1b.cfg
│           │   │   │   │   │   ├── uplink-mlag-structured-config-spine1.cfg
│           │   │   │   │   │   ├── uplink-native-vlan-child.cfg
│           │   │   │   │   │   ├── uplink-native-vlan-grandparent.cfg
│           │   │   │   │   │   ├── uplink-native-vlan-parent.cfg
│           │   │   │   │   │   ├── uplink-p2p-vrfs-rfc5549-tests-leaf.cfg
│           │   │   │   │   │   ├── uplink-p2p-vrfs-rfc5549-tests-spine1.cfg
│           │   │   │   │   │   ├── uplink-p2p-vrfs-tests-l2leaf1.cfg
│           │   │   │   │   │   ├── uplink-p2p-vrfs-tests-leaf1.cfg
│           │   │   │   │   │   ├── uplink-p2p-vrfs-tests-leaf2.cfg
│           │   │   │   │   │   ├── uplink-p2p-vrfs-tests-spine1.cfg
│           │   │   │   │   │   ├── uplink-p2p-vrfs-tests-spine2.cfg
│           │   │   │   │   │   ├── validation-profiles.cfg
│           │   │   │   │   │   ├── varpv6.cfg
│           │   │   │   │   │   ├── vrfs-rd-rt-override.cfg
│           │   │   │   │   │   └── vrfs-rt-import-and-export.cfg
│           │   │   │   │   ├── data/
│           │   │   │   │   │   └── EOS_DESIGNS_UNIT_TESTS-ids.yml
│           │   │   │   │   └── structured_configs/
│           │   │   │   │       ├── 7010tx-leaf1.yml
│           │   │   │   │       ├── 7010tx-leaf2.yml
│           │   │   │   │       ├── 7020tx-leaf1.yml
│           │   │   │   │       ├── aaa-settings-1.yml
│           │   │   │   │       ├── aaa-settings-2.yml
│           │   │   │   │       ├── aaa-settings-3.yml
│           │   │   │   │       ├── add-subnets-to-redistribution-in-default-vrf-with-sequence30.yml
│           │   │   │   │       ├── address-locking-2.yml
│           │   │   │   │       ├── address-locking-3.yml
│           │   │   │   │       ├── address-locking-4.yml
│           │   │   │   │       ├── address-locking.yml
│           │   │   │   │       ├── always-configure-ip-routing.yml
│           │   │   │   │       ├── asdot-for-wan-ha-leaf11.yml
│           │   │   │   │       ├── asdot-for-wan-ha-transit1a1.yml
│           │   │   │   │       ├── asdot-for-wan-ha-transit1b1.yml
│           │   │   │   │       ├── auto-bgp-asn-leaf1a.yml
│           │   │   │   │       ├── auto-bgp-asn-leaf1b.yml
│           │   │   │   │       ├── auto-bgp-asn-leaf2.yml
│           │   │   │   │       ├── auto-bgp-asn-leaf3a.yml
│           │   │   │   │       ├── auto-bgp-asn-leaf3b.yml
│           │   │   │   │       ├── auto-bgp-asn-leaf4a.yml
│           │   │   │   │       ├── auto-bgp-asn-leaf4b.yml
│           │   │   │   │       ├── auto-bgp-asn-leaf5a.yml
│           │   │   │   │       ├── auto-bgp-asn-leaf7a.yml
│           │   │   │   │       ├── auto-bgp-asn-leaf7b.yml
│           │   │   │   │       ├── auto-bgp-asn-leaf8a.yml
│           │   │   │   │       ├── auto-bgp-asn-leaf8b.yml
│           │   │   │   │       ├── auto-bgp-ungrouped-leaf6.yml
│           │   │   │   │       ├── auto-node-type-leaf01.yml
│           │   │   │   │       ├── auto-node-type-spine01.yml
│           │   │   │   │       ├── auto-node-type-spine02.yml
│           │   │   │   │       ├── auto-node-type-ungrouped-leaf02.yml
│           │   │   │   │       ├── bgp-cleartext-passwords.yml
│           │   │   │   │       ├── bgp-from-network-services-1.yml
│           │   │   │   │       ├── bgp-from-network-services-11.yml
│           │   │   │   │       ├── bgp-from-network-services-12.yml
│           │   │   │   │       ├── bgp-from-network-services-2.yml
│           │   │   │   │       ├── bgp-from-network-services-21.yml
│           │   │   │   │       ├── bgp-from-network-services-22.yml
│           │   │   │   │       ├── bgp-from-network-services-31.yml
│           │   │   │   │       ├── bgp-from-network-services-32.yml
│           │   │   │   │       ├── bgp-from-network-services-41.yml
│           │   │   │   │       ├── bgp-options.yml
│           │   │   │   │       ├── bgp-peer-groups-1.yml
│           │   │   │   │       ├── bgp-peer-groups-2.yml
│           │   │   │   │       ├── bgp-peer-groups-3.yml
│           │   │   │   │       ├── bgp-peer-groups-4.yml
│           │   │   │   │       ├── bgp-peer-groups-ipv6-1.yml
│           │   │   │   │       ├── bgp-preencrypted-passwords.yml
│           │   │   │   │       ├── connected-endpoints-no-network-services.yml
│           │   │   │   │       ├── connected-endpoints-only-defined-vlans.yml
│           │   │   │   │       ├── connected-endpoints.yml
│           │   │   │   │       ├── core-1-isis-sr-ldp.yml
│           │   │   │   │       ├── core-2-ospf-ldp.yml
│           │   │   │   │       ├── core-3-isis-sr-ldp.yml
│           │   │   │   │       ├── core-4-multicast.yml
│           │   │   │   │       ├── core-5-isis-sr-ldp.yml
│           │   │   │   │       ├── core-6-isis-ldp.yml
│           │   │   │   │       ├── custom-ptp-profile.yml
│           │   │   │   │       ├── custom-python-modules-l3leaf1a.yml
│           │   │   │   │       ├── custom-python-modules-l3leaf1b.yml
│           │   │   │   │       ├── custom-python-modules-l3leaf2.yml
│           │   │   │   │       ├── custom-python-modules-spine1.yml
│           │   │   │   │       ├── custom-structured-configuration.yml
│           │   │   │   │       ├── cv-mlag-ospf-l3leaf1a.yml
│           │   │   │   │       ├── cv-mlag-ospf-l3leaf1b.yml
│           │   │   │   │       ├── cv-pathfinder-custom-control-plane-policy-edge-1.yml
│           │   │   │   │       ├── cv-pathfinder-custom-control-plane-policy-edge-2.yml
│           │   │   │   │       ├── cv-pathfinder-custom-control-plane-policy-edge-3.yml
│           │   │   │   │       ├── cv-pathfinder-custom-control-plane-policy-pathfinder-1.yml
│           │   │   │   │       ├── cv-pathfinder-edge-custom-default-policy.yml
│           │   │   │   │       ├── cv-pathfinder-edge-no-default-policy.yml
│           │   │   │   │       ├── cv-pathfinder-edge-no-ipsec-for-wan-path-group.yml
│           │   │   │   │       ├── cv-pathfinder-edge-wan-gateway-spine-uplink.yml
│           │   │   │   │       ├── cv-pathfinder-edge-wan-use-evpn-on-lan-no-overlay-on-lan.yml
│           │   │   │   │       ├── cv-pathfinder-edge-wan-use-evpn-on-lan.yml
│           │   │   │   │       ├── cv-pathfinder-edge.yml
│           │   │   │   │       ├── cv-pathfinder-edge1.yml
│           │   │   │   │       ├── cv-pathfinder-edge2a.yml
│           │   │   │   │       ├── cv-pathfinder-edge2b.yml
│           │   │   │   │       ├── cv-pathfinder-edge3a.yml
│           │   │   │   │       ├── cv-pathfinder-edge3b.yml
│           │   │   │   │       ├── cv-pathfinder-edge4a.yml
│           │   │   │   │       ├── cv-pathfinder-edge4b.yml
│           │   │   │   │       ├── cv-pathfinder-metadata-with-no-default-vrf-in-wan-virtual-topologies.yml
│           │   │   │   │       ├── cv-pathfinder-pathfinder.yml
│           │   │   │   │       ├── cv-pathfinder-pathfinder1.yml
│           │   │   │   │       ├── cv-pathfinder-pathfinder2.yml
│           │   │   │   │       ├── cv-pathfinder-spine1.yml
│           │   │   │   │       ├── cv-pathfinder-transit1a.yml
│           │   │   │   │       ├── cv-pathfinder-transit1b.yml
│           │   │   │   │       ├── cv-settings.yml
│           │   │   │   │       ├── cv-topology-leaf3a.yml
│           │   │   │   │       ├── cv-topology-leaf3b.yml
│           │   │   │   │       ├── dc1-bl1a.yml
│           │   │   │   │       ├── dc1-bl1b.yml
│           │   │   │   │       ├── dc1-bl2a.yml
│           │   │   │   │       ├── dc1-bl2b.yml
│           │   │   │   │       ├── dc1-cl1a.yml
│           │   │   │   │       ├── dc1-cl1b.yml
│           │   │   │   │       ├── dc1-l2leaf1a.yml
│           │   │   │   │       ├── dc1-l2leaf1b.yml
│           │   │   │   │       ├── dc1-l2leaf2a.yml
│           │   │   │   │       ├── dc1-l2leaf2b.yml
│           │   │   │   │       ├── dc1-l2leaf3a.yml
│           │   │   │   │       ├── dc1-l2leaf4a.yml
│           │   │   │   │       ├── dc1-leaf1a.yml
│           │   │   │   │       ├── dc1-leaf2a.yml
│           │   │   │   │       ├── dc1-leaf2b.yml
│           │   │   │   │       ├── dc1-spine1.yml
│           │   │   │   │       ├── dc1-spine2.yml
│           │   │   │   │       ├── dc1-spine3.yml
│           │   │   │   │       ├── dc1-spine4.yml
│           │   │   │   │       ├── dc1-svc3a.yml
│           │   │   │   │       ├── dc1-svc3b.yml
│           │   │   │   │       ├── dc1-undeployed-leaf1a.yml
│           │   │   │   │       ├── dc1-undeployed-leaf1b.yml
│           │   │   │   │       ├── dc1.l2leaf5a.yml
│           │   │   │   │       ├── dc1.l2leaf5b.yml
│           │   │   │   │       ├── dc1.l2leaf6a.yml
│           │   │   │   │       ├── dc1.l2leaf6b.yml
│           │   │   │   │       ├── dc1.l2leaf7a.yml
│           │   │   │   │       ├── default-interface-mtu-hostvars.yml
│           │   │   │   │       ├── default-interface-mtu-platform.yml
│           │   │   │   │       ├── default-overlay-protocol-cvx.yml
│           │   │   │   │       ├── default-overlay-protocol-her.yml
│           │   │   │   │       ├── device.with.dots.in.hostname.yml
│           │   │   │   │       ├── devices-l2leaf1.yml
│           │   │   │   │       ├── devices-leaf1a.yml
│           │   │   │   │       ├── devices-leaf1b.yml
│           │   │   │   │       ├── devices-leaf2a.yml
│           │   │   │   │       ├── devices-leaf2b.yml
│           │   │   │   │       ├── dhcp-relay-option-82-non-vtep.yml
│           │   │   │   │       ├── dhcp-relay-option-82.yml
│           │   │   │   │       ├── dhcp-relay-vtep-mlag-1.yml
│           │   │   │   │       ├── dhcp-relay-vtep-mlag-2.yml
│           │   │   │   │       ├── dhcp-relay-vtep-mlag-link-only-1.yml
│           │   │   │   │       ├── dhcp-relay-vtep-mlag-link-only-2.yml
│           │   │   │   │       ├── dhcp-relay-vtep.yml
│           │   │   │   │       ├── dns-settings-1.yml
│           │   │   │   │       ├── dns-settings-2.yml
│           │   │   │   │       ├── dns-settings-3.yml
│           │   │   │   │       ├── dot1x-settings-1.yml
│           │   │   │   │       ├── dot1x-settings-2.yml
│           │   │   │   │       ├── dot1x-settings-3.yml
│           │   │   │   │       ├── dot1x-settings-4.yml
│           │   │   │   │       ├── downlink-pools-l3leaf1.yml
│           │   │   │   │       ├── downlink-pools-l3leaf2.yml
│           │   │   │   │       ├── downlink-pools-l3leaf3.yml
│           │   │   │   │       ├── downlink-pools-l3leaf4.yml
│           │   │   │   │       ├── downlink-pools-spine1.yml
│           │   │   │   │       ├── downlink-pools-spine2.yml
│           │   │   │   │       ├── dup-leaf1.yml
│           │   │   │   │       ├── dup-leaf2.yml
│           │   │   │   │       ├── duplicate-vrfs.yml
│           │   │   │   │       ├── ebgp-overlay-address-families-vpn-ipv4.yml
│           │   │   │   │       ├── eos-cli.yml
│           │   │   │   │       ├── evpn-gateway-all-active-mh-gw-enabled-d-path-false.yml
│           │   │   │   │       ├── evpn-gateway-all-active-mh-gw.yml
│           │   │   │   │       ├── evpn-gateway-l2-evpn-role-server.yml
│           │   │   │   │       ├── evpn-gateway-l2-l3-disabled.yml
│           │   │   │   │       ├── evpn-gateway-l3-rd-rt-rewrite.yml
│           │   │   │   │       ├── evpn-l2-multi-domain.yml
│           │   │   │   │       ├── evpn-multicast-disabled.yml
│           │   │   │   │       ├── evpn-multicast-l2leaf1a.yml
│           │   │   │   │       ├── evpn-multicast-l3leaf1a.yml
│           │   │   │   │       ├── evpn-multicast-l3leaf1b.yml
│           │   │   │   │       ├── evpn-multicast-l3leaf2a.yml
│           │   │   │   │       ├── evpn-multicast-l3leaf3a.yml
│           │   │   │   │       ├── evpn-multicast-l3leaf3b.yml
│           │   │   │   │       ├── evpn-multicast-spine1.yml
│           │   │   │   │       ├── evpn-overlay-mpls-route-reflectors-ibgp.yml
│           │   │   │   │       ├── evpn-overlay-mpls-route-reflectors2-ibgp.yml
│           │   │   │   │       ├── evpn-overlay-mpls-route-reflectors3-ibgp.yml
│           │   │   │   │       ├── evpn-prevent-readvertise-to-server-1.yml
│           │   │   │   │       ├── evpn-prevent-readvertise-to-server-2.yml
│           │   │   │   │       ├── evpn-prevent-readvertise-to-server-3.yml
│           │   │   │   │       ├── evpn-prevent-readvertise-to-server-4.yml
│           │   │   │   │       ├── evpn-prevent-readvertise-to-server-5.yml
│           │   │   │   │       ├── evpn-prevent-readvertise-to-server-6.yml
│           │   │   │   │       ├── evpn-prevent-readvertise-to-server-8.yml
│           │   │   │   │       ├── evpn-role-server-overlay-vxlan-ibgp.yml
│           │   │   │   │       ├── evpn-services-l2-only-false.yml
│           │   │   │   │       ├── evpn-services-l2-only-true.yml
│           │   │   │   │       ├── evpn-to-ipvpn-gateway.yml
│           │   │   │   │       ├── evpn-vlan-bundle-svi-l2vlan.yml
│           │   │   │   │       ├── evpn-vlan-bundle.yml
│           │   │   │   │       ├── evpn-vtep-with-default-vrf-not-evpn.yml
│           │   │   │   │       ├── exclude-as-extra-fabric-validation-target.yml
│           │   │   │   │       ├── fabric-numbering-node-id.yml
│           │   │   │   │       ├── filter.only-vlans-in-use.yml
│           │   │   │   │       ├── filter.vrfs.yml
│           │   │   │   │       ├── flow-tracking-tests-l2-leaf1.yml
│           │   │   │   │       ├── flow-tracking-tests-l2-leaf2.yml
│           │   │   │   │       ├── flow-tracking-tests-l2-leaf3.yml
│           │   │   │   │       ├── flow-tracking-tests-l2-leaf4.yml
│           │   │   │   │       ├── flow-tracking-tests-leaf1.yml
│           │   │   │   │       ├── flow-tracking-tests-leaf2.yml
│           │   │   │   │       ├── flow-tracking-tests-leaf3.yml
│           │   │   │   │       ├── flow-tracking-tests-leaf4.yml
│           │   │   │   │       ├── flow-tracking-tests-spine1.yml
│           │   │   │   │       ├── flow-tracking-tests-spine2.yml
│           │   │   │   │       ├── general-settings.yml
│           │   │   │   │       ├── generate-cv-tags-1.yml
│           │   │   │   │       ├── generate-cv-tags-2.yml
│           │   │   │   │       ├── hardware-counters.yml
│           │   │   │   │       ├── hardware-feature-sflow-subinterface-1.yml
│           │   │   │   │       ├── hardware-features-720xp.yml
│           │   │   │   │       ├── hardware-features-7280r.yml
│           │   │   │   │       ├── hardware-features-ceos-lab.yml
│           │   │   │   │       ├── hardware-features-cloudeos-2.yml
│           │   │   │   │       ├── hardware-features-cloudeos.yml
│           │   │   │   │       ├── hardware-features-custom-platform.yml
│           │   │   │   │       ├── hardware-features-veos-lab.yml
│           │   │   │   │       ├── igmp-querier-l2leaf1a.yml
│           │   │   │   │       ├── igmp-querier-l3leaf1a.yml
│           │   │   │   │       ├── ignore-custom-keys-in-data-models.yml
│           │   │   │   │       ├── inband-mgmt-dualstack-ips.yml
│           │   │   │   │       ├── inband-mgmt-dualstack-subnets.yml
│           │   │   │   │       ├── inband-mgmt-ip.yml
│           │   │   │   │       ├── inband-mgmt-ipv6-only-vrf.yml
│           │   │   │   │       ├── inband-mgmt-ipv6-only.yml
│           │   │   │   │       ├── inband-mgmt-ipv6-with-address.yml
│           │   │   │   │       ├── inband-mgmt-mlag-a.yml
│           │   │   │   │       ├── inband-mgmt-mlag-b.yml
│           │   │   │   │       ├── inband-mgmt-parent-dualstack1.yml
│           │   │   │   │       ├── inband-mgmt-parent-dualstack2.yml
│           │   │   │   │       ├── inband-mgmt-parent-ipv6-1.yml
│           │   │   │   │       ├── inband-mgmt-parent-ipv6-2.yml
│           │   │   │   │       ├── inband-mgmt-parent-ipv6-3.yml
│           │   │   │   │       ├── inband-mgmt-parent-vrf.yml
│           │   │   │   │       ├── inband-mgmt-parent.yml
│           │   │   │   │       ├── inband-mgmt-per-interface-mtu-false.yml
│           │   │   │   │       ├── inband-mgmt-spine1-ztp.yml
│           │   │   │   │       ├── inband-mgmt-spine2-ztp.yml
│           │   │   │   │       ├── inband-mgmt-subnet-vrf.yml
│           │   │   │   │       ├── inband-mgmt-subnet.yml
│           │   │   │   │       ├── inband-ztp-without-ntp-leaf.yml
│           │   │   │   │       ├── inband-ztp-without-ntp-spine.yml
│           │   │   │   │       ├── ipv4-acls.yml
│           │   │   │   │       ├── ipv6-downlink-pools-leaf1a.yml
│           │   │   │   │       ├── ipv6-downlink-pools-spine.yml
│           │   │   │   │       ├── ipv6-numbered-leaf1a.yml
│           │   │   │   │       ├── ipv6-numbered-leaf1b.yml
│           │   │   │   │       ├── ipv6-numbered-leaf2a.yml
│           │   │   │   │       ├── ipv6-numbered-spine1.yml
│           │   │   │   │       ├── ipv6-numbered-spine2.yml
│           │   │   │   │       ├── ipv6-numbered-vtep-loopback0-leaf1a.yml
│           │   │   │   │       ├── ipv6-numbered-vtep-loopback0-leaf1b.yml
│           │   │   │   │       ├── ipv6-numbered-vtep-loopback0-spine.yml
│           │   │   │   │       ├── isis-cleartext-keys-leaf1.yml
│           │   │   │   │       ├── isis-cleartext-keys-leaf2.yml
│           │   │   │   │       ├── isis-system-id-format-using-node-id.yml
│           │   │   │   │       ├── isis-system-id-format-using-underlay-loopback.yml
│           │   │   │   │       ├── l2vlan-profiles.yml
│           │   │   │   │       ├── l3-edge-bgp.yml
│           │   │   │   │       ├── l3-edge-isis.yml
│           │   │   │   │       ├── l3-edge-multicast.yml
│           │   │   │   │       ├── l3-edge-ospf-auth.yml
│           │   │   │   │       ├── l3-edge-ospf.yml
│           │   │   │   │       ├── l3-edge-rfc5549.yml
│           │   │   │   │       ├── leaf-wan-use-evpn-on-lan.yml
│           │   │   │   │       ├── leaf1-dot1x-evpn-redistribution-enabled-vlan-aware-bundles.yml
│           │   │   │   │       ├── leaf1-dot1x-evpn-redistribution-enabled.yml
│           │   │   │   │       ├── leaf2-dot1x-evpn-redistribution-disabled-vlan-aware-bundles.yml
│           │   │   │   │       ├── leaf2-dot1x-evpn-redistribution-disabled.yml
│           │   │   │   │       ├── legacy-autovpn-cv-interface-tags-test.yml
│           │   │   │   │       ├── legacy-autovpn-edge-no-default-policy.yml
│           │   │   │   │       ├── legacy-autovpn-edge.yml
│           │   │   │   │       ├── legacy-autovpn-empty-load-balance-policy.yml
│           │   │   │   │       ├── legacy-autovpn-rr1.yml
│           │   │   │   │       ├── legacy-autovpn-rr2.yml
│           │   │   │   │       ├── logging-settings-local-interface.yml
│           │   │   │   │       ├── logging-settings.yml
│           │   │   │   │       ├── management-eapi-vrfs-2.yml
│           │   │   │   │       ├── management-eapi-vrfs-3.yml
│           │   │   │   │       ├── management-eapi-vrfs.yml
│           │   │   │   │       ├── management-settings-console.yml
│           │   │   │   │       ├── management-settings-login-banner.yml
│           │   │   │   │       ├── management-settings-motd-banner.yml
│           │   │   │   │       ├── management-settings.yml
│           │   │   │   │       ├── mgmt-interface-default.yml
│           │   │   │   │       ├── mgmt-interface-description.yml
│           │   │   │   │       ├── mgmt-interface-dhcp-with-accept-default-route-false.yml
│           │   │   │   │       ├── mgmt-interface-dhcp.yml
│           │   │   │   │       ├── mgmt-interface-dualstack.yml
│           │   │   │   │       ├── mgmt-interface-fabric.yml
│           │   │   │   │       ├── mgmt-interface-host.yml
│           │   │   │   │       ├── mgmt-interface-ipv6.yml
│           │   │   │   │       ├── mgmt-interface-platform.yml
│           │   │   │   │       ├── mgmt-interface-settings-1.yml
│           │   │   │   │       ├── mgmt-interface-settings-2.yml
│           │   │   │   │       ├── mh-l2leaf1a.yml
│           │   │   │   │       ├── mh-leaf1a.yml
│           │   │   │   │       ├── mh-leaf1b.yml
│           │   │   │   │       ├── mh-leaf2a.yml
│           │   │   │   │       ├── mlag-bgp-different-as-notation-1.yml
│           │   │   │   │       ├── mlag-bgp-different-as-notation-2.yml
│           │   │   │   │       ├── mlag-ipv6-l3leaf1a.yml
│           │   │   │   │       ├── mlag-ipv6-l3leaf1b.yml
│           │   │   │   │       ├── mlag-isis-l3leaf1a.yml
│           │   │   │   │       ├── mlag-isis-l3leaf1b.yml
│           │   │   │   │       ├── mlag-isis-spine.yml
│           │   │   │   │       ├── mlag-odd-id-l3leaf1a.yml
│           │   │   │   │       ├── mlag-odd-id-l3leaf1b.yml
│           │   │   │   │       ├── mlag-ospf-l3leaf1a.yml
│           │   │   │   │       ├── mlag-ospf-l3leaf1b.yml
│           │   │   │   │       ├── mlag-same-subnet-l3leaf1a.yml
│           │   │   │   │       ├── mlag-same-subnet-l3leaf1b.yml
│           │   │   │   │       ├── mlag-same-subnet-l3leaf2a.yml
│           │   │   │   │       ├── mlag-same-subnet-l3leaf2b.yml
│           │   │   │   │       ├── monitor-combined-settings.yml
│           │   │   │   │       ├── monitor-connectivity-settings.yml
│           │   │   │   │       ├── monitor-layer1-minimal.yml
│           │   │   │   │       ├── monitor-layer1-settings.yml
│           │   │   │   │       ├── network-ports-tests-2.yml
│           │   │   │   │       ├── network-ports-tests.1.yml
│           │   │   │   │       ├── network-services-arp-static-entries.yml
│           │   │   │   │       ├── network-services-l2vlan-private-vlan.yml
│           │   │   │   │       ├── network-services-l3-port-channels.yml
│           │   │   │   │       ├── network-services-point-to-point.yml
│           │   │   │   │       ├── network-services-static-routes.yml
│           │   │   │   │       ├── no-mgmt-gateway.yml
│           │   │   │   │       ├── no-mgmt-interface.yml
│           │   │   │   │       ├── node-type-l3-interfaces-bgp.yml
│           │   │   │   │       ├── node-type-l3-interfaces.yml
│           │   │   │   │       ├── node-type-l3-port-channels-subinterfaces.yml
│           │   │   │   │       ├── node-type-l3-port-channels.yml
│           │   │   │   │       ├── ntp-settings-1.yml
│           │   │   │   │       ├── ntp-settings-2.yml
│           │   │   │   │       ├── only-connected-endpoints.yml
│           │   │   │   │       ├── ospf-cleartext-passwords.yml
│           │   │   │   │       ├── ospf-preencrypted-passwords.yml
│           │   │   │   │       ├── overlay-routing-protocol-cvx-l3leaf1.yml
│           │   │   │   │       ├── overlay-routing-protocol-cvx-l3leaf2.yml
│           │   │   │   │       ├── overlay-routing-protocol-cvx-server1.yml
│           │   │   │   │       ├── overlay-routing-protocol-cvx-server2.yml
│           │   │   │   │       ├── overlay-routing-protocol-cvx-server3.yml
│           │   │   │   │       ├── overlay-routing-protocol-her-l3leaf1.yml
│           │   │   │   │       ├── overlay-routing-protocol-her-l3leaf2.yml
│           │   │   │   │       ├── overlay-routing-protocol-her-l3leaf3a.yml
│           │   │   │   │       ├── overlay-routing-protocol-her-l3leaf3b.yml
│           │   │   │   │       ├── overlay-routing-protocol-her-l3leaf4.yml
│           │   │   │   │       ├── override-uplink-type-d.yml
│           │   │   │   │       ├── override-uplink-type-u.yml
│           │   │   │   │       ├── override-vtep-l3leaf1a.yml
│           │   │   │   │       ├── override-vtep-l3leaf1b.yml
│           │   │   │   │       ├── p2p-uplinks-ipv4-prefix-length.yml
│           │   │   │   │       ├── platform-7358x4.yml
│           │   │   │   │       ├── platform-settings.yml
│           │   │   │   │       ├── ptp-tests-l2leaf1-ptp-disabled.yml
│           │   │   │   │       ├── ptp-tests-l2leaf2-ptp-enabled-uplink-disabled.yml
│           │   │   │   │       ├── ptp-tests-l2leaf2-ptp-enabled.yml
│           │   │   │   │       ├── ptp-tests-leaf1.yml
│           │   │   │   │       ├── ptp-tests-leaf2.yml
│           │   │   │   │       ├── ptp-tests-leaf3.yml
│           │   │   │   │       ├── ptp-tests-leaf4.yml
│           │   │   │   │       ├── ptp-tests-leaf5.yml
│           │   │   │   │       ├── ptp-tests-leaf6.yml
│           │   │   │   │       ├── ptp-tests-spine1.yml
│           │   │   │   │       ├── ptp-tests-spine2.yml
│           │   │   │   │       ├── ptp-tests-spine3.yml
│           │   │   │   │       ├── rd-rt-admin-subfield-l3leaf1.yml
│           │   │   │   │       ├── rd-rt-admin-subfield-l3leaf10.yml
│           │   │   │   │       ├── rd-rt-admin-subfield-l3leaf2.yml
│           │   │   │   │       ├── rd-rt-admin-subfield-l3leaf3.yml
│           │   │   │   │       ├── rd-rt-admin-subfield-l3leaf4.yml
│           │   │   │   │       ├── rd-rt-admin-subfield-l3leaf5.yml
│           │   │   │   │       ├── rd-rt-admin-subfield-l3leaf6.yml
│           │   │   │   │       ├── rd-rt-admin-subfield-l3leaf7.yml
│           │   │   │   │       ├── rd-rt-admin-subfield-l3leaf9.yml
│           │   │   │   │       ├── relaxed-structured-config-validation.yml
│           │   │   │   │       ├── sfe-interface-profile-options.yml
│           │   │   │   │       ├── sflow-settings-1.yml
│           │   │   │   │       ├── sflow-settings-2.yml
│           │   │   │   │       ├── sflow-tests-l2-leaf1.yml
│           │   │   │   │       ├── sflow-tests-l2-leaf2.yml
│           │   │   │   │       ├── sflow-tests-leaf1.yml
│           │   │   │   │       ├── sflow-tests-leaf2.yml
│           │   │   │   │       ├── sflow-tests-leaf3.yml
│           │   │   │   │       ├── sflow-tests-leaf4.yml
│           │   │   │   │       ├── sflow-tests-spine1.yml
│           │   │   │   │       ├── sflow-tests-spine2.yml
│           │   │   │   │       ├── site-ha-disabled-leaf.yml
│           │   │   │   │       ├── site-ha-enabled-leaf1.yml
│           │   │   │   │       ├── site-ha-enabled-leaf2a.yml
│           │   │   │   │       ├── site-ha-enabled-leaf2b.yml
│           │   │   │   │       ├── sl-leaf0a.yml
│           │   │   │   │       ├── sl-leaf0b.yml
│           │   │   │   │       ├── sl-leaf1a.yml
│           │   │   │   │       ├── sl-leaf1b.yml
│           │   │   │   │       ├── sl-leaf2a.yml
│           │   │   │   │       ├── sl-leaf2b.yml
│           │   │   │   │       ├── sl-mleaf1.yml
│           │   │   │   │       ├── snmp-autogen-engineid-hostname-and-ip-inband.yml
│           │   │   │   │       ├── snmp-autogen-engineid-hostname-ip-dhcp.yml
│           │   │   │   │       ├── snmp-autogen-engineid-hostname-ip-oob.yml
│           │   │   │   │       ├── snmp-autogen-engineid-rfc3411-hostname-default-mgmt-inband.yml
│           │   │   │   │       ├── snmp-autogen-engineid-rfc3411-hostname-default-mgmt-oob.yml
│           │   │   │   │       ├── snmp-autogen-engineid-rfc3411-hostname-dhcp.yml
│           │   │   │   │       ├── snmp-autogen-engineid-rfc3411-hostname-inband-ip.yml
│           │   │   │   │       ├── snmp-autogen-engineid-rfc3411-hostname-oob-ip.yml
│           │   │   │   │       ├── snmp-autogen-engineid-rfc3411-hostname-oob-ipv6.yml
│           │   │   │   │       ├── snmp-autogen-engineid-rfc3411-hostname-specific-ip.yml
│           │   │   │   │       ├── snmp-autogen-engineid-rfc3411-type3.yml
│           │   │   │   │       ├── snmp-settings-1.yml
│           │   │   │   │       ├── snmp-settings-2.yml
│           │   │   │   │       ├── snmp-system-mac-engineid-1.yml
│           │   │   │   │       ├── snmp-system-mac-engineid-2.yml
│           │   │   │   │       ├── source-interfaces-1.yml
│           │   │   │   │       ├── source-interfaces.yml
│           │   │   │   │       ├── spanning-tree-mode-rapid-pvst.yml
│           │   │   │   │       ├── ssh-settings-1.yml
│           │   │   │   │       ├── ssh-settings-2.yml
│           │   │   │   │       ├── ssh-settings-3.yml
│           │   │   │   │       ├── svi-profile-node-1.yml
│           │   │   │   │       ├── svi-profile-node-2.yml
│           │   │   │   │       ├── tenant-default-vrf-settings.yml
│           │   │   │   │       ├── tenant-default-vrf-with-loopbacks.yml
│           │   │   │   │       ├── test-mgmt-gateway-in-node-group.yml
│           │   │   │   │       ├── trunk-group-tests-l2leaf1a.yml
│           │   │   │   │       ├── trunk-group-tests-l2leaf1b.yml
│           │   │   │   │       ├── trunk-group-tests-l2leaf3.yml
│           │   │   │   │       ├── trunk-group-tests-l2leaf4.yml
│           │   │   │   │       ├── trunk-group-tests-l3leaf1a.yml
│           │   │   │   │       ├── trunk-group-tests-l3leaf1b.yml
│           │   │   │   │       ├── trunk-group-tests-l3leaf2a.yml
│           │   │   │   │       ├── trunk-group-tests-l3leaf2b.yml
│           │   │   │   │       ├── underlay-filter-peer-as-evpn-1.yml
│           │   │   │   │       ├── underlay-filter-peer-as-evpn-2.yml
│           │   │   │   │       ├── underlay-filter-peer-as-evpn-3.yml
│           │   │   │   │       ├── underlay-filter-peer-as-l3leaf1.yml
│           │   │   │   │       ├── underlay-filter-peer-as-spine1.yml
│           │   │   │   │       ├── underlay-filter-peer-as-spine2.yml
│           │   │   │   │       ├── underlay-filter-redistribute-connected-false-svi.yml
│           │   │   │   │       ├── underlay-filter-redistribute-connected-to-bgp-without-route-map.yml
│           │   │   │   │       ├── underlay-multicast-l2leaf1a.yml
│           │   │   │   │       ├── underlay-multicast-l3leaf1a.yml
│           │   │   │   │       ├── underlay-multicast-l3leaf1b.yml
│           │   │   │   │       ├── underlay-multicast-l3leaf2a.yml
│           │   │   │   │       ├── underlay-multicast-l3leaf2b.yml
│           │   │   │   │       ├── underlay-multicast-l3leaf3a.yml
│           │   │   │   │       ├── underlay-multicast-l3leaf3b.yml
│           │   │   │   │       ├── underlay-multicast-leaf1.yml
│           │   │   │   │       ├── underlay-multicast-spine1.yml
│           │   │   │   │       ├── underlay-multicast-spine2.yml
│           │   │   │   │       ├── underlay-ospf-process-id-same-as-ospf-process-id-with-vrf-default.yml
│           │   │   │   │       ├── uplink-lan-l2leaf.yml
│           │   │   │   │       ├── uplink-lan-wan-router1.yml
│           │   │   │   │       ├── uplink-lan-wan-router2.yml
│           │   │   │   │       ├── uplink-mlag-structured-config-l2leaf1a.yml
│           │   │   │   │       ├── uplink-mlag-structured-config-l2leaf1b.yml
│           │   │   │   │       ├── uplink-mlag-structured-config-l3leaf1a.yml
│           │   │   │   │       ├── uplink-mlag-structured-config-l3leaf1b.yml
│           │   │   │   │       ├── uplink-mlag-structured-config-spine1.yml
│           │   │   │   │       ├── uplink-native-vlan-child.yml
│           │   │   │   │       ├── uplink-native-vlan-grandparent.yml
│           │   │   │   │       ├── uplink-native-vlan-parent.yml
│           │   │   │   │       ├── uplink-p2p-vrfs-rfc5549-tests-leaf.yml
│           │   │   │   │       ├── uplink-p2p-vrfs-rfc5549-tests-spine1.yml
│           │   │   │   │       ├── uplink-p2p-vrfs-tests-l2leaf1.yml
│           │   │   │   │       ├── uplink-p2p-vrfs-tests-leaf1.yml
│           │   │   │   │       ├── uplink-p2p-vrfs-tests-leaf2.yml
│           │   │   │   │       ├── uplink-p2p-vrfs-tests-spine1.yml
│           │   │   │   │       ├── uplink-p2p-vrfs-tests-spine2.yml
│           │   │   │   │       ├── validation-profiles.yml
│           │   │   │   │       ├── varpv6.yml
│           │   │   │   │       ├── vrfs-rd-rt-override.yml
│           │   │   │   │       └── vrfs-rt-import-and-export.yml
│           │   │   │   ├── inventory/
│           │   │   │   │   ├── group_vars/
│           │   │   │   │   │   ├── ASDOT_FOR_WAN_HA.yml
│           │   │   │   │   │   ├── AUTO_BGP_ASN.yml
│           │   │   │   │   │   ├── AUTO_NODE_TYPE.yml
│           │   │   │   │   │   ├── AVD_LAB.yml
│           │   │   │   │   │   ├── BGP_FROM_NETWORK_SERVICES.yml
│           │   │   │   │   │   ├── BGP_FROM_NETWORK_SERVICES_GROUP4.yml
│           │   │   │   │   │   ├── BGP_PASSWORD_ENCRYPTION.yml
│           │   │   │   │   │   ├── BGP_PEER_GROUPS.yml
│           │   │   │   │   │   ├── CORE_UNIT_TESTS.yml
│           │   │   │   │   │   ├── CUSTOM_PYTHON_MODULES_L3LEAFS.yml
│           │   │   │   │   │   ├── CUSTOM_PYTHON_MODULES_SPINES.yml
│           │   │   │   │   │   ├── CUSTOM_PYTHON_MODULES_TESTS.yml
│           │   │   │   │   │   ├── CV_PATHFINDER_CUSTOM_CONTROL_PLANE_POLICY_TESTS.yml
│           │   │   │   │   │   ├── CV_PATHFINDER_MULTI_RR_TESTS.yml
│           │   │   │   │   │   ├── CV_PATHFINDER_TESTS.yml
│           │   │   │   │   │   ├── CV_TOPOLOGY.yml
│           │   │   │   │   │   ├── DC1_BL1.yml
│           │   │   │   │   │   ├── DC1_FABRIC.yml
│           │   │   │   │   │   ├── DC1_L2LEAFS.yml
│           │   │   │   │   │   ├── DC1_LEAF1.yml
│           │   │   │   │   │   ├── DC1_LEAF2.yml
│           │   │   │   │   │   ├── DC1_LEAFS.yml
│           │   │   │   │   │   ├── DC1_SERVERS.yml
│           │   │   │   │   │   ├── DC1_SPINES.yml
│           │   │   │   │   │   ├── DC1_SVC3.yml
│           │   │   │   │   │   ├── DC1_TENANTS_NETWORKS/
│           │   │   │   │   │   │   ├── Tenant_A.yml
│           │   │   │   │   │   │   ├── Tenant_B.yml
│           │   │   │   │   │   │   ├── Tenant_C.yml
│           │   │   │   │   │   │   ├── Tenant_D.yml
│           │   │   │   │   │   │   └── main.yml
│           │   │   │   │   │   ├── DEVICES_TESTS.yml
│           │   │   │   │   │   ├── DHCP_RELAY.yml
│           │   │   │   │   │   ├── DHCP_RELAY_1.yml
│           │   │   │   │   │   ├── DOT1X_EVPN_REDISTRIBUTION_TESTS.yml
│           │   │   │   │   │   ├── DOWNLINK_POOLS_TESTS.yml
│           │   │   │   │   │   ├── DUPLICATE_SVIS_L2VLANS.yml
│           │   │   │   │   │   ├── EOS_DESIGNS_UNIT_TESTS.yml
│           │   │   │   │   │   ├── EVPN_MULTICAST_L3LEAF1.yml
│           │   │   │   │   │   ├── EVPN_MULTICAST_TESTS.yml
│           │   │   │   │   │   ├── EVPN_MULTICAST_TESTS_L2LEAFS.yml
│           │   │   │   │   │   ├── EVPN_MULTICAST_TESTS_L3LEAFS.yml
│           │   │   │   │   │   ├── EVPN_MULTICAST_TESTS_SPINES.yml
│           │   │   │   │   │   ├── EVPN_PREVENT_READVERTISE_TO_SERVER.yml
│           │   │   │   │   │   ├── FABRIC_IP_ADDRESSING.yml
│           │   │   │   │   │   ├── FLOW_TRACKING_TESTS.yml
│           │   │   │   │   │   ├── FLOW_TRACKING_TESTS_L2_LEAFS.yml
│           │   │   │   │   │   ├── FLOW_TRACKING_TESTS_LEAFS.yml
│           │   │   │   │   │   ├── FLOW_TRACKING_TESTS_LEAFS_2.yml
│           │   │   │   │   │   ├── FLOW_TRACKING_TESTS_LEAFS_3.yml
│           │   │   │   │   │   ├── FLOW_TRACKING_TESTS_SPINES.yml
│           │   │   │   │   │   ├── FLOW_TRACKING_TESTS_SPINES_1.yml
│           │   │   │   │   │   ├── FLOW_TRACKING_TESTS_SPINES_2.yml
│           │   │   │   │   │   ├── HARDWARE_FEATURES_ON_VIRTUAL_PLATFORMS.yml
│           │   │   │   │   │   ├── IGMP_QUERIER_L2LEAFS.yml
│           │   │   │   │   │   ├── IGMP_QUERIER_L3LEAFS.yml
│           │   │   │   │   │   ├── IGMP_QUERIER_TESTS.yml
│           │   │   │   │   │   ├── INBAND_MGMT_TESTS.yml
│           │   │   │   │   │   ├── INBAND_MGMT_TESTS_DEVICES_WITH_OOB_MGMT.yml
│           │   │   │   │   │   ├── INBAND_ZTP_WITHOUT_NTP.yml
│           │   │   │   │   │   ├── IPV6_DOWNLINK_POOLS.yml
│           │   │   │   │   │   ├── IPV6_NUMBERED_LEAFS.yml
│           │   │   │   │   │   ├── IPV6_NUMBERED_SPINES.yml
│           │   │   │   │   │   ├── IPV6_NUMBERED_VTEP_LOOPBACK0.yml
│           │   │   │   │   │   ├── ISIS_CLEARTEXT_KEYS_TESTS.yml
│           │   │   │   │   │   ├── LEGACY_AUTOVPN_TESTS.yml
│           │   │   │   │   │   ├── MGMT_GATEWAY_TESTS.yml
│           │   │   │   │   │   ├── MH_L2LEAFS_TESTS.yml
│           │   │   │   │   │   ├── MH_LEAFS_TESTS.yml
│           │   │   │   │   │   ├── MH_SERVERS.yml
│           │   │   │   │   │   ├── MH_TENANT_NETWORKS.yml
│           │   │   │   │   │   ├── MLAG_BGP_DIFFERENT_AS_NOTATION.yml
│           │   │   │   │   │   ├── MLAG_IPV6.yml
│           │   │   │   │   │   ├── MLAG_ISIS_TESTS.yml
│           │   │   │   │   │   ├── MLAG_ODD_ID.yml
│           │   │   │   │   │   ├── MLAG_OSPF_TESTS.yml
│           │   │   │   │   │   ├── MLAG_SAME_SUBNET.yml
│           │   │   │   │   │   ├── NETWORK_PORTS_TESTS.yml
│           │   │   │   │   │   ├── OVERLAY_EBGP_EVPN_GATEWAY_TESTS.yml
│           │   │   │   │   │   ├── OVERLAY_IBGP_EVPN_TESTS.yml
│           │   │   │   │   │   ├── OVERLAY_ROUTING_PROTOCOL_CVX_TESTS.yml
│           │   │   │   │   │   ├── OVERLAY_ROUTING_PROTOCOL_HER_TESTS.yml
│           │   │   │   │   │   ├── OVERRIDE_UPLINK_TYPE.yml
│           │   │   │   │   │   ├── OVERRIDE_VTEP_LEAFS.yml
│           │   │   │   │   │   ├── PLATFORM_SETTINGS_TESTS.yml
│           │   │   │   │   │   ├── PTP_TESTS.yml
│           │   │   │   │   │   ├── PTP_TESTS_L2LEAFS.yml
│           │   │   │   │   │   ├── PTP_TESTS_LEAFS.yml
│           │   │   │   │   │   ├── PTP_TESTS_SPINES.yml
│           │   │   │   │   │   ├── PTP_TESTS_UPLINKS.yml
│           │   │   │   │   │   ├── RD_RT_ADMIN_SUBFIELD_TESTS.yml
│           │   │   │   │   │   ├── SFLOW_TESTS.yml
│           │   │   │   │   │   ├── SFLOW_TESTS_L2_LEAFS.yml
│           │   │   │   │   │   ├── SFLOW_TESTS_LEAFS.yml
│           │   │   │   │   │   ├── SFLOW_TESTS_SPINES.yml
│           │   │   │   │   │   ├── SINGLE_LINK_TO_MLAG_PAIR.yml
│           │   │   │   │   │   ├── SITE_EVPN.yml
│           │   │   │   │   │   ├── SVI_PROFILE_TESTS.yml
│           │   │   │   │   │   ├── TRUNK_GROUP_TESTS.yml
│           │   │   │   │   │   ├── TRUNK_GROUP_TESTS_L2LEAF.
Download .txt
Showing preview only (1,319K chars total). Download the full file or copy to clipboard to get everything.
SYMBOL INDEX (14832 symbols across 469 files)

FILE: .github/generate_release.py
  class SafeDumper (line 48) | class SafeDumper(yaml.SafeDumper):
    method increase_indent (line 57) | def increase_indent(self, flow: bool = False, *_args: Any, **_kwargs: ...

FILE: ansible_collections/arista/avd/extensions/molecule/eos_designs_unit_tests/custom_modules/custom_interface_descriptions_with_data.py
  class CustomAvdInterfaceDescriptions (line 9) | class CustomAvdInterfaceDescriptions(AvdInterfaceDescriptions):
    method _custom_description_prefix (line 11) | def _custom_description_prefix(self) -> str:
    method underlay_ethernet_interface (line 14) | def underlay_ethernet_interface(self, data: InterfaceDescriptionData) ...
    method underlay_port_channel_interface (line 44) | def underlay_port_channel_interface(self, data: InterfaceDescriptionDa...
    method mlag_ethernet_interface (line 64) | def mlag_ethernet_interface(self, data: InterfaceDescriptionData) -> str:
    method mlag_port_channel_interface (line 77) | def mlag_port_channel_interface(self, data: InterfaceDescriptionData) ...
    method mlag_peer_svi (line 91) | def mlag_peer_svi(self, data: InterfaceDescriptionData) -> str:  # noq...
    method mlag_peer_l3_svi (line 94) | def mlag_peer_l3_svi(self, data: InterfaceDescriptionData) -> str:  # ...
    method mlag_peer_l3_vrf_svi (line 97) | def mlag_peer_l3_vrf_svi(self, data: InterfaceDescriptionData) -> str:
    method connected_endpoints_ethernet_interface (line 100) | def connected_endpoints_ethernet_interface(self, data: InterfaceDescri...
    method connected_endpoints_port_channel_interface (line 116) | def connected_endpoints_port_channel_interface(self, data: InterfaceDe...
    method router_id_loopback_interface (line 132) | def router_id_loopback_interface(self, data: InterfaceDescriptionData)...
    method vtep_loopback_interface (line 146) | def vtep_loopback_interface(self, data: InterfaceDescriptionData) -> s...

FILE: ansible_collections/arista/avd/extensions/molecule/eos_designs_unit_tests/custom_modules/custom_ip_addressing.py
  class CustomAvdIpAddressing (line 9) | class CustomAvdIpAddressing(AvdIpAddressing):
    method _custom_ip_offset_10 (line 11) | def _custom_ip_offset_10(self) -> int:
    method _custom_ip_offset_10_subnets (line 15) | def _custom_ip_offset_10_subnets(self) -> int:
    method _custom_ip_offset_20 (line 24) | def _custom_ip_offset_20(self) -> int:
    method _custom_ip_offset_20_subnets (line 28) | def _custom_ip_offset_20_subnets(self) -> int:
    method mlag_ibgp_peering_ip_primary (line 36) | def mlag_ibgp_peering_ip_primary(self, mlag_ibgp_peering_ipv4_pool: st...
    method mlag_ibgp_peering_ip_secondary (line 46) | def mlag_ibgp_peering_ip_secondary(self, mlag_ibgp_peering_ipv4_pool: ...
    method mlag_ip_primary (line 56) | def mlag_ip_primary(self) -> str:
    method mlag_ip_secondary (line 66) | def mlag_ip_secondary(self) -> str:
    method mlag_l3_ip_primary (line 76) | def mlag_l3_ip_primary(self) -> str:
    method mlag_l3_ip_secondary (line 86) | def mlag_l3_ip_secondary(self) -> str:
    method p2p_uplinks_ip (line 96) | def p2p_uplinks_ip(self, uplink_switch_index: int) -> str:
    method p2p_uplinks_peer_ip (line 106) | def p2p_uplinks_peer_ip(self, uplink_switch_index: int) -> str:
    method p2p_vrfs_uplinks_ip (line 116) | def p2p_vrfs_uplinks_ip(self, uplink_switch_index: int, vrf: str) -> str:
    method p2p_vrfs_uplinks_peer_ip (line 127) | def p2p_vrfs_uplinks_peer_ip(self, uplink_switch_index: int, vrf: str)...
    method router_id (line 137) | def router_id(self) -> str:
    method ipv6_router_id (line 147) | def ipv6_router_id(self) -> str:
    method vtep_ip_mlag (line 157) | def vtep_ip_mlag(self) -> str:
    method vtep_ip (line 167) | def vtep_ip(self) -> str:

FILE: ansible_collections/arista/avd/extensions/molecule/howto/custom_modules/avd_overrides.py
  class MyCustomIpAddressing (line 10) | class MyCustomIpAddressing(AvdIpAddressing):
    method _custom_offset (line 14) | def _custom_offset(self) -> int:
    method router_id (line 18) | def router_id(self) -> str:
    method vtep_ip (line 23) | def vtep_ip(self) -> str:

FILE: ansible_collections/arista/avd/extensions/scripts/processor.py
  function load_file (line 14) | def load_file(filepath: str) -> list[str] | None:
  function is_strict_match (line 24) | def is_strict_match(line: str, pattern: str) -> bool:
  function extract_section (line 40) | def extract_section(lines: list[str], section_header: str) -> list[str]:
  function apply_filters (line 70) | def apply_filters(block: list[str], filters: list[str]) -> list[str]:
  function process_config (line 128) | def process_config(config_path: str, output_dir: str | None = None) -> N...

FILE: ansible_collections/arista/avd/plugins/action/anta_workflow.py
  class ActionModule (line 147) | class ActionModule(ActionBase):
    method run (line 148) | def run(self, tmp: Any = None, task_vars: dict | None = None) -> dict:
  function run_anta (line 242) | def run_anta(devices: list[str]) -> ResultManager:
  function build_reports (line 265) | def build_reports(batch_results: Iterator[ResultManager], report_setting...
  function sort_result_manager (line 334) | def sort_result_manager(result_manager: ResultManager, status_priority: ...
  function update_ansible_result (line 382) | def update_ansible_result(result: dict[str, Any], anta_tests_summary: di...
  function get_ansible_vars (line 436) | def get_ansible_vars(device_list: list[str], action_plugin_vars: ActionP...
  function build_anta_runner_objects (line 454) | def build_anta_runner_objects(devices: list[str]) -> tuple[ResultManager...
  function get_device_catalog_filters (line 499) | def get_device_catalog_filters(device: str, avd_catalogs_filters: list[d...
  function build_anta_device (line 539) | def build_anta_device(device: str) -> AsyncEOSDevice:
  function load_user_catalogs (line 582) | def load_user_catalogs(catalogs_dir: str) -> AntaCatalog:
  function load_structured_configs (line 607) | def load_structured_configs(device_list: list[str], structured_config_di...
  function load_one_structured_config (line 612) | def load_one_structured_config(device: str, structured_config_dir: str, ...
  function setup_queue_listener (line 625) | def setup_queue_listener(log_queue: Queue, has_errors_ref: list[bool]) -...
  function setup_parent_process_logging (line 646) | def setup_parent_process_logging(log_queue: Queue, verbosity: int) -> None:
  function setup_child_process_logging (line 669) | def setup_child_process_logging(log_queue: Queue, verbosity: int, unique...
  function setup_root_logger (line 688) | def setup_root_logger(unique_id: str, log_queue: Queue, verbosity: int) ...
  function setup_anta_debug_mode (line 735) | def setup_anta_debug_mode(verbosity: int) -> None:

FILE: ansible_collections/arista/avd/plugins/action/cv_workflow.py
  class ActionModule (line 127) | class ActionModule(ActionBase):
    method run (line 128) | def run(self, tmp: Any = None, task_vars: dict | None = None) -> dict:
    method deploy (line 154) | async def deploy(self, validated_args: dict, result: dict) -> dict:
    method build_device_deployments (line 303) | async def build_device_deployments(
    method build_device_deployment (line 342) | async def build_device_deployment(
    method load_structured_config (line 442) | def load_structured_config(self, hostname: str, structured_config_dir:...
  function setup_module_logging (line 478) | def setup_module_logging(result: dict) -> None:

FILE: ansible_collections/arista/avd/plugins/action/eos_cli_config_gen.py
  class ActionModule (line 62) | class ActionModule(ActionBase):
    method run (line 68) | def run(self, tmp: Any = None, task_vars: dict | None = None) -> dict:
    method main (line 86) | def main(self, hostname: str, task_vars: dict, result: dict) -> dict:
    method validate_args (line 138) | def validate_args(self) -> dict:
    method render_template_with_ansible_templar (line 152) | def render_template_with_ansible_templar(self, template_vars: dict | C...
    method write_file (line 160) | def write_file(self, content: str, filename: str) -> bool:
    method load_structured_config (line 187) | def load_structured_config(self, hostname: str) -> dict[str, Any]:
  function setup_module_logging (line 212) | def setup_module_logging(hostname: str, result: dict) -> None:

FILE: ansible_collections/arista/avd/plugins/action/eos_designs_documentation.py
  class ActionModule (line 55) | class ActionModule(ActionBase):
    method run (line 58) | def run(self, tmp: Any = None, task_vars: dict | None = None) -> dict:
    method main (line 81) | def main(self, validated_args: dict, task_vars: dict, result: dict) ->...
    method read_structured_configs (line 140) | def read_structured_configs(self, device_list: list[str], structured_c...
    method read_one_structured_config (line 153) | def read_one_structured_config(self, device: str, structured_config_di...
    method load_facts (line 165) | def load_facts(self) -> dict[str, dict]:
  function setup_module_logging (line 182) | def setup_module_logging(result: dict) -> None:

FILE: ansible_collections/arista/avd/plugins/action/eos_designs_facts.py
  class ActionModule (line 49) | class ActionModule(ActionBase):
    method run (line 54) | def run(self, tmp: Any = None, task_vars: dict | None = None) -> dict:
    method load_validated_inputs (line 117) | def load_validated_inputs(self, fabric_hosts: list) -> tuple[dict[str,...
    method render_facts (line 158) | def render_facts(self, all_inputs: dict[str, AVDDesign], pool_manager:...
    method dump_facts (line 195) | def dump_facts(self, avd_switch_facts: dict[str, dict], file_path: Pat...

FILE: ansible_collections/arista/avd/plugins/action/eos_designs_structured_config.py
  class ActionModule (line 51) | class ActionModule(ActionBase):
    method run (line 54) | def run(self, tmp: Any = None, task_vars: dict | None = None) -> dict:
    method load_validated_inputs (line 189) | def load_validated_inputs(self, hostname: str) -> tuple[AVDDesign, dic...
    method load_facts (line 218) | def load_facts(self, hostname: str) -> AvdSwitchFactsDefaultDict:

FILE: ansible_collections/arista/avd/plugins/action/set_vars.py
  class ActionModule (line 9) | class ActionModule(ActionBase):
    method run (line 10) | def run(self, tmp: Any = None, task_vars: dict | None = None) -> dict:...

FILE: ansible_collections/arista/avd/plugins/action/validate_inputs.py
  class WorkerFailure (line 55) | class WorkerFailure:
  class TemplateWorkerSuccess (line 65) | class TemplateWorkerSuccess:
  class ValidateWorkerSuccess (line 75) | class ValidateWorkerSuccess:
  class ValidateWorkerSkipped (line 87) | class ValidateWorkerSkipped:
  class ResolvedPluginArgs (line 133) | class ResolvedPluginArgs:
  function set_worker_context (line 152) | def set_worker_context(hostvars: ActionPluginVars) -> None:
  function get_worker_hostvars (line 165) | def get_worker_hostvars() -> ActionPluginVars:
  class ActionModule (line 178) | class ActionModule(AVDActionPlugin):
    method main (line 183) | def main(self, task_vars: dict[str, Any]) -> None:
    method _get_plugin_args (line 256) | def _get_plugin_args(self) -> ResolvedPluginArgs:
    method _get_validation_configuration (line 275) | def _get_validation_configuration(self, validated_args: dict[Any, Any]...
    method _get_hosts_to_process (line 294) | def _get_hosts_to_process(self, task_vars: dict[str, Any], schema_name...
    method _run_templating_phase (line 339) | def _run_templating_phase(
    method _run_validation_phase (line 388) | def _run_validation_phase(
  function _template_host_worker (line 474) | def _template_host_worker(hostname: str, output_path: Path, schema_name:...
  function _validate_host_worker (line 516) | def _validate_host_worker(

FILE: ansible_collections/arista/avd/plugins/action/verify_requirements.py
  function _validate_python_version (line 48) | def _validate_python_version(info: dict[str, Any]) -> bool:
  function _check_requirement (line 90) | def _check_requirement(req: Requirement, requirements_dict: dict[str, An...
  function _validate_python_requirements (line 163) | def _validate_python_requirements(requirements: list[str], info: dict[st...
  function _validate_ansible_version (line 203) | def _validate_ansible_version(collection_name: str, running_version: str...
  function _validate_ansible_collections (line 237) | def _validate_ansible_collections(running_collection_name: str, info: di...
  function _get_collection_path (line 307) | def _get_collection_path(collection_name: str) -> str:
  function _get_collection_version (line 313) | def _get_collection_version(collection_path: str) -> str:
  function _get_running_collection_version (line 333) | def _get_running_collection_version(running_collection_name: str, result...
  function check_running_from_source (line 361) | def check_running_from_source() -> bool:
  class ActionModule (line 389) | class ActionModule(AVDActionPlugin):
    method main (line 392) | def main(self, task_vars: dict[str, Any]) -> None:

FILE: ansible_collections/arista/avd/plugins/filter/add_md_toc.py
  class FilterModule (line 78) | class FilterModule:
    method filters (line 79) | def filters(self) -> dict:

FILE: ansible_collections/arista/avd/plugins/filter/decrypt.py
  class FilterModule (line 100) | class FilterModule:
    method filters (line 101) | def filters(self) -> dict:

FILE: ansible_collections/arista/avd/plugins/filter/default.py
  class FilterModule (line 67) | class FilterModule:
    method filters (line 68) | def filters(self) -> dict:

FILE: ansible_collections/arista/avd/plugins/filter/encrypt.py
  class FilterModule (line 141) | class FilterModule:
    method filters (line 142) | def filters(self) -> dict:

FILE: ansible_collections/arista/avd/plugins/filter/hide_passwords.py
  class FilterModule (line 55) | class FilterModule:
    method filters (line 56) | def filters(self) -> dict:

FILE: ansible_collections/arista/avd/plugins/filter/is_in_filter.py
  class FilterModule (line 65) | class FilterModule:
    method filters (line 66) | def filters(self) -> dict:

FILE: ansible_collections/arista/avd/plugins/filter/list_compress.py
  class FilterModule (line 57) | class FilterModule:
    method filters (line 58) | def filters(self) -> dict:

FILE: ansible_collections/arista/avd/plugins/filter/natural_sort.py
  class FilterModule (line 82) | class FilterModule:
    method filters (line 83) | def filters(self) -> dict:

FILE: ansible_collections/arista/avd/plugins/filter/range_expand.py
  class FilterModule (line 96) | class FilterModule:
    method filters (line 97) | def filters(self) -> dict:

FILE: ansible_collections/arista/avd/plugins/filter/secure_hash.py
  class FilterModule (line 83) | class FilterModule:
    method filters (line 84) | def filters(self) -> dict:

FILE: ansible_collections/arista/avd/plugins/filter/snmp_hash.py
  class FilterModule (line 74) | class FilterModule:
    method filters (line 75) | def filters(self) -> dict:

FILE: ansible_collections/arista/avd/plugins/filter/status_render.py
  class FilterModule (line 53) | class FilterModule:
    method filters (line 54) | def filters(self) -> dict:

FILE: ansible_collections/arista/avd/plugins/plugin_utils/pyavd_wrappers.py
  class RaiseOnUse (line 29) | class RaiseOnUse:
    method __init__ (line 36) | def __init__(self, exception: Exception) -> None:
    method __call__ (line 39) | def __call__(self, *_args: Any, **_kwargs: Any) -> NoReturn:
    method __getattr__ (line 42) | def __getattr__(self, name: str) -> Any:
  function wrap_plugin (line 48) | def wrap_plugin(plugin_type: Literal["filter", "test"], name: str) -> Ca...

FILE: ansible_collections/arista/avd/plugins/plugin_utils/utils/action_plugin_vars.py
  class ActionPluginVars (line 21) | class ActionPluginVars:
    method __init__ (line 24) | def __init__(self, action_plugin: ActionBase) -> None:
    method __getitem__ (line 38) | def __getitem__(self, hostname: str) -> HostVarsVars:
    method _get_raw_variables (line 59) | def _get_raw_variables(self, hostname: str) -> dict[str, Any]:

FILE: ansible_collections/arista/avd/plugins/plugin_utils/utils/anta_workflow_logging.py
  class AntaWorkflowFilter (line 9) | class AntaWorkflowFilter(logging.Filter):
    method __init__ (line 16) | def __init__(self, unique_id: str) -> None:
    method filter (line 27) | def filter(self, record: logging.LogRecord) -> bool:
  class AntaWorkflowHandler (line 41) | class AntaWorkflowHandler(logging.Handler):
    method __init__ (line 49) | def __init__(self, has_errors_ref: list[bool]) -> None:
    method emit (line 61) | def emit(self, record: logging.LogRecord) -> None:

FILE: ansible_collections/arista/avd/plugins/plugin_utils/utils/avd_action_plugin/avd_action_plugin.py
  class AVDActionPlugin (line 19) | class AVDActionPlugin(ActionBase):
    method __init__ (line 25) | def __init__(self, *args: Any, **kwargs: Any) -> None:
    method main (line 40) | def main(self, task_vars: dict[str, Any]) -> None:
    method run (line 50) | def run(self, tmp: Any = None, task_vars: dict[str, Any] | None = None...
    method _logging_context (line 116) | def _logging_context(

FILE: ansible_collections/arista/avd/plugins/plugin_utils/utils/avd_action_plugin/log_config.py
  function get_avd_log_level (line 74) | def get_avd_log_level(logger_name: str) -> int:
  class AVDLoggingConfig (line 99) | class AVDLoggingConfig:
  class LoggerState (line 108) | class LoggerState:

FILE: ansible_collections/arista/avd/plugins/plugin_utils/utils/avd_action_plugin/log_handlers.py
  class ContextFilter (line 10) | class ContextFilter(logging.Filter):
    method __init__ (line 13) | def __init__(self, context: dict[str, Any]) -> None:
    method filter (line 18) | def filter(self, record: logging.LogRecord) -> bool:
  class AnsibleDisplayHandler (line 24) | class AnsibleDisplayHandler(logging.Handler):
    method __init__ (line 27) | def __init__(self) -> None:
    method emit (line 32) | def emit(self, record: logging.LogRecord) -> None:
  class SaveToResultHandler (line 47) | class SaveToResultHandler(logging.Handler):
    method __init__ (line 50) | def __init__(self, result_dict: dict[str, Any]) -> None:
    method emit (line 56) | def emit(self, record: logging.LogRecord) -> None:

FILE: ansible_collections/arista/avd/plugins/plugin_utils/utils/avd_file_handler.py
  class AVDFileHandler (line 16) | class AVDFileHandler:
    method __init__ (line 21) | def __init__(self, vault_handler: AVDVaultHandler) -> None:
    method read_file (line 30) | def read_file(self, file_path: Path | str) -> bytes:
    method write_file (line 45) | def write_file(self, file_path: Path | str, data: bytes) -> None:
    method load_json (line 58) | def load_json(self, file_path: Path | str) -> Any:

FILE: ansible_collections/arista/avd/plugins/plugin_utils/utils/avd_switch_facts_default_dict.py
  class AvdSwitchFactsDefaultDict (line 21) | class AvdSwitchFactsDefaultDict(defaultdict[str, EosDesignsFacts]):
    method __init__ (line 24) | def __init__(self, avd_switch_facts: dict[str, dict]) -> None:
    method __contains__ (line 27) | def __contains__(self, key: object) -> bool:
    method get (line 30) | def get(self, key: str, default: Any = None) -> EosDesignsFacts:
    method __missing__ (line 37) | def __missing__(self, key: str) -> EosDesignsFacts:
    method keys (line 41) | def keys(self) -> Iterable[str]:

FILE: ansible_collections/arista/avd/plugins/plugin_utils/utils/avd_vault_handler.py
  class AVDVaultHandler (line 16) | class AVDVaultHandler:
    method __init__ (line 21) | def __init__(self, loader: DataLoader, vault_id: str | None = None) ->...
    method has_vault_secrets (line 39) | def has_vault_secrets(self) -> bool:
    method encrypt_if_needed (line 43) | def encrypt_if_needed(self, data: bytes) -> bytes:
    method decrypt_if_needed (line 58) | def decrypt_if_needed(self, data: bytes) -> bytes:

FILE: ansible_collections/arista/avd/plugins/plugin_utils/utils/compile_searchpath.py
  function compile_searchpath (line 7) | def compile_searchpath(searchpath: list) -> list[str]:

FILE: ansible_collections/arista/avd/plugins/plugin_utils/utils/cprofile_decorator.py
  function cprofile (line 15) | def cprofile(sort_by: str = "cumtime") -> Callable:

FILE: ansible_collections/arista/avd/plugins/plugin_utils/utils/get_templar.py
  function get_templar (line 24) | def get_templar(action_plugin_instance: ActionBase, task_vars: dict[str,...

FILE: ansible_collections/arista/avd/plugins/plugin_utils/utils/get_workers.py
  function get_workers (line 7) | def get_workers(num_devices: int, ansible_forks: int) -> tuple[int, int]:

FILE: ansible_collections/arista/avd/plugins/plugin_utils/utils/init_logging.py
  function init_pyavd_logging (line 13) | def init_pyavd_logging() -> None:

FILE: ansible_collections/arista/avd/plugins/plugin_utils/utils/parse_validation_result.py
  function parse_validation_result (line 22) | def parse_validation_result(validation_result: ValidationResult, hostnam...
  function build_result_message (line 66) | def build_result_message(validation_errors: int) -> str | None:

FILE: ansible_collections/arista/avd/plugins/plugin_utils/utils/python_to_ansible_logging_handler.py
  class PythonToAnsibleHandler (line 16) | class PythonToAnsibleHandler(Handler):
    method __init__ (line 28) | def __init__(self, result: dict | None, display: Display | None = None...
    method emit (line 34) | def emit(self, record: LogRecord) -> None:
    method _format_msg (line 54) | def _format_msg(self, record: LogRecord) -> str:
  class PythonToAnsibleContextFilter (line 59) | class PythonToAnsibleContextFilter(Filter):
    method __init__ (line 66) | def __init__(self, hostname: str) -> None:
    method filter (line 70) | def filter(self, record: LogRecord) -> bool:

FILE: ansible_collections/arista/avd/plugins/plugin_utils/utils/raise_action_fail.py
  function raise_action_fail (line 9) | def raise_action_fail(message: str, exception: Exception | None = None) ...
  function _clear_exception_chain (line 38) | def _clear_exception_chain(exc: BaseException) -> None:

FILE: ansible_collections/arista/avd/plugins/plugin_utils/utils/tmp_path_handlers.py
  function _get_tmp_path (line 14) | def _get_tmp_path(tmp_dir: str) -> Path:
  function get_eos_designs_facts_path (line 36) | def get_eos_designs_facts_path(tmp_dir: str, clean: bool = False) -> Path:
  function get_tmp_paths (line 62) | def get_tmp_paths(tmp_dir: str, clean: bool = False) -> tuple[Path, Path]:

FILE: ansible_collections/arista/avd/plugins/plugin_utils/utils/write_file.py
  function write_file (line 7) | def write_file(content: str, filename: str, file_mode: str = "0o664", di...

FILE: ansible_collections/arista/avd/plugins/plugin_utils/utils/yaml_dumper.py
  class NoAliasDumper (line 15) | class NoAliasDumper(YamlDumper):
    method ignore_aliases (line 16) | def ignore_aliases(self, _data: Any) -> bool:

FILE: ansible_collections/arista/avd/plugins/test/contains.py
  class TestModule (line 85) | class TestModule:
    method tests (line 86) | def tests(self) -> dict:

FILE: ansible_collections/arista/avd/plugins/test/defined.py
  class TestModule (line 101) | class TestModule:
    method tests (line 102) | def tests(self) -> dict:

FILE: ansible_collections/arista/avd/plugins/vars/global_vars.py
  function _mark_strings_as_trusted (line 108) | def _mark_strings_as_trusted(data: Any) -> Any:
  class VarsModule (line 133) | class VarsModule(BaseVarsPlugin):
    method find_variable_source (line 134) | def find_variable_source(self, path: str, loader: object) -> list:
    method get_vars (line 161) | def get_vars(self, loader: object, path: str, entities: Any, _cache: b...

FILE: ansible_collections/arista/avd/tests/unit/action/conftest.py
  function reset_avd_logger (line 16) | def reset_avd_logger() -> Generator[None, None, None]:

FILE: ansible_collections/arista/avd/tests/unit/action/test_eos_cli_config_gen.py
  function action_module (line 23) | def action_module() -> Callable[..., ActionModule]:
  function test_run_emits_expected_debug_logs_and_routes_to_display (line 110) | def test_run_emits_expected_debug_logs_and_routes_to_display(
  function test_load_structured_config_raises_when_file_missing (line 153) | def test_load_structured_config_raises_when_file_missing(action_module: ...
  function test_main_wraps_exceptions_as_action_fail (line 179) | def test_main_wraps_exceptions_as_action_fail(action_module: Callable[.....
  function test_run_raises_when_pyavd_not_installed (line 201) | def test_run_raises_when_pyavd_not_installed(action_module: Callable[......

FILE: ansible_collections/arista/avd/tests/unit/action/test_verify_requirements.py
  class VersionInfo (line 26) | class VersionInfo(NamedTuple):
  function test__validate_python_version (line 42) | def test__validate_python_version(mocked_version: tuple[int, int, int, s...
  function test__validate_python_version_deprecation_message (line 59) | def test__validate_python_version_deprecation_message() -> None:
  function test__validate_python_requirements (line 122) | def test__validate_python_requirements(n_reqs: int, mocked_version: str ...
  function test__validate_python_requirements_pyavd (line 146) | def test__validate_python_requirements_pyavd(running_from_source: bool, ...
  function test__get_collection_version (line 178) | def test__get_collection_version(metadata_file: str, content: str, tmp_p...
  function test__get_collection_version_rejects_unsafe_version (line 185) | def test__get_collection_version_rejects_unsafe_version(tmp_path: Path) ...
  function test__validate_ansible_version (line 210) | def test__validate_ansible_version(mocked_running_version: str, deprecat...
  function test__validate_ansible_collections (line 231) | def test__validate_ansible_collections(n_reqs: int, mocked_version: str ...
  function test__get_running_collection_version_git_not_installed (line 272) | def test__get_running_collection_version_git_not_installed(caplog: pytes...

FILE: ansible_collections/arista/avd/tests/unit/extensions/scripts/test_processor.py
  function config (line 26) | def config(text: str) -> list[str]:
  function test_is_strict_match (line 42) | def test_is_strict_match(line: str, pattern: str, expected: bool) -> None:
  function test_extract_section (line 46) | def test_extract_section() -> None:
  function test_apply_filters_basic (line 77) | def test_apply_filters_basic() -> None:
  function test_apply_filters_nested_blocks (line 95) | def test_apply_filters_nested_blocks() -> None:
  function test_separator_logic (line 117) | def test_separator_logic() -> None:
  function test_process_config_integration (line 141) | def test_process_config_integration(tmp_path: Path) -> None:
  function test_process_config_with_per_artifact_output_dir (line 188) | def test_process_config_with_per_artifact_output_dir(tmp_path: Path) -> ...
  function test_process_config_with_base_path (line 242) | def test_process_config_with_base_path(tmp_path: Path) -> None:

FILE: ansible_collections/arista/avd/tests/unit/plugins/plugin_utils/utils/conftest.py
  function ansible_task (line 29) | def ansible_task(request: pytest.FixtureRequest) -> Task:
  function mock_display (line 60) | def mock_display() -> MagicMock:

FILE: ansible_collections/arista/avd/tests/unit/plugins/plugin_utils/utils/test_action_plugin_vars.py
  class MinimalActionPlugin (line 13) | class MinimalActionPlugin:
    method __init__ (line 16) | def __init__(self, task: Task) -> None:
  class TestActionPluginVars (line 21) | class TestActionPluginVars:
    method test_init (line 24) | def test_init(self, ansible_task: Task) -> None:
    method test_get_raw_variables_valid_host (line 36) | def test_get_raw_variables_valid_host(self, ansible_task: Task) -> None:
    method test_get_raw_variables_invalid_host (line 44) | def test_get_raw_variables_invalid_host(self, ansible_task: Task) -> N...
    method test_get_raw_variables_group_vars (line 52) | def test_get_raw_variables_group_vars(self, ansible_task: Task) -> None:
    method test_getitem (line 61) | def test_getitem(self, ansible_task: Task) -> None:
    method test_variable_precedence (line 144) | def test_variable_precedence(self, ansible_task: Task, variable: str, ...

FILE: ansible_collections/arista/avd/tests/unit/plugins/plugin_utils/utils/test_anta_workflow_logging.py
  function create_log_record (line 15) | def create_log_record(name: str, level: int, msg: str, unique_id: str | ...
  class TestAntaWorkflowFilter (line 33) | class TestAntaWorkflowFilter:
    method test_anta_workflow_filter_init (line 36) | def test_anta_workflow_filter_init(self) -> None:
    method test_anta_workflow_filter_adds_unique_id (line 42) | def test_anta_workflow_filter_adds_unique_id(self) -> None:
  class TestAntaWorkflowHandler (line 58) | class TestAntaWorkflowHandler:
    method test_anta_workflow_handler_init (line 61) | def test_anta_workflow_handler_init(self) -> None:
    method test_anta_workflow_handler_emit_levels (line 79) | def test_anta_workflow_handler_emit_levels(
    method test_anta_workflow_handler_emit_unknown_unique_id (line 112) | def test_anta_workflow_handler_emit_unknown_unique_id(self, mock_displ...
    method test_anta_workflow_handler_emit_message_formatting_with_args (line 140) | def test_anta_workflow_handler_emit_message_formatting_with_args(self,...

FILE: ansible_collections/arista/avd/tests/unit/plugins/plugin_utils/utils/test_avd_action_plugin.py
  class TestAVDActionPlugin (line 19) | class TestAVDActionPlugin:
    method mock_display (line 23) | def mock_display(self) -> Generator[MagicMock, Any, None]:
    method _plugin_factory (line 45) | def _plugin_factory(self, cls: type[AVDActionPlugin], task_args: dict[...
    method test_wrong_logging_config (line 60) | def test_wrong_logging_config(self) -> None:
    method test_run_success (line 76) | def test_run_success(self) -> None:
    method test_run_failure_recast_as_ansible_exception (line 91) | def test_run_failure_recast_as_ansible_exception(self) -> None:
    method test_log_levels_set_by_verbosity (line 170) | def test_log_levels_set_by_verbosity(self, mock_display: MagicMock, ve...
    method test_default_logging_behavior (line 198) | def test_default_logging_behavior(self, mock_display: MagicMock, verbo...
    method test_logging_with_context_and_format (line 241) | def test_logging_with_context_and_format(
    method test_logging_with_save_logs (line 267) | def test_logging_with_save_logs(self) -> None:
    method test_logging_with_live_display_false (line 285) | def test_logging_with_live_display_false(self, mock_display: MagicMock...
    method test_warning_capture (line 310) | def test_warning_capture(self, warning_type: type[Warning], message: s...
    method test_handles_dirty_logger_state (line 328) | def test_handles_dirty_logger_state(self) -> None:

FILE: development/compare.py
  class ConfigLine (line 16) | class ConfigLine:
  function parse_config (line 24) | def parse_config(config: str, config_source: str) -> set[ConfigLine]:
  function get_line_number (line 51) | def get_line_number(stuff: tuple[bool, ConfigLine]) -> int:
  function get_family_line (line 55) | def get_family_line(config_line: ConfigLine) -> set[tuple[bool, ConfigLi...
  function main (line 70) | def main() -> None:

FILE: development/find_missing_tables.py
  function main (line 11) | def main() -> int:

FILE: development/sort_hosts_yml.py
  class EntryBlock (line 20) | class EntryBlock(TypedDict):
  class EntriesParser (line 30) | class EntriesParser:
    method __init__ (line 33) | def __init__(self, lines: list[str], start_index: int, indent: str) ->...
    method parse (line 47) | def parse(self) -> tuple[list[EntryBlock], int]:
    method _is_comment_or_blank (line 81) | def _is_comment_or_blank(self, line: str) -> bool:
    method _extract_entry_name (line 86) | def _extract_entry_name(self, line: str) -> str | None:
    method _collect_properties (line 102) | def _collect_properties(self) -> list[str]:
  function _sort_yaml_lines (line 115) | def _sort_yaml_lines(lines: list[str], start_idx: int = 0, end_idx: int ...
  function sort_hosts_in_yaml (line 174) | def sort_hosts_in_yaml(content: str) -> str:
  function process_files (line 192) | def process_files(files: set[Path]) -> list[Path]:
  function main (line 224) | def main() -> int:

FILE: docs/stylesheets/sticky-banner.js
  function checkHeaderVisibility (line 19) | function checkHeaderVisibility() {

FILE: python-avd/pyavd/_anta/constants.py
  class StructuredConfigKey (line 11) | class StructuredConfigKey(Enum):

FILE: python-avd/pyavd/_anta/factories.py
  function create_catalog (line 22) | def create_catalog(data_source: InputFactoryDataSource, test_specs: list...
  function create_test_definitions (line 34) | def create_test_definitions(test_spec: AVDTestSpec, data_source: InputFa...
  function update_test_definition_metadata (line 47) | def update_test_definition_metadata(test_definition: AntaTestDefinition,...

FILE: python-avd/pyavd/_anta/input_factories/avt.py
  class VerifyAVTSpecificPathInputFactory (line 23) | class VerifyAVTSpecificPathInputFactory(AntaTestInputFactory[VerifyAVTSp...
    method create (line 32) | def create(self) -> Iterator[VerifyAVTSpecificPath.Input]:

FILE: python-avd/pyavd/_anta/input_factories/base_classes.py
  class AntaTestInputFactory (line 22) | class AntaTestInputFactory(ABC, Generic[T_Input]):
    method __init__ (line 35) | def __init__(self, data_source: InputFactoryDataSource, test_name: str...
    method create (line 44) | def create(self) -> Iterator[T_Input]:
    method is_peer_available (line 52) | def is_peer_available(self, peer: str, identity: str) -> bool:
    method get_peer_interface_ip (line 59) | def get_peer_interface_ip(self, peer: str, peer_interface: str, interf...
    method is_peer_interface_shutdown (line 85) | def is_peer_interface_shutdown(self, peer: str, peer_interface: str, i...

FILE: python-avd/pyavd/_anta/input_factories/connectivity.py
  class Metadata (line 25) | class Metadata(Protocol):
  class CandidateEthernetInterfacesItemLLDP (line 31) | class CandidateEthernetInterfacesItemLLDP(Protocol):
  class CandidateEthernetInterfacesItemP2P (line 37) | class CandidateEthernetInterfacesItemP2P(Protocol):
  class CandidateVlanInterfacesItemInbandMgmt (line 44) | class CandidateVlanInterfacesItemInbandMgmt(Protocol):
  class VerifyLLDPNeighborsInputFactory (line 52) | class VerifyLLDPNeighborsInputFactory(AntaTestInputFactory[VerifyLLDPNei...
    method create (line 68) | def create(self) -> Iterator[VerifyLLDPNeighbors.Input]:
    method _is_interface_candidate (line 82) | def _is_interface_candidate(self, interface: EosCliConfigGen.EthernetI...
  class VerifyReachabilityInputFactory (line 112) | class VerifyReachabilityInputFactory(AntaTestInputFactory[VerifyReachabi...
    method create (line 140) | def create(self) -> Iterator[VerifyReachability.Input]:
    method _get_p2p_hosts (line 187) | def _get_p2p_hosts(self) -> Iterator[Host]:
    method _get_vtep_underlay_hosts (line 211) | def _get_vtep_underlay_hosts(self) -> Iterator[Host]:
    method _get_inband_management_hosts (line 226) | def _get_inband_management_hosts(self) -> Iterator[Host]:
    method _get_wan_dps_hosts (line 241) | def _get_wan_dps_hosts(self) -> Iterator[Host]:
    method _get_bgp_hosts (line 255) | def _get_bgp_hosts(self) -> Iterator[Host]:
    method _is_interface_candidate (line 276) | def _is_interface_candidate(self, interface: EosCliConfigGen.EthernetI...
    method _is_svi_candidate (line 295) | def _is_svi_candidate(self, svi: EosCliConfigGen.VlanInterfacesItem) -...

FILE: python-avd/pyavd/_anta/input_factories/decorators.py
  function skip_if_hardware_validation_disabled (line 21) | def skip_if_hardware_validation_disabled(func: T_AntaTestInputFactoryMet...
  function skip_if_extra_fabric_validation_disabled (line 34) | def skip_if_extra_fabric_validation_disabled(func: T_AntaTestInputFactor...
  function skip_if_wan_router (line 47) | def skip_if_wan_router(func: T_AntaTestInputFactoryMethod[F, R]) -> T_An...
  function skip_if_missing_config (line 60) | def skip_if_missing_config(*keys: StructuredConfigKey) -> Callable[[T_An...
  function skip_if_not_vtep (line 79) | def skip_if_not_vtep(func: T_AntaTestInputFactoryMethod[F, R]) -> T_Anta...
  function skip_if_not_wan_router (line 92) | def skip_if_not_wan_router(func: T_AntaTestInputFactoryMethod[F, R]) -> ...

FILE: python-avd/pyavd/_anta/input_factories/hardware.py
  class VerifyEnvironmentCoolingInputFactory (line 26) | class VerifyEnvironmentCoolingInputFactory(AntaTestInputFactory[VerifyEn...
    method create (line 30) | def create(self) -> Iterator[VerifyEnvironmentCooling.Input]:
  class VerifyEnvironmentPowerInputFactory (line 35) | class VerifyEnvironmentPowerInputFactory(AntaTestInputFactory[VerifyEnvi...
    method create (line 39) | def create(self) -> Iterator[VerifyEnvironmentPower.Input]:
  class VerifyEnvironmentSystemCoolingInputFactory (line 44) | class VerifyEnvironmentSystemCoolingInputFactory(AntaTestInputFactory[Ve...
    method create (line 48) | def create(self) -> Iterator[VerifyEnvironmentSystemCooling.Input]:
  class VerifyTemperatureInputFactory (line 53) | class VerifyTemperatureInputFactory(AntaTestInputFactory[VerifyTemperatu...
    method create (line 57) | def create(self) -> Iterator[VerifyTemperature.Input]:
  class VerifyTransceiversTemperatureInputFactory (line 62) | class VerifyTransceiversTemperatureInputFactory(AntaTestInputFactory[Ver...
    method create (line 66) | def create(self) -> Iterator[VerifyTransceiversTemperature.Input]:
  class VerifyTransceiversManufacturersInputFactory (line 71) | class VerifyTransceiversManufacturersInputFactory(AntaTestInputFactory[V...
    method create (line 81) | def create(self) -> Iterator[VerifyTransceiversManufacturers.Input]:
  class VerifyInventoryInputFactory (line 86) | class VerifyInventoryInputFactory(AntaTestInputFactory[VerifyInventory.I...
    method _get_hardware_requirement (line 99) | def _get_hardware_requirement(self, requirement: int | None) -> int | ...
    method create (line 117) | def create(self) -> Iterator[VerifyInventory.Input]:

FILE: python-avd/pyavd/_anta/input_factories/interfaces.py
  class VerifyInterfacesStatusInputFactory (line 23) | class VerifyInterfacesStatusInputFactory(AntaTestInputFactory[VerifyInte...
    method create (line 39) | def create(self) -> Iterator[VerifyInterfacesStatus.Input]:
    method _get_ethernet_interfaces (line 56) | def _get_ethernet_interfaces(self) -> Iterator[InterfaceState]:
    method _get_port_channel_interfaces (line 69) | def _get_port_channel_interfaces(self) -> Iterator[InterfaceState]:
    method _get_miscellaneous_interfaces (line 77) | def _get_miscellaneous_interfaces(self) -> Iterator[InterfaceState]:
    method _get_vxlan_interface (line 82) | def _get_vxlan_interface(self) -> Iterator[InterfaceState]:
    method _is_vxlan_source_interface_operational (line 102) | def _is_vxlan_source_interface_operational(self) -> bool:
  class VerifyPortChannelsInputFactory (line 127) | class VerifyPortChannelsInputFactory(AntaTestInputFactory[VerifyPortChan...
    method create (line 137) | def create(self) -> Iterator[VerifyPortChannels.Input]:
  class VerifyStormControlDropsInputFactory (line 156) | class VerifyStormControlDropsInputFactory(AntaTestInputFactory[VerifySto...
    method create (line 163) | def create(self) -> Iterator[VerifyStormControlDrops.Input]:
  class VerifyIllegalLACPInputFactory (line 173) | class VerifyIllegalLACPInputFactory(AntaTestInputFactory[VerifyIllegalLA...
    method create (line 181) | def create(self) -> Iterator[VerifyIllegalLACP.Input]:
  class VerifyInterfaceErrDisabledInputFactory (line 185) | class VerifyInterfaceErrDisabledInputFactory(AntaTestInputFactory[Verify...
    method create (line 194) | def create(self) -> Iterator[VerifyInterfaceErrDisabled.Input]:

FILE: python-avd/pyavd/_anta/input_factories/logging.py
  class VerifyLoggingErrorsInputFactory (line 16) | class VerifyLoggingErrorsInputFactory(AntaTestInputFactory[VerifyLogging...
    method create (line 24) | def create(self) -> Iterator[VerifyLoggingErrors.Input]:

FILE: python-avd/pyavd/_anta/input_factories/mlag.py
  class VerifyMlagConfigSanityInputFactory (line 19) | class VerifyMlagConfigSanityInputFactory(AntaTestInputFactory[VerifyMlag...
    method create (line 27) | def create(self) -> Iterator[VerifyMlagConfigSanity.Input]:
  class VerifyMlagInterfacesInputFactory (line 31) | class VerifyMlagInterfacesInputFactory(AntaTestInputFactory[VerifyMlagIn...
    method create (line 39) | def create(self) -> Iterator[VerifyMlagInterfaces.Input]:
  class VerifyMlagStatusInputFactory (line 43) | class VerifyMlagStatusInputFactory(AntaTestInputFactory[VerifyMlagStatus...
    method create (line 51) | def create(self) -> Iterator[VerifyMlagStatus.Input]:

FILE: python-avd/pyavd/_anta/input_factories/router_path_selection.py
  class VerifySpecificPathInputFactory (line 25) | class VerifySpecificPathInputFactory(AntaTestInputFactory[VerifySpecific...
    method create (line 35) | def create(self) -> Iterator[VerifySpecificPath.Input]:
    method _get_interface_ip (line 62) | def _get_interface_ip(self, interface_name: str) -> IPv4Address | None:
    method _create_dps_paths (line 85) | def _create_dps_paths(

FILE: python-avd/pyavd/_anta/input_factories/routing_bgp.py
  class VerifyBGPPeerSessionInputFactory (line 22) | class VerifyBGPPeerSessionInputFactory(AntaTestInputFactory[VerifyBGPPee...
    method create (line 34) | def create(self) -> Iterator[VerifyBGPPeerSession.Input]:

FILE: python-avd/pyavd/_anta/input_factories/routing_generic.py
  class VerifyRoutingProtocolModelInputFactory (line 21) | class VerifyRoutingProtocolModelInputFactory(AntaTestInputFactory[Verify...
    method create (line 30) | def create(self) -> Iterator[VerifyRoutingProtocolModel.Input]:
  class VerifyIPv4RoutePresencePerVRFInputFactory (line 39) | class VerifyIPv4RoutePresencePerVRFInputFactory(AntaTestInputFactory[Ver...
    method create (line 52) | def create(self) -> Iterator[VerifyIPv4RoutePresencePerVRF.Input]:

FILE: python-avd/pyavd/_anta/input_factories/routing_ospf.py
  class VerifyOSPFMaxLSAInputFactory (line 19) | class VerifyOSPFMaxLSAInputFactory(AntaTestInputFactory[VerifyOSPFMaxLSA...
    method create (line 27) | def create(self) -> Iterator[VerifyOSPFMaxLSA.Input]:
  class VerifyOSPFNeighborStateInputFactory (line 31) | class VerifyOSPFNeighborStateInputFactory(AntaTestInputFactory[VerifyOSP...
    method create (line 39) | def create(self) -> Iterator[VerifyOSPFNeighborState.Input]:

FILE: python-avd/pyavd/_anta/input_factories/security.py
  class VerifyAPIHttpsSSLInputFactory (line 23) | class VerifyAPIHttpsSSLInputFactory(AntaTestInputFactory[VerifyAPIHttpsS...
    method create (line 32) | def create(self) -> Iterator[VerifyAPIHttpsSSL.Input]:
  class VerifySpecificIPSecConnInputFactory (line 41) | class VerifySpecificIPSecConnInputFactory(AntaTestInputFactory[VerifySpe...
    method create (line 54) | def create(self) -> Iterator[VerifySpecificIPSecConn.Input]:

FILE: python-avd/pyavd/_anta/input_factories/system.py
  class VerifyReloadCauseInputFactory (line 16) | class VerifyReloadCauseInputFactory(AntaTestInputFactory[VerifyReloadCau...
    method create (line 27) | def create(self) -> Iterator[VerifyReloadCause.Input]:

FILE: python-avd/pyavd/_anta/input_factories/vxlan.py
  class VerifyVxlanConfigSanityInputFactory (line 19) | class VerifyVxlanConfigSanityInputFactory(AntaTestInputFactory[VerifyVxl...
    method create (line 27) | def create(self) -> Iterator[VerifyVxlanConfigSanity.Input]:

FILE: python-avd/pyavd/_anta/logs.py
  class TestLoggerAdapter (line 19) | class TestLoggerAdapter(LoggerAdapter):
    method process (line 37) | def process(self, msg: LogMessage, kwargs: MutableMapping[str, Any]) -...
    method context (line 65) | def context(self, context: str) -> Generator[TestLoggerAdapter, None, ...
  class LogMessage (line 76) | class LogMessage(Enum):

FILE: python-avd/pyavd/_anta/models.py
  class ResolvedBgpNeighbor (line 26) | class ResolvedBgpNeighbor:
  class ResolvedBgpNeighborInterface (line 36) | class ResolvedBgpNeighborInterface:
  class InputFactoryDataSource (line 45) | class InputFactoryDataSource:
    method is_vtep (line 54) | def is_vtep(self) -> bool:
    method is_wan_router (line 59) | def is_wan_router(self) -> bool:
    method extra_fabric_validation (line 64) | def extra_fabric_validation(self) -> bool:
    method loopback0_ip (line 69) | def loopback0_ip(self) -> IPv4Address | None:
    method vtep_ip (line 74) | def vtep_ip(self) -> IPv4Address | None:
    method fabric_loopback0_mapping (line 79) | def fabric_loopback0_mapping(self) -> dict[str, IPv4Address]:
    method fabric_dps_mapping (line 84) | def fabric_dps_mapping(self) -> dict[str, IPv4Address]:
    method _device_data (line 89) | def _device_data(self) -> AVDDeviceData:
    method fabric_underlay_reachability_prefixes (line 97) | def fabric_underlay_reachability_prefixes(self) -> list[IPv4Network]:
    method bgp_neighbors (line 102) | def bgp_neighbors(self) -> list[ResolvedBgpNeighbor]:
    method bgp_neighbor_interfaces (line 117) | def bgp_neighbor_interfaces(self) -> list[ResolvedBgpNeighborInterface]:
    method get_peer_device (line 133) | def get_peer_device(self, peer_hostname: str) -> AVDDeviceData | None:
    method get_peer_interface (line 140) | def get_peer_interface(self, peer_hostname: str, interface_name: str) ...
    method _process_bgp_neighbor_interface (line 147) | def _process_bgp_neighbor_interface(
    method _process_bgp_neighbor (line 184) | def _process_bgp_neighbor(
    method _is_bgp_neighbor_in_shutdown_peer_group (line 231) | def _is_bgp_neighbor_in_shutdown_peer_group(
    method _is_bgp_neighbor_available (line 245) | def _is_bgp_neighbor_available(self, neighbor: EosCliConfigGen.RouterB...

FILE: python-avd/pyavd/_anta/utils.py
  function dump_anta_catalog (line 23) | def dump_anta_catalog(hostname: str, catalog: AntaCatalog, catalog_dir: ...
  function get_filtered_test_specs (line 37) | def get_filtered_test_specs(avd_catalog_generation_settings: AVDCatalogG...

FILE: python-avd/pyavd/_cv/api/arista/action/v1/__init__.py
  class ActionLanguage (line 119) | class ActionLanguage(aristaproto.Enum):
  class ActionType (line 142) | class ActionType(aristaproto.Enum):
  class ActionAudit (line 193) | class ActionAudit(aristaproto.Message):
  class ActionKey (line 222) | class ActionKey(aristaproto.Message):
  class ActionArgDefinition (line 233) | class ActionArgDefinition(aristaproto.Message):
  class ActionSchema (line 260) | class ActionSchema(aristaproto.Message):
  class ActionCore (line 271) | class ActionCore(aristaproto.Message):
  class Action (line 298) | class Action(aristaproto.Message):
  class ActionConfig (line 318) | class ActionConfig(aristaproto.Message):
  class ActionArgValue (line 337) | class ActionArgValue(aristaproto.Message):
  class ActionArgValues (line 345) | class ActionArgValues(aristaproto.Message):
  class ActionArgConfig (line 353) | class ActionArgConfig(aristaproto.Message):
  class ActionRunKey (line 371) | class ActionRunKey(aristaproto.Message):
  class ActionRunConfig (line 381) | class ActionRunConfig(aristaproto.Message):
  class ActionRun (line 402) | class ActionRun(aristaproto.Message):
  class MetaResponse (line 453) | class MetaResponse(aristaproto.Message):
  class ActionRequest (line 474) | class ActionRequest(aristaproto.Message):
  class ActionResponse (line 489) | class ActionResponse(aristaproto.Message):
  class ActionSomeRequest (line 506) | class ActionSomeRequest(aristaproto.Message):
  class ActionSomeResponse (line 516) | class ActionSomeResponse(aristaproto.Message):
  class ActionStreamRequest (line 535) | class ActionStreamRequest(aristaproto.Message):
  class ActionStreamResponse (line 566) | class ActionStreamResponse(aristaproto.Message):
  class ActionArgConfigRequest (line 587) | class ActionArgConfigRequest(aristaproto.Message):
  class ActionArgConfigResponse (line 602) | class ActionArgConfigResponse(aristaproto.Message):
  class ActionArgConfigSomeRequest (line 619) | class ActionArgConfigSomeRequest(aristaproto.Message):
  class ActionArgConfigSomeResponse (line 629) | class ActionArgConfigSomeResponse(aristaproto.Message):
  class ActionArgConfigStreamRequest (line 648) | class ActionArgConfigStreamRequest(aristaproto.Message):
  class ActionArgConfigStreamResponse (line 679) | class ActionArgConfigStreamResponse(aristaproto.Message):
  class ActionArgConfigSetRequest (line 702) | class ActionArgConfigSetRequest(aristaproto.Message):
  class ActionArgConfigSetResponse (line 711) | class ActionArgConfigSetResponse(aristaproto.Message):
  class ActionArgConfigSetSomeRequest (line 729) | class ActionArgConfigSetSomeRequest(aristaproto.Message):
  class ActionArgConfigSetSomeResponse (line 742) | class ActionArgConfigSetSomeResponse(aristaproto.Message):
  class ActionArgConfigDeleteRequest (line 748) | class ActionArgConfigDeleteRequest(aristaproto.Message):
  class ActionArgConfigDeleteResponse (line 757) | class ActionArgConfigDeleteResponse(aristaproto.Message):
  class ActionArgConfigDeleteSomeRequest (line 772) | class ActionArgConfigDeleteSomeRequest(aristaproto.Message):
  class ActionArgConfigDeleteSomeResponse (line 778) | class ActionArgConfigDeleteSomeResponse(aristaproto.Message):
  class ActionArgConfigDeleteAllRequest (line 788) | class ActionArgConfigDeleteAllRequest(aristaproto.Message):
  class ActionArgConfigDeleteAllResponse (line 798) | class ActionArgConfigDeleteAllResponse(aristaproto.Message):
  class ActionConfigRequest (line 818) | class ActionConfigRequest(aristaproto.Message):
  class ActionConfigResponse (line 833) | class ActionConfigResponse(aristaproto.Message):
  class ActionConfigSomeRequest (line 850) | class ActionConfigSomeRequest(aristaproto.Message):
  class ActionConfigSomeResponse (line 860) | class ActionConfigSomeResponse(aristaproto.Message):
  class ActionConfigStreamRequest (line 879) | class ActionConfigStreamRequest(aristaproto.Message):
  class ActionConfigStreamResponse (line 910) | class ActionConfigStreamResponse(aristaproto.Message):
  class ActionConfigSetRequest (line 931) | class ActionConfigSetRequest(aristaproto.Message):
  class ActionConfigSetResponse (line 940) | class ActionConfigSetResponse(aristaproto.Message):
  class ActionConfigSetSomeRequest (line 958) | class ActionConfigSetSomeRequest(aristaproto.Message):
  class ActionConfigSetSomeResponse (line 971) | class ActionConfigSetSomeResponse(aristaproto.Message):
  class ActionConfigDeleteRequest (line 977) | class ActionConfigDeleteRequest(aristaproto.Message):
  class ActionConfigDeleteResponse (line 986) | class ActionConfigDeleteResponse(aristaproto.Message):
  class ActionConfigDeleteSomeRequest (line 1001) | class ActionConfigDeleteSomeRequest(aristaproto.Message):
  class ActionConfigDeleteSomeResponse (line 1007) | class ActionConfigDeleteSomeResponse(aristaproto.Message):
  class ActionConfigDeleteAllRequest (line 1015) | class ActionConfigDeleteAllRequest(aristaproto.Message):
  class ActionConfigDeleteAllResponse (line 1025) | class ActionConfigDeleteAllResponse(aristaproto.Message):
  class ActionRunRequest (line 1045) | class ActionRunRequest(aristaproto.Message):
  class ActionRunResponse (line 1060) | class ActionRunResponse(aristaproto.Message):
  class ActionRunSomeRequest (line 1077) | class ActionRunSomeRequest(aristaproto.Message):
  class ActionRunSomeResponse (line 1087) | class ActionRunSomeResponse(aristaproto.Message):
  class ActionRunStreamRequest (line 1106) | class ActionRunStreamRequest(aristaproto.Message):
  class ActionRunStreamResponse (line 1137) | class ActionRunStreamResponse(aristaproto.Message):
  class ActionRunConfigRequest (line 1158) | class ActionRunConfigRequest(aristaproto.Message):
  class ActionRunConfigResponse (line 1173) | class ActionRunConfigResponse(aristaproto.Message):
  class ActionRunConfigSomeRequest (line 1190) | class ActionRunConfigSomeRequest(aristaproto.Message):
  class ActionRunConfigSomeResponse (line 1200) | class ActionRunConfigSomeResponse(aristaproto.Message):
  class ActionRunConfigStreamRequest (line 1219) | class ActionRunConfigStreamRequest(aristaproto.Message):
  class ActionRunConfigStreamResponse (line 1250) | class ActionRunConfigStreamResponse(aristaproto.Message):
  class ActionRunConfigSetRequest (line 1273) | class ActionRunConfigSetRequest(aristaproto.Message):
  class ActionRunConfigSetResponse (line 1282) | class ActionRunConfigSetResponse(aristaproto.Message):
  class ActionRunConfigSetSomeRequest (line 1300) | class ActionRunConfigSetSomeRequest(aristaproto.Message):
  class ActionRunConfigSetSomeResponse (line 1313) | class ActionRunConfigSetSomeResponse(aristaproto.Message):
  class ActionRunConfigDeleteRequest (line 1319) | class ActionRunConfigDeleteRequest(aristaproto.Message):
  class ActionRunConfigDeleteResponse (line 1328) | class ActionRunConfigDeleteResponse(aristaproto.Message):
  class ActionRunConfigDeleteSomeRequest (line 1343) | class ActionRunConfigDeleteSomeRequest(aristaproto.Message):
  class ActionRunConfigDeleteSomeResponse (line 1349) | class ActionRunConfigDeleteSomeResponse(aristaproto.Message):
  class ActionRunConfigDeleteAllRequest (line 1359) | class ActionRunConfigDeleteAllRequest(aristaproto.Message):
  class ActionRunConfigDeleteAllResponse (line 1369) | class ActionRunConfigDeleteAllResponse(aristaproto.Message):
  class ActionServiceStub (line 1388) | class ActionServiceStub(aristaproto.ServiceStub):
    method get_one (line 1389) | async def get_one(
    method get_some (line 1406) | async def get_some(
    method get_all (line 1424) | async def get_all(
    method subscribe (line 1442) | async def subscribe(
    method get_meta (line 1460) | async def get_meta(
    method subscribe_meta (line 1477) | async def subscribe_meta(
  class ActionArgConfigServiceStub (line 1496) | class ActionArgConfigServiceStub(aristaproto.ServiceStub):
    method get_one (line 1497) | async def get_one(
    method get_some (line 1514) | async def get_some(
    method get_all (line 1532) | async def get_all(
    method subscribe (line 1550) | async def subscribe(
    method get_meta (line 1568) | async def get_meta(
    method subscribe_meta (line 1585) | async def subscribe_meta(
    method set (line 1603) | async def set(
    method set_some (line 1620) | async def set_some(
    method delete (line 1638) | async def delete(
    method delete_some (line 1655) | async def delete_some(
    method delete_all (line 1673) | async def delete_all(
  class ActionConfigServiceStub (line 1692) | class ActionConfigServiceStub(aristaproto.ServiceStub):
    method get_one (line 1693) | async def get_one(
    method get_some (line 1710) | async def get_some(
    method get_all (line 1728) | async def get_all(
    method subscribe (line 1746) | async def subscribe(
    method get_meta (line 1764) | async def get_meta(
    method subscribe_meta (line 1781) | async def subscribe_meta(
    method set (line 1799) | async def set(
    method set_some (line 1816) | async def set_some(
    method delete (line 1834) | async def delete(
    method delete_some (line 1851) | async def delete_some(
    method delete_all (line 1869) | async def delete_all(
  class ActionRunServiceStub (line 1888) | class ActionRunServiceStub(aristaproto.ServiceStub):
    method get_one (line 1889) | async def get_one(
    method get_some (line 1906) | async def get_some(
    method get_all (line 1924) | async def get_all(
    method subscribe (line 1942) | async def subscribe(
    method get_meta (line 1960) | async def get_meta(
    method subscribe_meta (line 1977) | async def subscribe_meta(
  class ActionRunConfigServiceStub (line 1996) | class ActionRunConfigServiceStub(aristaproto.ServiceStub):
    method get_one (line 1997) | async def get_one(
    method get_some (line 2014) | async def get_some(
    method get_all (line 2032) | async def get_all(
    method subscribe (line 2050) | async def subscribe(
    method get_meta (line 2068) | async def get_meta(
    method subscribe_meta (line 2085) | async def subscribe_meta(
    method set (line 2103) | async def set(
    method set_some (line 2120) | async def set_some(
    method delete (line 2138) | async def delete(
    method delete_some (line 2155) | async def delete_some(
    method delete_all (line 2173) | async def delete_all(
  class ActionServiceBase (line 2197) | class ActionServiceBase(ServiceBase):
    method get_one (line 2198) | async def get_one(self, action_request: "ActionRequest") -> "ActionRes...
    method get_some (line 2201) | async def get_some(self, action_some_request: "ActionSomeRequest") -> ...
    method get_all (line 2204) | async def get_all(self, action_stream_request: "ActionStreamRequest") ...
    method subscribe (line 2207) | async def subscribe(self, action_stream_request: "ActionStreamRequest"...
    method get_meta (line 2210) | async def get_meta(self, action_stream_request: "ActionStreamRequest")...
    method subscribe_meta (line 2213) | async def subscribe_meta(self, action_stream_request: "ActionStreamReq...
    method __rpc_get_one (line 2216) | async def __rpc_get_one(self, stream: "grpclib.server.Stream[ActionReq...
    method __rpc_get_some (line 2221) | async def __rpc_get_some(self, stream: "grpclib.server.Stream[ActionSo...
    method __rpc_get_all (line 2229) | async def __rpc_get_all(self, stream: "grpclib.server.Stream[ActionStr...
    method __rpc_subscribe (line 2237) | async def __rpc_subscribe(self, stream: "grpclib.server.Stream[ActionS...
    method __rpc_get_meta (line 2245) | async def __rpc_get_meta(self, stream: "grpclib.server.Stream[ActionSt...
    method __rpc_subscribe_meta (line 2250) | async def __rpc_subscribe_meta(self, stream: "grpclib.server.Stream[Ac...
    method __mapping__ (line 2258) | def __mapping__(self) -> Dict[str, grpclib.const.Handler]:
  class ActionArgConfigServiceBase (line 2299) | class ActionArgConfigServiceBase(ServiceBase):
    method get_one (line 2300) | async def get_one(self, action_arg_config_request: "ActionArgConfigReq...
    method get_some (line 2303) | async def get_some(self, action_arg_config_some_request: "ActionArgCon...
    method get_all (line 2306) | async def get_all(self, action_arg_config_stream_request: "ActionArgCo...
    method subscribe (line 2309) | async def subscribe(self, action_arg_config_stream_request: "ActionArg...
    method get_meta (line 2312) | async def get_meta(self, action_arg_config_stream_request: "ActionArgC...
    method subscribe_meta (line 2315) | async def subscribe_meta(self, action_arg_config_stream_request: "Acti...
    method set (line 2318) | async def set(self, action_arg_config_set_request: "ActionArgConfigSet...
    method set_some (line 2321) | async def set_some(self, action_arg_config_set_some_request: "ActionAr...
    method delete (line 2324) | async def delete(self, action_arg_config_delete_request: "ActionArgCon...
    method delete_some (line 2327) | async def delete_some(self, action_arg_config_delete_some_request: "Ac...
    method delete_all (line 2330) | async def delete_all(self, action_arg_config_delete_all_request: "Acti...
    method __rpc_get_one (line 2333) | async def __rpc_get_one(self, stream: "grpclib.server.Stream[ActionArg...
    method __rpc_get_some (line 2338) | async def __rpc_get_some(self, stream: "grpclib.server.Stream[ActionAr...
    method __rpc_get_all (line 2346) | async def __rpc_get_all(self, stream: "grpclib.server.Stream[ActionArg...
    method __rpc_subscribe (line 2354) | async def __rpc_subscribe(self, stream: "grpclib.server.Stream[ActionA...
    method __rpc_get_meta (line 2362) | async def __rpc_get_meta(self, stream: "grpclib.server.Stream[ActionAr...
    method __rpc_subscribe_meta (line 2367) | async def __rpc_subscribe_meta(self, stream: "grpclib.server.Stream[Ac...
    method __rpc_set (line 2375) | async def __rpc_set(self, stream: "grpclib.server.Stream[ActionArgConf...
    method __rpc_set_some (line 2380) | async def __rpc_set_some(self, stream: "grpclib.server.Stream[ActionAr...
    method __rpc_delete (line 2388) | async def __rpc_delete(self, stream: "grpclib.server.Stream[ActionArgC...
    method __rpc_delete_some (line 2393) | async def __rpc_delete_some(self, stream: "grpclib.server.Stream[Actio...
    method __rpc_delete_all (line 2401) | async def __rpc_delete_all(self, stream: "grpclib.server.Stream[Action...
    method __mapping__ (line 2409) | def __mapping__(self) -> Dict[str, grpclib.const.Handler]:
  class ActionConfigServiceBase (line 2480) | class ActionConfigServiceBase(ServiceBase):
    method get_one (line 2481) | async def get_one(self, action_config_request: "ActionConfigRequest") ...
    method get_some (line 2484) | async def get_some(self, action_config_some_request: "ActionConfigSome...
    method get_all (line 2487) | async def get_all(self, action_config_stream_request: "ActionConfigStr...
    method subscribe (line 2490) | async def subscribe(self, action_config_stream_request: "ActionConfigS...
    method get_meta (line 2493) | async def get_meta(self, action_config_stream_request: "ActionConfigSt...
    method subscribe_meta (line 2496) | async def subscribe_meta(self, action_config_stream_request: "ActionCo...
    method set (line 2499) | async def set(self, action_config_set_request: "ActionConfigSetRequest...
    method set_some (line 2502) | async def set_some(self, action_config_set_some_request: "ActionConfig...
    method delete (line 2505) | async def delete(self, action_config_delete_request: "ActionConfigDele...
    method delete_some (line 2508) | async def delete_some(self, action_config_delete_some_request: "Action...
    method delete_all (line 2511) | async def delete_all(self, action_config_delete_all_request: "ActionCo...
    method __rpc_get_one (line 2514) | async def __rpc_get_one(self, stream: "grpclib.server.Stream[ActionCon...
    method __rpc_get_some (line 2519) | async def __rpc_get_some(self, stream: "grpclib.server.Stream[ActionCo...
    method __rpc_get_all (line 2527) | async def __rpc_get_all(self, stream: "grpclib.server.Stream[ActionCon...
    method __rpc_subscribe (line 2535) | async def __rpc_subscribe(self, stream: "grpclib.server.Stream[ActionC...
    method __rpc_get_meta (line 2543) | async def __rpc_get_meta(self, stream: "grpclib.server.Stream[ActionCo...
    method __rpc_subscribe_meta (line 2548) | async def __rpc_subscribe_meta(self, stream: "grpclib.server.Stream[Ac...
    method __rpc_set (line 2556) | async def __rpc_set(self, stream: "grpclib.server.Stream[ActionConfigS...
    method __rpc_set_some (line 2561) | async def __rpc_set_some(self, stream: "grpclib.server.Stream[ActionCo...
    method __rpc_delete (line 2569) | async def __rpc_delete(self, stream: "grpclib.server.Stream[ActionConf...
    method __rpc_delete_some (line 2574) | async def __rpc_delete_some(self, stream: "grpclib.server.Stream[Actio...
    method __rpc_delete_all (line 2582) | async def __rpc_delete_all(self, stream: "grpclib.server.Stream[Action...
    method __mapping__ (line 2590) | def __mapping__(self) -> Dict[str, grpclib.const.Handler]:
  class ActionRunServiceBase (line 2661) | class ActionRunServiceBase(ServiceBase):
    method get_one (line 2662) | async def get_one(self, action_run_request: "ActionRunRequest") -> "Ac...
    method get_some (line 2665) | async def get_some(self, action_run_some_request: "ActionRunSomeReques...
    method get_all (line 2668) | async def get_all(self, action_run_stream_request: "ActionRunStreamReq...
    method subscribe (line 2671) | async def subscribe(self, action_run_stream_request: "ActionRunStreamR...
    method get_meta (line 2674) | async def get_meta(self, action_run_stream_request: "ActionRunStreamRe...
    method subscribe_meta (line 2677) | async def subscribe_meta(self, action_run_stream_request: "ActionRunSt...
    method __rpc_get_one (line 2680) | async def __rpc_get_one(self, stream: "grpclib.server.Stream[ActionRun...
    method __rpc_get_some (line 2685) | async def __rpc_get_some(self, stream: "grpclib.server.Stream[ActionRu...
    method __rpc_get_all (line 2693) | async def __rpc_get_all(self, stream: "grpclib.server.Stream[ActionRun...
    method __rpc_subscribe (line 2701) | async def __rpc_subscribe(self, stream: "grpclib.server.Stream[ActionR...
    method __rpc_get_meta (line 2709) | async def __rpc_get_meta(self, stream: "grpclib.server.Stream[ActionRu...
    method __rpc_subscribe_meta (line 2714) | async def __rpc_subscribe_meta(self, stream: "grpclib.server.Stream[Ac...
    method __mapping__ (line 2722) | def __mapping__(self) -> Dict[str, grpclib.const.Handler]:
  class ActionRunConfigServiceBase (line 2763) | class ActionRunConfigServiceBase(ServiceBase):
    method get_one (line 2764) | async def get_one(self, action_run_config_request: "ActionRunConfigReq...
    method get_some (line 2767) | async def get_some(self, action_run_config_some_request: "ActionRunCon...
    method get_all (line 2770) | async def get_all(self, action_run_config_stream_request: "ActionRunCo...
    method subscribe (line 2773) | async def subscribe(self, action_run_config_stream_request: "ActionRun...
    method get_meta (line 2776) | async def get_meta(self, action_run_config_stream_request: "ActionRunC...
    method subscribe_meta (line 2779) | async def subscribe_meta(self, action_run_config_stream_request: "Acti...
    method set (line 2782) | async def set(self, action_run_config_set_request: "ActionRunConfigSet...
    method set_some (line 2785) | async def set_some(self, action_run_config_set_some_request: "ActionRu...
    method delete (line 2788) | async def delete(self, action_run_config_delete_request: "ActionRunCon...
    method delete_some (line 2791) | async def delete_some(self, action_run_config_delete_some_request: "Ac...
    method delete_all (line 2794) | async def delete_all(self, action_run_config_delete_all_request: "Acti...
    method __rpc_get_one (line 2797) | async def __rpc_get_one(self, stream: "grpclib.server.Stream[ActionRun...
    method __rpc_get_some (line 2802) | async def __rpc_get_some(self, stream: "grpclib.server.Stream[ActionRu...
    method __rpc_get_all (line 2810) | async def __rpc_get_all(self, stream: "grpclib.server.Stream[ActionRun...
    method __rpc_subscribe (line 2818) | async def __rpc_subscribe(self, stream: "grpclib.server.Stream[ActionR...
    method __rpc_get_meta (line 2826) | async def __rpc_get_meta(self, stream: "grpclib.server.Stream[ActionRu...
    method __rpc_subscribe_meta (line 2831) | async def __rpc_subscribe_meta(self, stream: "grpclib.server.Stream[Ac...
    method __rpc_set (line 2839) | async def __rpc_set(self, stream: "grpclib.server.Stream[ActionRunConf...
    method __rpc_set_some (line 2844) | async def __rpc_set_some(self, stream: "grpclib.server.Stream[ActionRu...
    method __rpc_delete (line 2852) | async def __rpc_delete(self, stream: "grpclib.server.Stream[ActionRunC...
    method __rpc_delete_some (line 2857) | async def __rpc_delete_some(self, stream: "grpclib.server.Stream[Actio...
    method __rpc_delete_all (line 2865) | async def __rpc_delete_all(self, stream: "grpclib.server.Stream[Action...
    method __mapping__ (line 2873) | def __mapping__(self) -> Dict[str, grpclib.const.Handler]:

FILE: python-avd/pyavd/_cv/api/arista/alert/v1/__init__.py
  class ConfigErrorType (line 184) | class ConfigErrorType(aristaproto.Enum):
  class EndpointType (line 221) | class EndpointType(aristaproto.Enum):
  class EndpointErrorType (line 290) | class EndpointErrorType(aristaproto.Enum):
  class CueSyslogMessageFormat (line 368) | class CueSyslogMessageFormat(aristaproto.Enum):
  class SnmpSecurityLevel (line 386) | class SnmpSecurityLevel(aristaproto.Enum):
  class SnmpAuthProtocol (line 402) | class SnmpAuthProtocol(aristaproto.Enum):
  class SnmpPrivProtocol (line 427) | class SnmpPrivProtocol(aristaproto.Enum):
  class CueSnmpAuthProtocol (line 452) | class CueSnmpAuthProtocol(aristaproto.Enum):
  class CueSnmpPrivProtocol (line 467) | class CueSnmpPrivProtocol(aristaproto.Enum):
  class TemplateType (line 480) | class TemplateType(aristaproto.Enum):
  class TemplateOutput (line 586) | class TemplateOutput(aristaproto.Enum):
  class AlertConfig (line 609) | class AlertConfig(aristaproto.Message):
  class Alert (line 626) | class Alert(aristaproto.Message):
  class ConfigErrors (line 647) | class ConfigErrors(aristaproto.Message):
  class ConfigError (line 655) | class ConfigError(aristaproto.Message):
  class SenderStatusKey (line 677) | class SenderStatusKey(aristaproto.Message):
  class SenderStatus (line 694) | class SenderStatus(aristaproto.Message):
  class EventIdentifiers (line 737) | class EventIdentifiers(aristaproto.Message):
  class EventIdentifier (line 745) | class EventIdentifier(aristaproto.Message):
  class EventFilter (line 775) | class EventFilter(aristaproto.Message):
  class EndpointErrors (line 800) | class EndpointErrors(aristaproto.Message):
  class EndpointError (line 808) | class EndpointError(aristaproto.Message):
  class Settings (line 842) | class Settings(aristaproto.Message):
  class EmailSettings (line 925) | class EmailSettings(aristaproto.Message):
  class AzureOAuth (line 960) | class AzureOAuth(aristaproto.Message):
  class HttpSettings (line 986) | class HttpSettings(aristaproto.Message):
  class HttpHeaders (line 1007) | class HttpHeaders(aristaproto.Message):
  class HeaderValues (line 1015) | class HeaderValues(aristaproto.Message):
  class SlackSettings (line 1023) | class SlackSettings(aristaproto.Message):
  class VictoropsSettings (line 1031) | class VictoropsSettings(aristaproto.Message):
  class PagerdutySettings (line 1047) | class PagerdutySettings(aristaproto.Message):
  class OpsgenieSettings (line 1057) | class OpsgenieSettings(aristaproto.Message):
  class GoogleChatSettings (line 1068) | class GoogleChatSettings(aristaproto.Message):
  class MsTeamsSettings (line 1078) | class MsTeamsSettings(aristaproto.Message):
  class WebhookSettings (line 1086) | class WebhookSettings(aristaproto.Message):
  class MsGraphSendMailSettings (line 1097) | class MsGraphSendMailSettings(aristaproto.Message):
  class SyslogSettings (line 1119) | class SyslogSettings(aristaproto.Message):
  class Priorities (line 1162) | class Priorities(aristaproto.Message):
  class CueData (line 1179) | class CueData(aristaproto.Message):
  class CueSyslogSettings (line 1189) | class CueSyslogSettings(aristaproto.Message):
  class SnmpSettings (line 1222) | class SnmpSettings(aristaproto.Message):
  class SnmpAuth (line 1255) | class SnmpAuth(aristaproto.Message):
  class CueSnmpAuth (line 1296) | class CueSnmpAuth(aristaproto.Message):
  class CueSnmpSettings (line 1337) | class CueSnmpSettings(aristaproto.Message):
  class SendgridSettings (line 1368) | class SendgridSettings(aristaproto.Message):
  class CueSendgridSettings (line 1381) | class CueSendgridSettings(aristaproto.Message):
  class ZoomSettings (line 1394) | class ZoomSettings(aristaproto.Message):
  class CvActionSettings (line 1405) | class CvActionSettings(aristaproto.Message):
  class InhibitionSettings (line 1414) | class InhibitionSettings(aristaproto.Message):
  class EventList (line 1427) | class EventList(aristaproto.Message):
  class Rules (line 1435) | class Rules(aristaproto.Message):
  class Rule (line 1445) | class Rule(aristaproto.Message):
  class Matches (line 1475) | class Matches(aristaproto.Message):
  class BroadcastGroups (line 1519) | class BroadcastGroups(aristaproto.Message):
  class BroadcastGroup (line 1529) | class BroadcastGroup(aristaproto.Message):
  class EmailEndpoints (line 1637) | class EmailEndpoints(aristaproto.Message):
  class WebhookEndpoints (line 1645) | class WebhookEndpoints(aristaproto.Message):
  class SlackEndpoints (line 1653) | class SlackEndpoints(aristaproto.Message):
  class OpsgenieEndpoints (line 1661) | class OpsgenieEndpoints(aristaproto.Message):
  class PushoverEndpoints (line 1669) | class PushoverEndpoints(aristaproto.Message):
  class PagerdutyEndpoints (line 1677) | class PagerdutyEndpoints(aristaproto.Message):
  class VictorOpsEndpoints (line 1685) | class VictorOpsEndpoints(aristaproto.Message):
  class GoogleChatEndpoints (line 1693) | class GoogleChatEndpoints(aristaproto.Message):
  class MsTeamsEndpoints (line 1701) | class MsTeamsEndpoints(aristaproto.Message):
  class SendgridEndpoints (line 1709) | class SendgridEndpoints(aristaproto.Message):
  class CueSendgridEndpoints (line 1717) | class CueSendgridEndpoints(aristaproto.Message):
  class SyslogEndpoints (line 1725) | class SyslogEndpoints(aristaproto.Message):
  class CueSyslogEndpoints (line 1733) | class CueSyslogEndpoints(aristaproto.Message):
  class SnmpEndpoints (line 1741) | class SnmpEndpoints(aristaproto.Message):
  class CueSnmpEndpoints (line 1749) | class CueSnmpEndpoints(aristaproto.Message):
  class ZoomEndpoints (line 1757) | class ZoomEndpoints(aristaproto.Message):
  class MsGraphSendMailEndpoints (line 1765) | class MsGraphSendMailEndpoints(aristaproto.Message):
  class CvActionEndpoints (line 1775) | class CvActionEndpoints(aristaproto.Message):
  class EmailEndpoint (line 1783) | class EmailEndpoint(aristaproto.Message):
  class WebhookEndpoint (line 1803) | class WebhookEndpoint(aristaproto.Message):
  class MsGraphSendMailEndpoint (line 1839) | class MsGraphSendMailEndpoint(aristaproto.Message):
  class SlackEndpoint (line 1863) | class SlackEndpoint(aristaproto.Message):
  class OpsgenieEndpoint (line 1883) | class OpsgenieEndpoint(aristaproto.Message):
  class PushoverEndpoint (line 1903) | class PushoverEndpoint(aristaproto.Message):
  class PagerdutyEndpoint (line 1930) | class PagerdutyEndpoint(aristaproto.Message):
  class VictorOpsEndpoint (line 1953) | class VictorOpsEndpoint(aristaproto.Message):
  class GoogleChatEndpoint (line 1976) | class GoogleChatEndpoint(aristaproto.Message):
  class MsTeamsEndpoint (line 1996) | class MsTeamsEndpoint(aristaproto.Message):
  class SendgridEndpoint (line 2016) | class SendgridEndpoint(aristaproto.Message):
  class CueSendgridEndpoint (line 2034) | class CueSendgridEndpoint(aristaproto.Message):
  class SyslogEndpoint (line 2055) | class SyslogEndpoint(aristaproto.Message):
  class CueSyslogEndpoint (line 2072) | class CueSyslogEndpoint(aristaproto.Message):
  class SnmpEndpoint (line 2089) | class SnmpEndpoint(aristaproto.Message):
  class CueSnmpEndpoint (line 2106) | class CueSnmpEndpoint(aristaproto.Message):
  class ZoomEndpoint (line 2123) | class ZoomEndpoint(aristaproto.Message):
  class CvActionEndpoint (line 2143) | class CvActionEndpoint(aristaproto.Message):
  class CvActions (line 2163) | class CvActions(aristaproto.Message):
  class CvAction (line 2173) | class CvAction(aristaproto.Message):
  class TemplateKey (line 2183) | class TemplateKey(aristaproto.Message):
  class TemplateConfig (line 2191) | class TemplateConfig(aristaproto.Message):
  class DefaultTemplate (line 2209) | class DefaultTemplate(aristaproto.Message):
  class MetaResponse (line 2256) | class MetaResponse(aristaproto.Message):
  class AlertRequest (line 2277) | class AlertRequest(aristaproto.Message):
  class AlertResponse (line 2286) | class AlertResponse(aristaproto.Message):
  class AlertStreamRequest (line 2303) | class AlertStreamRequest(aristaproto.Message):
  class AlertStreamResponse (line 2323) | class AlertStreamResponse(aristaproto.Message):
  class AlertConfigRequest (line 2344) | class AlertConfigRequest(aristaproto.Message):
  class AlertConfigResponse (line 2353) | class AlertConfigResponse(aristaproto.Message):
  class AlertConfigStreamRequest (line 2370) | class AlertConfigStreamRequest(aristaproto.Message):
  class AlertConfigStreamResponse (line 2390) | class AlertConfigStreamResponse(aristaproto.Message):
  class AlertConfigSetRequest (line 2411) | class AlertConfigSetRequest(aristaproto.Message):
  class AlertConfigSetResponse (line 2420) | class AlertConfigSetResponse(aristaproto.Message):
  class DefaultTemplateRequest (line 2438) | class DefaultTemplateRequest(aristaproto.Message):
  class DefaultTemplateResponse (line 2453) | class DefaultTemplateResponse(aristaproto.Message):
  class DefaultTemplateSomeRequest (line 2470) | class DefaultTemplateSomeRequest(aristaproto.Message):
  class DefaultTemplateSomeResponse (line 2480) | class DefaultTemplateSomeResponse(aristaproto.Message):
  class DefaultTemplateStreamRequest (line 2503) | class DefaultTemplateStreamRequest(aristaproto.Message):
  class DefaultTemplateStreamResponse (line 2523) | class DefaultTemplateStreamResponse(aristaproto.Message):
  class DefaultTemplateBatchedStreamRequest (line 2546) | class DefaultTemplateBatchedStreamRequest(aristaproto.Message):
  class DefaultTemplateBatchedStreamResponse (line 2574) | class DefaultTemplateBatchedStreamResponse(aristaproto.Message):
  class SenderStatusRequest (line 2584) | class SenderStatusRequest(aristaproto.Message):
  class SenderStatusResponse (line 2599) | class SenderStatusResponse(aristaproto.Message):
  class SenderStatusSomeRequest (line 2616) | class SenderStatusSomeRequest(aristaproto.Message):
  class SenderStatusSomeResponse (line 2626) | class SenderStatusSomeResponse(aristaproto.Message):
  class SenderStatusStreamRequest (line 2649) | class SenderStatusStreamRequest(aristaproto.Message):
  class SenderStatusStreamResponse (line 2685) | class SenderStatusStreamResponse(aristaproto.Message):
  class SenderStatusBatchedStreamRequest (line 2706) | class SenderStatusBatchedStreamRequest(aristaproto.Message):
  class SenderStatusBatchedStreamResponse (line 2750) | class SenderStatusBatchedStreamResponse(aristaproto.Message):
  class TemplateConfigRequest (line 2760) | class TemplateConfigRequest(aristaproto.Message):
  class TemplateConfigResponse (line 2775) | class TemplateConfigResponse(aristaproto.Message):
  class TemplateConfigSomeRequest (line 2792) | class TemplateConfigSomeRequest(aristaproto.Message):
  class TemplateConfigSomeResponse (line 2802) | class TemplateConfigSomeResponse(aristaproto.Message):
  class TemplateConfigStreamRequest (line 2825) | class TemplateConfigStreamRequest(aristaproto.Message):
  class TemplateConfigStreamResponse (line 2845) | class TemplateConfigStreamResponse(aristaproto.Message):
  class TemplateConfigBatchedStreamRequest (line 2866) | class TemplateConfigBatchedStreamRequest(aristaproto.Message):
  class TemplateConfigBatchedStreamResponse (line 2894) | class TemplateConfigBatchedStreamResponse(aristaproto.Message):
  class TemplateConfigSetRequest (line 2904) | class TemplateConfigSetRequest(aristaproto.Message):
  class TemplateConfigSetResponse (line 2913) | class TemplateConfigSetResponse(aristaproto.Message):
  class TemplateConfigSetSomeRequest (line 2931) | class TemplateConfigSetSomeRequest(aristaproto.Message):
  class TemplateConfigSetSomeResponse (line 2944) | class TemplateConfigSetSomeResponse(aristaproto.Message):
  class TemplateConfigDeleteRequest (line 2950) | class TemplateConfigDeleteRequest(aristaproto.Message):
  class TemplateConfigDeleteResponse (line 2959) | class TemplateConfigDeleteResponse(aristaproto.Message):
  class TemplateConfigDeleteSomeRequest (line 2974) | class TemplateConfigDeleteSomeRequest(aristaproto.Message):
  class TemplateConfigDeleteSomeResponse (line 2980) | class TemplateConfigDeleteSomeResponse(aristaproto.Message):
  class TemplateConfigDeleteAllRequest (line 2990) | class TemplateConfigDeleteAllRequest(aristaproto.Message):
  class TemplateConfigDeleteAllResponse (line 2995) | class TemplateConfigDeleteAllResponse(aristaproto.Message):
  class AlertServiceStub (line 3014) | class AlertServiceStub(aristaproto.ServiceStub):
    method get_one (line 3015) | async def get_one(
    method get_all (line 3032) | async def get_all(
    method subscribe (line 3050) | async def subscribe(
    method subscribe_meta (line 3068) | async def subscribe_meta(
  class AlertConfigServiceStub (line 3087) | class AlertConfigServiceStub(aristaproto.ServiceStub):
    method get_one (line 3088) | async def get_one(
    method get_all (line 3105) | async def get_all(
    method subscribe (line 3123) | async def subscribe(
    method subscribe_meta (line 3141) | async def subscribe_meta(
    method set (line 3159) | async def set(
  class DefaultTemplateServiceStub (line 3177) | class DefaultTemplateServiceStub(aristaproto.ServiceStub):
    method get_one (line 3178) | async def get_one(
    method get_some (line 3195) | async def get_some(
    method get_all (line 3213) | async def get_all(
    method subscribe (line 3231) | async def subscribe(
    method get_meta (line 3249) | async def get_meta(
    method subscribe_meta (line 3266) | async def subscribe_meta(
    method get_all_batched (line 3284) | async def get_all_batched(
    method subscribe_batched (line 3302) | async def subscribe_batched(
  class SenderStatusServiceStub (line 3321) | class SenderStatusServiceStub(aristaproto.ServiceStub):
    method get_one (line 3322) | async def get_one(
    method get_some (line 3339) | async def get_some(
    method get_all (line 3357) | async def get_all(
    method subscribe (line 3375) | async def subscribe(
    method get_meta (line 3393) | async def get_meta(
    method subscribe_meta (line 3410) | async def subscribe_meta(
    method get_all_batched (line 3428) | async def get_all_batched(
    method subscribe_batched (line 3446) | async def subscribe_batched(
  class TemplateConfigServiceStub (line 3465) | class TemplateConfigServiceStub(aristaproto.ServiceStub):
    method get_one (line 3466) | async def get_one(
    method get_some (line 3483) | async def get_some(
    method get_all (line 3501) | async def get_all(
    method subscribe (line 3519) | async def subscribe(
    method get_meta (line 3537) | async def get_meta(
    method subscribe_meta (line 3554) | async def subscribe_meta(
    method set (line 3572) | async def set(
    method set_some (line 3589) | async def set_some(
    method delete (line 3607) | async def delete(
    method delete_some (line 3624) | async def delete_some(
    method delete_all (line 3642) | async def delete_all(
    method get_all_batched (line 3660) | async def get_all_batched(
    method subscribe_batched (line 3678) | async def subscribe_batched(
  class AlertServiceBase (line 3702) | class AlertServiceBase(ServiceBase):
    method get_one (line 3703) | async def get_one(self, alert_request: "AlertRequest") -> "AlertRespon...
    method get_all (line 3706) | async def get_all(self, alert_stream_request: "AlertStreamRequest") ->...
    method subscribe (line 3709) | async def subscribe(self, alert_stream_request: "AlertStreamRequest") ...
    method subscribe_meta (line 3712) | async def subscribe_meta(self, alert_stream_request: "AlertStreamReque...
    method __rpc_get_one (line 3715) | async def __rpc_get_one(self, stream: "grpclib.server.Stream[AlertRequ...
    method __rpc_get_all (line 3720) | async def __rpc_get_all(self, stream: "grpclib.server.Stream[AlertStre...
    method __rpc_subscribe (line 3728) | async def __rpc_subscribe(self, stream: "grpclib.server.Stream[AlertSt...
    method __rpc_subscribe_meta (line 3736) | async def __rpc_subscribe_meta(self, stream: "grpclib.server.Stream[Al...
    method __mapping__ (line 3744) | def __mapping__(self) -> Dict[str, grpclib.const.Handler]:
  class AlertConfigServiceBase (line 3773) | class AlertConfigServiceBase(ServiceBase):
    method get_one (line 3774) | async def get_one(self, alert_config_request: "AlertConfigRequest") ->...
    method get_all (line 3777) | async def get_all(self, alert_config_stream_request: "AlertConfigStrea...
    method subscribe (line 3780) | async def subscribe(self, alert_config_stream_request: "AlertConfigStr...
    method subscribe_meta (line 3783) | async def subscribe_meta(self, alert_config_stream_request: "AlertConf...
    method set (line 3786) | async def set(self, alert_config_set_request: "AlertConfigSetRequest")...
    method __rpc_get_one (line 3789) | async def __rpc_get_one(self, stream: "grpclib.server.Stream[AlertConf...
    method __rpc_get_all (line 3794) | async def __rpc_get_all(self, stream: "grpclib.server.Stream[AlertConf...
    method __rpc_subscribe (line 3802) | async def __rpc_subscribe(self, stream: "grpclib.server.Stream[AlertCo...
    method __rpc_subscribe_meta (line 3810) | async def __rpc_subscribe_meta(self, stream: "grpclib.server.Stream[Al...
    method __rpc_set (line 3818) | async def __rpc_set(self, stream: "grpclib.server.Stream[AlertConfigSe...
    method __mapping__ (line 3823) | def __mapping__(self) -> Dict[str, grpclib.const.Handler]:
  class DefaultTemplateServiceBase (line 3858) | class DefaultTemplateServiceBase(ServiceBase):
    method get_one (line 3859) | async def get_one(self, default_template_request: "DefaultTemplateRequ...
    method get_some (line 3862) | async def get_some(self, default_template_some_request: "DefaultTempla...
    method get_all (line 3865) | async def get_all(self, default_template_stream_request: "DefaultTempl...
    method subscribe (line 3868) | async def subscribe(self, default_template_stream_request: "DefaultTem...
    method get_meta (line 3871) | async def get_meta(self, default_template_stream_request: "DefaultTemp...
    method subscribe_meta (line 3874) | async def subscribe_meta(self, default_template_stream_request: "Defau...
    method get_all_batched (line 3877) | async def get_all_batched(
    method subscribe_batched (line 3882) | async def subscribe_batched(
    method __rpc_get_one (line 3887) | async def __rpc_get_one(self, stream: "grpclib.server.Stream[DefaultTe...
    method __rpc_get_some (line 3892) | async def __rpc_get_some(self, stream: "grpclib.server.Stream[DefaultT...
    method __rpc_get_all (line 3900) | async def __rpc_get_all(self, stream: "grpclib.server.Stream[DefaultTe...
    method __rpc_subscribe (line 3908) | async def __rpc_subscribe(self, stream: "grpclib.server.Stream[Default...
    method __rpc_get_meta (line 3916) | async def __rpc_get_meta(self, stream: "grpclib.server.Stream[DefaultT...
    method __rpc_subscribe_meta (line 3921) | async def __rpc_subscribe_meta(self, stream: "grpclib.server.Stream[De...
    method __rpc_get_all_batched (line 3929) | async def __rpc_get_all_batched(self, stream: "grpclib.server.Stream[D...
    method __rpc_subscribe_batched (line 3937) | async def __rpc_subscribe_batched(self, stream: "grpclib.server.Stream...
    method __mapping__ (line 3945) | def __mapping__(self) -> Dict[str, grpclib.const.Handler]:
  class SenderStatusServiceBase (line 3998) | class SenderStatusServiceBase(ServiceBase):
    method get_one (line 3999) | async def get_one(self, sender_status_request: "SenderStatusRequest") ...
    method get_some (line 4002) | async def get_some(self, sender_status_some_request: "SenderStatusSome...
    method get_all (line 4005) | async def get_all(self, sender_status_stream_request: "SenderStatusStr...
    method subscribe (line 4008) | async def subscribe(self, sender_status_stream_request: "SenderStatusS...
    method get_meta (line 4011) | async def get_meta(self, sender_status_stream_request: "SenderStatusSt...
    method subscribe_meta (line 4014) | async def subscribe_meta(self, sender_status_stream_request: "SenderSt...
    method get_all_batched (line 4017) | async def get_all_batched(
    method subscribe_batched (line 4022) | async def subscribe_batched(
    method __rpc_get_one (line 4027) | async def __rpc_get_one(self, stream: "grpclib.server.Stream[SenderSta...
    method __rpc_get_some (line 4032) | async def __rpc_get_some(self, stream: "grpclib.server.Stream[SenderSt...
    method __rpc_get_all (line 4040) | async def __rpc_get_all(self, stream: "grpclib.server.Stream[SenderSta...
    method __rpc_subscribe (line 4048) | async def __rpc_subscribe(self, stream: "grpclib.server.Stream[SenderS...
    method __rpc_get_meta (line 4056) | async def __rpc_get_meta(self, stream: "grpclib.server.Stream[SenderSt...
    method __rpc_subscribe_meta (line 4061) | async def __rpc_subscribe_meta(self, stream: "grpclib.server.Stream[Se...
    method __rpc_get_all_batched (line 4069) | async def __rpc_get_all_batched(self, stream: "grpclib.server.Stream[S...
    method __rpc_subscribe_batched (line 4077) | async def __rpc_subscribe_batched(self, stream: "grpclib.server.Stream...
    method __mapping__ (line 4085) | def __mapping__(self) -> Dict[str, grpclib.const.Handler]:
  class TemplateConfigServiceBase (line 4138) | class TemplateConfigServiceBase(ServiceBase):
    method get_one (line 4139) | async def get_one(self, template_config_request: "TemplateConfigReques...
    method get_some (line 4142) | async def get_some(self, template_config_some_request: "TemplateConfig...
    method get_all (line 4145) | async def get_all(self, template_config_stream_request: "TemplateConfi...
    method subscribe (line 4148) | async def subscribe(self, template_config_stream_request: "TemplateCon...
    method get_meta (line 4151) | async def get_meta(self, template_config_stream_request: "TemplateConf...
    method subscribe_meta (line 4154) | async def subscribe_meta(self, template_config_stream_request: "Templa...
    method set (line 4157) | async def set(self, template_config_set_request: "TemplateConfigSetReq...
    method set_some (line 4160) | async def set_some(self, template_config_set_some_request: "TemplateCo...
    method delete (line 4163) | async def delete(self, template_config_delete_request: "TemplateConfig...
    method delete_some (line 4166) | async def delete_some(self, template_config_delete_some_request: "Temp...
    method delete_all (line 4169) | async def delete_all(self, template_config_delete_all_request: "Templa...
    method get_all_batched (line 4172) | async def get_all_batched(
    method subscribe_batched (line 4177) | async def subscribe_batched(
    method __rpc_get_one (line 4182) | async def __rpc_get_one(self, stream: "grpclib.server.Stream[TemplateC...
    method __rpc_get_some (line 4187) | async def __rpc_get_some(self, stream: "grpclib.server.Stream[Template...
    method __rpc_get_all (line 4195) | async def __rpc_get_all(self, stream: "grpclib.server.Stream[TemplateC...
    method __rpc_subscribe (line 4203) | async def __rpc_subscribe(self, stream: "grpclib.server.Stream[Templat...
    method __rpc_get_meta (line 4211) | async def __rpc_get_meta(self, stream: "grpclib.server.Stream[Template...
    method __rpc_subscribe_meta (line 4216) | async def __rpc_subscribe_meta(self, stream: "grpclib.server.Stream[Te...
    method __rpc_set (line 4224) | async def __rpc_set(self, stream: "grpclib.server.Stream[TemplateConfi...
    method __rpc_set_some (line 4229) | async def __rpc_set_some(self, stream: "grpclib.server.Stream[Template...
    method __rpc_delete (line 4237) | async def __rpc_delete(self, stream: "grpclib.server.Stream[TemplateCo...
    method __rpc_delete_some (line 4242) | async def __rpc_delete_some(self, stream: "grpclib.server.Stream[Templ...
    method __rpc_delete_all (line 4250) | async def __rpc_delete_all(self, stream: "grpclib.server.Stream[Templa...
    method __rpc_get_all_batched (line 4258) | async def __rpc_get_all_batched(self, stream: "grpclib.server.Stream[T...
    method __rpc_subscribe_batched (line 4266) | async def __rpc_subscribe_batched(self, stream: "grpclib.server.Stream...
    method __mapping__ (line 4274) | def __mapping__(self) -> Dict[str, grpclib.const.Handler]:

FILE: python-avd/pyavd/_cv/api/arista/arista_portal/v1/__init__.py
  class ApiTokenConfig (line 71) | class ApiTokenConfig(aristaproto.Message):
  class ApiToken (line 132) | class ApiToken(aristaproto.Message):
  class ApiProxyConfig (line 163) | class ApiProxyConfig(aristaproto.Message):
  class ApiProxy (line 220) | class ApiProxy(aristaproto.Message):
  class MetaResponse (line 251) | class MetaResponse(aristaproto.Message):
  class ApiProxyRequest (line 272) | class ApiProxyRequest(aristaproto.Message):
  class ApiProxyResponse (line 281) | class ApiProxyResponse(aristaproto.Message):
  class ApiProxyStreamRequest (line 298) | class ApiProxyStreamRequest(aristaproto.Message):
  class ApiProxyStreamResponse (line 327) | class ApiProxyStreamResponse(aristaproto.Message):
  class ApiProxyConfigRequest (line 348) | class ApiProxyConfigRequest(aristaproto.Message):
  class ApiProxyConfigResponse (line 357) | class ApiProxyConfigResponse(aristaproto.Message):
  class ApiProxyConfigStreamRequest (line 374) | class ApiProxyConfigStreamRequest(aristaproto.Message):
  class ApiProxyConfigStreamResponse (line 403) | class ApiProxyConfigStreamResponse(aristaproto.Message):
  class ApiProxyConfigSetRequest (line 424) | class ApiProxyConfigSetRequest(aristaproto.Message):
  class ApiProxyConfigSetResponse (line 433) | class ApiProxyConfigSetResponse(aristaproto.Message):
  class ApiProxyConfigDeleteRequest (line 451) | class ApiProxyConfigDeleteRequest(aristaproto.Message):
  class ApiProxyConfigDeleteResponse (line 456) | class ApiProxyConfigDeleteResponse(aristaproto.Message):
  class ApiTokenRequest (line 468) | class ApiTokenRequest(aristaproto.Message):
  class ApiTokenResponse (line 477) | class ApiTokenResponse(aristaproto.Message):
  class ApiTokenStreamRequest (line 494) | class ApiTokenStreamRequest(aristaproto.Message):
  class ApiTokenStreamResponse (line 523) | class ApiTokenStreamResponse(aristaproto.Message):
  class ApiTokenConfigRequest (line 544) | class ApiTokenConfigRequest(aristaproto.Message):
  class ApiTokenConfigResponse (line 553) | class ApiTokenConfigResponse(aristaproto.Message):
  class ApiTokenConfigStreamRequest (line 570) | class ApiTokenConfigStreamRequest(aristaproto.Message):
  class ApiTokenConfigStreamResponse (line 599) | class ApiTokenConfigStreamResponse(aristaproto.Message):
  class ApiTokenConfigSetRequest (line 620) | class ApiTokenConfigSetRequest(aristaproto.Message):
  class ApiTokenConfigSetResponse (line 629) | class ApiTokenConfigSetResponse(aristaproto.Message):
  class ApiTokenConfigDeleteRequest (line 647) | class ApiTokenConfigDeleteRequest(aristaproto.Message):
  class ApiTokenConfigDeleteResponse (line 652) | class ApiTokenConfigDeleteResponse(aristaproto.Message):
  class ApiProxyServiceStub (line 663) | class ApiProxyServiceStub(aristaproto.ServiceStub):
    method get_one (line 664) | async def get_one(
    method get_all (line 681) | async def get_all(
    method subscribe (line 699) | async def subscribe(
    method subscribe_meta (line 717) | async def subscribe_meta(
  class ApiProxyConfigServiceStub (line 736) | class ApiProxyConfigServiceStub(aristaproto.ServiceStub):
    method get_one (line 737) | async def get_one(
    method get_all (line 754) | async def get_all(
    method subscribe (line 772) | async def subscribe(
    method subscribe_meta (line 790) | async def subscribe_meta(
    method set (line 808) | async def set(
    method delete (line 825) | async def delete(
  class ApiTokenServiceStub (line 843) | class ApiTokenServiceStub(aristaproto.ServiceStub):
    method get_one (line 844) | async def get_one(
    method get_all (line 861) | async def get_all(
    method subscribe (line 879) | async def subscribe(
    method subscribe_meta (line 897) | async def subscribe_meta(
  class ApiTokenConfigServiceStub (line 916) | class ApiTokenConfigServiceStub(aristaproto.ServiceStub):
    method get_one (line 917) | async def get_one(
    method get_all (line 934) | async def get_all(
    method subscribe (line 952) | async def subscribe(
    method subscribe_meta (line 970) | async def subscribe_meta(
    method set (line 988) | async def set(
    method delete (line 1005) | async def delete(
  class ApiProxyServiceBase (line 1027) | class ApiProxyServiceBase(ServiceBase):
    method get_one (line 1028) | async def get_one(self, api_proxy_request: "ApiProxyRequest") -> "ApiP...
    method get_all (line 1031) | async def get_all(self, api_proxy_stream_request: "ApiProxyStreamReque...
    method subscribe (line 1034) | async def subscribe(self, api_proxy_stream_request: "ApiProxyStreamReq...
    method subscribe_meta (line 1037) | async def subscribe_meta(self, api_proxy_stream_request: "ApiProxyStre...
    method __rpc_get_one (line 1040) | async def __rpc_get_one(self, stream: "grpclib.server.Stream[ApiProxyR...
    method __rpc_get_all (line 1045) | async def __rpc_get_all(self, stream: "grpclib.server.Stream[ApiProxyS...
    method __rpc_subscribe (line 1053) | async def __rpc_subscribe(self, stream: "grpclib.server.Stream[ApiProx...
    method __rpc_subscribe_meta (line 1061) | async def __rpc_subscribe_meta(self, stream: "grpclib.server.Stream[Ap...
    method __mapping__ (line 1069) | def __mapping__(self) -> Dict[str, grpclib.const.Handler]:
  class ApiProxyConfigServiceBase (line 1098) | class ApiProxyConfigServiceBase(ServiceBase):
    method get_one (line 1099) | async def get_one(self, api_proxy_config_request: "ApiProxyConfigReque...
    method get_all (line 1102) | async def get_all(self, api_proxy_config_stream_request: "ApiProxyConf...
    method subscribe (line 1105) | async def subscribe(self, api_proxy_config_stream_request: "ApiProxyCo...
    method subscribe_meta (line 1108) | async def subscribe_meta(self, api_proxy_config_stream_request: "ApiPr...
    method set (line 1111) | async def set(self, api_proxy_config_set_request: "ApiProxyConfigSetRe...
    method delete (line 1114) | async def delete(self, api_proxy_config_delete_request: "ApiProxyConfi...
    method __rpc_get_one (line 1117) | async def __rpc_get_one(self, stream: "grpclib.server.Stream[ApiProxyC...
    method __rpc_get_all (line 1122) | async def __rpc_get_all(self, stream: "grpclib.server.Stream[ApiProxyC...
    method __rpc_subscribe (line 1130) | async def __rpc_subscribe(self, stream: "grpclib.server.Stream[ApiProx...
    method __rpc_subscribe_meta (line 1138) | async def __rpc_subscribe_meta(self, stream: "grpclib.server.Stream[Ap...
    method __rpc_set (line 1146) | async def __rpc_set(self, stream: "grpclib.server.Stream[ApiProxyConfi...
    method __rpc_delete (line 1151) | async def __rpc_delete(self, stream: "grpclib.server.Stream[ApiProxyCo...
    method __mapping__ (line 1156) | def __mapping__(self) -> Dict[str, grpclib.const.Handler]:
  class ApiTokenServiceBase (line 1197) | class ApiTokenServiceBase(ServiceBase):
    method get_one (line 1198) | async def get_one(self, api_token_request: "ApiTokenRequest") -> "ApiT...
    method get_all (line 1201) | async def get_all(self, api_token_stream_request: "ApiTokenStreamReque...
    method subscribe (line 1204) | async def subscribe(self, api_token_stream_request: "ApiTokenStreamReq...
    method subscribe_meta (line 1207) | async def subscribe_meta(self, api_token_stream_request: "ApiTokenStre...
    method __rpc_get_one (line 1210) | async def __rpc_get_one(self, stream: "grpclib.server.Stream[ApiTokenR...
    method __rpc_get_all (line 1215) | async def __rpc_get_all(self, stream: "grpclib.server.Stream[ApiTokenS...
    method __rpc_subscribe (line 1223) | async def __rpc_subscribe(self, stream: "grpclib.server.Stream[ApiToke...
    method __rpc_subscribe_meta (line 1231) | async def __rpc_subscribe_meta(self, stream: "grpclib.server.Stream[Ap...
    method __mapping__ (line 1239) | def __mapping__(self) -> Dict[str, grpclib.const.Handler]:
  class ApiTokenConfigServiceBase (line 1268) | class ApiTokenConfigServiceBase(ServiceBase):
    method get_one (line 1269) | async def get_one(self, api_token_config_request: "ApiTokenConfigReque...
    method get_all (line 1272) | async def get_all(self, api_token_config_stream_request: "ApiTokenConf...
    method subscribe (line 1275) | async def subscribe(self, api_token_config_stream_request: "ApiTokenCo...
    method subscribe_meta (line 1278) | async def subscribe_meta(self, api_token_config_stream_request: "ApiTo...
    method set (line 1281) | async def set(self, api_token_config_set_request: "ApiTokenConfigSetRe...
    method delete (line 1284) | async def delete(self, api_token_config_delete_request: "ApiTokenConfi...
    method __rpc_get_one (line 1287) | async def __rpc_get_one(self, stream: "grpclib.server.Stream[ApiTokenC...
    method __rpc_get_all (line 1292) | async def __rpc_get_all(self, stream: "grpclib.server.Stream[ApiTokenC...
    method __rpc_subscribe (line 1300) | async def __rpc_subscribe(self, stream: "grpclib.server.Stream[ApiToke...
    method __rpc_subscribe_meta (line 1308) | async def __rpc_subscribe_meta(self, stream: "grpclib.server.Stream[Ap...
    method __rpc_set (line 1316) | async def __rpc_set(self, stream: "grpclib.server.Stream[ApiTokenConfi...
    method __rpc_delete (line 1321) | async def __rpc_delete(self, stream: "grpclib.server.Stream[ApiTokenCo...
    method __mapping__ (line 1326) | def __mapping__(self) -> Dict[str, grpclib.const.Handler]:

FILE: python-avd/pyavd/_cv/api/arista/asset_manager/v1/__init__.py
  class Source (line 134) | class Source(aristaproto.Enum):
  class AssetType (line 152) | class AssetType(aristaproto.Enum):
  class AccessType (line 171) | class AccessType(aristaproto.Enum):
  class DeviceTenantAssignmentSortableField (line 186) | class DeviceTenantAssignmentSortableField(aristaproto.Enum):
  class LicenseTenantAssignmentSortableField (line 195) | class LicenseTenantAssignmentSortableField(aristaproto.Enum):
  class SalesOrderKey (line 205) | class SalesOrderKey(aristaproto.Message):
  class PurchaseOrder (line 213) | class PurchaseOrder(aristaproto.Message):
  class SalesOrderFilter (line 233) | class SalesOrderFilter(aristaproto.Message):
  class SalesOrder (line 277) | class SalesOrder(aristaproto.Message):
  class UserInfo (line 297) | class UserInfo(aristaproto.Message):
  class DeviceKey (line 311) | class DeviceKey(aristaproto.Message):
  class DeviceTenantAssignment (line 319) | class DeviceTenantAssignment(aristaproto.Message):
  class DeviceTenantAssignConfig (line 397) | class DeviceTenantAssignConfig(aristaproto.Message):
  class LicenseTenantAssignment (line 414) | class LicenseTenantAssignment(aristaproto.Message):
  class LicenseTenantAssignConfig (line 524) | class LicenseTenantAssignConfig(aristaproto.Message):
  class TenantKey (line 541) | class TenantKey(aristaproto.Message):
  class CustomerInfo (line 549) | class CustomerInfo(aristaproto.Message):
  class AllowedTenants (line 575) | class AllowedTenants(aristaproto.Message):
  class MetaResponse (line 619) | class MetaResponse(aristaproto.Message):
  class AllowedTenantsRequest (line 640) | class AllowedTenantsRequest(aristaproto.Message):
  class AllowedTenantsResponse (line 655) | class AllowedTenantsResponse(aristaproto.Message):
  class AllowedTenantsSomeRequest (line 672) | class AllowedTenantsSomeRequest(aristaproto.Message):
  class AllowedTenantsSomeResponse (line 682) | class AllowedTenantsSomeResponse(aristaproto.Message):
  class AllowedTenantsStreamRequest (line 705) | class AllowedTenantsStreamRequest(aristaproto.Message):
  class AllowedTenantsStreamResponse (line 734) | class AllowedTenantsStreamResponse(aristaproto.Message):
  class AllowedTenantsBatchedStreamRequest (line 755) | class AllowedTenantsBatchedStreamRequest(aristaproto.Message):
  class AllowedTenantsBatchedStreamResponse (line 792) | class AllowedTenantsBatchedStreamResponse(aristaproto.Message):
  class DeviceTenantAssignConfigRequest (line 802) | class DeviceTenantAssignConfigRequest(aristaproto.Message):
  class DeviceTenantAssignConfigResponse (line 817) | class DeviceTenantAssignConfigResponse(aristaproto.Message):
  class DeviceTenantAssignConfigSomeRequest (line 834) | class DeviceTenantAssignConfigSomeRequest(aristaproto.Message):
  class DeviceTenantAssignConfigSomeResponse (line 844) | class DeviceTenantAssignConfigSomeResponse(aristaproto.Message):
  class DeviceTenantAssignConfigStreamRequest (line 867) | class DeviceTenantAssignConfigStreamRequest(aristaproto.Message):
  class DeviceTenantAssignConfigStreamResponse (line 896) | class DeviceTenantAssignConfigStreamResponse(aristaproto.Message):
  class DeviceTenantAssignConfigBatchedStreamRequest (line 919) | class DeviceTenantAssignConfigBatchedStreamRequest(aristaproto.Message):
  class DeviceTenantAssignConfigBatchedStreamResponse (line 956) | class DeviceTenantAssignConfigBatchedStreamResponse(aristaproto.Message):
  class DeviceTenantAssignConfigSetRequest (line 966) | class DeviceTenantAssignConfigSetRequest(aristaproto.Message):
  class DeviceTenantAssignConfigSetResponse (line 975) | class DeviceTenantAssignConfigSetResponse(aristaproto.Message):
  class DeviceTenantAssignConfigSetSomeRequest (line 993) | class DeviceTenantAssignConfigSetSomeRequest(aristaproto.Message):
  class DeviceTenantAssignConfigSetSomeResponse (line 1006) | class DeviceTenantAssignConfigSetSomeResponse(aristaproto.Message):
  class DeviceTenantAssignConfigDeleteRequest (line 1012) | class DeviceTenantAssignConfigDeleteRequest(aristaproto.Message):
  class DeviceTenantAssignConfigDeleteResponse (line 1021) | class DeviceTenantAssignConfigDeleteResponse(aristaproto.Message):
  class DeviceTenantAssignConfigDeleteSomeRequest (line 1038) | class DeviceTenantAssignConfigDeleteSomeRequest(aristaproto.Message):
  class DeviceTenantAssignConfigDeleteSomeResponse (line 1044) | class DeviceTenantAssignConfigDeleteSomeResponse(aristaproto.Message):
  class DeviceTenantAssignConfigDeleteAllRequest (line 1054) | class DeviceTenantAssignConfigDeleteAllRequest(aristaproto.Message):
  class DeviceTenantAssignConfigDeleteAllResponse (line 1064) | class DeviceTenantAssignConfigDeleteAllResponse(aristaproto.Message):
  class DeviceTenantAssignmentRequest (line 1084) | class DeviceTenantAssignmentRequest(aristaproto.Message):
  class DeviceTenantAssignmentResponse (line 1099) | class DeviceTenantAssignmentResponse(aristaproto.Message):
  class DeviceTenantAssignmentSomeRequest (line 1116) | class DeviceTenantAssignmentSomeRequest(aristaproto.Message):
  class DeviceTenantAssignmentSomeResponse (line 1126) | class DeviceTenantAssignmentSomeResponse(aristaproto.Message):
  class DeviceTenantAssignmentStreamRequest (line 1149) | class DeviceTenantAssignmentStreamRequest(aristaproto.Message):
  class DeviceTenantAssignmentStreamResponse (line 1178) | class DeviceTenantAssignmentStreamResponse(aristaproto.Message):
  class DeviceTenantAssignmentBatchedStreamRequest (line 1201) | class DeviceTenantAssignmentBatchedStreamRequest(aristaproto.Message):
  class DeviceTenantAssignmentBatchedStreamResponse (line 1238) | class DeviceTenantAssignmentBatchedStreamResponse(aristaproto.Message):
  class DeviceTenantAssignmentPageRequest (line 1248) | class DeviceTenantAssignmentPageRequest(aristaproto.Message):
  class LicenseTenantAssignConfigRequest (line 1295) | class LicenseTenantAssignConfigRequest(aristaproto.Message):
  class LicenseTenantAssignConfigResponse (line 1310) | class LicenseTenantAssignConfigResponse(aristaproto.Message):
  class LicenseTenantAssignConfigSomeRequest (line 1327) | class LicenseTenantAssignConfigSomeRequest(aristaproto.Message):
  class LicenseTenantAssignConfigSomeResponse (line 1337) | class LicenseTenantAssignConfigSomeResponse(aristaproto.Message):
  class LicenseTenantAssignConfigStreamRequest (line 1360) | class LicenseTenantAssignConfigStreamRequest(aristaproto.Message):
  class LicenseTenantAssignConfigStreamResponse (line 1389) | class LicenseTenantAssignConfigStreamResponse(aristaproto.Message):
  class LicenseTenantAssignConfigBatchedStreamRequest (line 1412) | class LicenseTenantAssignConfigBatchedStreamRequest(aristaproto.Message):
  class LicenseTenantAssignConfigBatchedStreamResponse (line 1449) | class LicenseTenantAssignConfigBatchedStreamResponse(aristaproto.Message):
  class LicenseTenantAssignConfigSetRequest (line 1459) | class LicenseTenantAssignConfigSetRequest(aristaproto.Message):
  class LicenseTenantAssignConfigSetResponse (line 1468) | class LicenseTenantAssignConfigSetResponse(aristaproto.Message):
  class LicenseTenantAssignConfigSetSomeRequest (line 1486) | class LicenseTenantAssignConfigSetSomeRequest(aristaproto.Message):
  class LicenseTenantAssignConfigSetSomeResponse (line 1499) | class LicenseTenantAssignConfigSetSomeResponse(aristaproto.Message):
  class LicenseTenantAssignConfigDeleteRequest (line 1505) | class LicenseTenantAssignConfigDeleteRequest(aristaproto.Message):
  class LicenseTenantAssignConfigDeleteResponse (line 1514) | class LicenseTenantAssignConfigDeleteResponse(aristaproto.Message):
  class LicenseTenantAssignConfigDeleteSomeRequest (line 1531) | class LicenseTenantAssignConfigDeleteSomeRequest(aristaproto.Message):
  class LicenseTenantAssignConfigDeleteSomeResponse (line 1537) | class LicenseTenantAssignConfigDeleteSomeResponse(aristaproto.Message):
  class LicenseTenantAssignConfigDeleteAllRequest (line 1547) | class LicenseTenantAssignConfigDeleteAllRequest(aristaproto.Message):
  class LicenseTenantAssignConfigDeleteAllResponse (line 1557) | class LicenseTenantAssignConfigDeleteAllResponse(aristaproto.Message):
  class LicenseTenantAssignmentRequest (line 1577) | class LicenseTenantAssignmentRequest(aristaproto.Message):
  class LicenseTenantAssignmentResponse (line 1592) | class LicenseTenantAssignmentResponse(aristaproto.Message):
  class LicenseTenantAssignmentSomeRequest (line 1609) | class LicenseTenantAssignmentSomeRequest(aristaproto.Message):
  class LicenseTenantAssignmentSomeResponse (line 1619) | class LicenseTenantAssignmentSomeResponse(aristaproto.Message):
  class LicenseTenantAssignmentStreamRequest (line 1642) | class LicenseTenantAssignmentStreamRequest(aristaproto.Message):
  class LicenseTenantAssignmentStreamResponse (line 1671) | class LicenseTenantAssignmentStreamResponse(aristaproto.Message):
  class LicenseTenantAssignmentBatchedStreamRequest (line 1694) | class LicenseTenantAssignmentBatchedStreamRequest(aristaproto.Message):
  class LicenseTenantAssignmentBatchedStreamResponse (line 1731) | class LicenseTenantAssignmentBatchedStreamResponse(aristaproto.Message):
  class LicenseTenantAssignmentPageRequest (line 1741) | class LicenseTenantAssignmentPageRequest(aristaproto.Message):
  class SalesOrderRequest (line 1788) | class SalesOrderRequest(aristaproto.Message):
  class SalesOrderResponse (line 1803) | class SalesOrderResponse(aristaproto.Message):
  class SalesOrderSomeRequest (line 1820) | class SalesOrderSomeRequest(aristaproto.Message):
  class SalesOrderSomeResponse (line 1830) | class SalesOrderSomeResponse(aristaproto.Message):
  class SalesOrderStreamRequest (line 1853) | class SalesOrderStreamRequest(aristaproto.Message):
  class SalesOrderStreamResponse (line 1889) | class SalesOrderStreamResponse(aristaproto.Message):
  class SalesOrderBatchedStreamRequest (line 1910) | class SalesOrderBatchedStreamRequest(aristaproto.Message):
  class SalesOrderBatchedStreamResponse (line 1954) | class SalesOrderBatchedStreamResponse(aristaproto.Message):
  class AllowedTenantsServiceStub (line 1963) | class AllowedTenantsServiceStub(aristaproto.ServiceStub):
    method get_one (line 1964) | async def get_one(
    method get_some (line 1981) | async def get_some(
    method get_all (line 1999) | async def get_all(
    method subscribe (line 2017) | async def subscribe(
    method get_meta (line 2035) | async def get_meta(
    method subscribe_meta (line 2052) | async def subscribe_meta(
    method get_all_batched (line 2070) | async def get_all_batched(
    method subscribe_batched (line 2088) | async def subscribe_batched(
  class DeviceTenantAssignConfigServiceStub (line 2107) | class DeviceTenantAssignConfigServiceStub(aristaproto.ServiceStub):
    method get_one (line 2108) | async def get_one(
    method get_some (line 2125) | async def get_some(
    method get_all (line 2143) | async def get_all(
    method subscribe (line 2161) | async def subscribe(
    method get_meta (line 2179) | async def get_meta(
    method subscribe_meta (line 2196) | async def subscribe_meta(
    method set (line 2214) | async def set(
    method set_some (line 2231) | async def set_some(
    method delete (line 2249) | async def delete(
    method delete_some (line 2266) | async def delete_some(
    method delete_all (line 2284) | async def delete_all(
    method get_all_batched (line 2302) | async def get_all_batched(
    method subscribe_batched (line 2320) | async def subscribe_batched(
  class DeviceTenantAssignmentServiceStub (line 2339) | class DeviceTenantAssignmentServiceStub(aristaproto.ServiceStub):
    method get_one (line 2340) | async def get_one(
    method get_some (line 2357) | async def get_some(
    method get_all (line 2375) | async def get_all(
    method subscribe (line 2393) | async def subscribe(
    method get_meta (line 2411) | async def get_meta(
    method subscribe_meta (line 2428) | async def subscribe_meta(
    method get_all_batched (line 2446) | async def get_all_batched(
    method subscribe_batched (line 2464) | async def subscribe_batched(
    method get_page (line 2482) | async def get_page(
  class LicenseTenantAssignConfigServiceStub (line 2501) | class LicenseTenantAssignConfigServiceStub(aristaproto.ServiceStub):
    method get_one (line 2502) | async def get_one(
    method get_some (line 2519) | async def get_some(
    method get_all (line 2537) | async def get_all(
    method subscribe (line 2555) | async def subscribe(
    method get_meta (line 2573) | async def get_meta(
    method subscribe_meta (line 2590) | async def subscribe_meta(
    method set (line 2608) | async def set(
    method set_some (line 2625) | async def set_some(
    method delete (line 2643) | async def delete(
    method delete_some (line 2660) | async def delete_some(
    method delete_all (line 2678) | async def delete_all(
    method get_all_batched (line 2696) | async def get_all_batched(
    method subscribe_batched (line 2714) | async def subscribe_batched(
  class LicenseTenantAssignmentServiceStub (line 2733) | class LicenseTenantAssignmentServiceStub(aristaproto.ServiceStub):
    method get_one (line 2734) | async def get_one(
    method get_some (line 2751) | async def get_some(
    method get_all (line 2769) | async def get_all(
    method subscribe (line 2787) | async def subscribe(
    method get_meta (line 2805) | async def get_meta(
    method subscribe_meta (line 2822) | async def subscribe_meta(
    method get_all_batched (line 2840) | async def get_all_batched(
    method subscribe_batched (line 2858) | async def subscribe_batched(
    method get_page (line 2876) | async def get_page(
  class SalesOrderServiceStub (line 2895) | class SalesOrderServiceStub(aristaproto.ServiceStub):
    method get_one (line 2896) | async def get_one(
    method get_some (line 2913) | async def get_some(
    method get_all (line 2931) | async def get_all(
    method subscribe (line 2949) | async def subscribe(
    method get_meta (line 2967) | async def get_meta(
    method subscribe_meta (line 2984) | async def subscribe_meta(
    method get_all_batched (line 3002) | async def get_all_batched(
    method subscribe_batched (line 3020) | async def subscribe_batched(
  class AllowedTenantsServiceBase (line 3045) | class AllowedTenantsServiceBase(ServiceBase):
    method get_one (line 3046) | async def get_one(self, allowed_tenants_request: "AllowedTenantsReques...
    method get_some (line 3049) | async def get_some(self, allowed_tenants_some_request: "AllowedTenants...
    method get_all (line 3052) | async def get_all(self, allowed_tenants_stream_request: "AllowedTenant...
    method subscribe (line 3055) | async def subscribe(self, allowed_tenants_stream_request: "AllowedTena...
    method get_meta (line 3058) | async def get_meta(self, allowed_tenants_stream_request: "AllowedTenan...
    method subscribe_meta (line 3061) | async def subscribe_meta(self, allowed_tenants_stream_request: "Allowe...
    method get_all_batched (line 3064) | async def get_all_batched(
    method subscribe_batched (line 3069) | async def subscribe_batched(
    method __rpc_get_one (line 3074) | async def __rpc_get_one(self, stream: "grpclib.server.Stream[AllowedTe...
    method __rpc_get_some (line 3079) | async def __rpc_get_some(self, stream: "grpclib.server.Stream[AllowedT...
    method __rpc_get_all (line 3087) | async def __rpc_get_all(self, stream: "grpclib.server.Stream[AllowedTe...
    method __rpc_subscribe (line 3095) | async def __rpc_subscribe(self, stream: "grpclib.server.Stream[Allowed...
    method __rpc_get_meta (line 3103) | async def __rpc_get_meta(self, stream: "grpclib.server.Stream[AllowedT...
    method __rpc_subscribe_meta (line 3108) | async def __rpc_subscribe_meta(self, stream: "grpclib.server.Stream[Al...
    method __rpc_get_all_batched (line 3116) | async def __rpc_get_all_batched(self, stream: "grpclib.server.Stream[A...
    method __rpc_subscribe_batched (line 3124) | async def __rpc_subscribe_batched(self, stream: "grpclib.server.Stream...
    method __mapping__ (line 3132) | def __mapping__(self) -> Dict[str, grpclib.const.Handler]:
  class DeviceTenantAssignConfigServiceBase (line 3185) | class DeviceTenantAssignConfigServiceBase(ServiceBase):
    method get_one (line 3186) | async def get_one(self, device_tenant_assign_config_request: "DeviceTe...
    method get_some (line 3189) | async def get_some(
    method get_all (line 3194) | async def get_all(
    method subscribe (line 3199) | async def subscribe(
    method get_meta (line 3204) | async def get_meta(self, device_tenant_assign_config_stream_request: "...
    method subscribe_meta (line 3207) | async def subscribe_meta(self, device_tenant_assign_config_stream_requ...
    method set (line 3210) | async def set(self, device_tenant_assign_config_set_request: "DeviceTe...
    method set_some (line 3213) | async def set_some(
    method delete (line 3218) | async def delete(self, device_tenant_assign_config_delete_request: "De...
    method delete_some (line 3221) | async def delete_some(
    method delete_all (line 3226) | async def delete_all(
    method get_all_batched (line 3231) | async def get_all_batched(
    method subscribe_batched (line 3236) | async def subscribe_batched(
    method __rpc_get_one (line 3241) | async def __rpc_get_one(self, stream: "grpclib.server.Stream[DeviceTen...
    method __rpc_get_some (line 3246) | async def __rpc_get_some(self, stream: "grpclib.server.Stream[DeviceTe...
    method __rpc_get_all (line 3254) | async def __rpc_get_all(self, stream: "grpclib.server.Stream[DeviceTen...
    method __rpc_subscribe (line 3262) | async def __rpc_subscribe(self, stream: "grpclib.server.Stream[DeviceT...
    method __rpc_get_meta (line 3270) | async def __rpc_get_meta(self, stream: "grpclib.server.Stream[DeviceTe...
    method __rpc_subscribe_meta (line 3275) | async def __rpc_subscribe_meta(self, stream: "grpclib.server.Stream[De...
    method __rpc_set (line 3283) | async def __rpc_set(self, stream: "grpclib.server.Stream[DeviceTenantA...
    method __rpc_set_some (line 3288) | async def __rpc_set_some(self, stream: "grpclib.server.Stream[DeviceTe...
    method __rpc_delete (line 3296) | async def __rpc_delete(self, stream: "grpclib.server.Stream[DeviceTena...
    method __rpc_delete_some (line 3301) | async def __rpc_delete_some(
    method __rpc_delete_all (line 3311) | async def __rpc_delete_all(
    method __rpc_get_all_batched (line 3321) | async def __rpc_get_all_batched(
    method __rpc_subscribe_batched (line 3331) | async def __rpc_subscribe_batched(
    method __mapping__ (line 3341) | def __mapping__(self) -> Dict[str, grpclib.const.Handler]:
  class DeviceTenantAssignmentServiceBase (line 3424) | class DeviceTenantAssignmentServiceBase(ServiceBase):
    method get_one (line 3425) | async def get_one(self, device_tenant_assignment_request: "DeviceTenan...
    method get_some (line 3428) | async def get_some(self, device_tenant_assignment_some_request: "Devic...
    method get_all (line 3431) | async def get_all(
    method subscribe (line 3436) | async def subscribe(
    method get_meta (line 3441) | async def get_meta(self, device_tenant_assignment_stream_request: "Dev...
    method subscribe_meta (line 3444) | async def subscribe_meta(self, device_tenant_assignment_stream_request...
    method get_all_batched (line 3447) | async def get_all_batched(
    method subscribe_batched (line 3452) | async def subscribe_batched(
    method get_page (line 3457) | async def get_page(self, device_tenant_assignment_page_request: "Devic...
    method __rpc_get_one (line 3460) | async def __rpc_get_one(self, stream: "grpclib.server.Stream[DeviceTen...
    method __rpc_get_some (line 3465) | async def __rpc_get_some(self, stream: "grpclib.server.Stream[DeviceTe...
    method __rpc_get_all (line 3473) | async def __rpc_get_all(self, stream: "grpclib.server.Stream[DeviceTen...
    method __rpc_subscribe (line 3481) | async def __rpc_subscribe(self, stream: "grpclib.server.Stream[DeviceT...
    method __rpc_get_meta (line 3489) | async def __rpc_get_meta(self, stream: "grpclib.server.Stream[DeviceTe...
    method __rpc_subscribe_meta (line 3494) | async def __rpc_subscribe_meta(self, stream: "grpclib.server.Stream[De...
    method __rpc_get_all_batched (line 3502) | async def __rpc_get_all_batched(
    method __rpc_subscribe_batched (line 3512) | async def __rpc_subscribe_batched(
    method __rpc_get_page (line 3522) | async def __rpc_get_page(self, stream: "grpclib.server.Stream[DeviceTe...
    method __mapping__ (line 3530) | def __mapping__(self) -> Dict[str, grpclib.const.Handler]:
  class LicenseTenantAssignConfigServiceBase (line 3589) | class LicenseTenantAssignConfigServiceBase(ServiceBase):
    method get_one (line 3590) | async def get_one(self, license_tenant_assign_config_request: "License...
    method get_some (line 3593) | async def get_some(
    method get_all (line 3598) | async def get_all(
    method subscribe (line 3603) | async def subscribe(
    method get_meta (line 3608) | async def get_meta(self, license_tenant_assign_config_stream_request: ...
    method subscribe_meta (line 3611) | async def subscribe_meta(self, license_tenant_assign_config_stream_req...
    method set (line 3614) | async def set(self, license_tenant_assign_config_set_request: "License...
    method set_some (line 3617) | async def set_some(
    method delete (line 3622) | async def delete(self, license_tenant_assign_config_delete_request: "L...
    method delete_some (line 3625) | async def delete_some(
    method delete_all (line 3630) | async def delete_all(
    method get_all_batched (line 3635) | async def get_all_batched(
    method subscribe_batched (line 3640) | async def subscribe_batched(
    method __rpc_get_one (line 3645) | async def __rpc_get_one(self, stream: "grpclib.server.Stream[LicenseTe...
    method __rpc_get_some (line 3650) | async def __rpc_get_some(self, stream: "grpclib.server.Stream[LicenseT...
    method __rpc_get_all (line 3658) | async def __rpc_get_all(self, stream: "grpclib.server.Stream[LicenseTe...
    method __rpc_subscribe (line 3666) | async def __rpc_subscribe(self, stream: "grpclib.server.Stream[License...
    method __rpc_get_meta (line 3674) | async def __rpc_get_meta(self, stream: "grpclib.server.Stream[LicenseT...
    method __rpc_subscribe_meta (line 3679) | async def __rpc_subscribe_meta(self, stream: "grpclib.server.Stream[Li...
    method __rpc_set (line 3687) | async def __rpc_set(self, stream: "grpclib.server.Stream[LicenseTenant...
    method __rpc_set_some (line 3692) | async def __rpc_set_some(self, stream: "grpclib.server.Stream[LicenseT...
    method __rpc_delete (line 3700) | async def __rpc_delete(self, stream: "grpclib.server.Stream[LicenseTen...
    method __rpc_delete_some (line 3705) | async def __rpc_delete_some(
    method __rpc_delete_all (line 3715) | async def __rpc_delete_all(
    method __rpc_get_all_batched (line 3725) | async def __rpc_get_all_batched(
    method __rpc_subscribe_batched (line 3735) | async def __rpc_subscribe_batched(
    method __mapping__ (line 3745) | def __mapping__(self) -> Dict[str, grpclib.const.Handler]:
  class LicenseTenantAssignmentServiceBase (line 3828) | class LicenseTenantAssignmentServiceBase(ServiceBase):
    method get_one (line 3829) | async def get_one(self, license_tenant_assignment_request: "LicenseTen...
    method get_some (line 3832) | async def get_some(
    method get_all (line 3837) | async def get_all(
    method subscribe (line 3842) | async def subscribe(
    method get_meta (line 3847) | async def get_meta(self, license_tenant_assignment_stream_request: "Li...
    method subscribe_meta (line 3850) | async def subscribe_meta(self, license_tenant_assignment_stream_reques...
    method get_all_batched (line 3853) | async def get_all_batched(
    method subscribe_batched (line 3858) | async def subscribe_batched(
    method get_page (line 3863) | async def get_page(self, license_tenant_assignment_page_request: "Lice...
    method __rpc_get_one (line 3866) | async def __rpc_get_one(self, stream: "grpclib.server.Stream[LicenseTe...
    method __rpc_get_some (line 3871) | async def __rpc_get_some(self, stream: "grpclib.server.Stream[LicenseT...
    method __rpc_get_all (line 3879) | async def __rpc_get_all(self, stream: "grpclib.server.Stream[LicenseTe...
    method __rpc_subscribe (line 3887) | async def __rpc_subscribe(self, stream: "grpclib.server.Stream[License...
    method __rpc_get_meta (line 3895) | async def __rpc_get_meta(self, stream: "grpclib.server.Stream[LicenseT...
    method __rpc_subscribe_meta (line 3900) | async def __rpc_subscribe_meta(self, stream: "grpclib.server.Stream[Li...
    method __rpc_get_all_batched (line 3908) | async def __rpc_get_all_batched(
    method __rpc_subscribe_batched (line 3918) | async def __rpc_subscribe_batched(
    method __rpc_get_page (line 3928) | async def __rpc_get_page(self, stream: "grpclib.server.Stream[LicenseT...
    method __mapping__ (line 3936) | def __mapping__(self) -> Dict[str, grpclib.const.Handler]:
  class SalesOrderServiceBase (line 3995) | class SalesOrderServiceBase(ServiceBase):
    method get_one (line 3996) | async def get_one(self, sales_order_request: "SalesOrderRequest") -> "...
    method get_some (line 3999) | async def get_some(self, sales_order_some_request: "SalesOrderSomeRequ...
    method get_all (line 4002) | async def get_all(self, sales_order_stream_request: "SalesOrderStreamR...
    method subscribe (line 4005) | async def subscribe(self, sales_order_stream_request: "SalesOrderStrea...
    method get_meta (line 4008) | async def get_meta(self, sales_order_stream_request: "SalesOrderStream...
    method subscribe_meta (line 4011) | async def subscribe_meta(self, sales_order_stream_request: "SalesOrder...
    method get_all_batched (line 4014) | async def get_all_batched(self, sales_order_batched_stream_request: "S...
    method subscribe_batched (line 4017) | async def subscribe_batched(self, sales_order_batched_stream_request: ...
    method __rpc_get_one (line 4020) | async def __rpc_get_one(self, stream: "grpclib.server.Stream[SalesOrde...
    method __rpc_get_some (line 4025) | async def __rpc_get_some(self, stream: "grpclib.server.Stream[SalesOrd...
    method __rpc_get_all (line 4033) | async def __rpc_get_all(self, stream: "grpclib.server.Stream[SalesOrde...
    method __rpc_subscribe (line 4041) | async def __rpc_subscribe(self, stream: "grpclib.server.Stream[SalesOr...
    method __rpc_get_meta (line 4049) | async def __rpc_get_meta(self, stream: "grpclib.server.Stream[SalesOrd...
    method __rpc_subscribe_meta (line 4054) | async def __rpc_subscribe_meta(self, stream: "grpclib.server.Stream[Sa...
    method __rpc_get_all_batched (line 4062) | async def __rpc_get_all_batched(self, stream: "grpclib.server.Stream[S...
    method __rpc_subscribe_batched (line 4070) | async def __rpc_subscribe_batched(self, stream: "grpclib.server.Stream...
    method __mapping__ (line 4078) | def __mapping__(self) -> Dict[str, grpclib.const.Handler]:

FILE: python-avd/pyavd/_cv/api/arista/auditlog/v1/__init__.py
  class Severity (line 49) | class Severity(aristaproto.Enum):
  class CategoryType (line 80) | class CategoryType(aristaproto.Enum):
  class Attributes (line 148) | class Attributes(aristaproto.Message):
  class AuditlogKey (line 189) | class AuditlogKey(aristaproto.Message):
  class Auditlog (line 197) | class Auditlog(aristaproto.Message):
  class Filter (line 216) | class Filter(aristaproto.Message):
  class Category (line 250) | class Category(aristaproto.Message):
  class MetaResponse (line 275) | class MetaResponse(aristaproto.Message):
  class AuditlogRequest (line 296) | class AuditlogRequest(aristaproto.Message):
  class AuditlogResponse (line 311) | class AuditlogResponse(aristaproto.Message):
  class AuditlogSomeRequest (line 328) | class AuditlogSomeRequest(aristaproto.Message):
  class AuditlogSomeResponse (line 338) | class AuditlogSomeResponse(aristaproto.Message):
  class AuditlogStreamRequest (line 361) | class AuditlogStreamRequest(aristaproto.Message):
  class AuditlogStreamResponse (line 388) | class AuditlogStreamResponse(aristaproto.Message):
  class AuditlogServiceStub (line 408) | class AuditlogServiceStub(aristaproto.ServiceStub):
    method get_one (line 409) | async def get_one(
    method get_some (line 426) | async def get_some(
    method get_all (line 444) | async def get_all(
    method subscribe (line 462) | async def subscribe(
    method get_meta (line 480) | async def get_meta(
    method subscribe_meta (line 497) | async def subscribe_meta(
  class AuditlogServiceBase (line 521) | class AuditlogServiceBase(ServiceBase):
    method get_one (line 522) | async def get_one(self, auditlog_request: "AuditlogRequest") -> "Audit...
    method get_some (line 525) | async def get_some(self, auditlog_some_request: "AuditlogSomeRequest")...
    method get_all (line 528) | async def get_all(self, auditlog_stream_request: "AuditlogStreamReques...
    method subscribe (line 531) | async def subscribe(self, auditlog_stream_request: "AuditlogStreamRequ...
    method get_meta (line 534) | async def get_meta(self, auditlog_stream_request: "AuditlogStreamReque...
    method subscribe_meta (line 537) | async def subscribe_meta(self, auditlog_stream_request: "AuditlogStrea...
    method __rpc_get_one (line 540) | async def __rpc_get_one(self, stream: "grpclib.server.Stream[AuditlogR...
    method __rpc_get_some (line 545) | async def __rpc_get_some(self, stream: "grpclib.server.Stream[Auditlog...
    method __rpc_get_all (line 553) | async def __rpc_get_all(self, stream: "grpclib.server.Stream[AuditlogS...
    method __rpc_subscribe (line 561) | async def __rpc_subscribe(self, stream: "grpclib.server.Stream[Auditlo...
    method __rpc_get_meta (line 569) | async def __rpc_get_meta(self, stream: "grpclib.server.Stream[Auditlog...
    method __rpc_subscribe_meta (line 574) | async def __rpc_subscribe_meta(self, stream: "grpclib.server.Stream[Au...
    method __mapping__ (line 582) | def __mapping__(self) -> Dict[str, grpclib.const.Handler]:

FILE: python-avd/pyavd/_cv/api/arista/bugexposure/v1/__init__.py
  class Acknowledgement (line 44) | class Acknowledgement(aristaproto.Enum):
  class HighestExposure (line 62) | class HighestExposure(aristaproto.Enum):
  class BugExposureKey (line 87) | class BugExposureKey(aristaproto.Message):
  class BugExposure (line 104) | class BugExposure(aristaproto.Message):
  class MetaResponse (line 154) | class MetaResponse(aristaproto.Message):
  class BugExposureRequest (line 175) | class BugExposureRequest(aristaproto.Message):
  class BugExposureResponse (line 190) | class BugExposureResponse(aristaproto.Message):
  class BugExposureStreamRequest (line 207) | class BugExposureStreamRequest(aristaproto.Message):
  class BugExposureStreamResponse (line 238) | class BugExposureStreamResponse(aristaproto.Message):
  class BugExposureServiceStub (line 258) | class BugExposureServiceStub(aristaproto.ServiceStub):
    method get_one (line 259) | async def get_one(
    method get_all (line 276) | async def get_all(
    method subscribe (line 294) | async def subscribe(
    method get_meta (line 312) | async def get_meta(
    method subscribe_meta (line 329) | async def subscribe_meta(
  class BugExposureServiceBase (line 353) | class BugExposureServiceBase(ServiceBase):
    method get_one (line 354) | async def get_one(self, bug_exposure_request: "BugExposureRequest") ->...
    method get_all (line 357) | async def get_all(self, bug_exposure_stream_request: "BugExposureStrea...
    method subscribe (line 360) | async def subscribe(self, bug_exposure_stream_request: "BugExposureStr...
    method get_meta (line 363) | async def get_meta(self, bug_exposure_stream_request: "BugExposureStre...
    method subscribe_meta (line 366) | async def subscribe_meta(self, bug_exposure_stream_request: "BugExposu...
    method __rpc_get_one (line 369) | async def __rpc_get_one(self, stream: "grpclib.server.Stream[BugExposu...
    method __rpc_get_all (line 374) | async def __rpc_get_all(self, stream: "grpclib.server.Stream[BugExposu...
    method __rpc_subscribe (line 382) | async def __rpc_subscribe(self, stream: "grpclib.server.Stream[BugExpo...
    method __rpc_get_meta (line 390) | async def __rpc_get_meta(self, stream: "grpclib.server.Stream[BugExpos...
    method __rpc_subscribe_meta (line 395) | async def __rpc_subscribe_meta(self, stream: "grpclib.server.Stream[Bu...
    method __mapping__ (line 403) | def __mapping__(self) -> Dict[str, grpclib.const.Handler]:

FILE: python-avd/pyavd/_cv/api/arista/changecontrol/v1/__init__.py
  class StageStatus (line 111) | class StageStatus(aristaproto.Enum):
  class StepStatus (line 132) | class StepStatus(aristaproto.Enum):
  class ChangeControlStatus (line 167) | class ChangeControlStatus(aristaproto.Enum):
  class RepeatedRepeatedString (line 209) | class RepeatedRepeatedString(aristaproto.Message):
  class ChangeControlKey (line 221) | class ChangeControlKey(aristaproto.Message):
  class Action (line 229) | class Action(aristaproto.Message):
  class StageConfig (line 252) | class StageConfig(aristaproto.Message):
  class StageConfigMap (line 284) | class StageConfigMap(aristaproto.Message):
  class ChangeConfig (line 324) | class ChangeConfig(aristaproto.Message):
  class FlagConfig (line 350) | class FlagConfig(aristaproto.Message):
  class TimestampFlagConfig (line 364) | class TimestampFlagConfig(aristaproto.Message):
  class ChangeControlConfig (line 378) | class ChangeControlConfig(aristaproto.Message):
  class StepInfo (line 403) | class StepInfo(aristaproto.Message):
  class ActionSteps (line 422) | class ActionSteps(aristaproto.Message):
  class Stage (line 433) | class Stage(aristaproto.Message):
  class StageMap (line 473) | class StageMap(aristaproto.Message):
  class Change (line 485) | class Change(aristaproto.Message):
  class Flag (line 514) | class Flag(aristaproto.Message):
  class TimestampFlag (line 534) | class TimestampFlag(aristaproto.Message):
  class Creation (line 554) | class Creation(aristaproto.Message):
  class Filter (line 567) | class Filter(aristaproto.Message):
  class DeviceToStageMap (line 579) | class DeviceToStageMap(aristaproto.Message):
  class ChangeControl (line 592) | class ChangeControl(aristaproto.Message):
  class ApproveConfig (line 656) | class ApproveConfig(aristaproto.Message):
  class ActionSummary (line 678) | class ActionSummary(aristaproto.Message):
  class ActionSummaries (line 701) | class ActionSummaries(aristaproto.Message):
  class ChangeControlSummary (line 709) | class ChangeControlSummary(aristaproto.Message):
  class MetaResponse (line 790) | class MetaResponse(aristaproto.Message):
  class ApproveConfigRequest (line 811) | class ApproveConfigRequest(aristaproto.Message):
  class ApproveConfigResponse (line 826) | class ApproveConfigResponse(aristaproto.Message):
  class ApproveConfigSomeRequest (line 843) | class ApproveConfigSomeRequest(aristaproto.Message):
  class ApproveConfigSomeResponse (line 853) | class ApproveConfigSomeResponse(aristaproto.Message):
  class ApproveConfigStreamRequest (line 872) | class ApproveConfigStreamRequest(aristaproto.Message):
  class ApproveConfigStreamResponse (line 903) | class ApproveConfigStreamResponse(aristaproto.Message):
  class ApproveConfigBatchedStreamRequest (line 924) | class ApproveConfigBatchedStreamRequest(aristaproto.Message):
  class ApproveConfigBatchedStreamResponse (line 963) | class ApproveConfigBatchedStreamResponse(aristaproto.Message):
  class ApproveConfigSetRequest (line 973) | class ApproveConfigSetRequest(aristaproto.Message):
  class ApproveConfigSetResponse (line 982) | class ApproveConfigSetResponse(aristaproto.Message):
  class ApproveConfigSetSomeRequest (line 1000) | class ApproveConfigSetSomeRequest(aristaproto.Message):
  class ApproveConfigSetSomeResponse (line 1013) | class ApproveConfigSetSomeResponse(aristaproto.Message):
  class ApproveConfigDeleteRequest (line 1019) | class ApproveConfigDeleteRequest(aristaproto.Message):
  class ApproveConfigDeleteResponse (line 1028) | class ApproveConfigDeleteResponse(aristaproto.Message):
  class ApproveConfigDeleteSomeRequest (line 1043) | class ApproveConfigDeleteSomeRequest(aristaproto.Message):
  class ApproveConfigDeleteSomeResponse (line 1049) | class ApproveConfigDeleteSomeResponse(aristaproto.Message):
  class ApproveConfigDeleteAllRequest (line 1057) | class ApproveConfigDeleteAllRequest(aristaproto.Message):
  class ApproveConfigDeleteAllResponse (line 1067) | class ApproveConfigDeleteAllResponse(aristaproto.Message):
  class ChangeControlRequest (line 1087) | class ChangeControlRequest(aristaproto.Message):
  class ChangeControlResponse (line 1102) | class ChangeControlResponse(aristaproto.Message):
  class ChangeControlSomeRequest (line 1119) | class ChangeControlSomeRequest(aristaproto.Message):
  class ChangeControlSomeResponse (line 1129) | class ChangeControlSomeResponse(aristaproto.Message):
  class ChangeControlStreamRequest (line 1148) | class ChangeControlStreamRequest(aristaproto.Message):
  class ChangeControlStreamResponse (line 1186) | class ChangeControlStreamResponse(aristaproto.Message):
  class ChangeControlBatchedStreamRequest (line 1207) | class ChangeControlBatchedStreamRequest(aristaproto.Message):
  class ChangeControlBatchedStreamResponse (line 1253) | class ChangeControlBatchedStreamResponse(aristaproto.Message):
  class ChangeControlConfigRequest (line 1263) | class ChangeControlConfigRequest(aristaproto.Message):
  class ChangeControlConfigResponse (line 1278) | class ChangeControlConfigResponse(aristaproto.Message):
  class ChangeControlConfigSomeRequest (line 1295) | class ChangeControlConfigSomeRequest(aristaproto.Message):
  class ChangeControlConfigSomeResponse (line 1305) | class ChangeControlConfigSomeResponse(aristaproto.Message):
  class ChangeControlConfigStreamRequest (line 1324) | class ChangeControlConfigStreamRequest(aristaproto.Message):
  class ChangeControlConfigStreamResponse (line 1355) | class ChangeControlConfigStreamResponse(aristaproto.Message):
  class ChangeControlConfigBatchedStreamRequest (line 1378) | class ChangeControlConfigBatchedStreamRequest(aristaproto.Message):
  class ChangeControlConfigBatchedStreamResponse (line 1417) | class ChangeControlConfigBatchedStreamResponse(aristaproto.Message):
  class ChangeControlConfigSetRequest (line 1427) | class ChangeControlConfigSetRequest(aristaproto.Message):
  class ChangeControlConfigSetResponse (line 1436) | class ChangeControlConfigSetResponse(aristaproto.Message):
  class ChangeControlConfigSetSomeRequest (line 1454) | class ChangeControlConfigSetSomeRequest(aristaproto.Message):
  class ChangeControlConfigSetSomeResponse (line 1467) | class ChangeControlConfigSetSomeResponse(aristaproto.Message):
  class ChangeControlConfigDeleteRequest (line 1473) | class ChangeControlConfigDeleteRequest(aristaproto.Message):
  class ChangeControlConfigDeleteResponse (line 1482) | class ChangeControlConfigDeleteResponse(aristaproto.Message):
  class ChangeControlConfigDeleteSomeRequest (line 1497) | class ChangeControlConfigDeleteSomeRequest(aristaproto.Message):
  class ChangeControlConfigDeleteSomeResponse (line 1503) | class ChangeControlConfigDeleteSomeResponse(aristaproto.Message):
  class ChangeControlConfigDeleteAllRequest (line 1513) | class ChangeControlConfigDeleteAllRequest(aristaproto.Message):
  class ChangeControlConfigDeleteAllResponse (line 1523) | class ChangeControlConfigDeleteAllResponse(aristaproto.Message):
  class ApproveConfigServiceStub (line 1542) | class ApproveConfigServiceStub(aristaproto.ServiceStub):
    method get_one (line 1543) | async def get_one(
    method get_some (line 1560) | async def get_some(
    method get_all (line 1578) | async def get_all(
    method subscribe (line 1596) | async def subscribe(
    method get_meta (line 1614) | async def get_meta(
    method subscribe_meta (line 1631) | async def subscribe_meta(
    method set (line 1649) | async def set(
    method set_some (line 1666) | async def set_some(
    method delete (line 1684) | async def delete(
    method delete_some (line 1701) | async def delete_some(
    method delete_all (line 1719) | async def delete_all(
    method get_all_batched (line 1737) | async def get_all_batched(
    method subscribe_batched (line 1755) | async def subscribe_batched(
  class ChangeControlServiceStub (line 1774) | class ChangeControlServiceStub(aristaproto.ServiceStub):
    method get_one (line 1775) | async def get_one(
    method get_some (line 1792) | async def get_some(
    method get_all (line 1810) | async def get_all(
    method subscribe (line 1828) | async def subscribe(
    method get_meta (line 1846) | async def get_meta(
    method subscribe_meta (line 1863) | async def subscribe_meta(
    method get_all_batched (line 1881) | async def get_all_batched(
    method subscribe_batched (line 1899) | async def subscribe_batched(
  class ChangeControlConfigServiceStub (line 1918) | class ChangeControlConfigServiceStub(aristaproto.ServiceStub):
    method get_one (line 1919) | async def get_one(
    method get_some (line 1936) | async def get_some(
    method get_all (line 1954) | async def get_all(
    method subscribe (line 1972) | async def subscribe(
    method get_meta (line 1990) | async def get_meta(
    method subscribe_meta (line 2007) | async def subscribe_meta(
    method set (line 2025) | async def set(
    method set_some (line 2042) | async def set_some(
    method delete (line 2060) | async def delete(
    method delete_some (line 2077) | async def delete_some(
    method delete_all (line 2095) | async def delete_all(
    method get_all_batched (line 2113) | async def get_all_batched(
    method subscribe_batched (line 2131) | async def subscribe_batched(
  class ApproveConfigServiceBase (line 2155) | class ApproveConfigServiceBase(ServiceBase):
    method get_one (line 2156) | async def get_one(self, approve_config_request: "ApproveConfigRequest"...
    method get_some (line 2159) | async def get_some(self, approve_config_some_request: "ApproveConfigSo...
    method get_all (line 2162) | async def get_all(self, approve_config_stream_request: "ApproveConfigS...
    method subscribe (line 2165) | async def subscribe(self, approve_config_stream_request: "ApproveConfi...
    method get_meta (line 2168) | async def get_meta(self, approve_config_stream_request: "ApproveConfig...
    method subscribe_meta (line 2171) | async def subscribe_meta(self, approve_config_stream_request: "Approve...
    method set (line 2174) | async def set(self, approve_config_set_request: "ApproveConfigSetReque...
    method set_some (line 2177) | async def set_some(self, approve_config_set_some_request: "ApproveConf...
    method delete (line 2180) | async def delete(self, approve_config_delete_request: "ApproveConfigDe...
    method delete_some (line 2183) | async def delete_some(self, approve_config_delete_some_request: "Appro...
    method delete_all (line 2186) | async def delete_all(self, approve_config_delete_all_request: "Approve...
    method get_all_batched (line 2189) | async def get_all_batched(
    method subscribe_batched (line 2194) | async def subscribe_batched(
    method __rpc_get_one (line 2199) | async def __rpc_get_one(self, stream: "grpclib.server.Stream[ApproveCo...
    method __rpc_get_some (line 2204) | async def __rpc_get_some(self, stream: "grpclib.server.Stream[ApproveC...
    method __rpc_get_all (line 2212) | async def __rpc_get_all(self, stream: "grpclib.server.Stream[ApproveCo...
    method __rpc_subscribe (line 2220) | async def __rpc_subscribe(self, stream: "grpclib.server.Stream[Approve...
    method __rpc_get_meta (line 2228) | async def __rpc_get_meta(self, stream: "grpclib.server.Stream[ApproveC...
    method __rpc_subscribe_meta (line 2233) | async def __rpc_subscribe_meta(self, stream: "grpclib.server.Stream[Ap...
    method __rpc_set (line 2241) | async def __rpc_set(self, stream: "grpclib.server.Stream[ApproveConfig...
    method __rpc_set_some (line 2246) | async def __rpc_set_some(self, stream: "grpclib.server.Stream[ApproveC...
    method __rpc_delete (line 2254) | async def __rpc_delete(self, stream: "grpclib.server.Stream[ApproveCon...
    method __rpc_delete_some (line 2259) | async def __rpc_delete_some(self, stream: "grpclib.server.Stream[Appro...
    method __rpc_delete_all (line 2267) | async def __rpc_delete_all(self, stream: "grpclib.server.Stream[Approv...
    method __rpc_get_all_batched (line 2275) | async def __rpc_get_all_batched(self, stream: "grpclib.server.Stream[A...
    method __rpc_subscribe_batched (line 2283) | async def __rpc_subscribe_batched(self, stream: "grpclib.server.Stream...
    method __mapping__ (line 2291) | def __mapping__(self) -> Dict[str, grpclib.const.Handler]:
  class ChangeControlServiceBase (line 2374) | class ChangeControlServiceBase(ServiceBase):
    method get_one (line 2375) | async def get_one(self, change_control_request: "ChangeControlRequest"...
    method get_some (line 2378) | async def get_some(self, change_control_some_request: "ChangeControlSo...
    method get_all (line 2381) | async def get_all(self, change_control_stream_request: "ChangeControlS...
    method subscribe (line 2384) | async def subscribe(self, change_control_stream_request: "ChangeContro...
    method get_meta (line 2387) | async def get_meta(self, change_control_stream_request: "ChangeControl...
    method subscribe_meta (line 2390) | async def subscribe_meta(self, change_control_stream_request: "ChangeC...
    method get_all_batched (line 2393) | async def get_all_batched(
    method subscribe_batched (line 2398) | async def subscribe_batched(
    method __rpc_get_one (line 2403) | async def __rpc_get_one(self, stream: "grpclib.server.Stream[ChangeCon...
    method __rpc_get_some (line 2408) | async def __rpc_get_some(self, stream: "grpclib.server.Stream[ChangeCo...
    method __rpc_get_all (line 2416) | async def __rpc_get_all(self, stream: "grpclib.server.Stream[ChangeCon...
    method __rpc_subscribe (line 2424) | async def __rpc_subscribe(self, stream: "grpclib.server.Stream[ChangeC...
    method __rpc_get_meta (line 2432) | async def __rpc_get_meta(self, stream: "grpclib.server.Stream[ChangeCo...
    method __rpc_subscribe_meta (line 2437) | async def __rpc_subscribe_meta(self, stream: "grpclib.server.Stream[Ch...
    method __rpc_get_all_batched (line 2445) | async def __rpc_get_all_batched(self, stream: "grpclib.server.Stream[C...
    method __rpc_subscribe_batched (line 2453) | async def __rpc_subscribe_batched(self, stream: "grpclib.server.Stream...
    method __mapping__ (line 2461) | def __mapping__(self) -> Dict[str, grpclib.const.Handler]:
  class ChangeControlConfigServiceBase (line 2514) | class ChangeControlConfigServiceBase(ServiceBase):
    method get_one (line 2515) | async def get_one(self, change_control_config_request: "ChangeControlC...
    method get_some (line 2518) | async def get_some(self, change_control_config_some_request: "ChangeCo...
    method get_all (line 2521) | async def get_all(self, change_control_config_stream_request: "ChangeC...
    method subscribe (line 2524) | async def subscribe(self, change_control_config_stream_request: "Chang...
    method get_meta (line 2527) | async def get_meta(self, change_control_config_stream_request: "Change...
    method subscribe_meta (line 2530) | async def subscribe_meta(self, change_control_config_stream_request: "...
    method set (line 2533) | async def set(self, change_control_config_set_request: "ChangeControlC...
    method set_some (line 2536) | async def set_some(self, change_control_config_set_some_request: "Chan...
    method delete (line 2539) | async def delete(self, change_control_config_delete_request: "ChangeCo...
    method delete_some (line 2542) | async def delete_some(
    method delete_all (line 2547) | async def delete_all(
    method get_all_batched (line 2552) | async def get_all_batched(
    method subscribe_batched (line 2557) | async def subscribe_batched(
    method __rpc_get_one (line 2562) | async def __rpc_get_one(self, stream: "grpclib.server.Stream[ChangeCon...
    method __rpc_get_some (line 2567) | async def __rpc_get_some(self, stream: "grpclib.server.Stream[ChangeCo...
    method __rpc_get_all (line 2575) | async def __rpc_get_all(self, stream: "grpclib.server.Stream[ChangeCon...
    method __rpc_subscribe (line 2583) | async def __rpc_subscribe(self, stream: "grpclib.server.Stream[ChangeC...
    method __rpc_get_meta (line 2591) | async def __rpc_get_meta(self, stream: "grpclib.server.Stream[ChangeCo...
    method __rpc_subscribe_meta (line 2596) | async def __rpc_subscribe_meta(self, stream: "grpclib.server.Stream[Ch...
    method __rpc_set (line 2604) | async def __rpc_set(self, stream: "grpclib.server.Stream[ChangeControl...
    method __rpc_set_some (line 2609) | async def __rpc_set_some(self, stream: "grpclib.server.Stream[ChangeCo...
    method __rpc_delete (line 2617) | async def __rpc_delete(self, stream: "grpclib.server.Stream[ChangeCont...
    method __rpc_delete_some (line 2622) | async def __rpc_delete_some(self, stream: "grpclib.server.Stream[Chang...
    method __rpc_delete_all (line 2630) | async def __rpc_delete_all(self, stream: "grpclib.server.Stream[Change...
    method __rpc_get_all_batched (line 2638) | async def __rpc_get_all_batched(
    method __rpc_subscribe_batched (line 2648) | async def __rpc_subscribe_batched(
    method __mapping__ (line 2658) | def __mapping__(self) -> Dict[str, grpclib.const.Handler]:

FILE: python-avd/pyavd/_cv/api/arista/configlet/v1/__init__.py
  class MatchPolicy (line 102) | class MatchPolicy(aristaproto.Enum):
  class ConfigletKey (line 123) | class ConfigletKey(aristaproto.Message):
  class Filter (line 137) | class Filter(aristaproto.Message):
  class Configlet (line 145) | class Configlet(aristaproto.Message):
    method __post_init__ (line 190) | def __post_init__(self) -> None:
  class ConfigletConfig (line 197) | class ConfigletConfig(aristaproto.Message):
    method __post_init__ (line 224) | def __post_init__(self) -> None:
  class ConfigletAssignmentKey (line 231) | class ConfigletAssignmentKey(aristaproto.Message):
  class ConfigletAssignmentConfig (line 244) | class ConfigletAssignmentConfig(aristaproto.Message):
  class ConfigletAssignment (line 297) | class ConfigletAssignment(aristaproto.Message):
  class MetaResponse (line 342) | class MetaResponse(aristaproto.Message):
  class ConfigletRequest (line 363) | class ConfigletRequest(aristaproto.Message):
  class ConfigletResponse (line 378) | class ConfigletResponse(aristaproto.Message):
  class ConfigletSomeRequest (line 395) | class ConfigletSomeRequest(aristaproto.Message):
  class ConfigletSomeResponse (line 405) | class ConfigletSomeResponse(aristaproto.Message):
  class ConfigletStreamRequest (line 428) | class ConfigletStreamRequest(aristaproto.Message):
  class ConfigletStreamResponse (line 464) | class ConfigletStreamResponse(aristaproto.Message):
  class ConfigletBatchedStreamRequest (line 485) | class ConfigletBatchedStreamRequest(aristaproto.Message):
  class ConfigletBatchedStreamResponse (line 529) | class ConfigletBatchedStreamResponse(aristaproto.Message):
  class ConfigletAssignmentRequest (line 539) | class ConfigletAssignmentRequest(aristaproto.Message):
  class ConfigletAssignmentResponse (line 554) | class ConfigletAssignmentResponse(aristaproto.Message):
  class ConfigletAssignmentSomeRequest (line 571) | class ConfigletAssignmentSomeRequest(aristaproto.Message):
  class ConfigletAssignmentSomeResponse (line 581) | class ConfigletAssignmentSomeResponse(aristaproto.Message):
  class ConfigletAssignmentStreamRequest (line 604) | class ConfigletAssignmentStreamRequest(aristaproto.Message):
  class ConfigletAssignmentStreamResponse (line 633) | class ConfigletAssignmentStreamResponse(aristaproto.Message):
  class ConfigletAssignmentBatchedStreamRequest (line 656) | class ConfigletAssignmentBatchedStreamRequest(aristaproto.Message):
  class ConfigletAssignmentBatchedStreamResponse (line 693) | class ConfigletAssignmentBatchedStreamResponse(aristaproto.Message):
  class ConfigletAssignmentConfigRequest (line 703) | class ConfigletAssignmentConfigRequest(aristaproto.Message):
  class ConfigletAssignmentConfigResponse (line 718) | class ConfigletAssignmentConfigResponse(aristaproto.Message):
  class ConfigletAssignmentConfigSomeRequest (line 735) | class ConfigletAssignmentConfigSomeRequest(aristaproto.Message):
  class ConfigletAssignmentConfigSomeResponse (line 745) | class ConfigletAssignmentConfigSomeResponse(aristaproto.Message):
  class ConfigletAssignmentConfigStreamRequest (line 768) | class ConfigletAssignmentConfigStreamRequest(aristaproto.Message):
  class ConfigletAssignmentConfigStreamResponse (line 797) | class ConfigletAssignmentConfigStreamResponse(aristaproto.Message):
  class ConfigletAssignmentConfigBatchedStreamRequest (line 820) | class ConfigletAssignmentConfigBatchedStreamRequest(aristaproto.Message):
  class ConfigletAssignmentConfigBatchedStreamResponse (line 857) | class ConfigletAssignmentConfigBatchedStreamResponse(aristaproto.Message):
  class ConfigletAssignmentConfigSetRequest (line 867) | class ConfigletAssignmentConfigSetRequest(aristaproto.Message):
  class ConfigletAssignmentConfigSetResponse (line 876) | class ConfigletAssignmentConfigSetResponse(aristaproto.Message):
  class ConfigletAssignmentConfigSetSomeRequest (line 894) | class ConfigletAssignmentConfigSetSomeRequest(aristaproto.Message):
  class ConfigletAssignmentConfigSetSomeResponse (line 907) | class ConfigletAssignmentConfigSetSomeResponse(aristaproto.Message):
  class ConfigletAssignmentConfigDeleteRequest (line 913) | class ConfigletAssignmentConfigDeleteRequest(aristaproto.Message):
  class ConfigletAssignmentConfigDeleteResponse (line 922) | class ConfigletAssignmentConfigDeleteResponse(aristaproto.Message):
  class ConfigletAssignmentConfigDeleteSomeRequest (line 939) | class ConfigletAssignmentConfigDeleteSomeRequest(aristaproto.Message):
  class ConfigletAssignmentConfigDeleteSomeResponse (line 945) | class ConfigletAssignmentConfigDeleteSomeResponse(aristaproto.Message):
  class ConfigletAssignmentConfigDeleteAllRequest (line 955) | class ConfigletAssignmentConfigDeleteAllRequest(aristaproto.Message):
  class ConfigletAssignmentConfigDeleteAllResponse (line 965) | class ConfigletAssignmentConfigDeleteAllResponse(aristaproto.Message):
  class ConfigletConfigRequest (line 985) | class ConfigletConfigRequest(aristaproto.Message):
  class ConfigletConfigResponse (line 1000) | class ConfigletConfigResponse(aristaproto.Message):
  class ConfigletConfigSomeRequest (line 1017) | class ConfigletConfigSomeRequest(aristaproto.Message):
  class ConfigletConfigSomeResponse (line 1027) | class ConfigletConfigSomeResponse(aristaproto.Message):
  class ConfigletConfigStreamRequest (line 1050) | class ConfigletConfigStreamRequest(aristaproto.Message):
  class ConfigletConfigStreamResponse (line 1086) | class ConfigletConfigStreamResponse(aristaproto.Message):
  class ConfigletConfigBatchedStreamRequest (line 1109) | class ConfigletConfigBatchedStreamRequest(aristaproto.Message):
  class ConfigletConfigBatchedStreamResponse (line 1153) | class ConfigletConfigBatchedStreamResponse(aristaproto.Message):
  class ConfigletConfigSetRequest (line 1163) | class ConfigletConfigSetRequest(aristaproto.Message):
  class ConfigletConfigSetResponse (line 1172) | class ConfigletConfigSetResponse(aristaproto.Message):
  class ConfigletConfigSetSomeRequest (line 1190) | class ConfigletConfigSetSomeRequest(aristaproto.Message):
  class ConfigletConfigSetSomeResponse (line 1203) | class ConfigletConfigSetSomeResponse(aristaproto.Message):
  class ConfigletConfigDeleteRequest (line 1209) | class ConfigletConfigDeleteRequest(aristaproto.Message):
  class ConfigletConfigDeleteResponse (line 1218) | class ConfigletConfigDeleteResponse(aristaproto.Message):
  class ConfigletConfigDeleteSomeRequest (line 1233) | class ConfigletConfigDeleteSomeRequest(aristaproto.Message):
  class ConfigletConfigDeleteSomeResponse (line 1239) | class ConfigletConfigDeleteSomeResponse(aristaproto.Message):
  class ConfigletConfigDeleteAllRequest (line 1249) | class ConfigletConfigDeleteAllRequest(aristaproto.Message):
  class ConfigletConfigDeleteAllResponse (line 1266) | class ConfigletConfigDeleteAllResponse(aristaproto.Message):
  class ConfigletServiceStub (line 1285) | class ConfigletServiceStub(aristaproto.ServiceStub):
    method get_one (line 1286) | async def get_one(
    method get_some (line 1303) | async def get_some(
    method get_all (line 1321) | async def get_all(
    method subscribe (line 1339) | async def subscribe(
    method get_meta (line 1357) | async def get_meta(
    method subscribe_meta (line 1374) | async def subscribe_meta(
    method get_all_batched (line 1392) | async def get_all_batched(
    method subscribe_batched (line 1410) | async def subscribe_batched(
  class ConfigletAssignmentServiceStub (line 1429) | class ConfigletAssignmentServiceStub(aristaproto.ServiceStub):
    method get_one (line 1430) | async def get_one(
    method get_some (line 1447) | async def get_some(
    method get_all (line 1465) | async def get_all(
    method subscribe (line 1483) | async def subscribe(
    method get_meta (line 1501) | async def get_meta(
    method subscribe_meta (line 1518) | async def subscribe_meta(
    method get_all_batched (line 1536) | async def get_all_batched(
    method subscribe_batched (line 1554) | async def subscribe_batched(
  class ConfigletAssignmentConfigServiceStub (line 1573) | class ConfigletAssignmentConfigServiceStub(aristaproto.ServiceStub):
    method get_one (line 1574) | async def get_one(
    method get_some (line 1591) | async def get_some(
    method get_all (line 1609) | async def get_all(
    method subscribe (line 1627) | async def subscribe(
    method get_meta (line 1645) | async def get_meta(
    method subscribe_meta (line 1662) | async def subscribe_meta(
    method set (line 1680) | async def set(
    method set_some (line 1697) | async def set_some(
    method delete (line 1715) | async def delete(
    method delete_some (line 1732) | async def delete_some(
    method delete_all (line 1750) | async def delete_all(
    method get_all_batched (line 1768) | async def get_all_batched(
    method subscribe_batched (line 1786) | async def subscribe_batched(
  class ConfigletConfigServiceStub (line 1805) | class ConfigletConfigServiceStub(aristaproto.ServiceStub):
    method get_one (line 1806) | async def get_one(
    method get_some (line 1823) | async def get_some(
    method get_all (line 1841) | async def get_all(
    method subscribe (line 1859) | async def subscribe(
    method get_meta (line 1877) | async def get_meta(
    method subscribe_meta (line 1894) | async def subscribe_meta(
    method set (line 1912) | async def set(
    method set_some (line 1929) | async def set_some(
    method delete (line 1947) | async def delete(
    method delete_some (line 1964) | async def delete_some(
    method delete_all (line 1982) | async def delete_all(
    method get_all_batched (line 2000) | async def get_all_batched(
    method subscribe_batched (line 2018) | async def subscribe_batched(
  class ConfigletServiceBase (line 2042) | class ConfigletServiceBase(ServiceBase):
    method get_one (line 2043) | async def get_one(self, configlet_request: "ConfigletRequest") -> "Con...
    method get_some (line 2046) | async def get_some(self, configlet_some_request: "ConfigletSomeRequest...
    method get_all (line 2049) | async def get_all(self, configlet_stream_request: "ConfigletStreamRequ...
    method subscribe (line 2052) | async def subscribe(self, configlet_stream_request: "ConfigletStreamRe...
    method get_meta (line 2055) | async def get_meta(self, configlet_stream_request: "ConfigletStreamReq...
    method subscribe_meta (line 2058) | async def subscribe_meta(self, configlet_stream_request: "ConfigletStr...
    method get_all_batched (line 2061) | async def get_all_batched(self, configlet_batched_stream_request: "Con...
    method subscribe_batched (line 2064) | async def subscribe_batched(self, configlet_batched_stream_request: "C...
    method __rpc_get_one (line 2067) | async def __rpc_get_one(self, stream: "grpclib.server.Stream[Configlet...
    method __rpc_get_some (line 2072) | async def __rpc_get_some(self, stream: "grpclib.server.Stream[Configle...
    method __rpc_get_all (line 2080) | async def __rpc_get_all(self, stream: "grpclib.server.Stream[Configlet...
    method __rpc_subscribe (line 2088) | async def __rpc_subscribe(self, stream: "grpclib.server.Stream[Configl...
    method __rpc_get_meta (line 2096) | async def __rpc_get_meta(self, stream: "grpclib.server.Stream[Configle...
    method __rpc_subscribe_meta (line 2101) | async def __rpc_subscribe_meta(self, stream: "grpclib.server.Stream[Co...
    method __rpc_get_all_batched (line 2109) | async def __rpc_get_all_batched(self, stream: "grpclib.server.Stream[C...
    method __rpc_subscribe_batched (line 2117) | async def __rpc_subscribe_batched(self, stream: "grpclib.server.Stream...
    method __mapping__ (line 2125) | def __mapping__(self) -> Dict[str, grpclib.const.Handler]:
  class ConfigletAssignmentServiceBase (line 2178) | class ConfigletAssignmentServiceBase(ServiceBase):
    method get_one (line 2179) | async def get_one(self, configlet_assignment_request: "ConfigletAssign...
    method get_some (line 2182) | async def get_some(self, configlet_assignment_some_request: "Configlet...
    method get_all (line 2185) | async def get_all(self, configlet_assignment_stream_request: "Configle...
    method subscribe (line 2188) | async def subscribe(self, configlet_assignment_stream_request: "Config...
    method get_meta (line 2191) | async def get_meta(self, configlet_assignment_stream_request: "Configl...
    method subscribe_meta (line 2194) | async def subscribe_meta(self, configlet_assignment_stream_request: "C...
    method get_all_batched (line 2197) | async def get_all_batched(
    method subscribe_batched (line 2202) | async def subscribe_batched(
    method __rpc_get_one (line 2207) | async def __rpc_get_one(self, stream: "grpclib.server.Stream[Configlet...
    method __rpc_get_some (line 2212) | async def __rpc_get_some(self, stream: "grpclib.server.Stream[Configle...
    method __rpc_get_all (line 2220) | async def __rpc_get_all(self, stream: "grpclib.server.Stream[Configlet...
    method __rpc_subscribe (line 2228) | async def __rpc_subscribe(self, stream: "grpclib.server.Stream[Configl...
    method __rpc_get_meta (line 2236) | async def __rpc_get_meta(self, stream: "grpclib.server.Stream[Configle...
    method __rpc_subscribe_meta (line 2241) | async def __rpc_subscribe_meta(self, stream: "grpclib.server.Stream[Co...
    method __rpc_get_all_batched (line 2249) | async def __rpc_get_all_batched(
    method __rpc_subscribe_batched (line 2259) | async def __rpc_subscribe_batched(
    method __mapping__ (line 2269) | def __mapping__(self) -> Dict[str, grpclib.const.Handler]:
  class ConfigletAssignmentConfigServiceBase (line 2322) | class ConfigletAssignmentConfigServiceBase(ServiceBase):
    method get_one (line 2323) | async def get_one(self, configlet_assignment_config_request: "Configle...
    method get_some (line 2326) | async def get_some(
    method get_all (line 2331) | async def get_all(
    method subscribe (line 2336) | async def subscribe(
    method get_meta (line 2341) | async def get_meta(self, configlet_assignment_config_stream_request: "...
    method subscribe_meta (line 2344) | async def subscribe_meta(self, configlet_assignment_config_stream_requ...
    method set (line 2347) | async def set(self, configlet_assignment_config_set_request: "Configle...
    method set_some (line 2350) | async def set_some(
    method delete (line 2355) | async def delete(self, configlet_assignment_config_delete_request: "Co...
    method delete_some (line 2358) | async def delete_some(
    method delete_all (line 2363) | async def delete_all(
    method get_all_batched (line 2368) | async def get_all_batched(
    method subscribe_batched (line 2373) | async def subscribe_batched(
    method __rpc_get_one (line 2378) | async def __rpc_get_one(self, stream: "grpclib.server.Stream[Configlet...
    method __rpc_get_some (line 2383) | async def __rpc_get_some(self, stream: "grpclib.server.Stream[Configle...
    method __rpc_get_all (line 2391) | async def __rpc_get_all(self, stream: "grpclib.server.Stream[Configlet...
    method __rpc_subscribe (line 2399) | async def __rpc_subscribe(self, stream: "grpclib.server.Stream[Configl...
    method __rpc_get_meta (line 2407) | async def __rpc_get_meta(self, stream: "grpclib.server.Stream[Configle...
    method __rpc_subscribe_meta (line 2412) | async def __rpc_subscribe_meta(self, stream: "grpclib.server.Stream[Co...
    method __rpc_set (line 2420) | async def __rpc_set(self, stream: "grpclib.server.Stream[ConfigletAssi...
    method __rpc_set_some (line 2425) | async def __rpc_set_some(self, stream: "grpclib.server.Stream[Configle...
    method __rpc_delete (line 2433) | async def __rpc_delete(self, stream: "grpclib.server.Stream[ConfigletA...
    method __rpc_delete_some (line 2438) | async def __rpc_delete_some(
    method __rpc_delete_all (line 2448) | async def __rpc_delete_all(
    method __rpc_get_all_batched (line 2458) | async def __rpc_get_all_batched(
    method __rpc_subscribe_batched (line 2468) | async def __rpc_subscribe_batched(
    method __mapping__ (line 2478) | def __mapping__(self) -> Dict[str, grpclib.const.Handler]:
  class ConfigletConfigServiceBase (line 2561) | class ConfigletConfigServiceBase(ServiceBase):
    method get_one (line 2562) | async def get_one(self, configlet_config_request: "ConfigletConfigRequ...
    method get_some (line 2565) | async def get_some(self, configlet_config_some_request: "ConfigletConf...
    method get_all (line 2568) | async def get_all(self, configlet_config_stream_request: "ConfigletCon...
    method subscribe (line 2571) | async def subscribe(self, configlet_config_stream_request: "ConfigletC...
    method get_meta (line 2574) | async def get_meta(self, configlet_config_stream_request: "ConfigletCo...
    method subscribe_meta (line 2577) | async def subscribe_meta(self, configlet_config_stream_request: "Confi...
    method set (line 2580) | async def set(self, configlet_config_set_request: "ConfigletConfigSetR...
    method set_some (line 2583) | async def set_some(self, configlet_config_set_some_request: "Configlet...
    method delete (line 2586) | async def delete(self, configlet_config_delete_request: "ConfigletConf...
    method delete_some (line 2589) | async def delete_some(self, configlet_config_delete_some_request: "Con...
    method delete_all (line 2592) | async def delete_all(self, configlet_config_delete_all_request: "Confi...
    method get_all_batched (line 2595) | async def get_all_batched(
    method subscribe_batched (line 2600) | async def subscribe_batched(
    method __rpc_get_one (line 2605) | async def __rpc_get_one(self, stream: "grpclib.server.Stream[Configlet...
    method __rpc_get_some (line 2610) | async def __rpc_get_some(self, stream: "grpclib.server.Stream[Configle...
    method __rpc_get_all (line 2618) | async def __rpc_get_all(self, stream: "grpclib.server.Stream[Configlet...
    method __rpc_subscribe (line 2626) | async def __rpc_subscribe(self, stream: "grpclib.server.Stream[Configl...
    method __rpc_get_meta (line 2634) | async def __rpc_get_meta(self, stream: "grpclib.server.Stream[Configle...
    method __rpc_subscribe_meta (line 2639) | async def __rpc_subscribe_meta(self, stream: "grpclib.server.Stream[Co...
    method __rpc_set (line 2647) | async def __rpc_set(self, stream: "grpclib.server.Stream[ConfigletConf...
    method __rpc_set_some (line 2652) | async def __rpc_set_some(self, stream: "grpclib.server.Stream[Configle...
    method __rpc_delete (line 2660) | async def __rpc_delete(self, stream: "grpclib.server.Stream[ConfigletC...
    method __rpc_delete_some (line 2665) | async def __rpc_delete_some(self, stream: "grpclib.server.Stream[Confi...
    method __rpc_delete_all (line 2673) | async def __rpc_delete_all(self, stream: "grpclib.server.Stream[Config...
    method __rpc_get_all_batched (line 2681) | async def __rpc_get_all_batched(self, stream: "grpclib.server.Stream[C...
    method __rpc_subscribe_batched (line 2689) | async def __rpc_subscribe_batched(self, stream: "grpclib.server.Stream...
    method __mapping__ (line 2697) | def __mapping__(self) -> Dict[str, grpclib.const.Handler]:

FILE: python-avd/pyavd/_cv/api/arista/configstatus/v1/__init__.py
  class ErrorCode (line 117) | class ErrorCode(aristaproto.Enum):
  class DiffOp (line 148) | class DiffOp(aristaproto.Enum):
  class ConfigFilterCode (line 175) | class ConfigFilterCode(aristaproto.Enum):
  class ConfigSyncCode (line 192) | class ConfigSyncCode(aristaproto.Enum):
  class ConfigSourceType (line 209) | class ConfigSourceType(aristaproto.Enum):
  class ConfigType (line 236) | class ConfigType(aristaproto.Enum):
  class ConfigError (line 250) | class ConfigError(aristaproto.Message):
  class ConfigErrors (line 272) | class ConfigErrors(aristaproto.Message):
  class DiffEntry (line 280) | class DiffEntry(aristaproto.Message):
  class DiffEntries (line 322) | class DiffEntries(aristaproto.Message):
  class ConfigSource (line 330) | class ConfigSource(aristaproto.Message):
  class ConfigSources (line 350) | class ConfigSources(aristaproto.Message):
  class ConfigSummary (line 358) | class ConfigSummary(aristaproto.Message):
  class ConfigKey (line 415) | class ConfigKey(aristaproto.Message):
  class Configuration (line 426) | class Configuration(aristaproto.Message):
  class ConfigDiffKey (line 439) | class ConfigDiffKey(aristaproto.Message):
  class ConfigDiff (line 470) | class ConfigDiff(aristaproto.Message):
  class SummaryKey (line 483) | class SummaryKey(aristaproto.Message):
  class Summary (line 491) | class Summary(aristaproto.Message):
  class SecurityProfile (line 502) | class SecurityProfile(aristaproto.Message):
  class SecurityProfileComplianceSummary (line 515) | class SecurityProfileComplianceSummary(aristaproto.Message):
  class SecurityProfileDiffSummary (line 558) | class SecurityProfileDiffSummary(aristaproto.Message):
  class SecurityProfileDiff (line 571) | class SecurityProfileDiff(aristaproto.Message):
  class MetaResponse (line 582) | class MetaResponse(aristaproto.Message):
  class ConfigDiffRequest (line 603) | class ConfigDiffRequest(aristaproto.Message):
  class ConfigDiffResponse (line 618) | class ConfigDiffResponse(aristaproto.Message):
  class ConfigDiffSomeRequest (line 635) | class ConfigDiffSomeRequest(aristaproto.Message):
  class ConfigDiffSomeResponse (line 645) | class ConfigDiffSomeResponse(aristaproto.Message):
  class ConfigDiffStreamRequest (line 668) | class ConfigDiffStreamRequest(aristaproto.Message):
  class ConfigDiffStreamResponse (line 697) | class ConfigDiffStreamResponse(aristaproto.Message):
  class ConfigDiffBatchedStreamRequest (line 718) | class ConfigDiffBatchedStreamRequest(aristaproto.Message):
  class ConfigDiffBatchedStreamResponse (line 755) | class ConfigDiffBatchedStreamResponse(aristaproto.Message):
  class ConfigurationRequest (line 765) | class ConfigurationRequest(aristaproto.Message):
  class ConfigurationResponse (line 780) | class ConfigurationResponse(aristaproto.Message):
  class ConfigurationSomeRequest (line 797) | class ConfigurationSomeRequest(aristaproto.Message):
  class ConfigurationSomeResponse (line 807) | class ConfigurationSomeResponse(aristaproto.Message):
  class ConfigurationStreamRequest (line 830) | class ConfigurationStreamRequest(aristaproto.Message):
  class ConfigurationStreamResponse (line 859) | class ConfigurationStreamResponse(aristaproto.Message):
  class ConfigurationBatchedStreamRequest (line 880) | class ConfigurationBatchedStreamRequest(aristaproto.Message):
  class ConfigurationBatchedStreamResponse (line 917) | class ConfigurationBatchedStreamResponse(aristaproto.Message):
  class SecurityProfileRequest (line 927) | class SecurityProfileRequest(aristaproto.Message):
  class SecurityProfileResponse (line 942) | class SecurityProfileResponse(aristaproto.Message):
  class SecurityProfileSomeRequest (line 959) | class SecurityProfileSomeRequest(aristaproto.Message):
  class SecurityProfileSomeResponse (line 969) | class SecurityProfileSomeResponse(aristaproto.Message):
  class SecurityProfileStreamRequest (line 992) | class SecurityProfileStreamRequest(aristaproto.Message):
  class SecurityProfileStreamResponse (line 1021) | class SecurityProfileStreamResponse(aristaproto.Message):
  class SecurityProfileBatchedStreamRequest (line 1044) | class SecurityProfileBatchedStreamRequest(aristaproto.Message):
  class SecurityProfileBatchedStreamResponse (line 1081) | class SecurityProfileBatchedStreamResponse(aristaproto.Message):
  class SecurityProfileDiffRequest (line 1091) | class SecurityProfileDiffRequest(aristaproto.Message):
  class SecurityProfileDiffResponse (line 1106) | class SecurityProfileDiffResponse(aristaproto.Message):
  class SecurityProfileDiffSomeRequest (line 1123) | class SecurityProfileDiffSomeRequest(aristaproto.Message):
  class SecurityProfileDiffSomeResponse (line 1133) | class SecurityProfileDiffSomeResponse(aristaproto.Message):
  class SecurityProfileDiffStreamRequest (line 1156) | class SecurityProfileDiffStreamRequest(aristaproto.Message):
  class SecurityProfileDiffStreamResponse (line 1185) | class SecurityProfileDiffStreamResponse(aristaproto.Message):
  class SecurityProfileDiffBatchedStreamRequest (line 1208) | class SecurityProfileDiffBatchedStreamRequest(aristaproto.Message):
  class SecurityProfileDiffBatchedStreamResponse (line 1245) | class SecurityProfileDiffBatchedStreamResponse(aristaproto.Message):
  class SecurityProfileDiffSummaryRequest (line 1255) | class SecurityProfileDiffSummaryRequest(aristaproto.Message):
  class SecurityProfileDiffSummaryResponse (line 1270) | class SecurityProfileDiffSummaryResponse(aristaproto.Message):
  class SecurityProfileDiffSummarySomeRequest (line 1287) | class SecurityProfileDiffSummarySomeRequest(aristaproto.Message):
  class SecurityProfileDiffSummarySomeResponse (line 1297) | class SecurityProfileDiffSummarySomeResponse(aristaproto.Message):
  class SecurityProfileDiffSummaryStreamRequest (line 1320) | class SecurityProfileDiffSummaryStreamRequest(aristaproto.Message):
  class SecurityProfileDiffSummaryStreamResponse (line 1349) | class SecurityProfileDiffSummaryStreamResponse(aristaproto.Message):
  class SecurityProfileDiffSummaryBatchedStreamRequest (line 1372) | class SecurityProfileDiffSummaryBatchedStreamRequest(aristaproto.Message):
  class SecurityProfileDiffSummaryBatchedStreamResponse (line 1409) | class SecurityProfileDiffSummaryBatchedStreamResponse(aristaproto.Message):
  class SummaryRequest (line 1419) | class SummaryRequest(aristaproto.Message):
  class SummaryResponse (line 1434) | class SummaryResponse(aristaproto.Message):
  class SummarySomeRequest (line 1451) | class SummarySomeRequest(aristaproto.Message):
  class SummarySomeResponse (line 1461) | class SummarySomeResponse(aristaproto.Message):
  class SummaryStreamRequest (line 1484) | class SummaryStreamRequest(aristaproto.Message):
  class SummaryStreamResponse (line 1513) | class SummaryStreamResponse(aristaproto.Message):
  class SummaryBatchedStreamRequest (line 1534) | class SummaryBatchedStreamRequest(aristaproto.Message):
  class SummaryBatchedStreamResponse (line 1571) | class SummaryBatchedStreamResponse(aristaproto.Message):
  class ConfigDiffServiceStub (line 1580) | class ConfigDiffServiceStub(aristaproto.ServiceStub):
    method get_one (line 1581) | async def get_one(
    method get_some (line 1598) | async def get_some(
    method get_all (line 1616) | async def get_all(
    method subscribe (line 1634) | async def subscribe(
    method get_meta (line 1652) | async def get_meta(
    method subscribe_meta (line 1669) | async def subscribe_meta(
    method get_all_batched (line 1687) | async def get_all_batched(
    method subscribe_batched (line 1705) | async def subscribe_batched(
  class ConfigurationServiceStub (line 1724) | class ConfigurationServiceStub(aristaproto.ServiceStub):
    method get_one (line 1725) | async def get_one(
    method get_some (line 1742) | async def get_some(
    method get_all (line 1760) | async def get_all(
    method subscribe (line 1778) | async def subscribe(
    method get_meta (line 1796) | async def get_meta(
    method subscribe_meta (line 1813) | async def subscribe_meta(
    method get_all_batched (line 1831) | async def get_all_batched(
    method subscribe_batched (line 1849) | async def subscribe_batched(
  class SecurityProfileServiceStub (line 1868) | class SecurityProfileServiceStub(aristaproto.ServiceStub):
    method get_one (line 1869) | async def get_one(
    method get_some (line 1886) | async def get_some(
    method get_all (line 1904) | async def get_all(
    method subscribe (line 1922) | async def subscribe(
    method get_meta (line 1940) | async def get_meta(
    method subscribe_meta (line 1957) | async def subscribe_meta(
    method get_all_batched (line 1975) | async def get_all_batched(
    method subscribe_batched (line 1993) | async def subscribe_batched(
  class SecurityProfileDiffServiceStub (line 2012) | class SecurityProfileDiffServiceStub(aristaproto.ServiceStub):
    method get_one (line 2013) | async def get_one(
    method get_some (line 2030) | async def get_some(
    method get_all (line 2048) | async def get_all(
    method subscribe (line 2066) | async def subscribe(
    method get_meta (line 2084) | async def get_meta(
    method subscribe_meta (line 2101) | async def subscribe_meta(
    method get_all_batched (line 2119) | async def get_all_batched(
    method subscribe_batched (line 2137) | async def subscribe_batched(
  class SecurityProfileDiffSummaryServiceStub (line 2156) | class SecurityProfileDiffSummaryServiceStub(aristaproto.ServiceStub):
    method get_one (line 2157) | async def get_one(
    method get_some (line 2174) | async def get_some(
    method get_all (line 2192) | async def get_all(
    method subscribe (line 2210) | async def subscribe(
    method get_meta (line 2228) | async def get_meta(
    method subscribe_meta (line 2245) | async def subscribe_meta(
    method get_all_batched (line 2263) | async def get_all_batched(
    method subscribe_batched (line 2281) | async def subscribe_batched(
  class SummaryServiceStub (line 2300) | class SummaryServiceStub(aristaproto.ServiceStub):
    method get_one (line 2301) | async def get_one(
    method get_some (line 2318) | async def get_some(
    method get_all (line 2336) | async def get_all(
    method subscribe (line 2354) | async def subscribe(
    method get_meta (line 2372) | async def get_meta(
    method subscribe_meta (line 2389) | async def subscribe_meta(
    method get_all_batched (line 2407) | async def get_all_batched(
    method subscribe_batched (line 2425) | async def subscribe_batched(
  class ConfigDiffServiceBase (line 2448) | class ConfigDiffServiceBase(ServiceBase):
    method get_one (line 2449) | async def get_one(self, config_diff_request: "ConfigDiffRequest") -> "...
    method get_some (line 2452) | async def get_some(self, config_diff_some_request: "ConfigDiffSomeRequ...
    method get_all (line 2455) | async def get_all(self, config_diff_stream_request: "ConfigDiffStreamR...
    method subscribe (line 2458) | async def subscribe(self, config_diff_stream_request: "ConfigDiffStrea...
    method get_meta (line 2461) | async def get_meta(self, config_diff_stream_request: "ConfigDiffStream...
    method subscribe_meta (line 2464) | async def subscribe_meta(self, config_diff_stream_request: "ConfigDiff...
    method get_all_batched (line 2467) | async def get_all_batched(self, config_diff_batched_stream_request: "C...
    method subscribe_batched (line 2470) | async def subscribe_batched(self, config_diff_batched_stream_request: ...
    method __rpc_get_one (line 2473) | async def __rpc_get_one(self, stream: "grpclib.server.Stream[ConfigDif...
    method __rpc_get_some (line 2478) | async def __rpc_get_some(self, stream: "grpclib.server.Stream[ConfigDi...
    method __rpc_get_all (line 2486) | async def __rpc_get_all(self, stream: "grpclib.server.Stream[ConfigDif...
    method __rpc_subscribe (line 2494) | async def __rpc_subscribe(self, stream: "grpclib.server.Stream[ConfigD...
    method __rpc_get_meta (line 2502) | async def __rpc_get_meta(self, stream: "grpclib.server.Stream[ConfigDi...
    method __rpc_subscribe_meta (line 2507) | async def __rpc_subscribe_meta(self, stream: "grpclib.server.Stream[Co...
    method __rpc_get_all_batched (line 2515) | async def __rpc_get_all_batched(self, stream: "grpclib.server.Stream[C...
    method __rpc_subscribe_batched (line 2523) | async def __rpc_subscribe_batched(self, stream: "grpclib.server.Stream...
    method __mapping__ (line 2531) | def __mapping__(self) -> Dict[str, grpclib.const.Handler]:
  class ConfigurationServiceBase (line 2584) | class ConfigurationServiceBase(ServiceBase):
    method get_one (line 2585) | async def get_one(self, configuration_request: "ConfigurationRequest")...
    method get_some (line 2588) | async def get_some(self, configuration_some_request: "ConfigurationSom...
    method get_all (line 2591) | async def get_all(self, configuration_stream_request: "ConfigurationSt...
    method subscribe (line 2594) | async def subscribe(self, configuration_stream_request: "Configuration...
    method get_meta (line 2597) | async def get_meta(self, configuration_stream_request: "ConfigurationS...
    method subscribe_meta (line 2600) | async def subscribe_meta(self, configuration_stream_request: "Configur...
    method get_all_batched (line 2603) | async def get_all_batched(
    method subscribe_batched (line 2608) | async def subscribe_batched(
    method __rpc_get_one (line 2613) | async def __rpc_get_one(self, stream: "grpclib.server.Stream[Configura...
    method __rpc_get_some (line 2618) | async def __rpc_get_some(self, stream: "grpclib.server.Stream[Configur...
    method __rpc_get_all (line 2626) | async def __rpc_get_all(self, stream: "grpclib.server.Stream[Configura...
    method __rpc_subscribe (line 2634) | async def __rpc_subscribe(self, stream: "grpclib.server.Stream[Configu...
    method __rpc_get_meta (line 2642) | async def __rpc_get_meta(self, stream: "grpclib.server.Stream[Configur...
    method __rpc_subscribe_meta (line 2647) | async def __rpc_subscribe_meta(self, stream: "grpclib.server.Stream[Co...
    method __rpc_get_all_batched (line 2655) | async def __rpc_get_all_batched(self, stream: "grpclib.server.Stream[C...
    method __rpc_subscribe_batched (line 2663) | async def __rpc_subscribe_batched(self, stream: "grpclib.server.Stream...
    method __mapping__ (line 2671) | def __mapping__(self) -> Dict[str, grpclib.const.Handler]:
  class SecurityProfileServiceBase (line 2724) | class SecurityProfileServiceBase(ServiceBase):
    method get_one (line 2725) | async def get_one(self, security_profile_request: "SecurityProfileRequ...
    method get_some (line 2728) | async def get_some(self, security_profile_some_request: "SecurityProfi...
    method get_all (line 2731) | async def get_all(self, security_profile_stream_request: "SecurityProf...
    method subscribe (line 2734) | async def subscribe(self, security_profile_stream_request: "SecurityPr...
    method get_meta (line 2737) | async def get_meta(self, security_profile_stream_request: "SecurityPro...
    method subscribe_meta (line 2740) | async def subscribe_meta(self, security_profile_stream_request: "Secur...
    method get_all_batched (line 2743) | async def get_all_batched(
    method subscribe_batched (line 2748) | async def subscribe_batched(
    method __rpc_get_one (line 2753) | async def __rpc_get_one(self, stream: "grpclib.server.Stream[SecurityP...
    method __rpc_get_some (line 2758) | async def __rpc_get_some(self, stream: "grpclib.server.Stream[Security...
    method __rpc_get_all (line 2766) | async def __rpc_get_all(self, stream: "grpclib.server.Stream[SecurityP...
    method __rpc_subscribe (line 2774) | async def __rpc_subscribe(self, stream: "grpclib.server.Stream[Securit...
    method __rpc_get_meta (line 2782) | async def __rpc_get_meta(self, stream: "grpclib.server.Stream[Security...
    method __rpc_subscribe_meta (line 2787) | async def __rpc_subscribe_meta(self, stream: "grpclib.server.Stream[Se...
    method __rpc_get_all_batched (line 2795) | async def __rpc_get_all_batched(self, stream: "grpclib.server.Stream[S...
    method __rpc_subscribe_batched (line 2803) | async def __rpc_subscribe_batched(self, stream: "grpclib.server.Stream...
    method __mapping__ (line 2811) | def __mapping__(self) -> Dict[str, grpclib.const.Handler]:
  class SecurityProfileDiffServiceBase (line 2864) | class SecurityProfileDiffServiceBase(ServiceBase):
    method get_one (line 2865) | async def get_one(self, security_profile_diff_request: "SecurityProfil...
    method get_some (line 2868) | async def get_some(self, security_profile_diff_some_request: "Security...
    method get_all (line 2871) | async def get_all(self, security_profile_diff_stream_request: "Securit...
    method subscribe (line 2874) | async def subscribe(self, security_profile_diff_stream_request: "Secur...
    method get_meta (line 2877) | async def get_meta(self, security_profile_diff_stream_request: "Securi...
    method subscribe_meta (line 2880) | async def subscribe_meta(self, security_profile_diff_stream_request: "...
    method get_all_batched (line 2883) | async def get_all_batched(
    method subscribe_batched (line 2888) | async def subscribe_batched(
    method __rpc_get_one (line 2893) | async def __rpc_get_one(self, stream: "grpclib.server.Stream[SecurityP...
    method __rpc_get_some (line 2898) | async def __rpc_get_some(self, stream: "grpclib.server.Stream[Security...
    method __rpc_get_all (line 2906) | async def __rpc_get_all(self, stream: "grpclib.server.Stream[SecurityP...
    method __rpc_subscribe (line 2914) | async def __rpc_subscribe(self, stream: "grpclib.server.Stream[Securit...
    method __rpc_get_meta (line 2922) | async def __rpc_get_meta(self, stream: "grpclib.server.Stream[Security...
    method __rpc_subscribe_meta (line 2927) | async def __rpc_subscribe_meta(self, stream: "grpclib.server.Stream[Se...
    method __rpc_get_all_batched (line 2935) | async def __rpc_get_all_batched(
    method __rpc_subscribe_batched (line 2945) | async def __rpc_subscribe_batched(
    method __mapping__ (line 2955) | def __mapping__(self) -> Dict[str, grpclib.const.Handler]:
  class SecurityProfileDiffSummaryServiceBase (line 3008) | class SecurityProfileDiffSummaryServiceBase(ServiceBase):
    method get_one (line 3009) | async def get_one(self, security_profile_diff_summary_request: "Securi...
    method get_some (line 3012) | async def get_some(
    method get_all (line 3017) | async def get_all(
    method subscribe (line 3022) | async def subscribe(
    method get_meta (line 3027) | async def get_meta(self, security_profile_diff_summary_stream_request:...
    method subscribe_meta (line 3030) | async def subscribe_meta(self, security_profile_diff_summary_stream_re...
    method get_all_batched (line 3033) | async def get_all_batched(
    method subscribe_batched (line 3038) | async def subscribe_batched(
    method __rpc_get_one (line 3043) | async def __rpc_get_one(self, stream: "grpclib.server.Stream[SecurityP...
    method __rpc_get_some (line 3048) | async def __rpc_get_some(self, stream: "grpclib.server.Stream[Security...
    method __rpc_get_all (line 3056) | async def __rpc_get_all(self, stream: "grpclib.server.Stream[SecurityP...
    method __rpc_subscribe (line 3064) | async def __rpc_subscribe(self, stream: "grpclib.server.Stream[Securit...
    method __rpc_get_meta (line 3072) | async def __rpc_get_meta(self, stream: "grpclib.server.Stream[Security...
    method __rpc_subscribe_meta (line 3077) | async def __rpc_subscribe_meta(self, stream: "grpclib.server.Stream[Se...
    method __rpc_get_all_batched (line 3085) | async def __rpc_get_all_batched(
    method __rpc_subscribe_batched (line 3095) | async def __rpc_subscribe_batched(
    method __mapping__ (line 3105) | def __mapping__(self) -> Dict[str, grpclib.const.Handler]:
  class SummaryServiceBase (line 3158) | class SummaryServiceBase(ServiceBase):
    method get_one (line 3159) | async def get_one(self, summary_request: "SummaryRequest") -> "Summary...
    method get_some (line 3162) | async def get_some(self, summary_some_request: "SummarySomeRequest") -...
    method get_all (line 3165) | async def get_all(self, summary_stream_request: "SummaryStreamRequest"...
    method subscribe (line 3168) | async def subscribe(self, summary_stream_request: "SummaryStreamReques...
    method get_meta (line 3171) | async def get_meta(self, summary_stream_request: "SummaryStreamRequest...
    method subscribe_meta (line 3174) | async def subscribe_meta(self, summary_stream_request: "SummaryStreamR...
    method get_all_batched (line 3177) | async def get_all_batched(self, summary_batched_stream_request: "Summa...
    method subscribe_batched (line 3180) | async def subscribe_batched(self, summary_batched_stream_request: "Sum...
    method __rpc_get_one (line 3183) | async def __rpc_get_one(self, stream: "grpclib.server.Stream[SummaryRe...
    method __rpc_get_some (line 3188) | async def __rpc_get_some(self, stream: "grpclib.server.Stream[SummaryS...
    method __rpc_get_all (line 3196) | async def __rpc_get_all(self, stream: "grpclib.server.Stream[SummarySt...
    method __rpc_subscribe (line 3204) | async def __rpc_subscribe(self, stream: "grpclib.server.Stream[Summary...
    method __rpc_get_meta (line 3212) | async def __rpc_get_meta(self, stream: "grpclib.server.Stream[SummaryS...
    method __rpc_subscribe_meta (line 3217) | async def __rpc_subscribe_meta(self, stream: "grpclib.server.Stream[Su...
    method __rpc_get_all_batched (line 3225) | async def __rpc_get_all_batched(self, stream: "grpclib.server.Stream[S...
    method __rpc_subscribe_batched (line 3233) | async def __rpc_subscribe_batched(self, stream: "grpclib.server.Stream...
    method __mapping__ (line 3241) | def __mapping__(self) -> Dict[str, grpclib.const.Handler]:

FILE: python-avd/pyavd/_cv/api/arista/connectivitymonitor/v1/__init__.py
  class ProbeKey (line 59) | class ProbeKey(aristaproto.Message):
  class ProbeStatsKey (line 73) | class ProbeStatsKey(aristaproto.Message):
  class Probe (line 93) | class Probe(aristaproto.Message):
  class ProbeStats (line 114) | class ProbeStats(aristaproto.Message):
  class MetaResponse (line 154) | class MetaResponse(aristaproto.Message):
  class ProbeRequest (line 175) | class ProbeRequest(aristaproto.Message):
  class ProbeResponse (line 190) | class ProbeResponse(aristaproto.Message):
  class ProbeSomeRequest (line 207) | class ProbeSomeRequest(aristaproto.Message):
  class ProbeSomeResponse (line 217) | class ProbeSomeResponse(aristaproto.Message):
  class ProbeStreamRequest (line 236) | class ProbeStreamRequest(aristaproto.Message):
  class ProbeStreamResponse (line 267) | class ProbeStreamResponse(aristaproto.Message):
  class ProbeBatchedStreamRequest (line 288) | class ProbeBatchedStreamRequest(aristaproto.Message):
  class ProbeBatchedStreamResponse (line 327) | class ProbeBatchedStreamResponse(aristaproto.Message):
  class ProbeStatsRequest (line 337) | class ProbeStatsRequest(aristaproto.Message):
  class ProbeStatsResponse (line 352) | class ProbeStatsResponse(aristaproto.Message):
  class ProbeStatsSomeRequest (line 369) | class ProbeStatsSomeRequest(aristaproto.Message):
  class ProbeStatsSomeResponse (line 379) | class ProbeStatsSomeResponse(aristaproto.Message):
  class ProbeStatsStreamRequest (line 398) | class ProbeStatsStreamRequest(aristaproto.Message):
  class ProbeStatsStreamResponse (line 429) | class ProbeStatsStreamResponse(aristaproto.Message):
  class ProbeStatsBatchedStreamRequest (line 450) | class ProbeStatsBatchedStreamRequest(aristaproto.Message):
  class ProbeStatsBatchedStreamResponse (line 489) | class ProbeStatsBatchedStreamResponse(aristaproto.Message):
  class ProbeServiceStub (line 498) | class ProbeServiceStub(aristaproto.ServiceStub):
    method get_one (line 499) | async def get_one(
    method get_some (line 516) | async def get_some(
    method get_all (line 534) | async def get_all(
    method subscribe (line 552) | async def subscribe(
    method get_meta (line 570) | async def get_meta(
    method subscribe_meta (line 587) | async def subscribe_meta(
    method get_all_batched (line 605) | async def get_all_batched(
    method subscribe_batched (line 623) | async def subscribe_batched(
  class ProbeStatsServiceStub (line 642) | class ProbeStatsServiceStub(aristaproto.ServiceStub):
    method get_one (line 643) | async def get_one(
    method get_some (line 660) | async def get_some(
    method get_all (line 678) | async def get_all(
    method subscribe (line 696) | async def subscribe(
    method get_meta (line 714) | async def get_meta(
    method subscribe_meta (line 731) | async def subscribe_meta(
    method get_all_batched (line 749) | async def get_all_batched(
    method subscribe_batched (line 767) | async def subscribe_batched(
  class ProbeServiceBase (line 790) | class ProbeServiceBase(ServiceBase):
    method get_one (line 791) | async def get_one(self, probe_request: "ProbeRequest") -> "ProbeRespon...
    method get_some (line 794) | async def get_some(self, probe_some_request: "ProbeSomeRequest") -> As...
    method get_all (line 797) | async def get_all(self, probe_stream_request: "ProbeStreamRequest") ->...
    method subscribe (line 800) | async def subscribe(self, probe_stream_request: "ProbeStreamRequest") ...
    method get_meta (line 803) | async def get_meta(self, probe_stream_request: "ProbeStreamRequest") -...
    method subscribe_meta (line 806) | async def subscribe_meta(self, probe_stream_request: "ProbeStreamReque...
    method get_all_batched (line 809) | async def get_all_batched(self, probe_batched_stream_request: "ProbeBa...
    method subscribe_batched (line 812) | async def subscribe_batched(self, probe_batched_stream_request: "Probe...
    method __rpc_get_one (line 815) | async def __rpc_get_one(self, stream: "grpclib.server.Stream[ProbeRequ...
    method __rpc_get_some (line 820) | async def __rpc_get_some(self, stream: "grpclib.server.Stream[ProbeSom...
    method __rpc_get_all (line 828) | async def __rpc_get_all(self, stream: "grpclib.server.Stream[ProbeStre...
    method __rpc_subscribe (line 836) | async def __rpc_subscribe(self, stream: "grpclib.server.Stream[ProbeSt...
    method __rpc_get_meta (line 844) | async def __rpc_get_meta(self, stream: "grpclib.server.Stream[ProbeStr...
    method __rpc_subscribe_meta (line 849) | async def __rpc_subscribe_meta(self, stream: "grpclib.server.Stream[Pr...
    method __rpc_get_all_batched (line 857) | async def __rpc_get_all_batched(self, stream: "grpclib.server.Stream[P...
    method __rpc_subscribe_batched (line 865) | async def __rpc_subscribe_batched(self, stream: "grpclib.server.Stream...
    method __mapping__ (line 873) | def __mapping__(self) -> Dict[str, grpclib.const.Handler]:
  class ProbeStatsServiceBase (line 926) | class ProbeStatsServiceBase(ServiceBase):
    method get_one (line 927) | async def get_one(self, probe_stats_request: "ProbeStatsRequest") -> "...
    method get_some (line 930) | async def get_some(self, probe_stats_some_request: "ProbeStatsSomeRequ...
    method get_all (line 933) | async def get_all(self, probe_stats_stream_request: "ProbeStatsStreamR...
    method subscribe (line 936) | async def subscribe(self, probe_stats_stream_request: "ProbeStatsStrea...
    method get_meta (line 939) | async def get_meta(self, probe_stats_stream_request: "ProbeStatsStream...
    method subscribe_meta (line 942) | async def subscribe_meta(self, probe_stats_stream_request: "ProbeStats...
    method get_all_batched (line 945) | async def get_all_batched(self, probe_stats_batched_stream_request: "P...
    method subscribe_batched (line 948) | async def subscribe_batched(self, probe_stats_batched_stream_request: ...
    method __rpc_get_one (line 951) | async def __rpc_get_one(self, stream: "grpclib.server.Stream[ProbeStat...
    method __rpc_get_some (line 956) | async def __rpc_get_some(self, stream: "grpclib.server.Stream[ProbeSta...
    method __rpc_get_all (line 964) | async def __rpc_get_all(self, stream: "grpclib.server.Stream[ProbeStat...
    method __rpc_subscribe (line 972) | async def __rpc_subscribe(self, stream: "grpclib.server.Stream[ProbeSt...
    method __rpc_get_meta (line 980) | async def __rpc_get_meta(self, stream: "grpclib.server.Stream[ProbeSta...
    method __rpc_subscribe_meta (line 985) | async def __rpc_subscribe_meta(self, stream: "grpclib.server.Stream[Pr...
    method __rpc_get_all_batched (line 993) | async def __rpc_get_all_batched(self, stream: "grpclib.server.Stream[P...
    method __rpc_subscribe_batched (line 1001) | async def __rpc_subscribe_batched(self, stream: "grpclib.server.Stream...
    method __mapping__ (line 1009) | def __mapping__(self) -> Dict[str, grpclib.const.Handler]:

FILE: python-avd/pyavd/_cv/api/arista/dashboard/v1/__init__.py
  class Position (line 84) | class Position(aristaproto.Message):
  class Dimensions (line 95) | class Dimensions(aristaproto.Message):
  class WidgetStyles (line 108) | class WidgetStyles(aristaproto.Message):
  class Widget (line 129) | class Widget(aristaproto.Message):
  class Widgets (line 177) | class Widgets(aristaproto.Message):
  class DashboardKey (line 185) | class DashboardKey(aristaproto.Message):
  class DashboardConfig 
Copy disabled (too large) Download .json
Condensed preview — 5859 files, each showing path, character count, and a content snippet. Download the .json file for the full structured content (53,109K chars).
[
  {
    "path": ".arista/secret_allowlist.yaml",
    "chars": 334,
    "preview": "# Arista Secret Scanner allow list\n\nversion: v1.0\nallowed_secrets:\n  - secret_pattern: \"http://arista:arista@10.83.12.78"
  },
  {
    "path": ".codecov.yml",
    "chars": 1380,
    "preview": "---\n# CodeCov Configuration for AVD\n# Reference: https://docs.codecov.com/docs/codecov-yaml\n\ncoverage:\n  status:\n    pro"
  },
  {
    "path": ".codespellrc",
    "chars": 207,
    "preview": "[codespell]\nignore-words = .github/ignore-codespell-words\nskip = *.cfg,*.svg,*.excalidraw,*.rst,*/pyavd/_cv/api/*,*/pyav"
  },
  {
    "path": ".devcontainer/devcontainer.json",
    "chars": 1057,
    "preview": "{\n    \"name\": \"AVD Development\",\n    \"image\": \"ghcr.io/aristanetworks/avd/dev:python3.11\",\n    // The AVD collection can"
  },
  {
    "path": ".find-missing-tables-args",
    "chars": 1106,
    "preview": "--root-path\n.\n--table-files\nansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/*.md\nansible_collections"
  },
  {
    "path": ".flake8",
    "chars": 381,
    "preview": "[flake8]\n# Flake8 has been replaced with Ruff.\n# This file should be removed later, but kept here to avoid IDE extension"
  },
  {
    "path": ".gitattributes",
    "chars": 1430,
    "preview": "# Collapsing generated schemas from PR diff by default\n/python-avd/pyavd/_eos_cli_config_gen/schema/eos_cli_config_gen.s"
  },
  {
    "path": ".github/CODEOWNERS",
    "chars": 141,
    "preview": "---\n# Add all members of the group avd-developers as reviewers on all PRs\n*   @aristanetworks/avd-developers @aristanetw"
  },
  {
    "path": ".github/ISSUE_TEMPLATE/bug-report.yml",
    "chars": 2409,
    "preview": "name: Bug Report\ndescription: Report a bug impacting AVD\ntitle: \"Bug Report Title\"\nlabels: [\"type: bug\", triage]\n# TODO:"
  },
  {
    "path": ".github/ISSUE_TEMPLATE/feature-request.yml",
    "chars": 2046,
    "preview": "name: Feature Request\ndescription: Ask for new feature or feature enhancement\ntitle: \"Feature request Title\"\nlabels: [\"t"
  },
  {
    "path": ".github/PULL_REQUEST_TEMPLATE/pull_request_template.md",
    "chars": 1209,
    "preview": "## Change Summary\n\n<!-- Enter short PR description -->\n\n## Related Issue(s)\n\nFixes #<ISSUE ID>\n\n## Component(s) name\n\n`a"
  },
  {
    "path": ".github/PULL_REQUEST_TEMPLATE/schema_eos_cli_config_gen.md",
    "chars": 1923,
    "preview": "## Add schema for data model\n\n<!-- Use this PR Title: Feat(eos_cli_config_gen): Add schema for < data_model_key > -->\n\n#"
  },
  {
    "path": ".github/actions/rn-pr-labeler-action/action.yml",
    "chars": 1908,
    "preview": "name: \"rn-pr-labeler\"\nauthor: \"@gmuloc\"\ndescription: \"Parse a conventional commit compliant PR title and add it as a lab"
  },
  {
    "path": ".github/changelog.sh",
    "chars": 12751,
    "preview": "#!/usr/bin/env zsh\n\n##############################\n# CHANGELOG SCRIPT CONSTANTS #\n##############################\n\n#* Hol"
  },
  {
    "path": ".github/check-git-status.sh",
    "chars": 1260,
    "preview": "#!/bin/bash\n#\n# Purpose: Molecule runner for github-action\n# Author: @titom73\n# Date: 2020-12-16\n# Version: 1.1\n# Licens"
  },
  {
    "path": ".github/dependabot.yml",
    "chars": 718,
    "preview": "---\nversion: 2\nupdates:\n  # Maintain dependencies for Python\n  - package-ecosystem: \"pip\"\n    versioning-strategy: incre"
  },
  {
    "path": ".github/generate_release.py",
    "chars": 6252,
    "preview": "#!/usr/bin/env python\n# Copyright (c) 2023-2026 Arista Networks, Inc.\n# Use of this source code is governed by the Apach"
  },
  {
    "path": ".github/ignore-codespell-words",
    "chars": 60,
    "preview": "nd\niif\ninout\nclaus\nclos\nbeed\ndefauls\ntoi\npathc\nect\nTE\ncrate\n"
  },
  {
    "path": ".github/ignore-codespell-words.md",
    "chars": 708,
    "preview": "# Codespell ignore file documentation\n\nIgnored words are stored in the `.github/ignore-codespell-words` file. This file\n"
  },
  {
    "path": ".github/labeler.yml",
    "chars": 3027,
    "preview": "---\n\"role: build_output_folders\":\n  - changed-files:\n      - any-glob-to-any-file:\n          - ansible_collections/arist"
  },
  {
    "path": ".github/pull_request_template.md",
    "chars": 1207,
    "preview": "## Change Summary\n\n<!-- Enter short PR description -->\n\n## Related Issue(s)\n\nFixes #<ISSUE ID>\n\n## Component(s) name\n\n`a"
  },
  {
    "path": ".github/release.yml",
    "chars": 6596,
    "preview": "changelog:\n  exclude:\n    labels:\n      - 'rn: Test(build_output_folders)'\n      - 'rn: CI(build_output_folders)'\n      "
  },
  {
    "path": ".github/workflows/codecov.yml",
    "chars": 1132,
    "preview": "---\nname: Publish coverage to CodeCov\n\"on\":\n  workflow_call:\n\njobs:\n  codecov:\n    name: Upload coverage to CodeCov\n    "
  },
  {
    "path": ".github/workflows/container_build_base.yml",
    "chars": 844,
    "preview": "---\nname: Build base container\n\n\"on\":\n  push:\n    branches:\n      - devel\n    paths:\n      - containers/base/**\n      - "
  },
  {
    "path": ".github/workflows/container_build_dev.yml",
    "chars": 776,
    "preview": "---\nname: Build dev container\n\n\"on\":\n  push:\n    branches:\n      - devel\n    paths:\n      - containers/dev/**\n      - .g"
  },
  {
    "path": ".github/workflows/container_build_fix.yml",
    "chars": 1178,
    "preview": "# this workflow can be triggered manually to initiate any build if it fails\nname: Manual container build\n\n\"on\":\n  workfl"
  },
  {
    "path": ".github/workflows/container_build_template.yml",
    "chars": 9644,
    "preview": "---\n# This workflow file is the template\n# that will be triggered by specific container build workflows.\n\nname: Reusable"
  },
  {
    "path": ".github/workflows/container_build_universal.yml",
    "chars": 882,
    "preview": "---\nname: Build universal container\n\n\"on\":\n  push:\n    branches:\n      - devel\n    paths:\n      - containers/universal/*"
  },
  {
    "path": ".github/workflows/new-cvp-integration.yml",
    "chars": 3823,
    "preview": "---\nname: \"CV integration testing\"\n\n# \"on\": pull_request\n\"on\": workflow_dispatch\n\nconcurrency:\n  group: ${{ github.workf"
  },
  {
    "path": ".github/workflows/offline-links-check.yml",
    "chars": 1965,
    "preview": "---\nname: Check links offline for dead targets\n\n\"on\":\n  # schedule every day at 3 AM on devel\n  schedule:\n    - cron: \"0"
  },
  {
    "path": ".github/workflows/pull-request-comment.yml",
    "chars": 2994,
    "preview": "---\nname: \"Pull Request Comment\"\n\n\"on\":\n  pull_request_target:\n    types:\n      - opened\n\njobs:\n  ######################"
  },
  {
    "path": ".github/workflows/pull-request-conflict.yml",
    "chars": 695,
    "preview": "name: \"PR Conflicts checker\"\n\"on\":\n  pull_request_target:\n    types: [synchronize]\n\njobs:\n  Conflict_Check:\n    name: \"C"
  },
  {
    "path": ".github/workflows/pull-request-management.yml",
    "chars": 29644,
    "preview": "---\nname: \"Collection code testing\"\n\n\"on\":\n  pull_request:\n  merge_group:\n    types: [checks_requested]\n\n  push:\n    bra"
  },
  {
    "path": ".github/workflows/pull-request-rn-labeler.yml",
    "chars": 976,
    "preview": "# This workflow is triggered after a PR is merged or when the title of a PR is\n# changed post merge\nname: \"Label for Rel"
  },
  {
    "path": ".github/workflows/pull-request-triage.yml",
    "chars": 3367,
    "preview": "---\nname: \"Pull Request Triage\"\n\n\"on\":\n  pull_request_target:\n    types:\n      - opened\n      - edited\n      - synchroni"
  },
  {
    "path": ".github/workflows/release-schema.yml",
    "chars": 1010,
    "preview": "---\nname: \"Upload schemas.json.gz on release\"\n\n\"on\":\n  release:\n    types: [published]\n  workflow_dispatch:\n    inputs:\n"
  },
  {
    "path": ".github/workflows/sonar.yml",
    "chars": 4524,
    "preview": "---\nname: Analysis with Sonarlint and publish to SonarCloud\n\"on\":\n  workflow_run:\n    workflows: [\"Collection code testi"
  },
  {
    "path": ".github/workflows/stale.yml",
    "chars": 916,
    "preview": "name: \"Issue and PR stale management\"\n\"on\":\n  schedule:\n    - cron: \"0 0 * * *\"\n\njobs:\n  stale:\n    runs-on: ubuntu-late"
  },
  {
    "path": ".github/yamllintrc",
    "chars": 2265,
    "preview": "---\n# Used by pre-commit. There is a similar file under the Ansible collection used by ansible-lint.\nextends: default\n\ny"
  },
  {
    "path": ".gitignore",
    "chars": 1512,
    "preview": "# Byte-compiled / optimized / DLL files\n__pycache__/\n*.py[cod]\n*.py-e\n*$py.class\n.j2cache/\n*.log\n*.pickle\n.mypy_cache/\n."
  },
  {
    "path": ".markdownlint-cli2.yaml",
    "chars": 2844,
    "preview": "# Fix any fixable errors\nfix: true\n\n# Define glob expressions to ignore\nignores:\n  - python-avd/tests/pyavd/j2filters/to"
  },
  {
    "path": ".pre-commit-config.yaml",
    "chars": 11201,
    "preview": "---\n# See https://pre-commit.com for more information\n# See https://pre-commit.com/hooks.html for more hooks\nci:\n  autou"
  },
  {
    "path": ".readthedocs.yaml",
    "chars": 484,
    "preview": "---\n# .readthedocs.yaml\n# Read the Docs configuration file\n# See https://docs.readthedocs.io/en/stable/config-file/v2.ht"
  },
  {
    "path": ".sonarlint/connectedMode.json",
    "chars": 92,
    "preview": "{\n    \"sonarCloudOrganization\": \"aristanetworks-1\",\n    \"projectKey\": \"aristanetworks_avd\"\n}"
  },
  {
    "path": "LICENSE",
    "chars": 11344,
    "preview": "                                 Apache License\n                           Version 2.0, January 2004\n                   "
  },
  {
    "path": "Makefile",
    "chars": 4918,
    "preview": "CURRENT_DIR = $(shell pwd)\n# option to run ansible-test sanity: must be either venv or docker (default is venv)\nANSIBLE_"
  },
  {
    "path": "README.md",
    "chars": 3593,
    "preview": "<!--\n  ~ Copyright (c) 2023-2026 Arista Networks, Inc.\n  ~ Use of this source code is governed by the Apache License 2.0"
  },
  {
    "path": "ansible_collections/arista/avd/.ansible-lint",
    "chars": 697,
    "preview": "---\nprofile: production\n\nskip_list:\n  - var-naming[no-role-prefix] # TODO: Fix internal variable names as a breaking cha"
  },
  {
    "path": "ansible_collections/arista/avd/.yamllint",
    "chars": 2021,
    "preview": "---\n# Based on ansible-lint config - https://ansible.readthedocs.io/projects/lint/rules/yaml/#yamllint-configuration\next"
  },
  {
    "path": "ansible_collections/arista/avd/CHANGELOG.rst",
    "chars": 337617,
    "preview": "========================\nArista.Avd Release Notes\n========================\n\n.. contents:: Topics\n\nv6.1.0\n======\n\nRelease"
  },
  {
    "path": "ansible_collections/arista/avd/CNAME",
    "chars": 15,
    "preview": "avd.arista.com\n"
  },
  {
    "path": "ansible_collections/arista/avd/LICENSE",
    "chars": 11344,
    "preview": "                                 Apache License\n                           Version 2.0, January 2004\n                   "
  },
  {
    "path": "ansible_collections/arista/avd/README.md",
    "chars": 4816,
    "preview": "<!--\n  ~ Copyright (c) 2023-2026 Arista Networks, Inc.\n  ~ Use of this source code is governed by the Apache License 2.0"
  },
  {
    "path": "ansible_collections/arista/avd/bindep.txt",
    "chars": 9,
    "preview": "make\ngit\n"
  },
  {
    "path": "ansible_collections/arista/avd/changelogs/.plugin-cache.yaml",
    "chars": 3755,
    "preview": "objects:\n  role: {}\nplugins:\n  become: {}\n  cache: {}\n  callback: {}\n  cliconf: {}\n  connection: {}\n  filter:\n    add_md"
  },
  {
    "path": "ansible_collections/arista/avd/changelogs/README.md",
    "chars": 1229,
    "preview": "<!--\n  ~ Copyright (c) 2023-2026 Arista Networks, Inc.\n  ~ Use of this source code is governed by the Apache License 2.0"
  },
  {
    "path": "ansible_collections/arista/avd/changelogs/changelog.yaml",
    "chars": 378676,
    "preview": "---\nancestor: null\nreleases:\n  3.5.0:\n    changes:\n      bugfixes:\n        - Fix(eos_cli_config_gen) - Adjust the addres"
  },
  {
    "path": "ansible_collections/arista/avd/changelogs/config.yaml",
    "chars": 856,
    "preview": "changelog_filename_template: ../CHANGELOG.rst\nchangelog_filename_version_depth: 0\nchangelog_nice_yaml: true\nchanges_file"
  },
  {
    "path": "ansible_collections/arista/avd/changelogs/fragments/.gitkeep",
    "chars": 0,
    "preview": ""
  },
  {
    "path": "ansible_collections/arista/avd/changelogs/fragments_backup/v3.6.0.yml",
    "chars": 3549,
    "preview": "release_summary: |\n  Release 3.6.0 - See documentation on avd.sh for details.\nminor_changes:\n  - Test(eos_cli_config_gen"
  },
  {
    "path": "ansible_collections/arista/avd/changelogs/fragments_backup/v3.7.0.yml",
    "chars": 8350,
    "preview": "release_summary: |\n  Release 3.7.0 - See documentation on avd.sh for details.\nminor_changes:\n  - Doc(eos_designs) - Add "
  },
  {
    "path": "ansible_collections/arista/avd/changelogs/fragments_backup/v3.8.0.yml",
    "chars": 33719,
    "preview": "release_summary: |\n  Release 3.8.0 - See documentation on avd.sh for details.\nbugfixes:\n  - Fix(eos_cli_config_gen) - do"
  },
  {
    "path": "ansible_collections/arista/avd/changelogs/fragments_backup/v4.0.0.yml",
    "chars": 37158,
    "preview": "release_summary: |\n  Release 4.0.0 - See documentation on avd.sh for details.\nbreaking_changes:\n### Breaking Changes\n  -"
  },
  {
    "path": "ansible_collections/arista/avd/changelogs/fragments_backup/v4.1.0.yml",
    "chars": 1642,
    "preview": "release_summary: |\n  Release 4.1.0 - See documentation on avd.arista.com for details.\nbugfixes:\n  - Fix(eos_designs) - S"
  },
  {
    "path": "ansible_collections/arista/avd/changelogs/fragments_backup/v4.10.0.yml",
    "chars": 6050,
    "preview": "release_summary: |\n  Release 4.10.0 - See documentation on avd.arista.com for details.\nbugfixes:\n### Fixed issues in eos"
  },
  {
    "path": "ansible_collections/arista/avd/changelogs/fragments_backup/v4.2.0.yml",
    "chars": 3673,
    "preview": "release_summary: |\n  Release 4.2.0 - See documentation on avd.arista.com for details.\nbugfixes:\n  - Fix(eos_cli_config_g"
  },
  {
    "path": "ansible_collections/arista/avd/changelogs/fragments_backup/v4.3.0.yml",
    "chars": 2653,
    "preview": "release_summary: |\n  Release 4.2.0 - See documentation on avd.arista.com for details.\nbugfixes:\n  - Fix(eos_designs) - F"
  },
  {
    "path": "ansible_collections/arista/avd/changelogs/fragments_backup/v4.4.0.yml",
    "chars": 6494,
    "preview": "release_summary: |\n  Release 4.4.0 - See documentation on avd.arista.com for details.\nbugfixes:\n  - Fix(eos_cli_config_g"
  },
  {
    "path": "ansible_collections/arista/avd/changelogs/fragments_backup/v4.5.0.yml",
    "chars": 11419,
    "preview": "release_summary: |\n  Release 4.5.0 - See documentation on avd.arista.com for details.\nbugfixes:\n  - Fix(eos_cli_config_g"
  },
  {
    "path": "ansible_collections/arista/avd/changelogs/fragments_backup/v4.6.0.yml",
    "chars": 13901,
    "preview": "release_summary: |\n  Release 4.6.0 - See documentation on avd.arista.com for details.\nbugfixes:\n### Fixed issues in eos_"
  },
  {
    "path": "ansible_collections/arista/avd/changelogs/fragments_backup/v4.7.0.yml",
    "chars": 15137,
    "preview": "release_summary: |\n  Release 4.7.0 - See documentation on avd.arista.com for details.\nbugfixes:\n### Fixed issues in eos_"
  },
  {
    "path": "ansible_collections/arista/avd/changelogs/fragments_backup/v4.7.1.yml",
    "chars": 557,
    "preview": "release_summary: |\n  Release 4.7.1 - See documentation on avd.arista.com for details.\nbugfixes:\n### Other Fixed issues\n "
  },
  {
    "path": "ansible_collections/arista/avd/changelogs/fragments_backup/v4.8.0.yml",
    "chars": 17023,
    "preview": "release_summary: |\n  Release 4.8.0 - See documentation on avd.arista.com for details.\nbugfixes:\n### Fixed issues in eos_"
  },
  {
    "path": "ansible_collections/arista/avd/changelogs/fragments_backup/v4.9.0.yml",
    "chars": 11580,
    "preview": "release_summary: |\n  Release 4.9.0 - See documentation on avd.arista.com for details.\nbugfixes:\n### Breaking Changes\n  -"
  },
  {
    "path": "ansible_collections/arista/avd/changelogs/fragments_backup/v5.0.0.yml",
    "chars": 30354,
    "preview": "release_summary: |\n  Release 5.0.0 - See documentation on avd.arista.com for details.\nbreaking_changes:\n### Breaking Cha"
  },
  {
    "path": "ansible_collections/arista/avd/changelogs/fragments_backup/v5.1.0.yml",
    "chars": 7693,
    "preview": "release_summary: |\n  Release 5.1.0 - See documentation on avd.arista.com for details.\nbugfixes:\n### Fixed issues in eos_"
  },
  {
    "path": "ansible_collections/arista/avd/changelogs/fragments_backup/v5.2.0.yml",
    "chars": 15644,
    "preview": "release_summary: |\n  Release 5.2.0 - See documentation on avd.arista.com for details.\nbugfixes:\n### Breaking Changes\n  -"
  },
  {
    "path": "ansible_collections/arista/avd/changelogs/fragments_backup/v5.3.0.yml",
    "chars": 20488,
    "preview": "release_summary: |\n  Release 5.3.0 - See documentation on avd.arista.com for details.\nbugfixes:\n## What's Changed\n### Fi"
  },
  {
    "path": "ansible_collections/arista/avd/changelogs/fragments_backup/v5.4.0.yml",
    "chars": 4308,
    "preview": "release_summary: |\n  Release 5.4.0 - See documentation on avd.arista.com for details.\nbugfixes:\n### Fixed issues in eos_"
  },
  {
    "path": "ansible_collections/arista/avd/changelogs/fragments_backup/v5.5.0.yml",
    "chars": 16430,
    "preview": "release_summary: |\n  Release 5.5.0 - See documentation on avd.arista.com for details.\nbugfixes:\n  ### Breaking Changes\n "
  },
  {
    "path": "ansible_collections/arista/avd/changelogs/fragments_backup/v5.6.0.yml",
    "chars": 14348,
    "preview": "release_summary: |\n  Release 5.6.0 - See documentation on avd.arista.com for details.\nbugfixes:\n  ### Fixed issues in eo"
  },
  {
    "path": "ansible_collections/arista/avd/changelogs/fragments_backup/v5.7.0.yml",
    "chars": 3211,
    "preview": "release_summary: |\n  Release 5.7.0 - See documentation on avd.arista.com for details.\nminor_changes:\n### Documentation\n "
  },
  {
    "path": "ansible_collections/arista/avd/changelogs/fragments_backup/v6.0.0.yml",
    "chars": 50535,
    "preview": "release_summary: |\n  Release 6.0.0 - See documentation on avd.arista.com for details.\nbreaking_changes:\n### Breaking Cha"
  },
  {
    "path": "ansible_collections/arista/avd/changelogs/fragments_backup/v6.0.1.yml",
    "chars": 215,
    "preview": "release_summary: |\n  Release 6.0.1 - See documentation on avd.arista.com for details.\nminor_changes:\n  - |-\n    Bump: gr"
  },
  {
    "path": "ansible_collections/arista/avd/changelogs/fragments_backup/v6.1.0.yml",
    "chars": 9728,
    "preview": "release_summary: |\n  Release 6.1.0 - See documentation on avd.arista.com for details.\nbugfixes:\n### Fixed issues in eos_"
  },
  {
    "path": "ansible_collections/arista/avd/examples/README.md",
    "chars": 4707,
    "preview": "---\ntitle: How to use AVD examples  # This title is used for search results\nlink: https://avd.arista.com/stable/ansible_"
  },
  {
    "path": "ansible_collections/arista/avd/examples/campus-fabric/README.md",
    "chars": 16889,
    "preview": "---\n# This title is used for search results\ntitle: Campus Fabric\n---\n<!--\n  ~ Copyright (c) 2023-2026 Arista Networks, I"
  },
  {
    "path": "ansible_collections/arista/avd/examples/campus-fabric/ansible.cfg",
    "chars": 60,
    "preview": "[defaults]\ninventory=inventory.yml\nduplicate_dict_key=error\n"
  },
  {
    "path": "ansible_collections/arista/avd/examples/campus-fabric/build.yml",
    "chars": 380,
    "preview": "---\n# build.yml\n\n- name: Build Configs\n  hosts: DC1_FABRIC\n  gather_facts: false\n  tasks:\n\n    - name: Generate AVD Stru"
  },
  {
    "path": "ansible_collections/arista/avd/examples/campus-fabric/deploy.yml",
    "chars": 521,
    "preview": "---\n# deploy.yml\n\n- name: Build and Deploy Configs\n  hosts: DC1_FABRIC\n  gather_facts: false\n  tasks:\n\n    - name: Gener"
  },
  {
    "path": "ansible_collections/arista/avd/examples/campus-fabric/documentation/devices/LEAF1A.md",
    "chars": 52547,
    "preview": "# LEAF1A\n\n## Table of Contents\n\n- [Management](#management)\n  - [Management Interfaces](#management-interfaces)\n  - [IP "
  },
  {
    "path": "ansible_collections/arista/avd/examples/campus-fabric/documentation/devices/LEAF1B.md",
    "chars": 52547,
    "preview": "# LEAF1B\n\n## Table of Contents\n\n- [Management](#management)\n  - [Management Interfaces](#management-interfaces)\n  - [IP "
  },
  {
    "path": "ansible_collections/arista/avd/examples/campus-fabric/documentation/devices/LEAF2A.md",
    "chars": 267452,
    "preview": "# LEAF2A\n\n## Table of Contents\n\n- [Management](#management)\n  - [Management Interfaces](#management-interfaces)\n  - [IP "
  },
  {
    "path": "ansible_collections/arista/avd/examples/campus-fabric/documentation/devices/LEAF3A.md",
    "chars": 93547,
    "preview": "# LEAF3A\n\n## Table of Contents\n\n- [Management](#management)\n  - [Management Interfaces](#management-interfaces)\n  - [IP "
  },
  {
    "path": "ansible_collections/arista/avd/examples/campus-fabric/documentation/devices/LEAF3B.md",
    "chars": 93549,
    "preview": "# LEAF3B\n\n## Table of Contents\n\n- [Management](#management)\n  - [Management Interfaces](#management-interfaces)\n  - [IP "
  },
  {
    "path": "ansible_collections/arista/avd/examples/campus-fabric/documentation/devices/LEAF3C.md",
    "chars": 90508,
    "preview": "# LEAF3C\n\n## Table of Contents\n\n- [Management](#management)\n  - [Management Interfaces](#management-interfaces)\n  - [IP "
  },
  {
    "path": "ansible_collections/arista/avd/examples/campus-fabric/documentation/devices/LEAF3D.md",
    "chars": 90508,
    "preview": "# LEAF3D\n\n## Table of Contents\n\n- [Management](#management)\n  - [Management Interfaces](#management-interfaces)\n  - [IP "
  },
  {
    "path": "ansible_collections/arista/avd/examples/campus-fabric/documentation/devices/LEAF3E.md",
    "chars": 90508,
    "preview": "# LEAF3E\n\n## Table of Contents\n\n- [Management](#management)\n  - [Management Interfaces](#management-interfaces)\n  - [IP "
  },
  {
    "path": "ansible_collections/arista/avd/examples/campus-fabric/documentation/devices/SPINE1.md",
    "chars": 17918,
    "preview": "# SPINE1\n\n## Table of Contents\n\n- [Management](#management)\n  - [Management Interfaces](#management-interfaces)\n  - [IP "
  },
  {
    "path": "ansible_collections/arista/avd/examples/campus-fabric/documentation/devices/SPINE2.md",
    "chars": 17918,
    "preview": "# SPINE2\n\n## Table of Contents\n\n- [Management](#management)\n  - [Management Interfaces](#management-interfaces)\n  - [IP "
  },
  {
    "path": "ansible_collections/arista/avd/examples/campus-fabric/documentation/fabric/DC1_FABRIC-documentation.md",
    "chars": 5312,
    "preview": "# DC1_FABRIC\n\n## Table of Contents\n\n- [Fabric Switches and Management IP](#fabric-switches-and-management-ip)\n  - [Fabri"
  },
  {
    "path": "ansible_collections/arista/avd/examples/campus-fabric/group_vars/DC1.yml",
    "chars": 929,
    "preview": "---\n### group_vars/DC1.yml\n\n# local users\naaa_settings:\n  # AAA Authorization\n  authorization:\n    exec:\n      default: "
  },
  {
    "path": "ansible_collections/arista/avd/examples/campus-fabric/group_vars/DC1_FABRIC.yml",
    "chars": 4134,
    "preview": "---\n### group_vars/DC1_FABRIC.yml\n\nfabric_name: DC1_FABRIC\n\n# Ansible connectivity definitions\n# eAPI connectivity via H"
  },
  {
    "path": "ansible_collections/arista/avd/examples/campus-fabric/group_vars/DC1_LEAFS.yml",
    "chars": 670,
    "preview": "---\n### group_vars/DC1_LEAFS.yml\n\ntype: l2leaf     # Must be l2leaf\n\ndot1x_settings:\n  enabled: true\n\n# local users\naaa_"
  },
  {
    "path": "ansible_collections/arista/avd/examples/campus-fabric/group_vars/DC1_NETWORK_PORTS.yml",
    "chars": 1872,
    "preview": "---\n### group_vars/DC1_NETWORK_PORTS.yml\n\nport_profiles:\n  - profile: PP-DOT1X\n    mode: \"trunk phone\"\n    spanning_tree"
  },
  {
    "path": "ansible_collections/arista/avd/examples/campus-fabric/group_vars/DC1_NETWORK_SERVICES.yml",
    "chars": 3078,
    "preview": "---\n### group_vars/DC1_NETWORK_SERVICES.yml\n\ntenants:\n  - name: MY_FABRIC\n    vrfs:\n      - name: default\n        svis:\n"
  },
  {
    "path": "ansible_collections/arista/avd/examples/campus-fabric/group_vars/DC1_SPINES.yml",
    "chars": 122,
    "preview": "---\n### group_vars/DC1_SPINES.yml\n\ntype: l3spine     # Must be either spine|l3spine\nunderlay_ospf_graceful_restart: fals"
  },
  {
    "path": "ansible_collections/arista/avd/examples/campus-fabric/intended/configs/LEAF1A.cfg",
    "chars": 31706,
    "preview": "!\nno enable password\nno aaa root\n!\nusername admin privilege 15 role network-admin nopassword\nusername arista privilege 1"
  },
  {
    "path": "ansible_collections/arista/avd/examples/campus-fabric/intended/configs/LEAF1B.cfg",
    "chars": 31706,
    "preview": "!\nno enable password\nno aaa root\n!\nusername admin privilege 15 role network-admin nopassword\nusername arista privilege 1"
  },
  {
    "path": "ansible_collections/arista/avd/examples/campus-fabric/intended/configs/LEAF2A.cfg",
    "chars": 182719,
    "preview": "!\nno enable password\nno aaa root\n!\nusername admin privilege 15 role network-admin nopassword\nusername arista privilege 1"
  },
  {
    "path": "ansible_collections/arista/avd/examples/campus-fabric/intended/configs/LEAF3A.cfg",
    "chars": 61768,
    "preview": "!\nno enable password\nno aaa root\n!\nusername admin privilege 15 role network-admin nopassword\nusername arista privilege 1"
  },
  {
    "path": "ansible_collections/arista/avd/examples/campus-fabric/intended/configs/LEAF3B.cfg",
    "chars": 61769,
    "preview": "!\nno enable password\nno aaa root\n!\nusername admin privilege 15 role network-admin nopassword\nusername arista privilege 1"
  },
  {
    "path": "ansible_collections/arista/avd/examples/campus-fabric/intended/configs/LEAF3C.cfg",
    "chars": 60123,
    "preview": "!\nno enable password\nno aaa root\n!\nusername admin privilege 15 role network-admin nopassword\nusername arista privilege 1"
  },
  {
    "path": "ansible_collections/arista/avd/examples/campus-fabric/intended/configs/LEAF3D.cfg",
    "chars": 60123,
    "preview": "!\nno enable password\nno aaa root\n!\nusername admin privilege 15 role network-admin nopassword\nusername arista privilege 1"
  },
  {
    "path": "ansible_collections/arista/avd/examples/campus-fabric/intended/configs/LEAF3E.cfg",
    "chars": 60123,
    "preview": "!\nno enable password\nno aaa root\n!\nusername admin privilege 15 role network-admin nopassword\nusername arista privilege 1"
  },
  {
    "path": "ansible_collections/arista/avd/examples/campus-fabric/intended/configs/SPINE1.cfg",
    "chars": 5123,
    "preview": "!\nno enable password\nno aaa root\n!\nusername admin privilege 15 role network-admin nopassword\nusername arista privilege 1"
  },
  {
    "path": "ansible_collections/arista/avd/examples/campus-fabric/intended/configs/SPINE2.cfg",
    "chars": 5123,
    "preview": "!\nno enable password\nno aaa root\n!\nusername admin privilege 15 role network-admin nopassword\nusername arista privilege 1"
  },
  {
    "path": "ansible_collections/arista/avd/examples/campus-fabric/intended/structured_configs/LEAF1A.yml",
    "chars": 40158,
    "preview": "aaa_accounting:\n  dot1x:\n    default:\n      type: start-stop\n      methods:\n      - multicast: false\n        method: gro"
  },
  {
    "path": "ansible_collections/arista/avd/examples/campus-fabric/intended/structured_configs/LEAF1B.yml",
    "chars": 40158,
    "preview": "aaa_accounting:\n  dot1x:\n    default:\n      type: start-stop\n      methods:\n      - multicast: false\n        method: gro"
  },
  {
    "path": "ansible_collections/arista/avd/examples/campus-fabric/intended/structured_configs/LEAF2A.yml",
    "chars": 224809,
    "preview": "aaa_accounting:\n  dot1x:\n    default:\n      type: start-stop\n      methods:\n      - multicast: false\n        method: gro"
  },
  {
    "path": "ansible_collections/arista/avd/examples/campus-fabric/intended/structured_configs/LEAF3A.yml",
    "chars": 77830,
    "preview": "aaa_accounting:\n  dot1x:\n    default:\n      type: start-stop\n      methods:\n      - multicast: false\n        method: gro"
  },
  {
    "path": "ansible_collections/arista/avd/examples/campus-fabric/intended/structured_configs/LEAF3B.yml",
    "chars": 77831,
    "preview": "aaa_accounting:\n  dot1x:\n    default:\n      type: start-stop\n      methods:\n      - multicast: false\n        method: gro"
  },
  {
    "path": "ansible_collections/arista/avd/examples/campus-fabric/intended/structured_configs/LEAF3C.yml",
    "chars": 75613,
    "preview": "aaa_accounting:\n  dot1x:\n    default:\n      type: start-stop\n      methods:\n      - multicast: false\n        method: gro"
  },
  {
    "path": "ansible_collections/arista/avd/examples/campus-fabric/intended/structured_configs/LEAF3D.yml",
    "chars": 75613,
    "preview": "aaa_accounting:\n  dot1x:\n    default:\n      type: start-stop\n      methods:\n      - multicast: false\n        method: gro"
  },
  {
    "path": "ansible_collections/arista/avd/examples/campus-fabric/intended/structured_configs/LEAF3E.yml",
    "chars": 75613,
    "preview": "aaa_accounting:\n  dot1x:\n    default:\n      type: start-stop\n      methods:\n      - multicast: false\n        method: gro"
  },
  {
    "path": "ansible_collections/arista/avd/examples/campus-fabric/intended/structured_configs/SPINE1.yml",
    "chars": 7547,
    "preview": "aaa_authorization:\n  exec:\n    default: local\naaa_root:\n  disabled: true\nconfig_end: true\nenable_password:\n  disabled: t"
  },
  {
    "path": "ansible_collections/arista/avd/examples/campus-fabric/intended/structured_configs/SPINE2.yml",
    "chars": 7547,
    "preview": "aaa_authorization:\n  exec:\n    default: local\naaa_root:\n  disabled: true\nconfig_end: true\nenable_password:\n  disabled: t"
  },
  {
    "path": "ansible_collections/arista/avd/examples/campus-fabric/inventory.yml",
    "chars": 931,
    "preview": "---\n# inventory.yml\nDC1:\n  children:\n    DC1_FABRIC:\n      children:\n        DC1_SPINES:\n          hosts:\n            SP"
  },
  {
    "path": "ansible_collections/arista/avd/examples/campus-fabric/switch-basic-configurations/LEAF1A.cfg",
    "chars": 565,
    "preview": "!\nno aaa root\n!\nusername arista privilege 15 role network-admin secret sha512 $6$Enl0WfE32FthwyiJ$yTyGaEJ2uPKLU.F7314YtB"
  },
  {
    "path": "ansible_collections/arista/avd/examples/campus-fabric/switch-basic-configurations/LEAF1B.cfg",
    "chars": 565,
    "preview": "!\nno aaa root\n!\nusername arista privilege 15 role network-admin secret sha512 $6$Enl0WfE32FthwyiJ$yTyGaEJ2uPKLU.F7314YtB"
  },
  {
    "path": "ansible_collections/arista/avd/examples/campus-fabric/switch-basic-configurations/LEAF2A.cfg",
    "chars": 565,
    "preview": "!\nno aaa root\n!\nusername arista privilege 15 role network-admin secret sha512 $6$Enl0WfE32FthwyiJ$yTyGaEJ2uPKLU.F7314YtB"
  },
  {
    "path": "ansible_collections/arista/avd/examples/campus-fabric/switch-basic-configurations/LEAF3A.cfg",
    "chars": 565,
    "preview": "!\nno aaa root\n!\nusername arista privilege 15 role network-admin secret sha512 $6$Enl0WfE32FthwyiJ$yTyGaEJ2uPKLU.F7314YtB"
  },
  {
    "path": "ansible_collections/arista/avd/examples/campus-fabric/switch-basic-configurations/LEAF3B.cfg",
    "chars": 565,
    "preview": "!\nno aaa root\n!\nusername arista privilege 15 role network-admin secret sha512 $6$Enl0WfE32FthwyiJ$yTyGaEJ2uPKLU.F7314YtB"
  },
  {
    "path": "ansible_collections/arista/avd/examples/campus-fabric/switch-basic-configurations/LEAF3C.cfg",
    "chars": 565,
    "preview": "!\nno aaa root\n!\nusername arista privilege 15 role network-admin secret sha512 $6$Enl0WfE32FthwyiJ$yTyGaEJ2uPKLU.F7314YtB"
  },
  {
    "path": "ansible_collections/arista/avd/examples/campus-fabric/switch-basic-configurations/LEAF3D.cfg",
    "chars": 565,
    "preview": "!\nno aaa root\n!\nusername arista privilege 15 role network-admin secret sha512 $6$Enl0WfE32FthwyiJ$yTyGaEJ2uPKLU.F7314YtB"
  },
  {
    "path": "ansible_collections/arista/avd/examples/campus-fabric/switch-basic-configurations/LEAF3E.cfg",
    "chars": 565,
    "preview": "!\nno aaa root\n!\nusername arista privilege 15 role network-admin secret sha512 $6$Enl0WfE32FthwyiJ$yTyGaEJ2uPKLU.F7314YtB"
  },
  {
    "path": "ansible_collections/arista/avd/examples/campus-fabric/switch-basic-configurations/SPINE1.cfg",
    "chars": 565,
    "preview": "!\nno aaa root\n!\nusername arista privilege 15 role network-admin secret sha512 $6$Enl0WfE32FthwyiJ$yTyGaEJ2uPKLU.F7314YtB"
  },
  {
    "path": "ansible_collections/arista/avd/examples/campus-fabric/switch-basic-configurations/SPINE2.cfg",
    "chars": 565,
    "preview": "!\nno aaa root\n!\nusername arista privilege 15 role network-admin secret sha512 $6$Enl0WfE32FthwyiJ$yTyGaEJ2uPKLU.F7314YtB"
  },
  {
    "path": "ansible_collections/arista/avd/examples/common/example-installation.md",
    "chars": 1517,
    "preview": "<!--\n  ~ Copyright (c) 2024-2026 Arista Networks, Inc.\n  ~ Use of this source code is governed by the Apache License 2.0"
  },
  {
    "path": "ansible_collections/arista/avd/examples/common/start-avd-playground.md",
    "chars": 1097,
    "preview": "<!--\n  ~ Copyright (c) 2026 Arista Networks, Inc.\n  ~ Use of this source code is governed by the Apache License 2.0\n  ~ "
  },
  {
    "path": "ansible_collections/arista/avd/examples/cv-pathfinder/.vault",
    "chars": 49,
    "preview": "ThisShouldNeverBeCommitedToGitButThisIsAnExample\n"
  },
  {
    "path": "ansible_collections/arista/avd/examples/cv-pathfinder/README.md",
    "chars": 24697,
    "preview": "---\n# This title is used for search results\ntitle: CV Pathfinder\n---\n<!--\n  ~ Copyright (c) 2023-2026 Arista Networks, I"
  },
  {
    "path": "ansible_collections/arista/avd/examples/cv-pathfinder/ansible.cfg",
    "chars": 162,
    "preview": "[defaults]\ninventory=inventory.yml\n\n# vault usage example\n# In production, the .vault file *must* be excluded from your "
  },
  {
    "path": "ansible_collections/arista/avd/examples/cv-pathfinder/build.yml",
    "chars": 372,
    "preview": "---\n# build.yml\n- name: Build Configs\n  hosts: WAN\n  gather_facts: false\n  tasks:\n\n    - name: Generate AVD Structured C"
  },
  {
    "path": "ansible_collections/arista/avd/examples/cv-pathfinder/deploy.yml",
    "chars": 439,
    "preview": "---\n# deploy.yml\n- name: Deploy Configurations via CVaaS\n  hosts: WAN\n  gather_facts: false\n  tasks:\n    - name: Deploy "
  },
  {
    "path": "ansible_collections/arista/avd/examples/cv-pathfinder/documentation/devices/inet-cloud.md",
    "chars": 14094,
    "preview": "# inet-cloud\n\n## Table of Contents\n\n- [Management](#management)\n  - [Management Interfaces](#management-interfaces)\n  - "
  },
  {
    "path": "ansible_collections/arista/avd/examples/cv-pathfinder/documentation/devices/mpls-cloud.md",
    "chars": 11137,
    "preview": "# mpls-cloud\n\n## Table of Contents\n\n- [Management](#management)\n  - [Management Interfaces](#management-interfaces)\n  - "
  },
  {
    "path": "ansible_collections/arista/avd/examples/cv-pathfinder/documentation/devices/pf1.md",
    "chars": 36056,
    "preview": "# pf1\n\n## Table of Contents\n\n- [Management](#management)\n  - [Management Interfaces](#management-interfaces)\n  - [DNS Do"
  },
  {
    "path": "ansible_collections/arista/avd/examples/cv-pathfinder/documentation/devices/pf2.md",
    "chars": 36056,
    "preview": "# pf2\n\n## Table of Contents\n\n- [Management](#management)\n  - [Management Interfaces](#management-interfaces)\n  - [DNS Do"
  },
  {
    "path": "ansible_collections/arista/avd/examples/cv-pathfinder/documentation/devices/site1-border1.md",
    "chars": 25964,
    "preview": "# site1-border1\n\n## Table of Contents\n\n- [Management](#management)\n  - [Management Interfaces](#management-interfaces)\n "
  },
  {
    "path": "ansible_collections/arista/avd/examples/cv-pathfinder/documentation/devices/site1-border2.md",
    "chars": 25986,
    "preview": "# site1-border2\n\n## Table of Contents\n\n- [Management](#management)\n  - [Management Interfaces](#management-interfaces)\n "
  },
  {
    "path": "ansible_collections/arista/avd/examples/cv-pathfinder/documentation/devices/site1-wan1.md",
    "chars": 47361,
    "preview": "# site1-wan1\n\n## Table of Contents\n\n- [Management](#management)\n  - [Management Interfaces](#management-interfaces)\n  - "
  },
  {
    "path": "ansible_collections/arista/avd/examples/cv-pathfinder/documentation/devices/site1-wan2.md",
    "chars": 47304,
    "preview": "# site1-wan2\n\n## Table of Contents\n\n- [Management](#management)\n  - [Management Interfaces](#management-interfaces)\n  - "
  },
  {
    "path": "ansible_collections/arista/avd/examples/cv-pathfinder/documentation/devices/site2-leaf1.md",
    "chars": 23976,
    "preview": "# site2-leaf1\n\n## Table of Contents\n\n- [Management](#management)\n  - [Management Interfaces](#management-interfaces)\n  -"
  },
  {
    "path": "ansible_collections/arista/avd/examples/cv-pathfinder/documentation/devices/site2-leaf2.md",
    "chars": 23994,
    "preview": "# site2-leaf2\n\n## Table of Contents\n\n- [Management](#management)\n  - [Management Interfaces](#management-interfaces)\n  -"
  },
  {
    "path": "ansible_collections/arista/avd/examples/cv-pathfinder/documentation/devices/site2-wan1.md",
    "chars": 41157,
    "preview": "# site2-wan1\n\n## Table of Contents\n\n- [Management](#management)\n  - [Management Interfaces](#management-interfaces)\n  - "
  },
  {
    "path": "ansible_collections/arista/avd/examples/cv-pathfinder/documentation/devices/site2-wan2.md",
    "chars": 42798,
    "preview": "# site2-wan2\n\n## Table of Contents\n\n- [Management](#management)\n  - [Management Interfaces](#management-interfaces)\n  - "
  },
  {
    "path": "ansible_collections/arista/avd/examples/cv-pathfinder/documentation/devices/site3-leaf1.md",
    "chars": 9625,
    "preview": "# site3-leaf1\n\n## Table of Contents\n\n- [Management](#management)\n  - [Management Interfaces](#management-interfaces)\n  -"
  },
  {
    "path": "ansible_collections/arista/avd/examples/cv-pathfinder/documentation/devices/site3-wan1.md",
    "chars": 35854,
    "preview": "# site3-wan1\n\n## Table of Contents\n\n- [Management](#management)\n  - [Management Interfaces](#management-interfaces)\n  - "
  },
  {
    "path": "ansible_collections/arista/avd/examples/cv-pathfinder/documentation/devices/site4-border1.md",
    "chars": 23834,
    "preview": "# site4-border1\n\n## Table of Contents\n\n- [Management](#management)\n  - [Management Interfaces](#management-interfaces)\n "
  },
  {
    "path": "ansible_collections/arista/avd/examples/cv-pathfinder/documentation/devices/site4-border2.md",
    "chars": 22400,
    "preview": "# site4-border2\n\n## Table of Contents\n\n- [Management](#management)\n  - [Management Interfaces](#management-interfaces)\n "
  },
  {
    "path": "ansible_collections/arista/avd/examples/cv-pathfinder/documentation/devices/site4-wan1.md",
    "chars": 40533,
    "preview": "# site4-wan1\n\n## Table of Contents\n\n- [Management](#management)\n  - [Management Interfaces](#management-interfaces)\n  - "
  },
  {
    "path": "ansible_collections/arista/avd/examples/cv-pathfinder/documentation/fabric/WAN-documentation.md",
    "chars": 9238,
    "preview": "# WAN\n\n## Table of Contents\n\n- [Fabric Switches and Management IP](#fabric-switches-and-management-ip)\n  - [Fabric Switc"
  },
  {
    "path": "ansible_collections/arista/avd/examples/cv-pathfinder/documentation/fabric/WAN-p2p-links.csv",
    "chars": 861,
    "preview": "Type,Node,Node Interface,Leaf IP Address,Peer Type,Peer Node,Peer Interface,Peer IP Address\nl3leaf,site1-border1,Etherne"
  },
  {
    "path": "ansible_collections/arista/avd/examples/cv-pathfinder/documentation/fabric/WAN-topology.csv",
    "chars": 5862,
    "preview": "Node Type,Node,Node Interface,Peer Type,Peer Node,Peer Interface,Node Interface Enabled\nspine,inet-cloud,Ethernet1,l3_in"
  },
  {
    "path": "ansible_collections/arista/avd/examples/cv-pathfinder/group_vars/PATHFINDERS.yml",
    "chars": 1909,
    "preview": "---\n# WAN Pathfinder nodes variables\n\nwan_rr:\n  defaults:\n    platform: CloudEOS\n    data_plane_cpu_allocation_max: 1 # "
  },
  {
    "path": "ansible_collections/arista/avd/examples/cv-pathfinder/group_vars/SITE1.yml",
    "chars": 2859,
    "preview": "---\n# SITE1 variables\n# Use eBGP as underlay routing protocol on SITE1, the default is 'none' for WAN routers.\nunderlay_"
  },
  {
    "path": "ansible_collections/arista/avd/examples/cv-pathfinder/group_vars/SITE2.yml",
    "chars": 3515,
    "preview": "---\n# SITE2 variables\n# Use eBGP as underlay routing protocol on SITE2, the default is 'none' for WAN routers.\nunderlay_"
  },
  {
    "path": "ansible_collections/arista/avd/examples/cv-pathfinder/group_vars/SITE3.yml",
    "chars": 1203,
    "preview": "---\n# SITE3 variables\n\nl2leaf:\n  defaults:\n    platform: vEOS-lab\n  nodes:\n    - name: site3-leaf1\n      mgmt_ip: 192.16"
  },
  {
    "path": "ansible_collections/arista/avd/examples/cv-pathfinder/group_vars/SITE4.yml",
    "chars": 2218,
    "preview": "---\n# SITE4 variables\n# Use eBGP as underlay routing protocol on SITE4, the default is 'none' for WAN routers.\nunderlay_"
  },
  {
    "path": "ansible_collections/arista/avd/examples/cv-pathfinder/group_vars/TRANSPORTS.yml",
    "chars": 3413,
    "preview": "---\n# Variables for the routers mpls-cloud and inet-cloud.\n# These routers are used to mock Service Providers in the exa"
  },
  {
    "path": "ansible_collections/arista/avd/examples/cv-pathfinder/group_vars/WAN/cv_pathfinder_settings.yml",
    "chars": 5543,
    "preview": "---\n# WAN CV Pathfinder settings\n\n# cv-pathfinder is default\nwan_mode: cv-pathfinder\n\n# WAN hierarchy\ncv_pathfinder_regi"
  },
  {
    "path": "ansible_collections/arista/avd/examples/cv-pathfinder/group_vars/WAN/l3_interface_profiles.yml",
    "chars": 501,
    "preview": "---\nl3_interface_profiles:\n  - profile: MPLS-WAN-INTERFACE\n    peer: mpls-cloud\n    # The static_routes uses the peer_ip"
  },
  {
    "path": "ansible_collections/arista/avd/examples/cv-pathfinder/group_vars/WAN/management.yml",
    "chars": 2692,
    "preview": "---\n# WAN Management settings\nmgmt_gateway: 192.168.17.1\n\n# NTP\nntp_settings:\n  servers:\n    - name: 0.pool.ntp.org\n\n# C"
  },
  {
    "path": "ansible_collections/arista/avd/examples/cv-pathfinder/group_vars/WAN/tenants.yml",
    "chars": 1473,
    "preview": "---\n# WAN Tenants network services\n\ntenants:\n  - name: WAN-EXAMPLE-TENANT\n    mac_vrf_vni_base: 10000\n    vrfs:\n      - "
  },
  {
    "path": "ansible_collections/arista/avd/examples/cv-pathfinder/group_vars/all.yml",
    "chars": 909,
    "preview": "---\n# Ansible variables\nansible_connection: ansible.netcommon.httpapi\nansible_network_os: arista.eos.eos\nansible_user: a"
  },
  {
    "path": "ansible_collections/arista/avd/examples/cv-pathfinder/host_vars/inet-cloud.yml",
    "chars": 35,
    "preview": "---\noverlay_routing_protocol: none\n"
  },
  {
    "path": "ansible_collections/arista/avd/examples/cv-pathfinder/intended/configs/inet-cloud.cfg",
    "chars": 3330,
    "preview": "!\nno enable password\nno aaa root\n!\nusername admin privilege 15 role network-admin nopassword\nusername arista privilege 1"
  },
  {
    "path": "ansible_collections/arista/avd/examples/cv-pathfinder/intended/configs/mpls-cloud.cfg",
    "chars": 2638,
    "preview": "!\nno enable password\nno aaa root\n!\nusername admin privilege 15 role network-admin nopassword\nusername arista privilege 1"
  },
  {
    "path": "ansible_collections/arista/avd/examples/cv-pathfinder/intended/configs/pf1.cfg",
    "chars": 11622,
    "preview": "!\nno enable password\nno aaa root\n!\nusername admin privilege 15 role network-admin nopassword\nusername arista privilege 1"
  },
  {
    "path": "ansible_collections/arista/avd/examples/cv-pathfinder/intended/configs/pf2.cfg",
    "chars": 11622,
    "preview": "!\nno enable password\nno aaa root\n!\nusername admin privilege 15 role network-admin nopassword\nusername arista privilege 1"
  },
  {
    "path": "ansible_collections/arista/avd/examples/cv-pathfinder/intended/configs/site1-border1.cfg",
    "chars": 8300,
    "preview": "!\nno enable password\nno aaa root\n!\nusername admin privilege 15 role network-admin nopassword\nusername arista privilege 1"
  },
  {
    "path": "ansible_collections/arista/avd/examples/cv-pathfinder/intended/configs/site1-border2.cfg",
    "chars": 8314,
    "preview": "!\nno enable password\nno aaa root\n!\nusername admin privilege 15 role network-admin nopassword\nusername arista privilege 1"
  },
  {
    "path": "ansible_collections/arista/avd/examples/cv-pathfinder/intended/configs/site1-wan1.cfg",
    "chars": 17280,
    "preview": "!\nno enable password\nno aaa root\n!\nusername admin privilege 15 role network-admin nopassword\nusername arista privilege 1"
  },
  {
    "path": "ansible_collections/arista/avd/examples/cv-pathfinder/intended/configs/site1-wan2.cfg",
    "chars": 17286,
    "preview": "!\nno enable password\nno aaa root\n!\nusername admin privilege 15 role network-admin nopassword\nusername arista privilege 1"
  },
  {
    "path": "ansible_collections/arista/avd/examples/cv-pathfinder/intended/configs/site2-leaf1.cfg",
    "chars": 7253,
    "preview": "!\nno enable password\nno aaa root\n!\nusername admin privilege 15 role network-admin nopassword\nusername arista privilege 1"
  },
  {
    "path": "ansible_collections/arista/avd/examples/cv-pathfinder/intended/configs/site2-leaf2.cfg",
    "chars": 7263,
    "preview": "!\nno enable password\nno aaa root\n!\nusername admin privilege 15 role network-admin nopassword\nusername arista privilege 1"
  },
  {
    "path": "ansible_collections/arista/avd/examples/cv-pathfinder/intended/configs/site2-wan1.cfg",
    "chars": 14223,
    "preview": "!\nno enable password\nno aaa root\n!\nusername admin privilege 15 role network-admin nopassword\nusername arista privilege 1"
  },
  {
    "path": "ansible_collections/arista/avd/examples/cv-pathfinder/intended/configs/site2-wan2.cfg",
    "chars": 15114,
    "preview": "!\nno enable password\nno aaa root\n!\nusername admin privilege 15 role network-admin nopassword\nusername arista privilege 1"
  },
  {
    "path": "ansible_collections/arista/avd/examples/cv-pathfinder/intended/configs/site3-leaf1.cfg",
    "chars": 1949,
    "preview": "!\nno enable password\nno aaa root\n!\nusername admin privilege 15 role network-admin nopassword\nusername arista privilege 1"
  },
  {
    "path": "ansible_collections/arista/avd/examples/cv-pathfinder/intended/configs/site3-wan1.cfg",
    "chars": 11346,
    "preview": "!\nno enable password\nno aaa root\n!\nusername admin privilege 15 role network-admin nopassword\nusername arista privilege 1"
  },
  {
    "path": "ansible_collections/arista/avd/examples/cv-pathfinder/intended/configs/site4-border1.cfg",
    "chars": 7143,
    "preview": "!\nno enable password\nno aaa root\n!\nusername admin privilege 15 role network-admin nopassword\nusername arista privilege 1"
  },
  {
    "path": "ansible_collections/arista/avd/examples/cv-pathfinder/intended/configs/site4-border2.cfg",
    "chars": 6545,
    "preview": "!\nno enable password\nno aaa root\n!\nusername admin privilege 15 role network-admin nopassword\nusername arista privilege 1"
  },
  {
    "path": "ansible_collections/arista/avd/examples/cv-pathfinder/intended/configs/site4-wan1.cfg",
    "chars": 14094,
    "preview": "!\nno enable password\nno aaa root\n!\nusername admin privilege 15 role network-admin nopassword\nusername arista privilege 1"
  },
  {
    "path": "ansible_collections/arista/avd/examples/cv-pathfinder/intended/structured_configs/inet-cloud.yml",
    "chars": 4560,
    "preview": "aaa_authorization:\n  exec:\n    default: local\naaa_root:\n  disabled: true\nconfig_end: true\ndaemon_terminattr:\n  cvaddrs:\n"
  },
  {
    "path": "ansible_collections/arista/avd/examples/cv-pathfinder/intended/structured_configs/mpls-cloud.yml",
    "chars": 3627,
    "preview": "aaa_authorization:\n  exec:\n    default: local\naaa_root:\n  disabled: true\nconfig_end: true\ndaemon_terminattr:\n  cvaddrs:\n"
  },
  {
    "path": "ansible_collections/arista/avd/examples/cv-pathfinder/intended/structured_configs/pf1.yml",
    "chars": 17845,
    "preview": "aaa_authorization:\n  exec:\n    default: local\naaa_root:\n  disabled: true\napplication_traffic_recognition:\n  field_sets:\n"
  },
  {
    "path": "ansible_collections/arista/avd/examples/cv-pathfinder/intended/structured_configs/pf2.yml",
    "chars": 17843,
    "preview": "aaa_authorization:\n  exec:\n    default: local\naaa_root:\n  disabled: true\napplication_traffic_recognition:\n  field_sets:\n"
  },
  {
    "path": "ansible_collections/arista/avd/examples/cv-pathfinder/intended/structured_configs/site1-border1.yml",
    "chars": 11108,
    "preview": "aaa_authorization:\n  exec:\n    default: local\naaa_root:\n  disabled: true\nconfig_end: true\ndaemon_terminattr:\n  cvaddrs:\n"
  },
  {
    "path": "ansible_collections/arista/avd/examples/cv-pathfinder/intended/structured_configs/site1-border2.yml",
    "chars": 11116,
    "preview": "aaa_authorization:\n  exec:\n    default: local\naaa_root:\n  disabled: true\nconfig_end: true\ndaemon_terminattr:\n  cvaddrs:\n"
  }
]

// ... and 5659 more files (download for full content)

About this extraction

This page contains the full source code of the aristanetworks/avd GitHub repository, extracted and formatted as plain text for AI agents and large language models (LLMs). The extraction includes 5859 files (47.9 MB), approximately 13.0M tokens, and a symbol index with 14832 extracted functions, classes, methods, constants, and types. Use this with OpenClaw, Claude, ChatGPT, Cursor, Windsurf, or any other AI tool that accepts text input. You can copy the full output to your clipboard or download it as a .txt file.

Extracted by GitExtract — free GitHub repo to text converter for AI. Built by Nikandr Surkov.

Copied to clipboard!