diff --git a/dockers/docker-orchagent/ports.json.j2 b/dockers/docker-orchagent/ports.json.j2
index 48be831025..7704400360 100644
--- a/dockers/docker-orchagent/ports.json.j2
+++ b/dockers/docker-orchagent/ports.json.j2
@@ -5,6 +5,7 @@
{
"PORT_TABLE:{{ port }}": {
"speed": "{{ PORT[port]['speed'] }}"
+ "description": "{{ PORT[port]['description'] }}"
},
"OP": "SET"
}{% if not loop.last %},{% endif %}
diff --git a/src/sonic-config-engine/minigraph.py b/src/sonic-config-engine/minigraph.py
old mode 100644
new mode 100755
index 8269970633..f33bd11f0b
--- a/src/sonic-config-engine/minigraph.py
+++ b/src/sonic-config-engine/minigraph.py
@@ -298,7 +298,8 @@ def parse_meta(meta, hname):
return syslog_servers, dhcp_servers, ntp_servers, mgmt_routes, erspan_dst, deployment_id
def parse_deviceinfo(meta, hwsku):
- ethernet_interfaces = {}
+ port_speeds = {}
+ port_descriptions = {}
for device_info in meta.findall(str(QName(ns, "DeviceInfo"))):
dev_sku = device_info.find(str(QName(ns, "HwSku"))).text
if dev_sku == hwsku:
@@ -306,8 +307,11 @@ def parse_deviceinfo(meta, hwsku):
for interface in interfaces.findall(str(QName(ns1, "EthernetInterface"))):
alias = interface.find(str(QName(ns, "InterfaceName"))).text
speed = interface.find(str(QName(ns, "Speed"))).text
- ethernet_interfaces[port_alias_map.get(alias, alias)] = speed
- return ethernet_interfaces
+ desc = interface.find(str(QName(ns, "Description")))
+ if desc != None:
+ port_descriptions[port_alias_map.get(alias, alias)] = desc.text
+ port_speeds[port_alias_map.get(alias, alias)] = speed
+ return port_speeds, port_descriptions
def parse_xml(filename, platform=None, port_config_file=None):
root = ET.parse(filename).getroot()
@@ -330,6 +334,7 @@ def parse_xml(filename, platform=None, port_config_file=None):
devices = None
hostname = None
port_speeds = {}
+ port_descriptions = {}
syslog_servers = []
dhcp_servers = []
ntp_servers = []
@@ -360,7 +365,7 @@ def parse_xml(filename, platform=None, port_config_file=None):
elif child.tag == str(QName(ns, "MetadataDeclaration")):
(syslog_servers, dhcp_servers, ntp_servers, mgmt_routes, erspan_dst, deployment_id) = parse_meta(child, hostname)
elif child.tag == str(QName(ns, "DeviceInfos")):
- port_speeds = parse_deviceinfo(child, hwsku)
+ (port_speeds, port_descriptions) = parse_deviceinfo(child, hwsku)
results = {}
results['DEVICE_METADATA'] = {'localhost': {
@@ -395,6 +400,9 @@ def parse_xml(filename, platform=None, port_config_file=None):
for port_name in port_speeds:
ports.setdefault(port_name, {})['speed'] = port_speeds[port_name]
+ for port_name in port_descriptions:
+ ports.setdefault(port_name, {})['description'] = port_descriptions[port_name]
+
results['PORT'] = ports
results['PORTCHANNEL'] = pcs
results['VLAN'] = vlans
diff --git a/src/sonic-config-engine/tests/simple-sample-graph.xml b/src/sonic-config-engine/tests/simple-sample-graph.xml
index 89f53af83e..cce833cc95 100644
--- a/src/sonic-config-engine/tests/simple-sample-graph.xml
+++ b/src/sonic-config-engine/tests/simple-sample-graph.xml
@@ -243,6 +243,7 @@
0
0
40000
+ Interface description
DeviceInterface
diff --git a/src/sonic-config-engine/tests/test_cfggen.py b/src/sonic-config-engine/tests/test_cfggen.py
index 47cc006f46..2eee6fe331 100644
--- a/src/sonic-config-engine/tests/test_cfggen.py
+++ b/src/sonic-config-engine/tests/test_cfggen.py
@@ -138,4 +138,4 @@ class TestCfgGen(TestCase):
def test_minigraph_ethernet_interfaces(self):
argument = '-m "' + self.sample_graph_simple + '" -p "' + self.port_config + '" -v "PORT[\'Ethernet8\']"'
output = self.run_script(argument)
- self.assertEqual(output.strip(), "{'alias': 'fortyGigE0/8', 'lanes': '37,38,39,40', 'speed': '40000'}")
+ self.assertEqual(output.strip(), "{'alias': 'fortyGigE0/8', 'lanes': '37,38,39,40', 'description': 'Interface description', 'speed': '40000'}")
diff --git a/src/sonic-utilities b/src/sonic-utilities
index e87bb97760..0c0a2f02c3 160000
--- a/src/sonic-utilities
+++ b/src/sonic-utilities
@@ -1 +1 @@
-Subproject commit e87bb97760a4cf069da51b2a0da732f7a40f3215
+Subproject commit 0c0a2f02c32a8cafb3020d8248ea829bbc959d4a