use stevedore to load util plugins
Importing pkg_resources has a side-effect of scanning all of the installed python modules looking for entrypoints to build an in-memory cache. Stevedore will be adding an on-disk cache to speed that process up, which should provide significant performance benefits for client applications such as python-openstackclient. This change introduces stevedore to replace pkg_resources. Change-Id: I66decf6d5a4f79ddaa6617737e9334a56dbbbad4 Signed-off-by: Doug Hellmann <doug@doughellmann.com>
This commit is contained in:
parent
b6b308ed23
commit
37f6a30794
|
@ -17,13 +17,13 @@ from __future__ import print_function
|
|||
import collections
|
||||
|
||||
import os
|
||||
import pkg_resources
|
||||
import sys
|
||||
import uuid
|
||||
|
||||
import prettytable
|
||||
import six
|
||||
from six.moves.urllib import parse
|
||||
import stevedore
|
||||
|
||||
from cinderclient import exceptions
|
||||
from oslo_utils import encodeutils
|
||||
|
@ -332,11 +332,16 @@ def safe_issubclass(*args):
|
|||
|
||||
def _load_entry_point(ep_name, name=None):
|
||||
"""Try to load the entry point ep_name that matches name."""
|
||||
for ep in pkg_resources.iter_entry_points(ep_name, name=name):
|
||||
try:
|
||||
return ep.load()
|
||||
except (ImportError, pkg_resources.UnknownExtra, AttributeError):
|
||||
continue
|
||||
mgr = stevedore.NamedExtensionManager(
|
||||
namespace=ep_name,
|
||||
names=[name],
|
||||
# Ignore errors on load
|
||||
on_load_failure_callback=lambda mgr, entry_point, error: None,
|
||||
)
|
||||
try:
|
||||
return mgr[name].plugin
|
||||
except KeyError:
|
||||
pass
|
||||
|
||||
|
||||
def get_function_name(func):
|
||||
|
|
|
@ -9,3 +9,4 @@ six>=1.10.0 # MIT
|
|||
oslo.i18n>=3.15.3 # Apache-2.0
|
||||
oslo.utils>=3.33.0 # Apache-2.0
|
||||
requests!=2.20.0,>=2.14.2 # Apache-2.0
|
||||
stevedore>=1.20.0 # Apache-2.0
|
||||
|
|
Loading…
Reference in New Issue