Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
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
19 changes: 17 additions & 2 deletions ansible/generate_topo.py
Original file line number Diff line number Diff line change
Expand Up @@ -348,6 +348,12 @@ def _find_lag_port(port_id: int) -> bool:
link_id_end = link_id_start + 1
link_step = 1
link_type = 'peer'
elif panel_port_id in port_cfg.get("fabric_ports", []):
vm_role_cfg = dut_role_cfg["fabric"]

link_id_end = link_id_start + port_cfg.get("fabric_breakout", 1)
link_step = 1
link_type = 'fabric'
else:
# If downlink is not specified, we consider it is host interface
if dut_role_cfg["downlink"] is not None:
Expand Down Expand Up @@ -454,12 +460,16 @@ def write_topo_file(role: str,
downlink_port_count: int,
uplink_port_count: int,
peer_port_count: int,
suffix: str,
file_content: str):
downlink_keyword = f"d{downlink_port_count}" if downlink_port_count > 0 else ""
uplink_keyword = f"u{uplink_port_count}" if uplink_port_count > 0 else ""
peer_keyword = f"s{peer_port_count}" if peer_port_count > 0 else ""

file_path = f"vars/topo_{role}-{keyword}-{downlink_keyword}{uplink_keyword}{peer_keyword}.yml"
file_path = f"vars/topo_{role}-{keyword}-{downlink_keyword}{uplink_keyword}{peer_keyword}{suffix}.yml"

if role in overwrite_file_name and keyword in overwrite_file_name[role]:
file_path = f"vars/topo_{overwrite_file_name[role][keyword]}.yml"

with open(file_path, "w") as f:
f.write(file_content)
Expand Down Expand Up @@ -499,11 +509,14 @@ def main(role: str, keyword: str, template: str, port_count: int, uplinks: str,
- ./generate_topo.py -r t0 -k isolated -t t0-isolated -c 64 -l 'c512s2-sparse'
- ./generate_topo.py -r t1 -k isolated -t t1-isolated -c 64 -l 'c448o16'
- ./generate_topo.py -r t1 -k isolated -t t1-isolated -c 64 -l 'c448o16-sparse'
- ./generate_topo.py -r t1 -k isolated -t t1-isolated -c 64 -l 'c448o16-lag-sparse'
- ./generate_topo.py -r t0 -k isolated-v6 -t t0-isolated-v6 -c 64 -l 'c512s2'
- ./generate_topo.py -r t0 -k isolated-v6 -t t0-isolated-v6 -c 64 -l 'c512s2-sparse'
- ./generate_topo.py -r t1 -k isolated-v6 -t t1-isolated-v6 -c 64 -l 'c448o16'
- ./generate_topo.py -r t1 -k isolated-v6 -t t1-isolated-v6 -c 64 -l 'c448o16-sparse'
- ./generate_topo.py -r t1 -k isolated-v6 -t t1-isolated-v6 -c 64 -l 'c448o16-lag-sparse'
- ./generate_topo.py -r lt2 -k o128 -t lt2_128 -c 64 -l 'o128lt2'
- ./generate_topo.py -r lt2 -k p32o64 -t lt2_p32o64 -c 64 -l 'p32o64lt2'

"""
uplink_ports = [int(port) for port in uplinks.split(",")] if uplinks != "" else \
Expand All @@ -520,8 +533,10 @@ def main(role: str, keyword: str, template: str, port_count: int, uplinks: str,
vlan_group_list = generate_vlan_groups(downlinkif_list)
file_content = generate_topo_file(
role, f"templates/topo_{template}.j2", vm_list, downlinkif_list, vlan_group_list)

write_topo_file(role, keyword, len(downlinkif_list), len(uplinkif_list),
len(peer_ports), file_content)
len(peer_ports), '-lag' if 'lag' in link_cfg else '',
file_content)


if __name__ == "__main__":
Expand Down
1 change: 1 addition & 0 deletions ansible/roles/eos/templates/t1-isolated-d56u1-lag-tor.j2
13 changes: 12 additions & 1 deletion ansible/templates/topo_t1-isolated-v6.j2
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,9 @@ topology:
{%- for vm in vm_list %}
{{ vm.name }}:
vlans:
- {{ vm.vlans[0] }}
{%- for vlan_id in vm.vlans %}
- {{ vlan_id }}
{%- endfor %}
vm_offset: {{ vm.vm_offset }}
{%- endfor %}

Expand Down Expand Up @@ -45,8 +47,17 @@ configuration:
interfaces:
Loopback0:
ipv6: {{vm.loopback_ipv6}}/128
{%- if vm.vlans|length > 1 %}
{%- for idx in range(vm.vlans|length) %}
Ethernet{{idx+1}}:
lacp: 1
{%- endfor %}
Port-Channel1:
ipv6: {{vm.pc_intf_ipv6}}/126
{%- else %}
Ethernet1:
ipv6: {{vm.pc_intf_ipv6}}/126
{%- endif %}
bp_interface:
ipv6: {{vm.bp_ipv6}}/64
{%- endfor %}
14 changes: 13 additions & 1 deletion ansible/templates/topo_t1-isolated.j2
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,9 @@ topology:
{%- for vm in vm_list %}
{{ vm.name }}:
vlans:
- {{ vm.vlans[0] }}
{%- for vlan_id in vm.vlans %}
- {{ vlan_id }}
{%- endfor %}
vm_offset: {{ vm.vm_offset }}
{%- endfor %}

Expand Down Expand Up @@ -44,9 +46,19 @@ configuration:
Loopback0:
ipv4: {{vm.loopback_ipv4}}/32
ipv6: {{vm.loopback_ipv6}}/128
{%- if vm.vlans|length > 1 %}
{%- for idx in range(vm.vlans|length) %}
Ethernet{{idx+1}}:
lacp: 1
{%- endfor %}
Port-Channel1:
ipv4: {{vm.pc_intf_ipv4}}/31
ipv6: {{vm.pc_intf_ipv6}}/126
{%- else %}
Ethernet1:
ipv4: {{vm.pc_intf_ipv4}}/31
ipv6: {{vm.pc_intf_ipv6}}/126
{%- endif %}
bp_interface:
ipv4: {{vm.bp_ipv4}}/22
ipv6: {{vm.bp_ipv6}}/64
Expand Down
Loading
Loading