Skip to content

Commit 4213b2d

Browse files
rodnymolinalguohan
authored andcommitted
[sonic-utilities]: Final code-drop for interface-description and interface-status enhancements (#1207)
* Final code-drop for interface-description and interface-status enhancements. Here i'm adding minor extensions to support "show interface description" command. Please refer to PR#158 for more details: sonic-net/sonic-utilities#158 * Add interface-description UT and adjust logic to have 'description' field being optional RB= G=lnos-reviewers R=ntrianta,rjonnadu,rmolina,sfardeen,zxu A= * Updating reference to sonic-utilities to collect latest changes
1 parent 3d70b71 commit 4213b2d

File tree

5 files changed

+16
-6
lines changed

5 files changed

+16
-6
lines changed

dockers/docker-orchagent/ports.json.j2

+1
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
{
66
"PORT_TABLE:{{ port }}": {
77
"speed": "{{ PORT[port]['speed'] }}"
8+
"description": "{{ PORT[port]['description'] }}"
89
},
910
"OP": "SET"
1011
}{% if not loop.last %},{% endif %}

src/sonic-config-engine/minigraph.py

100644100755
+12-4
Original file line numberDiff line numberDiff line change
@@ -298,16 +298,20 @@ def parse_meta(meta, hname):
298298
return syslog_servers, dhcp_servers, ntp_servers, mgmt_routes, erspan_dst, deployment_id
299299

300300
def parse_deviceinfo(meta, hwsku):
301-
ethernet_interfaces = {}
301+
port_speeds = {}
302+
port_descriptions = {}
302303
for device_info in meta.findall(str(QName(ns, "DeviceInfo"))):
303304
dev_sku = device_info.find(str(QName(ns, "HwSku"))).text
304305
if dev_sku == hwsku:
305306
interfaces = device_info.find(str(QName(ns, "EthernetInterfaces")))
306307
for interface in interfaces.findall(str(QName(ns1, "EthernetInterface"))):
307308
alias = interface.find(str(QName(ns, "InterfaceName"))).text
308309
speed = interface.find(str(QName(ns, "Speed"))).text
309-
ethernet_interfaces[port_alias_map.get(alias, alias)] = speed
310-
return ethernet_interfaces
310+
desc = interface.find(str(QName(ns, "Description")))
311+
if desc != None:
312+
port_descriptions[port_alias_map.get(alias, alias)] = desc.text
313+
port_speeds[port_alias_map.get(alias, alias)] = speed
314+
return port_speeds, port_descriptions
311315

312316
def parse_xml(filename, platform=None, port_config_file=None):
313317
root = ET.parse(filename).getroot()
@@ -330,6 +334,7 @@ def parse_xml(filename, platform=None, port_config_file=None):
330334
devices = None
331335
hostname = None
332336
port_speeds = {}
337+
port_descriptions = {}
333338
syslog_servers = []
334339
dhcp_servers = []
335340
ntp_servers = []
@@ -360,7 +365,7 @@ def parse_xml(filename, platform=None, port_config_file=None):
360365
elif child.tag == str(QName(ns, "MetadataDeclaration")):
361366
(syslog_servers, dhcp_servers, ntp_servers, mgmt_routes, erspan_dst, deployment_id) = parse_meta(child, hostname)
362367
elif child.tag == str(QName(ns, "DeviceInfos")):
363-
port_speeds = parse_deviceinfo(child, hwsku)
368+
(port_speeds, port_descriptions) = parse_deviceinfo(child, hwsku)
364369

365370
results = {}
366371
results['DEVICE_METADATA'] = {'localhost': {
@@ -395,6 +400,9 @@ def parse_xml(filename, platform=None, port_config_file=None):
395400

396401
for port_name in port_speeds:
397402
ports.setdefault(port_name, {})['speed'] = port_speeds[port_name]
403+
for port_name in port_descriptions:
404+
ports.setdefault(port_name, {})['description'] = port_descriptions[port_name]
405+
398406
results['PORT'] = ports
399407
results['PORTCHANNEL'] = pcs
400408
results['VLAN'] = vlans

src/sonic-config-engine/tests/simple-sample-graph.xml

+1
Original file line numberDiff line numberDiff line change
@@ -243,6 +243,7 @@
243243
<PortName>0</PortName>
244244
<Priority>0</Priority>
245245
<Speed>40000</Speed>
246+
<Description>Interface description</Description>
246247
</a:EthernetInterface>
247248
<a:EthernetInterface>
248249
<ElementType>DeviceInterface</ElementType>

src/sonic-config-engine/tests/test_cfggen.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -138,4 +138,4 @@ def test_minigraph_deployment_id(self):
138138
def test_minigraph_ethernet_interfaces(self):
139139
argument = '-m "' + self.sample_graph_simple + '" -p "' + self.port_config + '" -v "PORT[\'Ethernet8\']"'
140140
output = self.run_script(argument)
141-
self.assertEqual(output.strip(), "{'alias': 'fortyGigE0/8', 'lanes': '37,38,39,40', 'speed': '40000'}")
141+
self.assertEqual(output.strip(), "{'alias': 'fortyGigE0/8', 'lanes': '37,38,39,40', 'description': 'Interface description', 'speed': '40000'}")

src/sonic-utilities

0 commit comments

Comments
 (0)