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:
@@ -17,13 +17,13 @@ from __future__ import print_function
|
|||||||
import collections
|
import collections
|
||||||
|
|
||||||
import os
|
import os
|
||||||
import pkg_resources
|
|
||||||
import sys
|
import sys
|
||||||
import uuid
|
import uuid
|
||||||
|
|
||||||
import prettytable
|
import prettytable
|
||||||
import six
|
import six
|
||||||
from six.moves.urllib import parse
|
from six.moves.urllib import parse
|
||||||
|
import stevedore
|
||||||
|
|
||||||
from cinderclient import exceptions
|
from cinderclient import exceptions
|
||||||
from oslo_utils import encodeutils
|
from oslo_utils import encodeutils
|
||||||
@@ -332,11 +332,16 @@ def safe_issubclass(*args):
|
|||||||
|
|
||||||
def _load_entry_point(ep_name, name=None):
|
def _load_entry_point(ep_name, name=None):
|
||||||
"""Try to load the entry point ep_name that matches name."""
|
"""Try to load the entry point ep_name that matches name."""
|
||||||
for ep in pkg_resources.iter_entry_points(ep_name, name=name):
|
mgr = stevedore.NamedExtensionManager(
|
||||||
try:
|
namespace=ep_name,
|
||||||
return ep.load()
|
names=[name],
|
||||||
except (ImportError, pkg_resources.UnknownExtra, AttributeError):
|
# Ignore errors on load
|
||||||
continue
|
on_load_failure_callback=lambda mgr, entry_point, error: None,
|
||||||
|
)
|
||||||
|
try:
|
||||||
|
return mgr[name].plugin
|
||||||
|
except KeyError:
|
||||||
|
pass
|
||||||
|
|
||||||
|
|
||||||
def get_function_name(func):
|
def get_function_name(func):
|
||||||
|
@@ -9,3 +9,4 @@ six>=1.10.0 # MIT
|
|||||||
oslo.i18n>=3.15.3 # Apache-2.0
|
oslo.i18n>=3.15.3 # Apache-2.0
|
||||||
oslo.utils>=3.33.0 # Apache-2.0
|
oslo.utils>=3.33.0 # Apache-2.0
|
||||||
requests!=2.20.0,>=2.14.2 # Apache-2.0
|
requests!=2.20.0,>=2.14.2 # Apache-2.0
|
||||||
|
stevedore>=1.20.0 # Apache-2.0
|
||||||
|
Reference in New Issue
Block a user