{# Default values which will be used if no actual configura available #} {% set default_cable = '300m' %} {% set default_ports_num = 32 -%} {# Port configuration to cable length look-up table #} {# Each record describes mapping of DUT (DUT port) role and neighbor role to cable length #} {# Roles described in the minigraph #} {% set ports2cable = { 'torrouter_server' : '5m', 'leafrouter_torrouter' : '40m', 'spinerouter_leafrouter' : '300m' } %} {%- macro cable_length(port_name) -%} {%- set cable_len = [] -%} {%- for local_port in DEVICE_NEIGHBOR -%} {%- if local_port == port_name -%} {%- if DEVICE_NEIGHBOR_METADATA[DEVICE_NEIGHBOR[local_port].name] -%} {%- set neighbor = DEVICE_NEIGHBOR_METADATA[DEVICE_NEIGHBOR[local_port].name] -%} {%- set neighbor_role = neighbor.type -%} {%- set roles1 = switch_role + '_' + neighbor_role %} {%- set roles2 = neighbor_role + '_' + switch_role -%} {%- set roles1 = roles1 | lower -%} {%- set roles2 = roles2 | lower -%} {%- if roles1 in ports2cable -%} {%- if cable_len.append(ports2cable[roles1]) -%}{%- endif -%} {%- elif roles2 in ports2cable -%} {%- if cable_len.append(ports2cable[roles2]) -%}{%- endif -%} {%- endif -%} {%- endif -%} {%- endif -%} {%- endfor -%} {%- if cable_len -%} {{ cable_len.0 }} {%- else -%} {{ default_cable }} {%- endif -%} {% endmacro %} {%- if DEVICE_METADATA is defined %} {%- set switch_role = DEVICE_METADATA['localhost']['type'] %} {%- endif -%} {# Generate list of ports if not defined #} {% if PORT is not defined %} {% set PORT = [] %} {% for port_idx in range(0,default_ports_num) %} {% if PORT.append("Ethernet%d" % (port_idx*4)) %}{% endif %} {% endfor %} {% endif -%} {% set port_names_list = [] %} {% for port in PORT %} {%- if port_names_list.append(port) %}{% endif %} {% endfor %} {% set port_names = port_names_list | join(',') -%} { "CABLE_LENGTH": { "AZURE": { {% for port in PORT %} {% set cable = cable_length(port) -%} "{{ port }}": "{{ cable }}"{%- if not loop.last -%},{% endif %} {% endfor %} } }, {%if switch_role == 'ToRRouter' %} {% set ingress_lossless_pool_size = '4194304' %} {% set ingress_lossy_pool_size = '7340032' %} {% set egress_lossless_pool_size = '16777152' %} {% set egress_lossy_pool_size = '7340032' %} {% else %} {% set ingress_lossless_pool_size = '2097152' %} {% set ingress_lossy_pool_size = '5242880' %} {% set egress_lossless_pool_size = '16777152' %} {% set egress_lossy_pool_size = '5242880' %} {%endif %} "BUFFER_POOL": { "ingress_lossless_pool": { "size": "{{ ingress_lossless_pool_size }}", "type": "ingress", "mode": "dynamic" }, "ingress_lossy_pool": { "size": "{{ ingress_lossy_pool_size }}", "type": "ingress", "mode": "dynamic" }, "egress_lossless_pool": { "size": "{{ egress_lossless_pool_size }}", "type": "egress", "mode": "dynamic" }, "egress_lossy_pool": { "size": "{{ egress_lossy_pool_size }}", "type": "egress", "mode": "dynamic" } }, "BUFFER_PROFILE": { "ingress_lossless_profile": { "pool":"[BUFFER_POOL|ingress_lossless_pool]", "size":"0", "dynamic_th":"0" }, "ingress_lossy_profile": { "pool":"[BUFFER_POOL|ingress_lossy_pool]", "size":"0", "dynamic_th":"3" }, "egress_lossless_profile": { "pool":"[BUFFER_POOL|egress_lossless_pool]", "size":"0", "dynamic_th":"7" }, "egress_lossy_profile": { "pool":"[BUFFER_POOL|egress_lossy_pool]", "size":"4096", "dynamic_th":"3" }, "pg_lossy_profile": { "pool":"[BUFFER_POOL|ingress_lossy_pool]", "size":"0", "dynamic_th":"3" }, "q_lossless_profile": { "pool":"[BUFFER_POOL|egress_lossless_pool]", "size":"0", "dynamic_th":"7" }, "q_lossy_profile": { "pool":"[BUFFER_POOL|egress_lossy_pool]", "size":"0", "dynamic_th":"3" } }, "BUFFER_PORT_INGRESS_PROFILE_LIST": { "{{ port_names }}": { "profile_list" : "[BUFFER_PROFILE|ingress_lossless_profile],[BUFFER_PROFILE|ingress_lossy_profile]" } }, "BUFFER_PORT_EGRESS_PROFILE_LIST": { "{{ port_names }}": { "profile_list" : "[BUFFER_PROFILE|egress_lossless_profile],[BUFFER_PROFILE|egress_lossy_profile]" } }, "BUFFER_PG": { "{{ port_names }}|0-1": { "profile" : "[BUFFER_PROFILE|pg_lossy_profile]" } }, "BUFFER_QUEUE": { "{{ port_names }}|3-4": { "profile" : "[BUFFER_PROFILE|q_lossless_profile]" }, "{{ port_names }}|0-1": { "profile" : "[BUFFER_PROFILE|q_lossy_profile]" } } }