Skip to content
Open
Show file tree
Hide file tree
Changes from 56 commits
Commits
Show all changes
58 commits
Select commit Hold shift + click to select a range
8ae5bc8
init clab digital twin
ankudinov Apr 14, 2026
5b594bb
change clab filename
ankudinov Apr 14, 2026
aa78601
add clab name
ankudinov Apr 15, 2026
67f0132
[pre-commit.ci] auto fixes from pre-commit.com hooks
pre-commit-ci[bot] Apr 15, 2026
1ac0e51
add nodes and links
ankudinov Apr 29, 2026
04beaed
[pre-commit.ci] auto fixes from pre-commit.com hooks
pre-commit-ci[bot] Apr 29, 2026
9879b2b
add kinds and defaults
ankudinov Apr 30, 2026
ee45627
add containerlab mgmt
ankudinov Apr 30, 2026
b452824
[pre-commit.ci] auto fixes from pre-commit.com hooks
pre-commit-ci[bot] Apr 30, 2026
372d23e
run digital twin tests
ankudinov May 5, 2026
5f68708
Merge branch 'devel' into clab-digital-twin
ankudinov Jun 15, 2026
91cbec7
generate topology with empty prefix
ankudinov Jun 18, 2026
d21d0c1
add todo for 5649
ankudinov Jun 22, 2026
1f5e8eb
add startup configs
ankudinov Jun 22, 2026
ebe00f7
[pre-commit.ci] auto fixes from pre-commit.com hooks
pre-commit-ci[bot] Jun 22, 2026
c839fd7
add / support to interface naming
ankudinov Jun 22, 2026
64b9fe9
Merge branch 'clab-digital-twin' of https://github.com/ankudinov/avd …
ankudinov Jun 22, 2026
e7d11ad
fix mgmt, add docs, add .clab.yml to topo file
ankudinov Jun 22, 2026
c5c6012
fix the doc
ankudinov Jun 23, 2026
7863d38
Merge branch 'devel' into clab-digital-twin
ankudinov Jul 15, 2026
2ffc75a
[autofix.ci] apply automated fixes
autofix-ci[bot] Jul 15, 2026
c73b227
add digital_twin_containerlab to test_get_device_structured_config.py
ankudinov Jul 15, 2026
444069d
Merge branch 'clab-digital-twin' of https://github.com/ankudinov/avd …
ankudinov Jul 15, 2026
d10df47
post conflict resolution fixes
ankudinov Jul 15, 2026
4bf0bbe
remove redundant return
ankudinov Jul 15, 2026
5c01918
switch set() to a set literal
ankudinov Jul 15, 2026
cd4289f
add error for empty and dhcp mgmt_ip
ankudinov Jul 15, 2026
ce4cf50
add cast to str to avoid None value case
ankudinov Jul 15, 2026
1bbd520
[autofix.ci] apply automated fixes
autofix-ci[bot] Jul 15, 2026
d76f1b4
add test for containerlab_startup_config_filename
ankudinov Jul 15, 2026
6c74903
add fail test for dhcp
ankudinov Jul 15, 2026
cc4aab4
add more negative tests for mgmt_ip
ankudinov Jul 16, 2026
3c3f34d
fix assert for error match
ankudinov Jul 16, 2026
7d181f0
add fail test for multiple subnets
ankudinov Jul 16, 2026
ed8cdb8
add interface mapping support
ankudinov Jul 16, 2026
c6ef562
ignoring negative scenarious in pytest
ankudinov Jul 16, 2026
d18f6db
moving negative tests to a dedicated dir
ankudinov Jul 16, 2026
a08292e
rerun digital_twin scenario
ankudinov Jul 16, 2026
ba527f1
run eos_designs-twodc-5stage-clos
ankudinov Jul 16, 2026
4643c05
fix spelling error
ankudinov Jul 16, 2026
5ab3fe0
add _normalize_yaml_data test
ankudinov Jul 17, 2026
d33a3c2
add clab topology ordering test and update generated example in docs
ankudinov Jul 17, 2026
16463d5
Merge branch 'devel' into clab-digital-twin
ankudinov Jul 17, 2026
2917078
fix disallowed name
ankudinov Jul 17, 2026
e1fa016
remove verified_topology_links
ankudinov Jul 17, 2026
cddba24
rerun digital_twin molecule tests
ankudinov Jul 17, 2026
c96a3ea
adding clab digital twin tests to pr management
ankudinov Jul 17, 2026
101c024
change from > to mkdoc admonition
ankudinov Jul 17, 2026
79c70b6
Test: Add coverage
gmuloc Jul 20, 2026
0829118
Merge branch 'devel' into clab-digital-twin
gmuloc Jul 20, 2026
d612af9
Test: Add more coverage
gmuloc Jul 21, 2026
59df530
Merge branch 'devel' into clab-digital-twin
gmuloc Jul 21, 2026
447973a
remove containerlab_startup_config_filename
ankudinov Jul 24, 2026
816f18d
[autofix.ci] apply automated fixes
autofix-ci[bot] Jul 24, 2026
2a3c46b
add yaml linter exception for clab digital twin
ankudinov Jul 27, 2026
7de2ff8
Merge branch 'devel' into clab-digital-twin
ankudinov Jul 27, 2026
239928c
update clab topology name
ankudinov Jul 30, 2026
0b7ec75
remove register: containerlab_topology_content
ankudinov Jul 30, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions .github/workflows/pull-request-management.yml
Original file line number Diff line number Diff line change
Expand Up @@ -248,6 +248,8 @@ jobs:
avd_scenario:
- "ansible_only"
- "digital_twin"
- "digital_twin_containerlab"
- "digital_twin_containerlab_negative_tests"
- "eos_designs_deprecated_vars"
- "eos_designs-l2ls"
- "eos_designs-mpls-isis-sr-ldp"
Expand Down
1 change: 1 addition & 0 deletions .github/yamllintrc
Original file line number Diff line number Diff line change
Expand Up @@ -58,6 +58,7 @@ rules:
- /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
- /ansible_collections/arista/avd/extensions/molecule/**/digital_twin_containerlab/digital_twin/ # Auto generated cLab topology file
- /python-avd/tests/**/artifacts/ # Need to compare with auto generated structure config
- /python-avd/pyavd/**/schema/eos_*.schema.yml # Auto generated
octal-values:
Expand Down

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

