+ Modified buffer config template to include internal ASIC with 5m ca… (#4959)
+ Modified buffer config template to include internal ASIC with 5m cable length + added unit test to verify the changes.
This commit is contained in:
parent
e1ac3cfc6a
commit
ee4197e9f8
@ -34,6 +34,7 @@ def
|
|||||||
{%- else %}
|
{%- else %}
|
||||||
{%- set ports2cable = {
|
{%- set ports2cable = {
|
||||||
'torrouter_server' : '5m',
|
'torrouter_server' : '5m',
|
||||||
|
'internal' : '5m',
|
||||||
'leafrouter_torrouter' : '40m',
|
'leafrouter_torrouter' : '40m',
|
||||||
'spinerouter_leafrouter' : '300m'
|
'spinerouter_leafrouter' : '300m'
|
||||||
}
|
}
|
||||||
@ -47,10 +48,14 @@ def
|
|||||||
{%- if DEVICE_NEIGHBOR_METADATA is defined and DEVICE_NEIGHBOR_METADATA[DEVICE_NEIGHBOR[local_port].name] %}
|
{%- if DEVICE_NEIGHBOR_METADATA is defined and DEVICE_NEIGHBOR_METADATA[DEVICE_NEIGHBOR[local_port].name] %}
|
||||||
{%- set neighbor = DEVICE_NEIGHBOR_METADATA[DEVICE_NEIGHBOR[local_port].name] %}
|
{%- set neighbor = DEVICE_NEIGHBOR_METADATA[DEVICE_NEIGHBOR[local_port].name] %}
|
||||||
{%- set neighbor_role = neighbor.type %}
|
{%- set neighbor_role = neighbor.type %}
|
||||||
{%- set roles1 = switch_role + '_' + neighbor_role %}
|
{%- if 'asic' == neighbor_role | lower %}
|
||||||
{%- set roles2 = neighbor_role + '_' + switch_role %}
|
{%- set roles1 = 'internal' %}
|
||||||
{%- set roles1 = roles1 | lower %}
|
{%- else %}
|
||||||
{%- set roles2 = roles2 | lower %}
|
{%- set roles1 = switch_role + '_' + neighbor_role %}
|
||||||
|
{%- set roles2 = neighbor_role + '_' + switch_role %}
|
||||||
|
{%- set roles1 = roles1 | lower %}
|
||||||
|
{%- set roles2 = roles2 | lower %}
|
||||||
|
{%- endif %}
|
||||||
{%- if roles1 in ports2cable %}
|
{%- if roles1 in ports2cable %}
|
||||||
{%- if cable_len.append(ports2cable[roles1]) %}{% endif %}
|
{%- if cable_len.append(ports2cable[roles1]) %}{% endif %}
|
||||||
{%- elif roles2 in ports2cable %}
|
{%- elif roles2 in ports2cable %}
|
||||||
|
@ -57,7 +57,11 @@ def sort_by_port_index(value):
|
|||||||
if not value:
|
if not value:
|
||||||
return
|
return
|
||||||
if isinstance(value, list):
|
if isinstance(value, list):
|
||||||
value.sort(key = lambda k: int(k[8:]))
|
# In multi-ASIC platforms backend ethernet ports are identified as
|
||||||
|
# 'Ethernet-BPxy'. Add 1024 to sort backend ports to the end.
|
||||||
|
value.sort(
|
||||||
|
key = lambda k: int(k[8:]) if "BP" not in k else int(k[11:]) + 1024
|
||||||
|
)
|
||||||
|
|
||||||
def is_ipv4(value):
|
def is_ipv4(value):
|
||||||
if not value:
|
if not value:
|
||||||
|
@ -4,6 +4,7 @@ import subprocess
|
|||||||
import os
|
import os
|
||||||
import json
|
import json
|
||||||
import yaml
|
import yaml
|
||||||
|
import shutil
|
||||||
|
|
||||||
SKU = 'multi-npu-01'
|
SKU = 'multi-npu-01'
|
||||||
ASIC_SKU = 'multi-npu-asic'
|
ASIC_SKU = 'multi-npu-asic'
|
||||||
@ -274,3 +275,47 @@ class TestMultiNpuCfgGen(TestCase):
|
|||||||
"Loopback0|FC00:1::32/128": {},
|
"Loopback0|FC00:1::32/128": {},
|
||||||
"Loopback4096|8.0.0.5/32": {},
|
"Loopback4096|8.0.0.5/32": {},
|
||||||
"Loopback4096|FD00:4::32/128": {}})
|
"Loopback4096|FD00:4::32/128": {}})
|
||||||
|
|
||||||
|
def test_buffers_multi_asic_template(self):
|
||||||
|
build_root_dir = os.path.join(
|
||||||
|
self.test_dir, "..", "..", ".."
|
||||||
|
)
|
||||||
|
# using Trident2 buffer configuration
|
||||||
|
device_config_dir = os.path.join(
|
||||||
|
build_root_dir,
|
||||||
|
"device",
|
||||||
|
"arista",
|
||||||
|
"x86_64-arista_7050_qx32",
|
||||||
|
"Arista-7050-QX32"
|
||||||
|
)
|
||||||
|
device_buffer_template = os.path.join(
|
||||||
|
device_config_dir, "buffers.json.j2"
|
||||||
|
)
|
||||||
|
buffer_template = os.path.join(
|
||||||
|
build_root_dir, "files", "build_templates", "buffers_config.j2"
|
||||||
|
)
|
||||||
|
port_config_ini_asic0 = os.path.join(
|
||||||
|
self.test_data_dir, "sample_port_config-0.ini"
|
||||||
|
)
|
||||||
|
# asic0 - mix of front end and back end ports
|
||||||
|
shutil.copy2(buffer_template, device_config_dir)
|
||||||
|
argument = "-m {} -p {} -n asic0 -t {}".format(
|
||||||
|
self.sample_graph, port_config_ini_asic0, device_buffer_template
|
||||||
|
)
|
||||||
|
output = json.loads(self.run_script(argument))
|
||||||
|
os.remove(os.path.join(device_config_dir, "buffers_config.j2"))
|
||||||
|
self.assertDictEqual(
|
||||||
|
output['CABLE_LENGTH'],
|
||||||
|
{
|
||||||
|
'AZURE': {
|
||||||
|
'Ethernet8': '300m',
|
||||||
|
'Ethernet0': '300m',
|
||||||
|
'Ethernet4': '300m',
|
||||||
|
'Ethernet-BP4': '5m',
|
||||||
|
'Ethernet-BP0': '5m',
|
||||||
|
'Ethernet-BP12': '5m',
|
||||||
|
'Ethernet-BP8': '5m',
|
||||||
|
'Ethernet12': '300m'
|
||||||
|
}
|
||||||
|
}
|
||||||
|
)
|
||||||
|
Loading…
Reference in New Issue
Block a user