Remove model_query use from general dbapi calls
Removing model_query usage as it returns an object which does not get cleaned up and release any held transactions until it is garbage collected.... which is likely okay for most, but not okay with newer python and our support of sqlite. Change-Id: I792f8d3069959e6801a40d18b3cba258c46fc5ef
This commit is contained in:
parent
93688e9531
commit
ea68a4a79a
@ -127,6 +127,9 @@ def _get_deploy_template_select_with_steps():
|
||||
def model_query(model, *args, **kwargs):
|
||||
"""Query helper for simpler session usage.
|
||||
|
||||
WARNING: DO NOT USE, unless you know exactly what your doing
|
||||
AND are okay with a transaction possibly hanging.
|
||||
|
||||
:param session: if present, the session to use
|
||||
"""
|
||||
|
||||
@ -935,36 +938,44 @@ class Connection(api.Connection):
|
||||
return session.execute(query).one()[0]
|
||||
|
||||
def get_port_by_id(self, port_id):
|
||||
query = model_query(models.Port).filter_by(id=port_id)
|
||||
try:
|
||||
return query.one()
|
||||
with _session_for_read() as session:
|
||||
query = session.query(models.Port).filter_by(id=port_id)
|
||||
res = query.one()
|
||||
except NoResultFound:
|
||||
raise exception.PortNotFound(port=port_id)
|
||||
return res
|
||||
|
||||
def get_port_by_uuid(self, port_uuid):
|
||||
query = model_query(models.Port).filter_by(uuid=port_uuid)
|
||||
try:
|
||||
return query.one()
|
||||
with _session_for_read() as session:
|
||||
query = session.query(models.Port).filter_by(uuid=port_uuid)
|
||||
res = query.one()
|
||||
except NoResultFound:
|
||||
raise exception.PortNotFound(port=port_uuid)
|
||||
return res
|
||||
|
||||
def get_port_by_address(self, address, owner=None, project=None):
|
||||
query = model_query(models.Port).filter_by(address=address)
|
||||
if owner:
|
||||
query = add_port_filter_by_node_owner(query, owner)
|
||||
elif project:
|
||||
query = add_port_filter_by_node_project(query, project)
|
||||
try:
|
||||
return query.one()
|
||||
with _session_for_read() as session:
|
||||
query = session.query(models.Port).filter_by(address=address)
|
||||
if owner:
|
||||
query = add_port_filter_by_node_owner(query, owner)
|
||||
elif project:
|
||||
query = add_port_filter_by_node_project(query, project)
|
||||
res = query.one()
|
||||
except NoResultFound:
|
||||
raise exception.PortNotFound(port=address)
|
||||
return res
|
||||
|
||||
def get_port_by_name(self, port_name):
|
||||
query = model_query(models.Port).filter_by(name=port_name)
|
||||
try:
|
||||
return query.one()
|
||||
with _session_for_read() as session:
|
||||
query = session.query(models.Port).filter_by(name=port_name)
|
||||
res = query.one()
|
||||
except NoResultFound:
|
||||
raise exception.PortNotFound(port=port_name)
|
||||
return res
|
||||
|
||||
def get_port_list(self, limit=None, marker=None,
|
||||
sort_key=None, sort_dir=None, owner=None,
|
||||
@ -1061,36 +1072,49 @@ class Connection(api.Connection):
|
||||
raise exception.PortNotFound(port=port_id)
|
||||
|
||||
def get_portgroup_by_id(self, portgroup_id, project=None):
|
||||
query = model_query(models.Portgroup).filter_by(id=portgroup_id)
|
||||
if project:
|
||||
query = add_portgroup_filter_by_node_project(query, project)
|
||||
try:
|
||||
return query.one()
|
||||
with _session_for_read() as session:
|
||||
query = session.query(models.Portgroup).filter_by(
|
||||
id=portgroup_id)
|
||||
if project:
|
||||
query = add_portgroup_filter_by_node_project(query,
|
||||
project)
|
||||
res = query.one()
|
||||
except NoResultFound:
|
||||
raise exception.PortgroupNotFound(portgroup=portgroup_id)
|
||||
return res
|
||||
|
||||
def get_portgroup_by_uuid(self, portgroup_uuid):
|
||||
query = model_query(models.Portgroup).filter_by(uuid=portgroup_uuid)
|
||||
try:
|
||||
return query.one()
|
||||
with _session_for_read() as session:
|
||||
query = session.query(models.Portgroup).filter_by(
|
||||
uuid=portgroup_uuid)
|
||||
res = query.one()
|
||||
except NoResultFound:
|
||||
raise exception.PortgroupNotFound(portgroup=portgroup_uuid)
|
||||
return res
|
||||
|
||||
def get_portgroup_by_address(self, address, project=None):
|
||||
query = model_query(models.Portgroup).filter_by(address=address)
|
||||
if project:
|
||||
query = add_portgroup_filter_by_node_project(query, project)
|
||||
try:
|
||||
return query.one()
|
||||
with _session_for_read() as session:
|
||||
query = session.query(models.Portgroup).filter_by(
|
||||
address=address)
|
||||
if project:
|
||||
query = add_portgroup_filter_by_node_project(query,
|
||||
project)
|
||||
res = query.one()
|
||||
except NoResultFound:
|
||||
raise exception.PortgroupNotFound(portgroup=address)
|
||||
return res
|
||||
|
||||
def get_portgroup_by_name(self, name):
|
||||
query = model_query(models.Portgroup).filter_by(name=name)
|
||||
try:
|
||||
return query.one()
|
||||
with _session_for_read() as session:
|
||||
query = session.query(models.Portgroup).filter_by(name=name)
|
||||
res = query.one()
|
||||
except NoResultFound:
|
||||
raise exception.PortgroupNotFound(portgroup=name)
|
||||
return res
|
||||
|
||||
def get_portgroup_list(self, limit=None, marker=None,
|
||||
sort_key=None, sort_dir=None, project=None):
|
||||
@ -1533,19 +1557,24 @@ class Connection(api.Connection):
|
||||
sort_key, sort_dir, query)
|
||||
|
||||
def get_volume_connector_by_id(self, db_id):
|
||||
query = model_query(models.VolumeConnector).filter_by(id=db_id)
|
||||
try:
|
||||
return query.one()
|
||||
with _session_for_read() as session:
|
||||
query = session.query(models.VolumeConnector).filter_by(
|
||||
id=db_id)
|
||||
res = query.one()
|
||||
except NoResultFound:
|
||||
raise exception.VolumeConnectorNotFound(connector=db_id)
|
||||
return res
|
||||
|
||||
def get_volume_connector_by_uuid(self, connector_uuid):
|
||||
query = model_query(models.VolumeConnector).filter_by(
|
||||
uuid=connector_uuid)
|
||||
try:
|
||||
return query.one()
|
||||
with _session_for_read() as session:
|
||||
query = session.query(models.VolumeConnector).filter_by(
|
||||
uuid=connector_uuid)
|
||||
res = query.one()
|
||||
except NoResultFound:
|
||||
raise exception.VolumeConnectorNotFound(connector=connector_uuid)
|
||||
return res
|
||||
|
||||
def get_volume_connectors_by_node_id(self, node_id, limit=None,
|
||||
marker=None, sort_key=None,
|
||||
@ -1619,19 +1648,24 @@ class Connection(api.Connection):
|
||||
sort_key, sort_dir, query)
|
||||
|
||||
def get_volume_target_by_id(self, db_id):
|
||||
query = model_query(models.VolumeTarget).where(
|
||||
models.VolumeTarget.id == db_id)
|
||||
try:
|
||||
return query.one()
|
||||
with _session_for_read() as session:
|
||||
query = session.query(models.VolumeTarget).where(
|
||||
models.VolumeTarget.id == db_id)
|
||||
res = query.one()
|
||||
except NoResultFound:
|
||||
raise exception.VolumeTargetNotFound(target=db_id)
|
||||
return res
|
||||
|
||||
def get_volume_target_by_uuid(self, uuid):
|
||||
query = model_query(models.VolumeTarget).filter_by(uuid=uuid)
|
||||
try:
|
||||
return query.one()
|
||||
with _session_for_read() as session:
|
||||
query = session.query(models.VolumeTarget).filter_by(
|
||||
uuid=uuid)
|
||||
res = query.one()
|
||||
except NoResultFound:
|
||||
raise exception.VolumeTargetNotFound(target=uuid)
|
||||
return res
|
||||
|
||||
def get_volume_targets_by_node_id(self, node_id, limit=None, marker=None,
|
||||
sort_key=None, sort_dir=None,
|
||||
@ -2450,8 +2484,9 @@ class Connection(api.Connection):
|
||||
|
||||
def get_deploy_template_list(self, limit=None, marker=None,
|
||||
sort_key=None, sort_dir=None):
|
||||
query = model_query(models.DeployTemplate).options(
|
||||
selectinload(models.DeployTemplate.steps))
|
||||
with _session_for_read() as session:
|
||||
query = session.query(models.DeployTemplate).options(
|
||||
selectinload(models.DeployTemplate.steps))
|
||||
return _paginate_query(models.DeployTemplate, limit, marker,
|
||||
sort_key, sort_dir, query)
|
||||
|
||||
@ -2489,19 +2524,24 @@ class Connection(api.Connection):
|
||||
raise exception.NodeHistoryNotFound(history=history_uuid)
|
||||
|
||||
def get_node_history_by_id(self, history_id):
|
||||
query = model_query(models.NodeHistory).filter_by(id=history_id)
|
||||
try:
|
||||
res = query.one()
|
||||
with _session_for_read() as session:
|
||||
query = session.query(models.NodeHistory).filter_by(
|
||||
id=history_id)
|
||||
res = query.one()
|
||||
except NoResultFound:
|
||||
raise exception.NodeHistoryNotFound(history=history_id)
|
||||
return res
|
||||
|
||||
def get_node_history_by_uuid(self, history_uuid):
|
||||
query = model_query(models.NodeHistory).filter_by(uuid=history_uuid)
|
||||
try:
|
||||
return query.one()
|
||||
with _session_for_read() as session:
|
||||
query = session.query(models.NodeHistory).filter_by(
|
||||
uuid=history_uuid)
|
||||
res = query.one()
|
||||
except NoResultFound:
|
||||
raise exception.NodeHistoryNotFound(history=history_uuid)
|
||||
return res
|
||||
|
||||
def get_node_history_list(self, limit=None, marker=None,
|
||||
sort_key='created_at', sort_dir='asc'):
|
||||
@ -2510,8 +2550,9 @@ class Connection(api.Connection):
|
||||
|
||||
def get_node_history_by_node_id(self, node_id, limit=None, marker=None,
|
||||
sort_key=None, sort_dir=None):
|
||||
query = model_query(models.NodeHistory)
|
||||
query = query.where(models.NodeHistory.node_id == node_id)
|
||||
with _session_for_read() as session:
|
||||
query = session.query(models.NodeHistory)
|
||||
query = query.where(models.NodeHistory.node_id == node_id)
|
||||
return _paginate_query(models.NodeHistory, limit, marker,
|
||||
sort_key, sort_dir, query)
|
||||
|
||||
@ -2633,11 +2674,14 @@ class Connection(api.Connection):
|
||||
node=node_id)
|
||||
|
||||
def get_node_inventory_by_node_id(self, node_id):
|
||||
query = model_query(models.NodeInventory).filter_by(node_id=node_id)
|
||||
try:
|
||||
return query.one()
|
||||
with _session_for_read() as session:
|
||||
query = session.query(models.NodeInventory).filter_by(
|
||||
node_id=node_id)
|
||||
res = query.one()
|
||||
except NoResultFound:
|
||||
raise exception.NodeInventoryNotFound(node=node_id)
|
||||
return res
|
||||
|
||||
def get_shard_list(self):
|
||||
"""Return a list of shards.
|
||||
|
Loading…
x
Reference in New Issue
Block a user