use make_weak_ref and resolve_ref from neutron-lib
The make_weak_ref and resolve_ref functions were rehomed into neutron-lib with https://review.openstack.org/#/c/557809/ This patch consumes them by removing the functions and using lib's version of them instead. NeutronLibImpact Change-Id: I41169ed0d93ea8caee530dcfc01a91271f02d538
This commit is contained in:
parent
32b6846ae6
commit
ce8b73ba87
|
@ -29,7 +29,6 @@ import sys
|
|||
import threading
|
||||
import time
|
||||
import uuid
|
||||
import weakref
|
||||
|
||||
import eventlet
|
||||
from eventlet.green import subprocess
|
||||
|
@ -777,27 +776,6 @@ def get_related_rand_device_names(prefixes):
|
|||
max_length=n_const.DEVICE_NAME_MAX_LEN)
|
||||
|
||||
|
||||
try:
|
||||
# PY3
|
||||
weak_method = weakref.WeakMethod
|
||||
except AttributeError:
|
||||
# PY2
|
||||
import weakrefmethod
|
||||
weak_method = weakrefmethod.WeakMethod
|
||||
|
||||
|
||||
def make_weak_ref(f):
|
||||
"""Make a weak reference to a function accounting for bound methods."""
|
||||
return weak_method(f) if hasattr(f, '__self__') else weakref.ref(f)
|
||||
|
||||
|
||||
def resolve_ref(ref):
|
||||
"""Handles dereference of weakref."""
|
||||
if isinstance(ref, weakref.ref):
|
||||
ref = ref()
|
||||
return ref
|
||||
|
||||
|
||||
def bytes_to_bits(value):
|
||||
return value * 8
|
||||
|
||||
|
|
|
@ -18,11 +18,11 @@ NOTE: This module shall not be used by external projects. It will be moved
|
|||
|
||||
from neutron_lib.api import attributes
|
||||
from neutron_lib.db import utils as db_utils
|
||||
from neutron_lib.utils import helpers
|
||||
from oslo_db.sqlalchemy import utils as sa_utils
|
||||
from sqlalchemy import sql, or_, and_
|
||||
from sqlalchemy.ext import associationproxy
|
||||
|
||||
from neutron.common import utils
|
||||
from neutron.db import _utils as ndb_utils
|
||||
from neutron.objects import utils as obj_utils
|
||||
|
||||
|
@ -108,11 +108,11 @@ def register_hook(model, name, query_hook, filter_hook,
|
|||
|
||||
"""
|
||||
if callable(query_hook):
|
||||
query_hook = utils.make_weak_ref(query_hook)
|
||||
query_hook = helpers.make_weak_ref(query_hook)
|
||||
if callable(filter_hook):
|
||||
filter_hook = utils.make_weak_ref(filter_hook)
|
||||
filter_hook = helpers.make_weak_ref(filter_hook)
|
||||
if callable(result_filters):
|
||||
result_filters = utils.make_weak_ref(result_filters)
|
||||
result_filters = helpers.make_weak_ref(result_filters)
|
||||
_model_query_hooks.setdefault(model, {})[name] = {
|
||||
'query': query_hook,
|
||||
'filter': filter_hook,
|
||||
|
@ -153,11 +153,11 @@ def query_with_hooks(context, model):
|
|||
query_filter = (model.tenant_id == context.tenant_id)
|
||||
# Execute query hooks registered from mixins and plugins
|
||||
for hook in get_hooks(model):
|
||||
query_hook = utils.resolve_ref(hook.get('query'))
|
||||
query_hook = helpers.resolve_ref(hook.get('query'))
|
||||
if query_hook:
|
||||
query = query_hook(context, model, query)
|
||||
|
||||
filter_hook = utils.resolve_ref(hook.get('filter'))
|
||||
filter_hook = helpers.resolve_ref(hook.get('filter'))
|
||||
if filter_hook:
|
||||
query_filter = filter_hook(context, model, query_filter)
|
||||
|
||||
|
@ -245,7 +245,8 @@ def apply_filters(query, model, filters, context=None):
|
|||
query = query.outerjoin(model.rbac_entries)
|
||||
query = query.filter(is_shared)
|
||||
for hook in get_hooks(model):
|
||||
result_filter = utils.resolve_ref(hook.get('result_filters', None))
|
||||
result_filter = helpers.resolve_ref(
|
||||
hook.get('result_filters', None))
|
||||
if result_filter:
|
||||
query = result_filter(query, filters)
|
||||
return query
|
||||
|
|
|
@ -18,7 +18,8 @@ NOTE: This module shall not be used by external projects. It will be moved
|
|||
import collections
|
||||
import inspect
|
||||
|
||||
from neutron.common import utils
|
||||
from neutron_lib.utils import helpers
|
||||
|
||||
|
||||
# This dictionary will store methods for extending API resources.
|
||||
# Extensions can add their own methods by invoking register_funcs().
|
||||
|
@ -50,7 +51,7 @@ def register_funcs(resource, funcs):
|
|||
return foo_res
|
||||
|
||||
"""
|
||||
funcs = [utils.make_weak_ref(f) if callable(f) else f
|
||||
funcs = [helpers.make_weak_ref(f) if callable(f) else f
|
||||
for f in funcs]
|
||||
_resource_extend_functions.setdefault(resource, []).extend(funcs)
|
||||
|
||||
|
@ -70,7 +71,7 @@ def get_funcs(resource):
|
|||
|
||||
def apply_funcs(resource_type, response, db_object):
|
||||
for func in get_funcs(resource_type):
|
||||
resolved_func = utils.resolve_ref(func)
|
||||
resolved_func = helpers.resolve_ref(func)
|
||||
if resolved_func:
|
||||
resolved_func(response, db_object)
|
||||
|
||||
|
|
Loading…
Reference in New Issue