Merge "Use the DB object when listing the SG rules"

This commit is contained in:
Zuul 2021-11-04 23:30:42 +00:00 committed by Gerrit Code Review
commit 899f254a09
2 changed files with 7 additions and 5 deletions

View File

@ -686,8 +686,6 @@ class SecurityGroupDbMixin(ext_sg.SecurityGroupPluginBase,
return sg_id
def _make_security_group_rule_dict(self, security_group_rule, fields=None):
# TODO(slaweq): switch this to use OVO instead of db object
res = {'id': security_group_rule['id'],
'tenant_id': security_group_rule['tenant_id'],
'security_group_id': security_group_rule['security_group_id'],
@ -825,10 +823,10 @@ class SecurityGroupDbMixin(ext_sg.SecurityGroupPluginBase,
# be returned
rule_objs = sg_obj.SecurityGroupRule.get_objects(
context_lib.get_admin_context(), _pager=pager,
validate_filters=False, **filters
validate_filters=False, return_db_obj=True, **filters
)
return [
self._make_security_group_rule_dict(obj.db_obj, fields)
self._make_security_group_rule_dict(obj, fields)
for obj in rule_objs
]

View File

@ -614,7 +614,7 @@ class NeutronDbObject(NeutronObject, metaclass=DeclarativeObject):
@classmethod
def get_objects(cls, context, _pager=None, validate_filters=True,
fields=None, **kwargs):
fields=None, return_db_obj=False, **kwargs):
"""Fetch a list of objects
Fetch all results from DB and convert them to versioned objects.
@ -629,6 +629,8 @@ class NeutronDbObject(NeutronObject, metaclass=DeclarativeObject):
avoid loading synthetic fields when possible, and
does not affect db queries. Default is None, which
is the same as []. Example: ['id', 'name']
:param return_db_obj: if 'True', the DB object is returned instead of
the OVO, saving the conversion time.
:param kwargs: multiple keys defined by key=value pairs
:return: list of objects of NeutronDbObject class or empty list
"""
@ -637,6 +639,8 @@ class NeutronDbObject(NeutronObject, metaclass=DeclarativeObject):
with cls.db_context_reader(context):
db_objs = obj_db_api.get_objects(
cls, context, _pager=_pager, **cls.modify_fields_to_db(kwargs))
if return_db_obj:
return db_objs
return [cls._load_object(context, db_obj, fields=fields)
for db_obj in db_objs]