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"'