From 1be5cc9b50bf44f65eda3e2041558125115bf9aa Mon Sep 17 00:00:00 2001 From: Flavio Percoco Date: Sun, 13 Oct 2013 18:29:45 +0200 Subject: [PATCH] Use stevedore instead of importutils Current `Pipeline` implementation uses importutils for loading stages. This patch replaces the usage of importutils with stevedore so that it is possible to have external stages as well. Implements blueprint storage-pipeline Change-Id: I3d1c48ddde0721db38f467f7b723d34ea2033b86 --- marconi/queues/storage/pipeline.py | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/marconi/queues/storage/pipeline.py b/marconi/queues/storage/pipeline.py index a63cc55e9..7545bd787 100644 --- a/marconi/queues/storage/pipeline.py +++ b/marconi/queues/storage/pipeline.py @@ -15,10 +15,10 @@ # limitations under the License. from oslo.config import cfg +from stevedore import driver from marconi import common from marconi.common import decorators -from marconi.openstack.common import importutils from marconi.openstack.common import log as logging from marconi.queues.storage import base @@ -67,15 +67,15 @@ def _get_storage_pipeline(resource_name, conf): pipeline = [] for ns in storage_conf[resource_name + '_pipeline']: - cls = importutils.try_import(ns) - - if not cls: - msg = _('Pipe {0} could not be imported').format(ns) + try: + mgr = driver.DriverManager('marconi.queues.storage.pipes', + ns, invoke_on_load=True) + pipeline.append(mgr.driver) + except RuntimeError as exc: + msg = _('Pipe {0} could not be imported: {1}').format(ns, str(exc)) LOG.warning(msg) continue - pipeline.append(cls()) - return common.Pipeline(pipeline)