diff --git a/src/sonic-config-engine/minigraph.py b/src/sonic-config-engine/minigraph.py
index 9a3555e199..c84fca445e 100644
--- a/src/sonic-config-engine/minigraph.py
+++ b/src/sonic-config-engine/minigraph.py
@@ -547,7 +547,7 @@ def parse_dpg(dpg, hname):
vlan_attributes['dhcp_servers'] = vdhcpserver_list
vlanmac = vintf.find(str(QName(ns, "MacAddress")))
- if vlanmac != None:
+ if vlanmac is not None and vlanmac.text is not None:
vlan_attributes['mac'] = vlanmac.text
sonic_vlan_name = "Vlan%s" % vlanid
diff --git a/src/sonic-config-engine/tests/simple-sample-graph-case.xml b/src/sonic-config-engine/tests/simple-sample-graph-case.xml
index 9292170034..ae7bd50a6f 100644
--- a/src/sonic-config-engine/tests/simple-sample-graph-case.xml
+++ b/src/sonic-config-engine/tests/simple-sample-graph-case.xml
@@ -139,6 +139,14 @@
192.168.0.0/27
00:aa:bb:cc:dd:ee
+
+ ab2
+ fortyGigE0/4
+ 192.0.0.1
+ 2000
+ 2000
+
+
diff --git a/src/sonic-config-engine/tests/test_minigraph_case.py b/src/sonic-config-engine/tests/test_minigraph_case.py
index 806916639b..abee457a0d 100644
--- a/src/sonic-config-engine/tests/test_minigraph_case.py
+++ b/src/sonic-config-engine/tests/test_minigraph_case.py
@@ -92,15 +92,38 @@ class TestCfgGenCaseInsensitive(TestCase):
def test_minigraph_vlans(self):
argument = '-m "' + self.sample_graph + '" -p "' + self.port_config + '" -v VLAN'
output = self.run_script(argument)
+
+ expected = {
+ 'Vlan1000': {
+ 'alias': 'ab1',
+ 'dhcp_servers': ['192.0.0.1', '192.0.0.2'],
+ 'vlanid': '1000',
+ 'mac': '00:aa:bb:cc:dd:ee',
+ 'members': ['Ethernet8']
+ },
+ 'Vlan2000': {
+ 'alias': 'ab2',
+ 'dhcp_servers': ['192.0.0.1'],
+ 'members': ['Ethernet4'],
+ 'vlanid': '2000'
+ }
+ }
self.assertEqual(
utils.to_dict(output.strip()),
- utils.to_dict("{'Vlan1000': {'alias': 'ab1', 'dhcp_servers': ['192.0.0.1', '192.0.0.2'], 'vlanid': '1000', 'mac': '00:aa:bb:cc:dd:ee', 'members': ['Ethernet8'] }}")
+ expected
)
def test_minigraph_vlan_members(self):
argument = '-m "' + self.sample_graph + '" -p "' + self.port_config + '" -v VLAN_MEMBER'
output = self.run_script(argument)
- self.assertEqual(output.strip(), "{('Vlan1000', 'Ethernet8'): {'tagging_mode': 'untagged'}}")
+ expected = {
+ 'Vlan1000|Ethernet8': {'tagging_mode': 'untagged'},
+ 'Vlan2000|Ethernet4': {'tagging_mode': 'untagged'}
+ }
+ self.assertEqual(
+ utils.to_dict(output.strip()),
+ expected
+ )
def test_minigraph_vlan_interfaces_keys(self):
argument = '-m "' + self.sample_graph + '" -p "' + self.port_config + '" -v "VLAN_INTERFACE.keys()|list"'