Merge "Replace joinedload_all with joinedload"

This commit is contained in:
Zuul
2019-06-15 09:37:05 +00:00
committed by Gerrit Code Review

View File

@@ -46,7 +46,6 @@ from sqlalchemy import or_
from sqlalchemy.orm import aliased from sqlalchemy.orm import aliased
from sqlalchemy.orm import contains_eager from sqlalchemy.orm import contains_eager
from sqlalchemy.orm import joinedload from sqlalchemy.orm import joinedload
from sqlalchemy.orm import joinedload_all
from sqlalchemy.orm import noload from sqlalchemy.orm import noload
from sqlalchemy.orm import undefer from sqlalchemy.orm import undefer
from sqlalchemy.schema import Table from sqlalchemy.schema import Table
@@ -96,6 +95,15 @@ def _context_manager_from_context(context):
pass pass
def _joinedload_all(column):
elements = column.split('.')
joined = joinedload(elements.pop(0))
for element in elements:
joined = joined.joinedload(element)
return joined
def configure(conf): def configure(conf):
main_context_manager.configure(**_get_db_conf(conf.database)) main_context_manager.configure(**_get_db_conf(conf.database))
api_context_manager.configure(**_get_db_conf(conf.api_database)) api_context_manager.configure(**_get_db_conf(conf.api_database))
@@ -841,7 +849,7 @@ def floating_ip_get(context, id):
try: try:
result = model_query(context, models.FloatingIp, project_only=True).\ result = model_query(context, models.FloatingIp, project_only=True).\
filter_by(id=id).\ filter_by(id=id).\
options(joinedload_all('fixed_ip.instance')).\ options(_joinedload_all('fixed_ip.instance')).\
first() first()
if not result: if not result:
@@ -1060,7 +1068,7 @@ def floating_ip_get_all_by_project(context, project_id):
return _floating_ip_get_all(context).\ return _floating_ip_get_all(context).\
filter_by(project_id=project_id).\ filter_by(project_id=project_id).\
filter_by(auto_assigned=False).\ filter_by(auto_assigned=False).\
options(joinedload_all('fixed_ip.instance')).\ options(_joinedload_all('fixed_ip.instance')).\
all() all()
@@ -1078,7 +1086,7 @@ def _floating_ip_get_by_address(context, address):
try: try:
result = model_query(context, models.FloatingIp).\ result = model_query(context, models.FloatingIp).\
filter_by(address=address).\ filter_by(address=address).\
options(joinedload_all('fixed_ip.instance')).\ options(_joinedload_all('fixed_ip.instance')).\
first() first()
if not result: if not result:
@@ -1393,7 +1401,7 @@ def _fixed_ip_get_by_address(context, address, columns_to_join=None):
try: try:
result = model_query(context, models.FixedIp) result = model_query(context, models.FixedIp)
for column in columns_to_join: for column in columns_to_join:
result = result.options(joinedload_all(column)) result = result.options(_joinedload_all(column))
result = result.filter_by(address=address).first() result = result.filter_by(address=address).first()
if not result: if not result:
raise exception.FixedIpNotFoundForAddress(address=address) raise exception.FixedIpNotFoundForAddress(address=address)
@@ -1868,7 +1876,7 @@ def instance_get(context, instance_id, columns_to_join=None):
def _build_instance_get(context, columns_to_join=None): def _build_instance_get(context, columns_to_join=None):
query = model_query(context, models.Instance, project_only=True).\ query = model_query(context, models.Instance, project_only=True).\
options(joinedload_all('security_groups.rules')).\ options(_joinedload_all('security_groups.rules')).\
options(joinedload('info_cache')) options(joinedload('info_cache'))
if columns_to_join is None: if columns_to_join is None:
columns_to_join = ['metadata', 'system_metadata'] columns_to_join = ['metadata', 'system_metadata']
@@ -3882,7 +3890,7 @@ def _security_group_get_query(context, read_deleted=None,
query = model_query(context, models.SecurityGroup, query = model_query(context, models.SecurityGroup,
read_deleted=read_deleted, project_only=project_only) read_deleted=read_deleted, project_only=project_only)
if join_rules: if join_rules:
query = query.options(joinedload_all('rules.grantee_group')) query = query.options(_joinedload_all('rules.grantee_group'))
return query return query
@@ -3926,7 +3934,7 @@ def security_group_get(context, security_group_id, columns_to_join=None):
columns_to_join = [] columns_to_join = []
for column in columns_to_join: for column in columns_to_join:
if column.startswith('instances'): if column.startswith('instances'):
query = query.options(joinedload_all(column)) query = query.options(_joinedload_all(column))
result = query.first() result = query.first()
if not result: if not result:
@@ -3949,7 +3957,7 @@ def security_group_get_by_name(context, project_id, group_name,
columns_to_join = ['instances', 'rules.grantee_group'] columns_to_join = ['instances', 'rules.grantee_group']
for column in columns_to_join: for column in columns_to_join:
query = query.options(joinedload_all(column)) query = query.options(_joinedload_all(column))
result = query.first() result = query.first()
if not result: if not result:
@@ -4005,7 +4013,7 @@ def security_group_update(context, security_group_id, values,
id=security_group_id) id=security_group_id)
if columns_to_join: if columns_to_join:
for column in columns_to_join: for column in columns_to_join:
query = query.options(joinedload_all(column)) query = query.options(_joinedload_all(column))
security_group_ref = query.first() security_group_ref = query.first()
if not security_group_ref: if not security_group_ref:
@@ -4121,7 +4129,7 @@ def security_group_rule_get_by_security_group(context, security_group_id,
query = (_security_group_rule_get_query(context). query = (_security_group_rule_get_query(context).
filter_by(parent_group_id=security_group_id)) filter_by(parent_group_id=security_group_id))
for column in columns_to_join: for column in columns_to_join:
query = query.options(joinedload_all(column)) query = query.options(_joinedload_all(column))
return query.all() return query.all()
@@ -4357,7 +4365,7 @@ def migration_get_in_progress_by_host_and_node(context, host, node):
'reverted', 'error', 'reverted', 'error',
'failed', 'completed', 'failed', 'completed',
'cancelled', 'done'])).\ 'cancelled', 'done'])).\
options(joinedload_all('instance.system_metadata')).\ options(_joinedload_all('instance.system_metadata')).\
all() all()