]> review.fuel-infra Code Review - openstack-build/neutron-build.git/commitdiff
NSX: fix bug for flat provider network
authorGary Kotton <gkotton@vmware.com>
Wed, 28 May 2014 13:37:16 +0000 (06:37 -0700)
committerGary Kotton <gkotton@vmware.com>
Wed, 28 May 2014 14:57:28 +0000 (07:57 -0700)
The flat provider network would cause an exception when writing to
database. This is due to the fact that the DB expected an integer
and received an object instead.

Change-Id: Ib9d38711c0c2ef16d8bf74bfae44864a1bc272b1
Closes-bug: #1324120

neutron/plugins/vmware/plugins/base.py
neutron/tests/unit/vmware/extensions/test_providernet.py
neutron/tests/unit/vmware/test_nsx_plugin.py

index 8f2130ab26fa05e79a0798c55f7af1bd8d74cb83..2c42758e554dac8693125dcefbb93210ac8943b6 100644 (file)
@@ -1005,11 +1005,15 @@ class NsxPluginV2(addr_pair_db.AllowedAddressPairsMixin,
                 isinstance(provider_type, bool)):
                 net_bindings = []
                 for tz in net_data[mpnet.SEGMENTS]:
+                    segmentation_id = tz.get(pnet.SEGMENTATION_ID, 0)
+                    segmentation_id_set = attr.is_attr_set(segmentation_id)
+                    if not segmentation_id_set:
+                        segmentation_id = 0
                     net_bindings.append(nsx_db.add_network_binding(
                         context.session, new_net['id'],
                         tz.get(pnet.NETWORK_TYPE),
                         tz.get(pnet.PHYSICAL_NETWORK),
-                        tz.get(pnet.SEGMENTATION_ID, 0)))
+                        segmentation_id))
                 if provider_type:
                     nsx_db.set_multiprovider_network(context.session,
                                                      new_net['id'])
index 7b18713370778a6a300b0b11267a1d880d4e357f..f6057f14511ed4efc7dec76234ac3f8a65c8e4e3 100644 (file)
@@ -68,6 +68,19 @@ class TestMultiProviderNetworks(test_nsx_plugin.NsxPluginV2TestCase):
         self.assertEqual(network['network'][pnet.SEGMENTATION_ID], 1)
         self.assertNotIn(mpnet.SEGMENTS, network['network'])
 
+    def test_create_network_provider_flat(self):
+        data = {'network': {'name': 'net1',
+                            pnet.NETWORK_TYPE: 'flat',
+                            pnet.PHYSICAL_NETWORK: 'physnet1',
+                            'tenant_id': 'tenant_one'}}
+        network_req = self.new_create_request('networks', data)
+        network = self.deserialize(self.fmt,
+                                   network_req.get_response(self.api))
+        self.assertEqual('flat', network['network'][pnet.NETWORK_TYPE])
+        self.assertEqual('physnet1', network['network'][pnet.PHYSICAL_NETWORK])
+        self.assertEqual(0, network['network'][pnet.SEGMENTATION_ID])
+        self.assertNotIn(mpnet.SEGMENTS, network['network'])
+
     def test_create_network_single_multiple_provider(self):
         data = {'network': {'name': 'net1',
                             mpnet.SEGMENTS:
index 2b8effc60ca8c37c9362403b16356dcd1aa5c6a3..4161a0b2e0d46ea5d7d3772be6107425498f961e 100644 (file)
@@ -238,7 +238,7 @@ class TestPortsV2(NsxPluginV2TestCase,
 
 class TestNetworksV2(test_plugin.TestNetworksV2, NsxPluginV2TestCase):
 
-    def _test_create_bridge_network(self, vlan_id=None):
+    def _test_create_bridge_network(self, vlan_id=0):
         net_type = vlan_id and 'vlan' or 'flat'
         name = 'bridge_net'
         expected = [('subnets', []), ('name', name), ('admin_state_up', True),
@@ -469,7 +469,7 @@ class TestL3NatTestCase(L3NatTest,
                         test_l3_plugin.L3NatDBIntTestCase,
                         NsxPluginV2TestCase):
 
-    def _test_create_l3_ext_network(self, vlan_id=None):
+    def _test_create_l3_ext_network(self, vlan_id=0):
         name = 'l3_ext_net'
         net_type = utils.NetworkTypes.L3_EXT
         expected = [('subnets', []), ('name', name), ('admin_state_up', True),