diff --git a/ansible/templates/minigraph_dpg.j2 b/ansible/templates/minigraph_dpg.j2
index f632de4c14d..a79027a9e85 100644
--- a/ansible/templates/minigraph_dpg.j2
+++ b/ansible/templates/minigraph_dpg.j2
@@ -265,6 +265,73 @@
+{% if mux_cable_facts is defined and mux_cable_facts %}
+{% if dual_tor_facts is defined and 'cables' in dual_tor_facts %}
+{% for cable in dual_tor_facts['cables'] %}
+{% set intf_index = port_alias.index(cable['dut_intf'])|string %}
+
+
+
+
+ LoopbackInterface
+ HostIP
+ Loopback0
+
+ {{ mux_cable_facts[intf_index]['server_ipv4'] }}
+
+ {{ mux_cable_facts[intf_index]['server_ipv4'] }}
+
+
+ LoopbackInterface
+ HostIP1
+ Loopback0
+
+ {{ mux_cable_facts[intf_index]['server_ipv6'] }}
+
+ {{ mux_cable_facts[intf_index]['server_ipv6'] }}
+
+{% if 'soc_ipv4' in mux_cable_facts[intf_index] %}
+
+ LoopbackInterface
+ SoCHostIP0
+ Servers{{ loop.index - 1 }}SOC
+
+ {{ mux_cable_facts[intf_index]['soc_ipv4'] }}
+
+ {{ mux_cable_facts[intf_index]['soc_ipv4'] }}
+
+{% endif %}
+{% if 'soc_ipv6' in mux_cable_facts[intf_index] %}
+
+ LoopbackInterface
+ SoCHostIP1
+ Servers{{ loop.index - 1 }}SOC
+
+ {{ mux_cable_facts[intf_index]['soc_ipv6'] }}
+
+ {{ mux_cable_facts[intf_index]['soc_ipv6'] }}
+
+{% endif %}
+
+
+
+
+
+
+ Servers{{ loop.index - 1 }}
+
+
+
+
+
+
+
+
+
+
+{% endfor %}
+{% endif %}
+{% endif %}
{% include 'minigraph_dpg_asic.j2' %}
diff --git a/ansible/templates/minigraph_meta.j2 b/ansible/templates/minigraph_meta.j2
index 3f459d61da8..3ad2c28d259 100644
--- a/ansible/templates/minigraph_meta.j2
+++ b/ansible/templates/minigraph_meta.j2
@@ -28,6 +28,19 @@
True
{% endif %}
+{% if 'dualtor-mixed' in topo %}
+
+ RedundancyType
+
+ Mixed
+
+{% elif 'dualtor' in topo %}
+
+ RedundancyType
+
+ Gemini
+
+{% endif %}
{% if dhcp_servers %}
DhcpResources
diff --git a/ansible/templates/minigraph_png.j2 b/ansible/templates/minigraph_png.j2
index e93c40c83fa..430fc8e9d75 100644
--- a/ansible/templates/minigraph_png.j2
+++ b/ansible/templates/minigraph_png.j2
@@ -44,7 +44,10 @@
{% endfor %}
{% if 'dualtor' in topo %}
{% set cable_position = 'U' if inventory_hostname == dual_tor_facts['positions']['upper'] else 'L' %}
+{% set mux_cable_facts = dual_tor_facts['mux_cable_facts'] if 'mux_cable_facts' in dual_tor_facts %}
{% for cable in dual_tor_facts['cables'] %}
+{% set intf_index = port_alias.index(cable['dut_intf'])|string %}
+{% if mux_cable_facts is not defined or mux_cable_facts[intf_index]['cable_type'] == 'active-standby' %}
LogicalLink
{{ inventory_hostname }}
@@ -52,6 +55,7 @@
{{ cable['hostname'] }}
{{ cable_position }}
+{% endif %}
{% endfor %}
{% endif %}
{% endif %}
@@ -139,21 +143,12 @@
{% set server_base_address_v6 = (vlan_configs.values() | list)[0]['prefix_v6'] %}
{% set server_base_address_v6 = server_base_address_v6 | ipaddr('network') %}
{% set server_base_address_v6 = ':'.join(server_base_address_v6.split(':')[:-1]) + ':{:x}' %}
-{% set mux_cable_facts = dual_tor_facts['mux_cable_facts'] if 'mux_cable_facts' in dual_tor_facts %}
{% for cable in dual_tor_facts['cables'] %}
-{% set intf_index = port_alias.index(cable['dut_intf'])|string %}
SmartCable
-{% if mux_cable_facts is defined %}
- {{ mux_cable_facts[intf_index]['cable_type'] }}
-
- {{ mux_cable_facts[intf_index]['soc_ipv4'] if 'soc_ipv4' in mux_cable_facts[intf_index] else '0.0.0.0/0' }}
-
-{% else %}
0.0.0.0/0
-{% endif %}
::/0
@@ -168,21 +163,12 @@
Server
-{% if mux_cable_facts is defined %}
-
- {{ mux_cable_facts[intf_index]['server_ipv4'] }}
-
-
- {{ mux_cable_facts[intf_index]['server_ipv6'] }}
-
-{% else %}
{{ server_base_address_v4.format(loop.index + 1) }}/26
{{ server_base_address_v6.format(loop.index + 1) }}/96
-{% endif %}
0.0.0.0/0