diff --git a/vmware_nsx/plugins/dvs/plugin.py b/vmware_nsx/plugins/dvs/plugin.py index dc76efa9d9..6d18554abe 100644 --- a/vmware_nsx/plugins/dvs/plugin.py +++ b/vmware_nsx/plugins/dvs/plugin.py @@ -146,6 +146,7 @@ class NsxDvsV2(addr_pair_db.AllowedAddressPairsMixin, if net_data.get(pnet.NETWORK_TYPE) == c_utils.NetworkTypes.VLAN: vlan_tag = net_data.get(pnet.SEGMENTATION_ID, 0) + net_id = None if net_data.get(pnet.NETWORK_TYPE) == c_utils.NetworkTypes.PORTGROUP: net_id = net_data.get(pnet.PHYSICAL_NETWORK) dvs_id = self._dvs._net_id_to_moref(net_id).value @@ -164,7 +165,7 @@ class NsxDvsV2(addr_pair_db.AllowedAddressPairsMixin, nsx_db.add_network_binding( context.session, new_net['id'], net_data.get(pnet.NETWORK_TYPE), - 'dvs', + net_id or 'dvs', vlan_tag) except Exception: with excutils.save_and_reraise_exception(): @@ -174,7 +175,7 @@ class NsxDvsV2(addr_pair_db.AllowedAddressPairsMixin, self._dvs.delete_port_group(dvs_id) new_net[pnet.NETWORK_TYPE] = net_data.get(pnet.NETWORK_TYPE) - new_net[pnet.PHYSICAL_NETWORK] = 'dvs' + new_net[pnet.PHYSICAL_NETWORK] = net_id or 'dvs' new_net[pnet.SEGMENTATION_ID] = vlan_tag # this extra lookup is necessary to get the diff --git a/vmware_nsx/tests/unit/dvs/test_plugin.py b/vmware_nsx/tests/unit/dvs/test_plugin.py index ba6bf18cf2..9853992a98 100644 --- a/vmware_nsx/tests/unit/dvs/test_plugin.py +++ b/vmware_nsx/tests/unit/dvs/test_plugin.py @@ -155,7 +155,8 @@ class NeutronSimpleDvsTest(test_plugin.NeutronDbPluginV2TestCase): self._plugin = manager.NeutronManager.get_plugin() def _create_and_delete_dvs_network(self, network_type='flat', vlan_tag=0): - params = {'provider:network_type': network_type} + params = {'provider:network_type': network_type, + 'provider:physical_network': 'fake-moid'} if network_type == 'vlan': params['provider:segmentation_id'] = vlan_tag params['arg_list'] = tuple(params.keys()) @@ -169,16 +170,18 @@ class NeutronSimpleDvsTest(test_plugin.NeutronDbPluginV2TestCase): dvs_id = '%s-%s' % (network['network']['name'], id) binding = nsx_db.get_network_bindings(ctx.session, id) self.assertIsNotNone(binding) - self.assertEqual('dvs', binding[0].phy_uuid) if network_type == 'flat': self.assertEqual('flat', binding[0].binding_type) self.assertEqual(0, binding[0].vlan_id) + self.assertEqual('dvs', binding[0].phy_uuid) elif network_type == 'vlan': self.assertEqual('vlan', binding[0].binding_type) self.assertEqual(vlan_tag, binding[0].vlan_id) + self.assertEqual('dvs', binding[0].phy_uuid) elif network_type == 'portgroup': self.assertEqual('portgroup', binding[0].binding_type) self.assertEqual(0, binding[0].vlan_id) + self.assertEqual('fake-moid', binding[0].phy_uuid) else: self.fail() if network_type != 'portgroup':