[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: https://github.com/Azure/sonic-utilities/pull/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
This commit is contained in:
parent
3d70b715d5
commit
4213b2dcc7
@ -5,6 +5,7 @@
|
||||
{
|
||||
"PORT_TABLE:{{ port }}": {
|
||||
"speed": "{{ PORT[port]['speed'] }}"
|
||||
"description": "{{ PORT[port]['description'] }}"
|
||||
},
|
||||
"OP": "SET"
|
||||
}{% if not loop.last %},{% endif %}
|
||||
|
16
src/sonic-config-engine/minigraph.py
Normal file → Executable file
16
src/sonic-config-engine/minigraph.py
Normal file → Executable file
@ -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
|
||||
|
@ -243,6 +243,7 @@
|
||||
<PortName>0</PortName>
|
||||
<Priority>0</Priority>
|
||||
<Speed>40000</Speed>
|
||||
<Description>Interface description</Description>
|
||||
</a:EthernetInterface>
|
||||
<a:EthernetInterface>
|
||||
<ElementType>DeviceInterface</ElementType>
|
||||
|
@ -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'}")
|
||||
|
@ -1 +1 @@
|
||||
Subproject commit e87bb97760a4cf069da51b2a0da732f7a40f3215
|
||||
Subproject commit 0c0a2f02c32a8cafb3020d8248ea829bbc959d4a
|
Loading…
Reference in New Issue
Block a user