Make sure all db accesses use subtransaction
Fixes bug 1133253 Change-Id: If952eaa919cdc7536023525a397e7a8ce4b425aa
This commit is contained in:
parent
511ac76cf2
commit
9f6adb4b26
@ -108,8 +108,9 @@ def add_ofc_item(session, resource, quantum_id, ofc_id, old_style=False):
|
|||||||
else:
|
else:
|
||||||
params = dict(quantum_id=quantum_id, ofc_id=ofc_id)
|
params = dict(quantum_id=quantum_id, ofc_id=ofc_id)
|
||||||
item = model(**params)
|
item = model(**params)
|
||||||
session.add(item)
|
with session.begin(subtransactions=True):
|
||||||
session.flush()
|
session.add(item)
|
||||||
|
session.flush()
|
||||||
except Exception as exc:
|
except Exception as exc:
|
||||||
LOG.exception(exc)
|
LOG.exception(exc)
|
||||||
raise nexc.NECDBException
|
raise nexc.NECDBException
|
||||||
@ -120,9 +121,9 @@ def del_ofc_item(session, resource, quantum_id, old_style=False,
|
|||||||
warning=True):
|
warning=True):
|
||||||
try:
|
try:
|
||||||
model = _get_resource_model(resource, old_style)
|
model = _get_resource_model(resource, old_style)
|
||||||
item = session.query(model).filter_by(quantum_id=quantum_id).one()
|
with session.begin(subtransactions=True):
|
||||||
session.delete(item)
|
item = session.query(model).filter_by(quantum_id=quantum_id).one()
|
||||||
session.flush()
|
session.delete(item)
|
||||||
return True
|
return True
|
||||||
except sa.orm.exc.NoResultFound:
|
except sa.orm.exc.NoResultFound:
|
||||||
if warning:
|
if warning:
|
||||||
@ -184,8 +185,8 @@ def add_portinfo(session, id, datapath_id='', port_no=0,
|
|||||||
try:
|
try:
|
||||||
portinfo = nmodels.PortInfo(id=id, datapath_id=datapath_id,
|
portinfo = nmodels.PortInfo(id=id, datapath_id=datapath_id,
|
||||||
port_no=port_no, vlan_id=vlan_id, mac=mac)
|
port_no=port_no, vlan_id=vlan_id, mac=mac)
|
||||||
session.add(portinfo)
|
with session.begin(subtransactions=True):
|
||||||
session.flush()
|
session.add(portinfo)
|
||||||
except Exception as exc:
|
except Exception as exc:
|
||||||
LOG.exception(exc)
|
LOG.exception(exc)
|
||||||
raise nexc.NECDBException
|
raise nexc.NECDBException
|
||||||
@ -194,9 +195,9 @@ def add_portinfo(session, id, datapath_id='', port_no=0,
|
|||||||
|
|
||||||
def del_portinfo(session, id):
|
def del_portinfo(session, id):
|
||||||
try:
|
try:
|
||||||
portinfo = session.query(nmodels.PortInfo).filter_by(id=id).one()
|
with session.begin(subtransactions=True):
|
||||||
session.delete(portinfo)
|
portinfo = session.query(nmodels.PortInfo).filter_by(id=id).one()
|
||||||
session.flush()
|
session.delete(portinfo)
|
||||||
except sa.orm.exc.NoResultFound:
|
except sa.orm.exc.NoResultFound:
|
||||||
LOG.warning(_("del_portinfo(): NotFound portinfo for "
|
LOG.warning(_("del_portinfo(): NotFound portinfo for "
|
||||||
"port_id: %s"), id)
|
"port_id: %s"), id)
|
||||||
|
@ -104,19 +104,19 @@ class NECPluginV2Base(db_base_plugin_v2.QuantumDbPluginV2):
|
|||||||
else:
|
else:
|
||||||
params.update({key: pf.get(key)})
|
params.update({key: pf.get(key)})
|
||||||
|
|
||||||
with context.session.begin():
|
with context.session.begin(subtransactions=True):
|
||||||
pf_entry = nmodels.PacketFilter(**params)
|
pf_entry = nmodels.PacketFilter(**params)
|
||||||
context.session.add(pf_entry)
|
context.session.add(pf_entry)
|
||||||
return self._make_packet_filter_dict(pf_entry)
|
return self._make_packet_filter_dict(pf_entry)
|
||||||
|
|
||||||
def update_packet_filter(self, context, id, packet_filter):
|
def update_packet_filter(self, context, id, packet_filter):
|
||||||
pf = packet_filter['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 = self._get_packet_filter(context, id)
|
||||||
pf_entry.update(pf)
|
pf_entry.update(pf)
|
||||||
return self._make_packet_filter_dict(pf_entry)
|
return self._make_packet_filter_dict(pf_entry)
|
||||||
|
|
||||||
def delete_packet_filter(self, context, id):
|
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)
|
packet_filter = self._get_packet_filter(context, id)
|
||||||
context.session.delete(packet_filter)
|
context.session.delete(packet_filter)
|
||||||
|
@ -557,9 +557,10 @@ class NECPluginV2(nec_plugin_base.NECPluginV2Base,
|
|||||||
LOG.debug(_("NECPluginV2.update_packet_filter() called, "
|
LOG.debug(_("NECPluginV2.update_packet_filter() called, "
|
||||||
"id=%(id)s packet_filter=%(packet_filter)s ."),
|
"id=%(id)s packet_filter=%(packet_filter)s ."),
|
||||||
{'id': id, 'packet_filter': packet_filter})
|
{'id': id, 'packet_filter': packet_filter})
|
||||||
old_pf = super(NECPluginV2, self).get_packet_filter(context, id)
|
with context.session.begin(subtransactions=True):
|
||||||
new_pf = super(NECPluginV2, self).update_packet_filter(context, id,
|
old_pf = super(NECPluginV2, self).get_packet_filter(context, id)
|
||||||
packet_filter)
|
new_pf = super(NECPluginV2, self).update_packet_filter(
|
||||||
|
context, id, packet_filter)
|
||||||
|
|
||||||
changed = False
|
changed = False
|
||||||
exclude_items = ["id", "name", "tenant_id", "network_id", "status"]
|
exclude_items = ["id", "name", "tenant_id", "network_id", "status"]
|
||||||
|
Loading…
Reference in New Issue
Block a user