]> review.fuel-infra Code Review - openstack-build/neutron-build.git/commitdiff
Provide atomic database access for ports in linuxbridge plugin
authorHe Jie Xu <xuhj@linux.vnet.ibm.com>
Wed, 9 Jan 2013 01:24:04 +0000 (09:24 +0800)
committerHe Jie Xu <xuhj@linux.vnet.ibm.com>
Sat, 19 Jan 2013 02:52:39 +0000 (10:52 +0800)
Fixes bug 1097541

Change-Id: I3b16b4504b7b61cebe44df5c169f4877969c8628

quantum/plugins/linuxbridge/lb_quantum_plugin.py

index b1d4db82b1bcef1fed8992fdacbbc8bcd4deecc7..2355cf2bc2b715213cfa821ffe41e8523feb6db8 100644 (file)
@@ -438,19 +438,26 @@ class LinuxBridgePluginV2(db_base_plugin_v2.QuantumDbPluginV2,
         return port
 
     def get_port(self, context, id, fields=None):
-        port = super(LinuxBridgePluginV2, self).get_port(context, id, fields)
-        self._extend_port_dict_security_group(context, port)
+        with context.session.begin(subtransactions=True):
+            port = super(LinuxBridgePluginV2, self).get_port(context,
+                                                             id,
+                                                             fields)
+            self._extend_port_dict_security_group(context, port)
         self._extend_port_dict_binding(context, port),
         return self._fields(port, fields)
 
     def get_ports(self, context, filters=None, fields=None):
-        ports = super(LinuxBridgePluginV2, self).get_ports(context, filters,
-                                                           fields)
-        #TODO(nati) filter by security group
-        for port in ports:
-            self._extend_port_dict_security_group(context, port)
-        return [self._fields(self._extend_port_dict_binding(context, port),
-                             fields) for port in ports]
+        res_ports = []
+        with context.session.begin(subtransactions=True):
+            ports = super(LinuxBridgePluginV2, self).get_ports(context,
+                                                               filters,
+                                                               fields)
+            #TODO(nati) filter by security group
+            for port in ports:
+                self._extend_port_dict_security_group(context, port)
+                self._extend_port_dict_binding(context, port)
+                res_ports.append(self._fields(port, fields))
+        return res_ports
 
     def create_port(self, context, port):
         session = context.session