diff --git a/quantum/plugins/nec/db/api.py b/quantum/plugins/nec/db/api.py index 8b1859f46..298ecd267 100644 --- a/quantum/plugins/nec/db/api.py +++ b/quantum/plugins/nec/db/api.py @@ -108,8 +108,9 @@ def add_ofc_item(session, resource, quantum_id, ofc_id, old_style=False): else: params = dict(quantum_id=quantum_id, ofc_id=ofc_id) item = model(**params) - session.add(item) - session.flush() + with session.begin(subtransactions=True): + session.add(item) + session.flush() except Exception as exc: LOG.exception(exc) raise nexc.NECDBException @@ -120,9 +121,9 @@ def del_ofc_item(session, resource, quantum_id, old_style=False, warning=True): try: model = _get_resource_model(resource, old_style) - item = session.query(model).filter_by(quantum_id=quantum_id).one() - session.delete(item) - session.flush() + with session.begin(subtransactions=True): + item = session.query(model).filter_by(quantum_id=quantum_id).one() + session.delete(item) return True except sa.orm.exc.NoResultFound: if warning: @@ -184,8 +185,8 @@ def add_portinfo(session, id, datapath_id='', port_no=0, try: portinfo = nmodels.PortInfo(id=id, datapath_id=datapath_id, port_no=port_no, vlan_id=vlan_id, mac=mac) - session.add(portinfo) - session.flush() + with session.begin(subtransactions=True): + session.add(portinfo) except Exception as exc: LOG.exception(exc) raise nexc.NECDBException @@ -194,9 +195,9 @@ def add_portinfo(session, id, datapath_id='', port_no=0, def del_portinfo(session, id): try: - portinfo = session.query(nmodels.PortInfo).filter_by(id=id).one() - session.delete(portinfo) - session.flush() + with session.begin(subtransactions=True): + portinfo = session.query(nmodels.PortInfo).filter_by(id=id).one() + session.delete(portinfo) except sa.orm.exc.NoResultFound: LOG.warning(_("del_portinfo(): NotFound portinfo for " "port_id: %s"), id) diff --git a/quantum/plugins/nec/db/nec_plugin_base.py b/quantum/plugins/nec/db/nec_plugin_base.py index cba8050be..820d2758d 100644 --- a/quantum/plugins/nec/db/nec_plugin_base.py +++ b/quantum/plugins/nec/db/nec_plugin_base.py @@ -104,19 +104,19 @@ class NECPluginV2Base(db_base_plugin_v2.QuantumDbPluginV2): else: params.update({key: pf.get(key)}) - with context.session.begin(): + with context.session.begin(subtransactions=True): pf_entry = nmodels.PacketFilter(**params) context.session.add(pf_entry) return self._make_packet_filter_dict(pf_entry) def update_packet_filter(self, context, id, packet_filter): pf = packet_filter['packet_filter'] - with context.session.begin(): + with context.session.begin(subtransactions=True): pf_entry = self._get_packet_filter(context, id) pf_entry.update(pf) return self._make_packet_filter_dict(pf_entry) def delete_packet_filter(self, context, id): - with context.session.begin(): + with context.session.begin(subtransactions=True): packet_filter = self._get_packet_filter(context, id) context.session.delete(packet_filter) diff --git a/quantum/plugins/nec/nec_plugin.py b/quantum/plugins/nec/nec_plugin.py index 1c0422b16..27fdd16c8 100644 --- a/quantum/plugins/nec/nec_plugin.py +++ b/quantum/plugins/nec/nec_plugin.py @@ -557,9 +557,10 @@ class NECPluginV2(nec_plugin_base.NECPluginV2Base, LOG.debug(_("NECPluginV2.update_packet_filter() called, " "id=%(id)s packet_filter=%(packet_filter)s ."), {'id': id, 'packet_filter': packet_filter}) - old_pf = super(NECPluginV2, self).get_packet_filter(context, id) - new_pf = super(NECPluginV2, self).update_packet_filter(context, id, - packet_filter) + with context.session.begin(subtransactions=True): + old_pf = super(NECPluginV2, self).get_packet_filter(context, id) + new_pf = super(NECPluginV2, self).update_packet_filter( + context, id, packet_filter) changed = False exclude_items = ["id", "name", "tenant_id", "network_id", "status"]