why do we have a digital_twin folder inside a digital_twin folder

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Outer digital_twin references the name of the scenario/fabric that we picked (it could have been anything else overall). Inner digital_twin is a dedicated folder containing digital_twin artifacts (at lest for ACT mode) but is also tunable (via output_dir_name and documentation_dir_name vars)

Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
---
nodes:
- digital-twin-adjust-oob-mgmt-1:
node_type: veos
Expand Down
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
---
nodes:
- digital-twin-single-switch-fabric-1:
node_type: veos
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
---
- name: Converge
hosts: DIGITAL_TWIN_CONTAINERLAB
gather_facts: false
connection: local
vars:
output_dir_name: "digital_twin/intended"
documentation_dir_name: "digital_twin/documentation"
avd_digital_twin_mode: true
avd_ignore_requirements: true
tasks:
- name: Generate intended variables in Containerlab Digital Twin mode
delegate_to: 127.0.0.1
ansible.builtin.import_role:
name: arista.avd.eos_designs

- name: Generate intended EOS configs in Containerlab Digital Twin mode
delegate_to: 127.0.0.1
ansible.builtin.import_role:
name: arista.avd.eos_cli_config_gen
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
---
- name: Configure local folders
hosts: DIGITAL_TWIN_CONTAINERLAB
gather_facts: false
connection: local
vars:
root_dir: '{{ playbook_dir }}'
tasks:
- name: Create local output folders
delegate_to: 127.0.0.1
ansible.builtin.import_role:
name: arista.avd.build_output_folders
run_once: true
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
---
- name: Remove output folders
hosts: DIGITAL_TWIN_CONTAINERLAB
gather_facts: false
connection: local
tasks:
- name: Delete local folders
delegate_to: 127.0.0.1
run_once: true
ansible.builtin.file:
path: "{{ root_dir }}/{{ item }}"
state: absent
with_items:
- documentation
- intended
- config_backup
- reports
- digital_twin
Original file line number Diff line number Diff line change
@@ -0,0 +1,41 @@
---

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Would pointing language server to the schema definition be helpful with making sure all generated key are schema-compliant?

# yaml-language-server: $schema=https://raw.githubusercontent.com/srl-labs/containerlab/main/schemas/clab.schema.json

name: DIGITAL_TWIN_CONTAINERLAB, Containerlab Digital Twin
prefix: ''
mgmt:
network: custom_mgmt
ipv4-subnet: 172.16.1.0/24
topology:
defaults:
kind: arista_ceos
kinds:
arista_ceos:
enforce-startup-config: true
image: arista/ceos:latest
binds:
- interface_mapping.json:/mnt/flash/EosIntfMapping.json:ro
nodes:
dc1-leaf1a:
mgmt-ipv4: 172.16.1.101
startup-config: intended/configs/dc1-leaf1a.cfg
dc1-leaf2a:
mgmt-ipv4: 172.16.1.102
startup-config: intended/configs/dc1-leaf2a.cfg
dc1-spine1:
mgmt-ipv4: 172.16.1.11
startup-config: intended/configs/dc1-spine1.cfg
dc1-spine2:
mgmt-ipv4: 172.16.1.12
startup-config: intended/configs/dc1-spine2.cfg
links:
- endpoints:
- dc1-leaf1a:eth1
- dc1-spine1:eth1
- endpoints:
- dc1-leaf1a:eth1_2
- dc1-spine2:eth1_2
- endpoints:
- dc1-leaf2a:eth1_1
- dc1-spine1:eth1_3
- endpoints:
- dc1-leaf2a:eth2
- dc1-spine2:eth2
Loading
Loading