Merge "Remove model_query use from general dbapi calls"

This commit is contained in:
Zuul
2023-05-25 04:43:46 +00:00
committed by Gerrit Code Review

View File

@@ -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
"""
@@ -946,36 +949,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,
@@ -1072,36 +1083,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):
@@ -1544,19 +1568,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,
@@ -1630,19 +1659,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,
@@ -2461,8 +2495,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)
@@ -2500,19 +2535,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'):
@@ -2521,8 +2561,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)
@@ -2644,11 +2685,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.