diff --git a/src/sonic-config-engine/minigraph.py b/src/sonic-config-engine/minigraph.py
index f8338c9c960..7293f02f8c2 100644
--- a/src/sonic-config-engine/minigraph.py
+++ b/src/sonic-config-engine/minigraph.py
@@ -847,6 +847,9 @@ def parse_meta(meta, hname):
resource_type = None
downstream_subrole = None
kube_data = {}
+ redundancy_type = None
+ downstream_redundancy_types = None
+
device_metas = meta.find(str(QName(ns, "Devices")))
for device in device_metas.findall(str(QName(ns1, "DeviceMetadata"))):
if device.find(str(QName(ns1, "Name"))).text.lower() == hname.lower():
@@ -881,29 +884,11 @@ def parse_meta(meta, hname):
kube_data["enable"] = value
elif name == "KubernetesServerIp":
kube_data["ip"] = value
- return syslog_servers, dhcp_servers, dhcpv6_servers, ntp_servers, tacacs_servers, mgmt_routes, erspan_dst, deployment_id, region, cloudtype, resource_type, downstream_subrole, kube_data
-
-def parse_system_defaults(meta):
- system_default_values = {}
-
- system_defaults = meta.find(str(QName(ns1, "SystemDefaults")))
-
- if system_defaults is None:
- return system_default_values
-
- for system_default in system_defaults.findall(str(QName(ns1, "SystemDefault"))):
- name = system_default.find(str(QName(ns1, "Name"))).text
- value = system_default.find(str(QName(ns1, "Value"))).text
-
- # Tunnel Qos remapping
- if name == "TunnelQosRemapEnabled":
- if value.lower() == "true":
- status = "enabled"
- else:
- status = "disabled"
- system_default_values["tunnel_qos_remap"] = {"status": status}
-
- return system_default_values
+ elif name == "DownstreamRedundancyTypes":
+ downstream_redundancy_types = value
+ elif name == "RedundancyType":
+ redundancy_type = value
+ return syslog_servers, dhcp_servers, dhcpv6_servers, ntp_servers, tacacs_servers, mgmt_routes, erspan_dst, deployment_id, region, cloudtype, resource_type, downstream_subrole, kube_data, downstream_redundancy_types, redundancy_type
def parse_linkmeta(meta, hname):
link = meta.find(str(QName(ns, "Link")))
@@ -1202,6 +1187,8 @@ def parse_xml(filename, platform=None, port_config_file=None, asic_name=None, hw
local_devices = []
kube_data = {}
system_defaults = {}
+ downstream_redundancy_types = None
+ redundancy_type = None
hwsku_qn = QName(ns, "HwSku")
hostname_qn = QName(ns, "Hostname")
@@ -1232,13 +1219,11 @@ def parse_xml(filename, platform=None, port_config_file=None, asic_name=None, hw
elif child.tag == str(QName(ns, "UngDec")):
(u_neighbors, u_devices, _, _, _, _, _, _) = parse_png(child, hostname, None)
elif child.tag == str(QName(ns, "MetadataDeclaration")):
- (syslog_servers, dhcp_servers, dhcpv6_servers, ntp_servers, tacacs_servers, mgmt_routes, erspan_dst, deployment_id, region, cloudtype, resource_type, downstream_subrole, kube_data) = parse_meta(child, hostname)
+ (syslog_servers, dhcp_servers, dhcpv6_servers, ntp_servers, tacacs_servers, mgmt_routes, erspan_dst, deployment_id, region, cloudtype, resource_type, downstream_subrole, kube_data, downstream_redundancy_types, redundancy_type) = parse_meta(child, hostname)
elif child.tag == str(QName(ns, "LinkMetadataDeclaration")):
linkmetas = parse_linkmeta(child, hostname)
elif child.tag == str(QName(ns, "DeviceInfos")):
(port_speeds_default, port_descriptions) = parse_deviceinfo(child, hwsku)
- elif child.tag == str(QName(ns, "SystemDefaultsDeclaration")):
- system_defaults = parse_system_defaults(child)
else:
if child.tag == str(QName(ns, "DpgDec")):
(intfs, lo_intfs, mvrf, mgmt_intf, vlans, vlan_members, dhcp_relay_table, pcs, pc_members, acls, vni, tunnel_intfs, dpg_ecmp_content, tunnel_intfs_qos_remap_config) = parse_dpg(child, asic_name)
@@ -1253,8 +1238,6 @@ def parse_xml(filename, platform=None, port_config_file=None, asic_name=None, hw
linkmetas = parse_linkmeta(child, hostname)
elif child.tag == str(QName(ns, "DeviceInfos")):
(port_speeds_default, port_descriptions) = parse_deviceinfo(child, hwsku)
- elif child.tag == str(QName(ns, "SystemDefaultsDeclaration")):
- system_defaults = parse_system_defaults(child)
# set the host device type in asic metadata also
device_type = [devices[key]['type'] for key in devices if key.lower() == hostname.lower()][0]
@@ -1289,9 +1272,6 @@ def parse_xml(filename, platform=None, port_config_file=None, asic_name=None, hw
}
}
- if len(system_defaults) > 0:
- results['SYSTEM_DEFAULTS'] = system_defaults
-
results['PEER_SWITCH'], mux_tunnel_name, peer_switch_ip = get_peer_switch_info(linkmetas, devices)
if bool(results['PEER_SWITCH']):
@@ -1300,7 +1280,20 @@ def parse_xml(filename, platform=None, port_config_file=None, asic_name=None, hw
print("Warning: more than one peer switch was found. Only the first will be parsed: {}".format(results['PEER_SWITCH'].keys()[0]))
results['DEVICE_METADATA']['localhost']['peer_switch'] = list(results['PEER_SWITCH'].keys())[0]
+
+ # Enable tunnel_qos_remap if downstream_redundancy_types(T1) or redundancy_type(T0) = Gemini/Libra
+ enable_tunnel_qos_map = False
+ if results['DEVICE_METADATA']['localhost']['type'].lower() == 'leafrouter' and ('gemini' in str(downstream_redundancy_types).lower() or 'libra' in str(downstream_redundancy_types).lower()):
+ enable_tunnel_qos_map = True
+ elif results['DEVICE_METADATA']['localhost']['type'].lower() == 'torrouter' and ('gemini' in str(redundancy_type).lower() or 'libra' in str(redundancy_type).lower()):
+ enable_tunnel_qos_map = True
+
+ if enable_tunnel_qos_map:
+ system_defaults['tunnel_qos_remap'] = {"status": "enabled"}
+ if len(system_defaults) > 0:
+ results['SYSTEM_DEFAULTS'] = system_defaults
+
# for this hostname, if sub_role is defined, add sub_role in
# device_metadata
if sub_role is not None:
diff --git a/src/sonic-config-engine/tests/sample-arista-7050cx3-dualtor-minigraph.xml b/src/sonic-config-engine/tests/sample-arista-7050cx3-dualtor-minigraph.xml
index 47240eb2f4b..521b5c5ae07 100644
--- a/src/sonic-config-engine/tests/sample-arista-7050cx3-dualtor-minigraph.xml
+++ b/src/sonic-config-engine/tests/sample-arista-7050cx3-dualtor-minigraph.xml
@@ -2334,19 +2334,16 @@
10.20.6.16
+
+ RedundancyType
+
+ Gemini
+
-
-
-
- TunnelQosRemapEnabled
- True
-
-
-
diff --git a/src/sonic-config-engine/tests/sample-arista-7260-dualtor-minigraph.xml b/src/sonic-config-engine/tests/sample-arista-7260-dualtor-minigraph.xml
index 613613ba37b..37e1a872887 100644
--- a/src/sonic-config-engine/tests/sample-arista-7260-dualtor-minigraph.xml
+++ b/src/sonic-config-engine/tests/sample-arista-7260-dualtor-minigraph.xml
@@ -4600,19 +4600,16 @@
10.20.6.16
+
+ RedundancyType
+
+ Gemini
+
-
-
-
- TunnelQosRemapEnabled
- True
-
-
-
diff --git a/src/sonic-config-engine/tests/sample-arista-7260-t1-minigraph.xml b/src/sonic-config-engine/tests/sample-arista-7260-t1-minigraph.xml
index 3c87489b59c..47dcdafcd40 100644
--- a/src/sonic-config-engine/tests/sample-arista-7260-t1-minigraph.xml
+++ b/src/sonic-config-engine/tests/sample-arista-7260-t1-minigraph.xml
@@ -2481,19 +2481,16 @@
10.20.6.16
+
+ DownstreamRedundancyTypes
+
+ Gemini
+
-
-
-
- TunnelQosRemapEnabled
- True
-
-
-
str-7260cx3-acs-7
Arista-7260CX3-C64
diff --git a/src/sonic-config-engine/tests/simple-sample-graph-case-remap-disabled.xml b/src/sonic-config-engine/tests/simple-sample-graph-case-remap-disabled.xml
index 7d0be06e4e8..91c0aa46c10 100644
--- a/src/sonic-config-engine/tests/simple-sample-graph-case-remap-disabled.xml
+++ b/src/sonic-config-engine/tests/simple-sample-graph-case-remap-disabled.xml
@@ -474,14 +474,6 @@
-
-
-
- TunnelQosRemapEnabled
- False
-
-
-
diff --git a/src/sonic-config-engine/tests/simple-sample-graph-case-remap-enabled-no-tunnel-attributes.xml b/src/sonic-config-engine/tests/simple-sample-graph-case-remap-enabled-no-tunnel-attributes.xml
index 6c83f37fd93..a88bc4e2ade 100644
--- a/src/sonic-config-engine/tests/simple-sample-graph-case-remap-enabled-no-tunnel-attributes.xml
+++ b/src/sonic-config-engine/tests/simple-sample-graph-case-remap-enabled-no-tunnel-attributes.xml
@@ -469,19 +469,16 @@
Storage
+
+ RedundancyType
+
+ Gemini
+
-
-
-
- TunnelQosRemapEnabled
- True
-
-
-
diff --git a/src/sonic-config-engine/tests/simple-sample-graph-case-remap-enabled.xml b/src/sonic-config-engine/tests/simple-sample-graph-case-remap-enabled.xml
index 1a49e716805..1babc8ac503 100644
--- a/src/sonic-config-engine/tests/simple-sample-graph-case-remap-enabled.xml
+++ b/src/sonic-config-engine/tests/simple-sample-graph-case-remap-enabled.xml
@@ -469,19 +469,16 @@
Storage
+
+ RedundancyType
+
+ Gemini
+
-
-
-
- TunnelQosRemapEnabled
- True
-
-
-