Skip to content

Commit

Permalink
Add DeviceInfos support in minigraph parser
Browse files Browse the repository at this point in the history
  • Loading branch information
andriymoroz-mlnx committed Jul 13, 2017
1 parent 8bd272c commit 965b5fb
Show file tree
Hide file tree
Showing 2 changed files with 19 additions and 3 deletions.
7 changes: 4 additions & 3 deletions dockers/docker-orchagent/ports.json.j2
Original file line number Diff line number Diff line change
@@ -1,10 +1,11 @@
[
{% for port in port_properties %}
{% for interface in ethernet_interfaces %}
{
"PORT_TABLE:{{ port['name'] }}": {
"speed": "{{ port['speed'] }}",
"PORT_TABLE:{{ interface['name'] }}": {
"speed": "{{ interface['speed'] }}"
},
"OP": "SET"
}{% if not loop.last %},{% endif %}

{% endfor %}
]
15 changes: 15 additions & 0 deletions src/sonic-config-engine/minigraph.py
Original file line number Diff line number Diff line change
Expand Up @@ -315,6 +315,17 @@ def parse_meta(meta, hname):
deployment_id = value
return syslog_servers, dhcp_servers, ntp_servers, mgmt_routes, erspan_dst, deployment_id

def parse_deviceinfo(meta, hname):
ethernet_interfaces = []

device_info = meta.find(str(QName(ns, "DeviceInfo")))
interfaces = device_info.find(str(QName(ns, "EthernetInterfaces")))
for interface in interfaces.findall(str(QName(ns1, "EthernetInterface"))):
name = interface.find(str(QName(ns, "InterfaceName"))).text
speed = interface.find(str(QName(ns, "Speed"))).text
ethernet_interfaces.append({ 'name':name, 'speed':speed })

return ethernet_interfaces

def get_console_info(devices, dev, port):
for k, v in devices.items():
Expand Down Expand Up @@ -402,6 +413,7 @@ def parse_xml(filename, platform=None, port_config_file=None):
neighbors = None
devices = None
hostname = None
ethernet_interfaces = []
syslog_servers = []
dhcp_servers = []
ntp_servers = []
Expand Down Expand Up @@ -431,6 +443,8 @@ def parse_xml(filename, platform=None, port_config_file=None):
(u_neighbors, u_devices, _, _, _, _) = parse_png(child, hostname)
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")):
ethernet_interfaces = parse_deviceinfo(child, hostname)

Tree = lambda: defaultdict(Tree)

Expand Down Expand Up @@ -481,6 +495,7 @@ def parse_xml(filename, platform=None, port_config_file=None):
results['forced_mgmt_routes'] = mgmt_routes
results['erspan_dst'] = erspan_dst
results['deployment_id'] = deployment_id
results['ethernet_interfaces'] = ethernet_interfaces

return results

Expand Down

0 comments on commit 965b5fb

Please sign in to comment.