From 7dce5196ef3de8ca685f0caded15d23fee1fb267 Mon Sep 17 00:00:00 2001
From: shlomibitton <60430976+shlomibitton@users.noreply.github.com>
Date: Mon, 12 Jul 2021 20:39:18 +0300
Subject: [PATCH 1/2] Add DHCPv6 minigraph parsing support
---
src/sonic-config-engine/minigraph.py | 17 +++++++++++++++--
.../tests/t0-sample-graph.xml | 1 +
2 files changed, 16 insertions(+), 2 deletions(-)
diff --git a/src/sonic-config-engine/minigraph.py b/src/sonic-config-engine/minigraph.py
index dc1ab34190af..0af34b356b30 100644
--- a/src/sonic-config-engine/minigraph.py
+++ b/src/sonic-config-engine/minigraph.py
@@ -224,6 +224,16 @@ def parse_dpg(dpg, hname):
vdhcpserver_list = vintfdhcpservers.split(';')
vlan_attributes['dhcp_servers'] = vdhcpserver_list
+ vintf_node = vintf.find(str(QName(ns, "Dhcpv6Relays")))
+ if vintf_node is not None and vintf_node.text is not None:
+ vintfdhcpservers = vintf_node.text
+ vdhcpserver_list = vintfdhcpservers.split(';')
+ vlan_attributes['dhcpv6_servers'] = vdhcpserver_list
+
+ vlanmac = vintf.find(str(QName(ns, "MacAddress")))
+ if vlanmac is not None and vlanmac.text is not None:
+ vlan_attributes['mac'] = vlanmac.text
+
sonic_vlan_name = "Vlan%s" % vlanid
if sonic_vlan_name != vintfname:
vlan_attributes['alias'] = vintfname
@@ -393,6 +403,7 @@ def parse_cpg(cpg, hname):
def parse_meta(meta, hname):
syslog_servers = []
dhcp_servers = []
+ dhcpv6_servers = []
ntp_servers = []
tacacs_servers = []
mgmt_routes = []
@@ -420,7 +431,7 @@ def parse_meta(meta, hname):
erspan_dst = value_group
elif name == "DeploymentId":
deployment_id = value
- return syslog_servers, dhcp_servers, ntp_servers, tacacs_servers, mgmt_routes, erspan_dst, deployment_id
+ return syslog_servers, dhcp_servers, dhcpv6_servers, ntp_servers, tacacs_servers, mgmt_routes, erspan_dst, deployment_id
def parse_linkmeta(meta, hname):
@@ -538,6 +549,7 @@ def parse_xml(filename, platform=None, port_config_file=None):
console_ports = {}
syslog_servers = []
dhcp_servers = []
+ dhcpv6_servers = []
ntp_servers = []
tacacs_servers = []
mgmt_routes = []
@@ -569,7 +581,7 @@ def parse_xml(filename, platform=None, port_config_file=None):
elif child.tag == str(QName(ns, "UngDec")):
(u_neighbors, u_devices, _, _, _, _, _, _) = parse_png(child, hostname)
elif child.tag == str(QName(ns, "MetadataDeclaration")):
- (syslog_servers, dhcp_servers, ntp_servers, tacacs_servers, mgmt_routes, erspan_dst, deployment_id) = parse_meta(child, hostname)
+ (syslog_servers, dhcp_servers, dhcpv6_servers, ntp_servers, tacacs_servers, mgmt_routes, erspan_dst, deployment_id) = parse_meta(child, hostname)
elif child.tag == str(QName(ns, "LinkMetadataDeclaration")):
linkmetas = parse_linkmeta(child, hostname)
elif child.tag == str(QName(ns, "DeviceInfos")):
@@ -735,6 +747,7 @@ def parse_xml(filename, platform=None, port_config_file=None):
results['DEVICE_NEIGHBOR_METADATA'] = { key:devices[key] for key in devices if key.lower() != hostname.lower() }
results['SYSLOG_SERVER'] = dict((item, {}) for item in syslog_servers)
results['DHCP_SERVER'] = dict((item, {}) for item in dhcp_servers)
+ results['DHCPv6_SERVER'] = dict((item, {}) for item in dhcpv6_servers)
results['NTP_SERVER'] = dict((item, {}) for item in ntp_servers)
results['TACPLUS_SERVER'] = dict((item, {'priority': '1', 'tcp_port': '49'}) for item in tacacs_servers)
diff --git a/src/sonic-config-engine/tests/t0-sample-graph.xml b/src/sonic-config-engine/tests/t0-sample-graph.xml
index 35a0a584ad4e..8164da020688 100644
--- a/src/sonic-config-engine/tests/t0-sample-graph.xml
+++ b/src/sonic-config-engine/tests/t0-sample-graph.xml
@@ -240,6 +240,7 @@
192.0.0.1;192.0.0.2
+ fc02:2000::1;fc02:2000::2
1000
1000
192.168.0.0/27
From a28bb1e6e992e4968728efb96b9df46db6e856f7 Mon Sep 17 00:00:00 2001
From: kellyyeh <42761586+kellyyeh@users.noreply.github.com>
Date: Wed, 13 Oct 2021 17:19:26 -0700
Subject: [PATCH 2/2] Delete vlan mac in minigraph.py
---
src/sonic-config-engine/minigraph.py | 4 ----
1 file changed, 4 deletions(-)
diff --git a/src/sonic-config-engine/minigraph.py b/src/sonic-config-engine/minigraph.py
index 0af34b356b30..295f80ecb2c0 100644
--- a/src/sonic-config-engine/minigraph.py
+++ b/src/sonic-config-engine/minigraph.py
@@ -230,10 +230,6 @@ def parse_dpg(dpg, hname):
vdhcpserver_list = vintfdhcpservers.split(';')
vlan_attributes['dhcpv6_servers'] = vdhcpserver_list
- vlanmac = vintf.find(str(QName(ns, "MacAddress")))
- if vlanmac is not None and vlanmac.text is not None:
- vlan_attributes['mac'] = vlanmac.text
-
sonic_vlan_name = "Vlan%s" % vlanid
if sonic_vlan_name != vintfname:
vlan_attributes['alias'] = vintfname