[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 }}": {
|
"PORT_TABLE:{{ port }}": {
|
||||||
"speed": "{{ PORT[port]['speed'] }}"
|
"speed": "{{ PORT[port]['speed'] }}"
|
||||||
|
"description": "{{ PORT[port]['description'] }}"
|
||||||
},
|
},
|
||||||
"OP": "SET"
|
"OP": "SET"
|
||||||
}{% if not loop.last %},{% endif %}
|
}{% 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
|
return syslog_servers, dhcp_servers, ntp_servers, mgmt_routes, erspan_dst, deployment_id
|
||||||
|
|
||||||
def parse_deviceinfo(meta, hwsku):
|
def parse_deviceinfo(meta, hwsku):
|
||||||
ethernet_interfaces = {}
|
port_speeds = {}
|
||||||
|
port_descriptions = {}
|
||||||
for device_info in meta.findall(str(QName(ns, "DeviceInfo"))):
|
for device_info in meta.findall(str(QName(ns, "DeviceInfo"))):
|
||||||
dev_sku = device_info.find(str(QName(ns, "HwSku"))).text
|
dev_sku = device_info.find(str(QName(ns, "HwSku"))).text
|
||||||
if dev_sku == hwsku:
|
if dev_sku == hwsku:
|
||||||
@ -306,8 +307,11 @@ def parse_deviceinfo(meta, hwsku):
|
|||||||
for interface in interfaces.findall(str(QName(ns1, "EthernetInterface"))):
|
for interface in interfaces.findall(str(QName(ns1, "EthernetInterface"))):
|
||||||
alias = interface.find(str(QName(ns, "InterfaceName"))).text
|
alias = interface.find(str(QName(ns, "InterfaceName"))).text
|
||||||
speed = interface.find(str(QName(ns, "Speed"))).text
|
speed = interface.find(str(QName(ns, "Speed"))).text
|
||||||
ethernet_interfaces[port_alias_map.get(alias, alias)] = speed
|
desc = interface.find(str(QName(ns, "Description")))
|
||||||
return ethernet_interfaces
|
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):
|
def parse_xml(filename, platform=None, port_config_file=None):
|
||||||
root = ET.parse(filename).getroot()
|
root = ET.parse(filename).getroot()
|
||||||
@ -330,6 +334,7 @@ def parse_xml(filename, platform=None, port_config_file=None):
|
|||||||
devices = None
|
devices = None
|
||||||
hostname = None
|
hostname = None
|
||||||
port_speeds = {}
|
port_speeds = {}
|
||||||
|
port_descriptions = {}
|
||||||
syslog_servers = []
|
syslog_servers = []
|
||||||
dhcp_servers = []
|
dhcp_servers = []
|
||||||
ntp_servers = []
|
ntp_servers = []
|
||||||
@ -360,7 +365,7 @@ def parse_xml(filename, platform=None, port_config_file=None):
|
|||||||
elif child.tag == str(QName(ns, "MetadataDeclaration")):
|
elif child.tag == str(QName(ns, "MetadataDeclaration")):
|
||||||
(syslog_servers, dhcp_servers, ntp_servers, mgmt_routes, erspan_dst, deployment_id) = parse_meta(child, hostname)
|
(syslog_servers, dhcp_servers, ntp_servers, mgmt_routes, erspan_dst, deployment_id) = parse_meta(child, hostname)
|
||||||
elif child.tag == str(QName(ns, "DeviceInfos")):
|
elif child.tag == str(QName(ns, "DeviceInfos")):
|
||||||
port_speeds = parse_deviceinfo(child, hwsku)
|
(port_speeds, port_descriptions) = parse_deviceinfo(child, hwsku)
|
||||||
|
|
||||||
results = {}
|
results = {}
|
||||||
results['DEVICE_METADATA'] = {'localhost': {
|
results['DEVICE_METADATA'] = {'localhost': {
|
||||||
@ -395,6 +400,9 @@ def parse_xml(filename, platform=None, port_config_file=None):
|
|||||||
|
|
||||||
for port_name in port_speeds:
|
for port_name in port_speeds:
|
||||||
ports.setdefault(port_name, {})['speed'] = port_speeds[port_name]
|
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['PORT'] = ports
|
||||||
results['PORTCHANNEL'] = pcs
|
results['PORTCHANNEL'] = pcs
|
||||||
results['VLAN'] = vlans
|
results['VLAN'] = vlans
|
||||||
|
@ -243,6 +243,7 @@
|
|||||||
<PortName>0</PortName>
|
<PortName>0</PortName>
|
||||||
<Priority>0</Priority>
|
<Priority>0</Priority>
|
||||||
<Speed>40000</Speed>
|
<Speed>40000</Speed>
|
||||||
|
<Description>Interface description</Description>
|
||||||
</a:EthernetInterface>
|
</a:EthernetInterface>
|
||||||
<a:EthernetInterface>
|
<a:EthernetInterface>
|
||||||
<ElementType>DeviceInterface</ElementType>
|
<ElementType>DeviceInterface</ElementType>
|
||||||
|
@ -138,4 +138,4 @@ class TestCfgGen(TestCase):
|
|||||||
def test_minigraph_ethernet_interfaces(self):
|
def test_minigraph_ethernet_interfaces(self):
|
||||||
argument = '-m "' + self.sample_graph_simple + '" -p "' + self.port_config + '" -v "PORT[\'Ethernet8\']"'
|
argument = '-m "' + self.sample_graph_simple + '" -p "' + self.port_config + '" -v "PORT[\'Ethernet8\']"'
|
||||||
output = self.run_script(argument)
|
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