diff --git a/ansible/module_utils/graph_utils.py b/ansible/module_utils/graph_utils.py index 4d4980372d3..6c2b8693773 100644 --- a/ansible/module_utils/graph_utils.py +++ b/ansible/module_utils/graph_utils.py @@ -264,6 +264,7 @@ def csv_to_graph_facts(self): end_port_mac = link.get("EndPortMac", None) autoneg_mode = link.get("AutoNeg") fec_disable = link.get("FECDisable", False) + linktraining_mode = link.get("LinkTraining", "") links.setdefault(start_device, {}) links.setdefault(end_device, {}) @@ -293,6 +294,10 @@ def csv_to_graph_facts(self): start_port_linked_port.update({"autoneg": autoneg_mode}) end_port_linked_port.update({"autoneg": autoneg_mode}) + if linktraining_mode: + start_port_linked_port.update({"linktraining": linktraining_mode}) + end_port_linked_port.update({"linktraining": linktraining_mode}) + if start_port_mac: start_port_linked_port.update({"mac": start_port_mac}) diff --git a/ansible/roles/fanout/templates/sonic_deploy_202405.j2 b/ansible/roles/fanout/templates/sonic_deploy_202405.j2 index a8657ec3b5d..da550f0a51f 100644 --- a/ansible/roles/fanout/templates/sonic_deploy_202405.j2 +++ b/ansible/roles/fanout/templates/sonic_deploy_202405.j2 @@ -23,6 +23,13 @@ "fec" : "rs", {% endif %} {% if port_name in device_conn[inventory_hostname] %} + {% if 'linktraining' in device_conn[inventory_hostname][port_name] %} + {% if 'on' in device_conn[inventory_hostname][port_name]['linktraining'] %} + "link_training": "on", + {% elif 'off' in device_conn[inventory_hostname][port_name]['linktraining'] %} + "link_training": "off", + {% endif %} + {% endif %} {% if 'autoneg' in device_conn[inventory_hostname][port_name] %} {% if 'on' in device_conn[inventory_hostname][port_name]['autoneg'] %} "autoneg": "on", diff --git a/ansible/roles/fanout/templates/sonic_deploy_202505.j2 b/ansible/roles/fanout/templates/sonic_deploy_202505.j2 index e94dc4f2a8d..98fdc321276 100644 --- a/ansible/roles/fanout/templates/sonic_deploy_202505.j2 +++ b/ansible/roles/fanout/templates/sonic_deploy_202505.j2 @@ -26,6 +26,13 @@ "fec" : "rs", {% endif %} {% if port_name in device_conn[inventory_hostname] %} + {% if 'linktraining' in device_conn[inventory_hostname][port_name] %} + {% if 'on' in device_conn[inventory_hostname][port_name]['linktraining'] %} + "link_training": "on", + {% elif 'off' in device_conn[inventory_hostname][port_name]['linktraining'] %} + "link_training": "off", + {% endif %} + {% endif %} {% if 'autoneg' in device_conn[inventory_hostname][port_name] %} {% if 'on' in device_conn[inventory_hostname][port_name]['autoneg'] %} "autoneg": "on", diff --git a/ansible/templates/minigraph_link_meta.j2 b/ansible/templates/minigraph_link_meta.j2 index 65fe5753c52..cd716038930 100644 --- a/ansible/templates/minigraph_link_meta.j2 +++ b/ansible/templates/minigraph_link_meta.j2 @@ -85,6 +85,27 @@ {% endif %} {% endif %} +{% if iface_name in device_conn[inventory_hostname] and 'linktraining' in device_conn[inventory_hostname][iface_name] %} + + + +{% if 'on' in device_conn[inventory_hostname][iface_name]['linktraining'] %} + + LinkTraining + + True + +{% elif 'off' in device_conn[inventory_hostname][iface_name]['linktraining'] %} + + LinkTraining + + False + +{% endif %} + + {{ device_conn[inventory_hostname][iface_name]['peerdevice'] }}:{{ device_conn[inventory_hostname][iface_name]['peerport'] }};{{ inventory_hostname }}:{{ port_name_map[iface_name] }} + +{% endif %} {% if device_conn[inventory_hostname][iface_name]["fec_disable"] %}